Unnecessary pod2man calls in new extensions
[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 22:37:47 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_recvmsg=''
489 d_rename=''
490 d_rmdir=''
491 d_safebcpy=''
492 d_safemcpy=''
493 d_sanemcmp=''
494 d_sbrkproto=''
495 d_select=''
496 d_sem=''
497 d_semctl=''
498 d_semget=''
499 d_semop=''
500 d_sendmsg=''
501 d_setegid=''
502 d_seteuid=''
503 d_setgrent=''
504 d_setgrps=''
505 d_sethent=''
506 d_setitimer=''
507 d_setlinebuf=''
508 d_setlocale=''
509 d_setnent=''
510 d_setpent=''
511 d_setpgid=''
512 d_setpgrp2=''
513 d_bsdsetpgrp=''
514 d_setpgrp=''
515 d_setprior=''
516 d_setproctitle=''
517 d_setpwent=''
518 d_setregid=''
519 d_setresgid=''
520 d_setresuid=''
521 d_setreuid=''
522 d_setrgid=''
523 d_setruid=''
524 d_setsent=''
525 d_setsid=''
526 d_setvbuf=''
527 d_sfio=''
528 usesfio=''
529 d_shm=''
530 d_shmat=''
531 d_shmatprototype=''
532 shmattype=''
533 d_shmctl=''
534 d_shmdt=''
535 d_shmget=''
536 d_sigaction=''
537 d_sigprocmask=''
538 d_sigsetjmp=''
539 d_sockatmark=''
540 d_sockatmarkproto=''
541 d_msg_ctrunc=''
542 d_msg_dontroute=''
543 d_msg_oob=''
544 d_msg_peek=''
545 d_msg_proxy=''
546 d_oldsock=''
547 d_scm_rights=''
548 d_socket=''
549 d_sockpair=''
550 sockethdr=''
551 socketlib=''
552 d_socklen_t=''
553 d_socks5_init=''
554 d_sqrtl=''
555 d_sresgproto=''
556 d_sresuproto=''
557 d_statblks=''
558 d_statfs_f_flags=''
559 d_statfs_s=''
560 d_fstatvfs=''
561 d_statvfs=''
562 d_stdio_cnt_lval=''
563 d_stdio_ptr_lval=''
564 d_stdio_ptr_lval_nochange_cnt=''
565 d_stdio_ptr_lval_sets_cnt=''
566 d_stdiobase=''
567 d_stdstdio=''
568 stdio_base=''
569 stdio_bufsiz=''
570 stdio_cnt=''
571 stdio_filbuf=''
572 stdio_ptr=''
573 d_index=''
574 d_strchr=''
575 d_strcoll=''
576 d_strctcpy=''
577 d_strerrm=''
578 d_strerror=''
579 d_sysernlst=''
580 d_syserrlst=''
581 d_strftime=''
582 d_strtod=''
583 d_strtol=''
584 d_strtold=''
585 d_strtoll=''
586 d_strtoq=''
587 d_strtoul=''
588 d_strtoull=''
589 d_strtouq=''
590 d_strxfrm=''
591 d_symlink=''
592 d_syscall=''
593 d_syscallproto=''
594 d_sysconf=''
595 d_system=''
596 d_tcgetpgrp=''
597 d_tcsetpgrp=''
598 d_telldirproto=''
599 d_time=''
600 timetype=''
601 clocktype=''
602 d_times=''
603 d_truncate=''
604 d_tzname=''
605 d_u32align=''
606 d_ualarm=''
607 d_umask=''
608 d_semctl_semid_ds=''
609 d_semctl_semun=''
610 d_union_semun=''
611 d_usleep=''
612 d_usleepproto=''
613 d_ustat=''
614 d_vfork=''
615 usevfork=''
616 d_voidsig=''
617 signal_t=''
618 d_volatile=''
619 d_charvspr=''
620 d_vprintf=''
621 d_wait4=''
622 d_waitpid=''
623 d_wcstombs=''
624 d_wctomb=''
625 d_writev=''
626 dlext=''
627 cccdlflags=''
628 ccdlflags=''
629 dlsrc=''
630 ld=''
631 lddlflags=''
632 usedl=''
633 doublesize=''
634 ebcdic=''
635 fflushNULL=''
636 fflushall=''
637 fpossize=''
638 fpostype=''
639 gccosandvers=''
640 gccversion=''
641 gidformat=''
642 gidsign=''
643 gidsize=''
644 gidtype=''
645 groupstype=''
646 h_fcntl=''
647 h_sysfile=''
648 i_arpainet=''
649 db_hashtype=''
650 db_prefixtype=''
651 db_version_major=''
652 db_version_minor=''
653 db_version_patch=''
654 i_db=''
655 i_dbm=''
656 i_rpcsvcdbm=''
657 d_dirnamlen=''
658 direntrytype=''
659 i_dirent=''
660 i_dld=''
661 i_dlfcn=''
662 i_fcntl=''
663 i_float=''
664 i_gdbm=''
665 d_grpasswd=''
666 i_grp=''
667 i_iconv=''
668 i_ieeefp=''
669 i_inttypes=''
670 i_libutil=''
671 i_limits=''
672 i_locale=''
673 i_machcthr=''
674 i_malloc=''
675 i_math=''
676 i_memory=''
677 i_mntent=''
678 i_ndbm=''
679 i_netdb=''
680 i_neterrno=''
681 i_netinettcp=''
682 i_niin=''
683 i_sysin=''
684 i_poll=''
685 i_prot=''
686 i_pthread=''
687 d_pwage=''
688 d_pwchange=''
689 d_pwclass=''
690 d_pwcomment=''
691 d_pwexpire=''
692 d_pwgecos=''
693 d_pwpasswd=''
694 d_pwquota=''
695 i_pwd=''
696 i_sfio=''
697 i_shadow=''
698 i_socks=''
699 i_stddef=''
700 i_stdlib=''
701 i_string=''
702 strings=''
703 i_sunmath=''
704 i_sysaccess=''
705 i_sysdir=''
706 i_sysfile=''
707 d_voidtty=''
708 i_bsdioctl=''
709 i_sysfilio=''
710 i_sysioctl=''
711 i_syssockio=''
712 i_syslog=''
713 i_sysmman=''
714 i_sysmode=''
715 i_sysmount=''
716 i_sysndir=''
717 i_sysparam=''
718 i_sysresrc=''
719 i_syssecrt=''
720 i_sysselct=''
721 i_sysstat=''
722 i_sysstatfs=''
723 i_sysstatvfs=''
724 i_systimes=''
725 i_systypes=''
726 i_sysuio=''
727 i_sysun=''
728 i_sysutsname=''
729 i_sysvfs=''
730 i_syswait=''
731 i_sgtty=''
732 i_termio=''
733 i_termios=''
734 i_systime=''
735 i_systimek=''
736 i_time=''
737 timeincl=''
738 i_unistd=''
739 i_ustat=''
740 i_utime=''
741 i_values=''
742 i_stdarg=''
743 i_varargs=''
744 i_varhdr=''
745 i_vfork=''
746 inc_version_list=''
747 inc_version_list_init=''
748 installprefix=''
749 installprefixexp=''
750 installstyle=''
751 installusrbinperl=''
752 intsize=''
753 longsize=''
754 shortsize=''
755 issymlink=''
756 libc=''
757 ldlibpthname=''
758 libperl=''
759 shrpenv=''
760 useshrplib=''
761 glibpth=''
762 libpth=''
763 loclibpth=''
764 plibpth=''
765 xlibpth=''
766 ignore_versioned_solibs=''
767 libs=''
768 libsdirs=''
769 libsfiles=''
770 libsfound=''
771 libspath=''
772 lns=''
773 d_PRIEUldbl=''
774 d_PRIFUldbl=''
775 d_PRIGUldbl=''
776 d_PRIeldbl=''
777 d_PRIfldbl=''
778 d_PRIgldbl=''
779 d_SCNfldbl=''
780 sPRIEUldbl=''
781 sPRIFUldbl=''
782 sPRIGUldbl=''
783 sPRIeldbl=''
784 sPRIfldbl=''
785 sPRIgldbl=''
786 sSCNfldbl=''
787 lseeksize=''
788 lseektype=''
789 make_set_make=''
790 d_mymalloc=''
791 freetype=''
792 mallocobj=''
793 mallocsrc=''
794 malloctype=''
795 usemymalloc=''
796 installman1dir=''
797 man1dir=''
798 man1direxp=''
799 man1ext=''
800 installman3dir=''
801 man3dir=''
802 man3direxp=''
803 man3ext=''
804 modetype=''
805 multiarch=''
806 mydomain=''
807 myhostname=''
808 phostname=''
809 c=''
810 n=''
811 d_eofnblk=''
812 eagain=''
813 o_nonblock=''
814 rd_nodata=''
815 need_va_copy=''
816 netdb_hlen_type=''
817 netdb_host_type=''
818 netdb_name_type=''
819 netdb_net_type=''
820 groupcat=''
821 hostcat=''
822 passcat=''
823 orderlib=''
824 ranlib=''
825 d_perl_otherlibdirs=''
826 otherlibdirs=''
827 package=''
828 spackage=''
829 pager=''
830 api_revision=''
831 api_subversion=''
832 api_version=''
833 api_versionstring=''
834 patchlevel=''
835 perl_patchlevel=''
836 revision=''
837 subversion=''
838 version=''
839 perl5=''
840 perladmin=''
841 perlpath=''
842 d_nv_preserves_uv=''
843 d_nv_preserves_uv_bits=''
844 i16size=''
845 i16type=''
846 i32size=''
847 i32type=''
848 i64size=''
849 i64type=''
850 i8size=''
851 i8type=''
852 ivsize=''
853 ivtype=''
854 nvsize=''
855 nvtype=''
856 u16size=''
857 u16type=''
858 u32size=''
859 u32type=''
860 u64size=''
861 u64type=''
862 u8size=''
863 u8type=''
864 uvsize=''
865 uvtype=''
866 ivdformat=''
867 nvEUformat=''
868 nvFUformat=''
869 nvGUformat=''
870 nveformat=''
871 nvfformat=''
872 nvgformat=''
873 uvXUformat=''
874 uvoformat=''
875 uvuformat=''
876 uvxformat=''
877 pidtype=''
878 prefix=''
879 prefixexp=''
880 installprivlib=''
881 privlib=''
882 privlibexp=''
883 prototype=''
884 ptrsize=''
885 d_PRIXU64=''
886 d_PRId64=''
887 d_PRIi64=''
888 d_PRIo64=''
889 d_PRIu64=''
890 d_PRIx64=''
891 sPRIXU64=''
892 sPRId64=''
893 sPRIi64=''
894 sPRIo64=''
895 sPRIu64=''
896 sPRIx64=''
897 d_quad=''
898 quadkind=''
899 quadtype=''
900 uquadtype=''
901 drand01=''
902 randbits=''
903 randfunc=''
904 randseedtype=''
905 seedfunc=''
906 installscript=''
907 scriptdir=''
908 scriptdirexp=''
909 selectminbits=''
910 selecttype=''
911 sh=''
912 sig_count=''
913 sig_name=''
914 sig_name_init=''
915 sig_num=''
916 sig_num_init=''
917 sig_size=''
918 installsitearch=''
919 sitearch=''
920 sitearchexp=''
921 installsitebin=''
922 sitebin=''
923 sitebinexp=''
924 installsitelib=''
925 sitelib=''
926 sitelib_stem=''
927 sitelibexp=''
928 siteprefix=''
929 siteprefixexp=''
930 sizesize=''
931 sizetype=''
932 so=''
933 socksizetype=''
934 sharpbang=''
935 shsharp=''
936 spitshell=''
937 src=''
938 ssizetype=''
939 startperl=''
940 startsh=''
941 stdchar=''
942 d_stdio_stream_array=''
943 stdio_stream_array=''
944 sysman=''
945 trnl=''
946 uidformat=''
947 uidsign=''
948 uidsize=''
949 uidtype=''
950 archname64=''
951 use64bitall=''
952 use64bitint=''
953 ccflags_uselargefiles=''
954 ldflags_uselargefiles=''
955 libswanted_uselargefiles=''
956 uselargefiles=''
957 uselongdouble=''
958 usemorebits=''
959 usemultiplicity=''
960 nm_opt=''
961 nm_so_opt=''
962 runnm=''
963 usenm=''
964 useperlio=''
965 usesocks=''
966 d_oldpthreads=''
967 use5005threads=''
968 useithreads=''
969 usereentrant=''
970 usethreads=''
971 incpath=''
972 mips_type=''
973 usrinc=''
974 d_vendorarch=''
975 installvendorarch=''
976 vendorarch=''
977 vendorarchexp=''
978 d_vendorbin=''
979 installvendorbin=''
980 vendorbin=''
981 vendorbinexp=''
982 d_vendorlib=''
983 installvendorlib=''
984 vendorlib=''
985 vendorlib_stem=''
986 vendorlibexp=''
987 usevendorprefix=''
988 vendorprefix=''
989 vendorprefixexp=''
990 versiononly=''
991 defvoidused=''
992 voidflags=''
993 pm_apiversion=''
994 xs_apiversion=''
995 yacc=''
996 yaccflags=''
997 CONFIG=''
998
999 define='define'
1000 undef='undef'
1001 smallmach='pdp11 i8086 z8000 i80286 iAPX286'
1002 rmlist=''
1003
1004 : We must find out about Eunice early
1005 eunicefix=':'
1006 if test -f /etc/unixtovms; then
1007         eunicefix=/etc/unixtovms
1008 fi
1009 if test -f /etc/unixtovms.exe; then
1010         eunicefix=/etc/unixtovms.exe
1011 fi
1012
1013 i_whoami=''
1014 ccname=''
1015 ccversion=''
1016 perllibs=''
1017 : set useposix=false in your hint file to disable the POSIX extension.
1018 useposix=true
1019 : set useopcode=false in your hint file to disable the Opcode extension.
1020 useopcode=true
1021 : Trailing extension.  Override this in a hint file, if needed.
1022 _exe=''
1023 : Extra object files, if any, needed on this platform.
1024 archobjs=''
1025 archname=''
1026 : Possible local include directories to search.
1027 : Set locincpth to "" in a hint file to defeat local include searches.
1028 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
1029 locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
1030 :
1031 : no include file wanted by default
1032 inclwanted=''
1033
1034 groupstype=''
1035 libnames=''
1036 : change the next line if compiling for Xenix/286 on Xenix/386
1037 xlibpth='/usr/lib/386 /lib/386'
1038 : Possible local library directories to search.
1039 loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
1040 loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
1041
1042 : general looking path for locating libraries
1043 glibpth="/lib /usr/lib $xlibpth"
1044 glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
1045 test -f /usr/shlib/libc.so && glibpth="/usr/shlib $glibpth"
1046 test -f /shlib/libc.so     && glibpth="/shlib $glibpth"
1047
1048 : Private path used by Configure to find libraries.  Its value
1049 : is prepended to libpth. This variable takes care of special
1050 : machines, like the mips.  Usually, it should be empty.
1051 plibpth=''
1052
1053 : default library list
1054 libswanted=''
1055 : some systems want to use only the non-versioned libso:s
1056 ignore_versioned_solibs=''
1057 archname64=''
1058 ccflags_uselargefiles=''
1059 ldflags_uselargefiles=''
1060 libswanted_uselargefiles=''
1061 : set usemultiplicity on the Configure command line to enable multiplicity.
1062 : set usesocks on the Configure command line to enable socks.
1063 : set usethreads on the Configure command line to enable threads.
1064 usereentrant='undef'
1065 : full support for void wanted by default
1066 defvoidused=15
1067
1068 : List of libraries we want.
1069 : If anyone needs -lnet, put it in a hint file.
1070 libswanted='sfio socket bind inet nsl nm ndbm gdbm dbm db malloc dl'
1071 libswanted="$libswanted dld ld sun m c cposix posix"
1072 libswanted="$libswanted ndir dir crypt sec"
1073 libswanted="$libswanted ucb bsd BSD PW x iconv util"
1074 : We probably want to search /usr/shlib before most other libraries.
1075 : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
1076 glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
1077 glibpth="/usr/shlib $glibpth"
1078 : Do not use vfork unless overridden by a hint file.
1079 usevfork=false
1080
1081 : Find the basic shell for Bourne shell scripts
1082 case "$sh" in
1083 '')
1084         case "$SYSTYPE" in
1085         *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
1086         *) xxx='/bin/sh';;
1087         esac
1088         if test -f "$xxx"; then
1089                 sh="$xxx"
1090         else
1091                 : Build up a list and do a single loop so we can 'break' out.
1092                 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1093                 for xxx in sh bash ksh pdksh ash; do
1094                         for p in $pth; do
1095                                 try="$try ${p}/${xxx}"
1096                         done
1097                 done
1098                 for xxx in $try; do
1099                         if test -f "$xxx"; then
1100                                 sh="$xxx";
1101                                 break
1102                         elif test -f "$xxx.exe"; then
1103                                 sh="$xxx";
1104                                 break
1105                         fi
1106                 done
1107         fi
1108         ;;
1109 esac
1110
1111 case "$sh" in
1112 '')     cat <<EOM >&2
1113 $me:  Fatal Error:  I can't find a Bourne Shell anywhere.  
1114
1115 Usually it's in /bin/sh.  How did you even get this far?
1116 Please contact me (Perl Maintainers) at perlbug@perl.org and 
1117 we'll try to straighten this all out.
1118 EOM
1119         exit 1
1120         ;;
1121 esac
1122
1123 : see if sh knows # comments
1124 if `$sh -c '#' >/dev/null 2>&1`; then
1125         shsharp=true
1126         spitshell=cat
1127         xcat=/bin/cat
1128         test -f $xcat || xcat=/usr/bin/cat
1129         echo "#!$xcat" >sharp
1130         $eunicefix sharp
1131         chmod +x sharp
1132         ./sharp > today
1133         if test -s today; then
1134                 sharpbang='#!'
1135         else
1136                 echo "#! $xcat" > sharp
1137                 $eunicefix sharp
1138                 chmod +x sharp
1139                 ./sharp > today
1140                 if test -s today; then
1141                         sharpbang='#! '
1142                 else
1143                         sharpbang=': use '
1144                 fi
1145         fi
1146 else
1147         echo " "
1148         echo "Your $sh doesn't grok # comments--I will strip them later on."
1149         shsharp=false
1150         cd ..
1151         echo "exec grep -v '^[  ]*#'" >spitshell
1152         chmod +x spitshell
1153         $eunicefix spitshell
1154         spitshell=`pwd`/spitshell
1155         cd UU
1156         echo "I presume that if # doesn't work, #! won't work either!"
1157         sharpbang=': use '
1158 fi
1159 rm -f sharp today
1160
1161 : figure out how to guarantee sh startup
1162 case "$startsh" in
1163 '') startsh=${sharpbang}${sh} ;;
1164 *)
1165 esac
1166 cat >sharp <<EOSS
1167 $startsh
1168 set abc
1169 test "$?abc" != 1
1170 EOSS
1171
1172 chmod +x sharp
1173 $eunicefix sharp
1174 if ./sharp; then
1175         : echo "Yup, it does."
1176 else
1177         echo "Hmm... '$startsh' does not guarantee sh startup..."
1178         echo "You may have to fix up the shell scripts to make sure $sh runs them."
1179 fi
1180 rm -f sharp
1181
1182
1183 : Save command line options in file UU/cmdline.opt for later use in
1184 : generating config.sh.
1185 cat > cmdline.opt <<EOSH
1186 # Configure command line arguments.
1187 config_arg0='$0'
1188 config_args='$*'
1189 config_argc=$#
1190 EOSH
1191 argn=1
1192 for arg in "$@"; do
1193         cat >>cmdline.opt <<EOSH
1194 config_arg$argn='$arg'
1195 EOSH
1196         argn=`expr $argn + 1`
1197 done
1198
1199 : produce awk script to parse command line options
1200 cat >options.awk <<'EOF'
1201 BEGIN {
1202         optstr = "A:dD:eEf:hKOrsSU:V";  # getopt-style specification
1203
1204         len = length(optstr);
1205         for (i = 1; i <= len; i++) {
1206                 c = substr(optstr, i, 1);
1207                 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
1208                 if (a == ":") {
1209                         arg[c] = 1;
1210                         i++;
1211                 }
1212                 opt[c] = 1;
1213         }
1214 }
1215 {
1216         expect = 0;
1217         str = $0;
1218         if (substr(str, 1, 1) != "-") {
1219                 printf("'%s'\n", str);
1220                 next;
1221         }
1222         len = length($0);
1223         for (i = 2; i <= len; i++) {
1224                 c = substr(str, i, 1);
1225                 if (!opt[c]) {
1226                         printf("-%s\n", substr(str, i));
1227                         next;
1228                 }
1229                 printf("-%s\n", c);
1230                 if (arg[c]) {
1231                         if (i < len)
1232                                 printf("'%s'\n", substr(str, i + 1));
1233                         else
1234                                 expect = 1;
1235                         next;
1236                 }
1237         }
1238 }
1239 END {
1240         if (expect)
1241                 print "?";
1242 }
1243 EOF
1244
1245 : process the command line options
1246 set X `for arg in "$@"; do echo "X$arg"; done |
1247         sed -e s/X// | awk -f options.awk`
1248 eval "set $*"
1249 shift
1250 rm -f options.awk
1251
1252 : set up default values
1253 fastread=''
1254 reuseval=false
1255 config_sh=''
1256 alldone=''
1257 error=''
1258 silent=''
1259 extractsh=''
1260 override=''
1261 knowitall=''
1262 rm -f optdef.sh posthint.sh
1263 cat >optdef.sh <<EOS
1264 $startsh
1265 EOS
1266
1267
1268 : option parsing
1269 while test $# -gt 0; do
1270         case "$1" in
1271         -d) shift; fastread=yes;;
1272         -e) shift; alldone=cont;;
1273         -f)
1274                 shift
1275                 cd ..
1276                 if test -r "$1"; then
1277                         config_sh="$1"
1278                 else
1279                         echo "$me: cannot read config file $1." >&2
1280                         error=true
1281                 fi
1282                 cd UU
1283                 shift;;
1284         -h) shift; error=true;;
1285         -r) shift; reuseval=true;;
1286         -s) shift; silent=true; realsilent=true;;
1287         -E) shift; alldone=exit;;
1288         -K) shift; knowitall=true;;
1289         -O) shift; override=true;;
1290         -S) shift; silent=true; extractsh=true;;
1291         -D)
1292                 shift
1293                 case "$1" in
1294                 *=)
1295                         echo "$me: use '-U symbol=', not '-D symbol='." >&2
1296                         echo "$me: ignoring -D $1" >&2
1297                         ;;
1298                 *=*) echo "$1" | \
1299                                 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1300                 *) echo "$1='define'" >> optdef.sh;;
1301                 esac
1302                 shift
1303                 ;;
1304         -U)
1305                 shift
1306                 case "$1" in
1307                 *=) echo "$1" >> optdef.sh;;
1308                 *=*)
1309                         echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1310                         echo "$me: ignoring -U $1" >&2
1311                         ;;
1312                 *) echo "$1='undef'" >> optdef.sh;;
1313                 esac
1314                 shift
1315                 ;;
1316         -A)
1317             shift
1318             xxx=''
1319             yyy="$1"
1320             zzz=''
1321             uuu=undef
1322             case "$yyy" in
1323             *=*) zzz=`echo $yyy|sed 's!=.*!!'`
1324                  case "$zzz" in
1325                  *:*) zzz='' ;;
1326                  *)   xxx=append
1327                       zzz=" "`echo $yyy|sed 's!^[^=]*=!!'` 
1328                       yyy=`echo $yyy|sed 's!=.*!!'` ;;
1329                  esac
1330                  ;;
1331             esac
1332             case "$xxx" in
1333             '')  case "$yyy" in
1334                  *:*) xxx=`echo $yyy|sed 's!:.*!!'`
1335                       yyy=`echo $yyy|sed 's!^[^:]*:!!'`
1336                       zzz=`echo $yyy|sed 's!^[^=]*=!!'`
1337                       yyy=`echo $yyy|sed 's!=.*!!'` ;;
1338                  *)   xxx=`echo $yyy|sed 's!:.*!!'`
1339                       yyy=`echo $yyy|sed 's!^[^:]*:!!'` ;;
1340                  esac
1341                  ;;       
1342             esac
1343             case "$xxx" in
1344             append)
1345                 echo "$yyy=\"\${$yyy}$zzz\""    >> posthint.sh ;;
1346             clear)
1347                 echo "$yyy=''"                  >> posthint.sh ;;
1348             define)
1349                 case "$zzz" in
1350                 '') zzz=define ;;
1351                 esac
1352                 echo "$yyy='$zzz'"              >> posthint.sh ;;
1353             eval)
1354                 echo "eval \"$yyy=$zzz\""       >> posthint.sh ;;
1355             prepend)
1356                 echo "$yyy=\"$zzz\${$yyy}\""    >> posthint.sh ;;
1357             undef)
1358                 case "$zzz" in
1359                 '') zzz="$uuu" ;;
1360                 esac
1361                 echo "$yyy=$zzz"                >> posthint.sh ;;
1362             *)  echo "$me: unknown -A command '$xxx', ignoring -A $1" >&2 ;;
1363             esac
1364             shift
1365             ;;
1366         -V) echo "$me generated by metaconfig 3.0 PL70." >&2
1367             exit 0;;
1368         --) break;;
1369         -*) echo "$me: unknown option $1" >&2; shift; error=true;;
1370         *) break;;
1371         esac
1372 done
1373
1374 case "$error" in
1375 true)
1376         cat >&2 <<EOM
1377 Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
1378                  [-U symbol] [-U symbol=] [-A command:symbol...]
1379   -d : use defaults for all answers.
1380   -e : go on without questioning past the production of config.sh.
1381   -f : specify an alternate default configuration file.
1382   -h : print this help message and exit (with an error status).
1383   -r : reuse C symbols value if possible (skips costly nm extraction).
1384   -s : silent mode, only echoes questions and essential information.
1385   -D : define symbol to have some value:
1386          -D symbol         symbol gets the value 'define'
1387          -D symbol=value   symbol gets the value 'value'
1388   -E : stop at the end of questions, after having produced config.sh.
1389   -K : do not use unless you know what you are doing.
1390   -O : let -D and -U override definitions from loaded configuration file.
1391   -S : perform variable substitutions on all .SH files (can mix with -f)
1392   -U : undefine symbol:
1393          -U symbol    symbol gets the value 'undef'
1394          -U symbol=   symbol gets completely empty
1395   -A : manipulate symbol after the platform specific hints have been applied:
1396          -A symbol=value                append " "value to symbol
1397          -A append:symbol=value         append value to symbol
1398          -A define:symbol=value         define symbol to have value
1399          -A clear:symbol                define symbol to be ''
1400          -A define:symbol               define symbol to be 'define'
1401          -A eval:symbol=value           define symbol to be eval of value
1402          -A prepend:symbol=value        prepend value to symbol
1403          -A undef:symbol                define symbol to be 'undef'
1404          -A undef:symbol=               define symbol to be ''
1405   -V : print version number and exit (with a zero status).
1406 EOM
1407         exit 1
1408         ;;
1409 esac
1410
1411 : Sanity checks
1412 case "$fastread$alldone" in
1413 yescont|yesexit) ;;
1414 *)
1415         case "$extractsh" in
1416         true) ;;
1417         *)
1418                 if test ! -t 0; then
1419                         echo "Say 'sh Configure', not 'sh <Configure'"
1420                         exit 1
1421                 fi
1422                 ;;
1423         esac
1424         ;;
1425 esac
1426
1427 exec 4>&1
1428 case "$silent" in
1429 true) exec 1>/dev/null;;
1430 esac
1431
1432 : run the defines and the undefines, if any, but leave the file out there...
1433 touch optdef.sh
1434 . ./optdef.sh
1435 : create the posthint manipulation script and leave the file out there...
1436 touch posthint.sh
1437
1438 : set package name
1439 package=perl5
1440 first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1441 last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1442 case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1443 ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1444 *) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1445 esac
1446
1447 : Some greps do not return status, grrr.
1448 echo "grimblepritz" >grimble
1449 if grep blurfldyick grimble >/dev/null 2>&1 ; then
1450         contains=contains
1451 elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1452         contains=grep
1453 else
1454         contains=contains
1455 fi
1456 rm -f grimble
1457 : the following should work in any shell
1458 case "$contains" in
1459 contains*)
1460         echo " "
1461         echo "AGH!  Grep doesn't return a status.  Attempting remedial action."
1462         cat >contains <<'EOSS'
1463 grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1464 EOSS
1465 chmod +x contains
1466 esac
1467
1468 : Find the path to the source tree
1469 case "$src" in
1470 '') case "$0" in
1471     */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`
1472          case "$src" in
1473          /*)    ;;
1474          .)     ;;
1475          *)     src=`cd ../$src && pwd` ;;
1476          esac
1477          ;;
1478     *)   src='.';;
1479     esac;;
1480 esac
1481 case "$src" in
1482 '')     src=/
1483         rsrc=/
1484         ;;
1485 /*) rsrc="$src";;
1486 *) rsrc="../$src";;
1487 esac
1488 if test -f $rsrc/Configure && \
1489         $contains "^package=$package$" $rsrc/Configure >/dev/null 2>&1
1490 then
1491    : found it, so we are ok.
1492 else
1493         rsrc=''
1494         for src in . .. ../.. ../../.. ../../../..; do
1495                 if test -f ../$src/Configure && \
1496                         $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1497                 then
1498                         rsrc=../$src
1499                         break
1500                 fi
1501         done
1502 fi
1503 case "$rsrc" in
1504 '')
1505         cat <<EOM >&4
1506
1507 Sorry, I can't seem to locate the source dir for $package.  Please start
1508 Configure with an explicit path -- i.e. /some/path/Configure.
1509
1510 EOM
1511         exit 1
1512         ;;
1513 ../.)   rsrc='..';;
1514 *)
1515         echo " "
1516         echo "Sources for $package found in \"$src\"." >&4
1517         ;;
1518 esac
1519
1520 : script used to extract .SH files with variable substitutions
1521 cat >extract <<'EOS'
1522 PERL_CONFIG_SH=true
1523 echo "Doing variable substitutions on .SH files..."
1524 if test -f MANIFEST; then
1525         set x `awk '{print $1}' < MANIFEST | grep '\.SH$'`
1526 else
1527         echo "(Looking for .SH files under the source directory.)"
1528         set x `(cd $src; find . -name "*.SH" -print)`
1529 fi
1530 shift
1531 case $# in
1532 0) set x `(cd $src; echo *.SH)`; shift;;
1533 esac
1534 if test ! -f $src/$1; then
1535         shift
1536 fi
1537 mkdir_p='
1538 name=$1;
1539 create="";
1540 while test $name; do
1541         if test ! -d "$name"; then
1542                 create="$name $create";
1543                 name=`echo $name | sed -e "s|^[^/]*$||"`;
1544                 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
1545         else
1546                 name="";
1547         fi;
1548 done;
1549 for file in $create; do
1550         mkdir $file;
1551 done
1552 '
1553 for file in $*; do
1554         case "$src" in
1555         ".")
1556                 case "$file" in
1557                 */*)
1558                         dir=`expr X$file : 'X\(.*\)/'`
1559                         file=`expr X$file : 'X.*/\(.*\)'`
1560                         (cd $dir && . ./$file)
1561                         ;;
1562                 *)
1563                         . ./$file
1564                         ;;
1565                 esac
1566                 ;;
1567         *)
1568                 case "$file" in
1569                 */*)
1570                         dir=`expr X$file : 'X\(.*\)/'`
1571                         file=`expr X$file : 'X.*/\(.*\)'`
1572                         (set x $dir; shift; eval $mkdir_p)
1573                         sh <$src/$dir/$file
1574                         ;;
1575                 *)
1576                         sh <$src/$file
1577                         ;;
1578                 esac
1579                 ;;
1580         esac
1581 done
1582 if test -f $src/config_h.SH; then
1583         if test ! -f config.h; then
1584         : oops, they left it out of MANIFEST, probably, so do it anyway.
1585         . $src/config_h.SH
1586         fi
1587 fi
1588 EOS
1589
1590 : extract files and exit if asked to do so
1591 case "$extractsh" in
1592 true)
1593         case "$realsilent" in
1594         true) ;;
1595         *) exec 1>&4;;
1596         esac
1597         case "$config_sh" in
1598         '') config_sh='config.sh';;
1599         esac
1600         echo " "
1601         echo "Fetching answers from $config_sh..."
1602         cd ..
1603         . $config_sh
1604         test "$override" && . ./optdef.sh
1605         echo " "
1606         . UU/extract
1607         rm -rf UU
1608         echo "Extraction done."
1609         exit 0
1610         ;;
1611 esac
1612
1613 : Eunice requires " " instead of "", can you believe it
1614 echo " "
1615 : Here we go...
1616 echo "Beginning of configuration questions for $package."
1617
1618 trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1619
1620 : first determine how to suppress newline on echo command
1621 echo " "
1622 echo "Checking echo to see how to suppress newlines..."
1623 (echo "hi there\c" ; echo " ") >.echotmp
1624 if $contains c .echotmp >/dev/null 2>&1 ; then
1625         echo "...using -n."
1626         n='-n'
1627         c=''
1628 else
1629         cat <<'EOM'
1630 ...using \c
1631 EOM
1632         n=''
1633         c='\c'
1634 fi
1635 echo $n "The star should be here-->$c"
1636 echo '*'
1637 rm -f .echotmp
1638
1639 : Now test for existence of everything in MANIFEST
1640 echo " "
1641 if test -f $rsrc/MANIFEST; then
1642         echo "First let's make sure your kit is complete.  Checking..." >&4
1643         awk '$1 !~ /PACK[A-Z]+/ {print $1}' $rsrc/MANIFEST | split -50
1644         rm -f missing
1645         tmppwd=`pwd`
1646         for filelist in x??; do
1647                 (cd $rsrc; ls `cat $tmppwd/$filelist` >/dev/null 2>>$tmppwd/missing)
1648         done
1649         if test -s missing; then
1650                 cat missing >&4
1651                 cat >&4 <<'EOM'
1652
1653 THIS PACKAGE SEEMS TO BE INCOMPLETE.
1654
1655 You have the option of continuing the configuration process, despite the
1656 distinct possibility that your kit is damaged, by typing 'y'es.  If you
1657 do, don't blame me if something goes wrong.  I advise you to type 'n'o
1658 and contact the author (perlbug@perl.org).
1659
1660 EOM
1661                 echo $n "Continue? [n] $c" >&4
1662                 read ans
1663                 case "$ans" in
1664                 y*)
1665                         echo "Continuing..." >&4
1666                         rm -f missing
1667                         ;;
1668                 *)
1669                         echo "ABORTING..." >&4
1670                         kill $$
1671                         ;;
1672                 esac
1673         else
1674                 echo "Looks good..."
1675         fi
1676 else
1677         echo "There is no MANIFEST file.  I hope your kit is complete !"
1678 fi
1679 rm -f missing x??
1680
1681 echo " "
1682 : Find the appropriate value for a newline for tr
1683 if test -n "$DJGPP"; then
1684        trnl='\012'
1685 fi
1686 if test X"$trnl" = X; then
1687         case "`echo foo|tr '\n' x 2>/dev/null`" in
1688         foox) trnl='\n' ;;
1689         esac
1690 fi
1691 if test X"$trnl" = X; then
1692         case "`echo foo|tr '\012' x 2>/dev/null`" in
1693         foox) trnl='\012' ;;
1694         esac
1695 fi
1696 if test X"$trnl" = X; then
1697         cat <<EOM >&2
1698
1699 $me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
1700
1701 EOM
1702         exit 1
1703 fi
1704
1705 : compute the number of columns on the terminal for proper question formatting
1706 case "$COLUMNS" in
1707 '') COLUMNS='80';;
1708 esac
1709
1710 : set up the echo used in my read
1711 myecho="case \"\$xxxm\" in
1712 '') echo $n \"\$rp $c\" >&4;;
1713 *) case \"\$rp\" in
1714         '') echo $n \"[\$xxxm] $c\";;
1715         *)
1716                 if test \`echo \"\$rp [\$xxxm]  \" | wc -c\` -ge $COLUMNS; then
1717                         echo \"\$rp\" >&4
1718                         echo $n \"[\$xxxm] $c\" >&4
1719                 else
1720                         echo $n \"\$rp [\$xxxm] $c\" >&4
1721                 fi
1722                 ;;
1723         esac;;
1724 esac"
1725
1726 : now set up to do reads with possible shell escape and default assignment
1727 cat <<EOSC >myread
1728 $startsh
1729 xxxm=\$dflt
1730 $myecho
1731 ans='!'
1732 case "\$fastread" in
1733 yes) case "\$dflt" in
1734         '') ;;
1735         *) ans='';
1736                 case "\$silent-\$rp" in
1737                 true-) ;;
1738                 *) echo " " >&4;;
1739                 esac;;
1740         esac;;
1741 *) case "\$silent" in
1742         true) case "\$rp" in
1743                 '') ans='';;
1744                 esac;;
1745         esac;;
1746 esac
1747 while expr "X\$ans" : "X!" >/dev/null; do
1748         read answ
1749         set x \$xxxm
1750         shift
1751         aok=''; eval "ans=\\"\$answ\\"" && aok=y
1752         case  "\$answ" in
1753         "!")
1754                 sh 1>&4
1755                 echo " "
1756                 $myecho
1757                 ;;
1758         !*)
1759                 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
1760                 shift
1761                 sh 1>&4 -c "\$*"
1762                 echo " "
1763                 $myecho
1764                 ;;
1765         "\$ans")
1766                 case "\$ans" in
1767                 \\&*)
1768                         set x \`expr "X\$ans" : "X&\(.*\)\$"\`
1769                         shift
1770                         case "\$1" in
1771                         -d)
1772                                 fastread=yes
1773                                 echo "(OK, I'll run with -d after this question.)" >&4
1774                                 ;;
1775                         -*)
1776                                 echo "*** Sorry, \$1 not supported yet." >&4
1777                                 ;;
1778                         esac
1779                         $myecho
1780                         ans=!
1781                         ;;
1782                 esac;;
1783         *)
1784                 case "\$aok" in
1785                 y)
1786                         echo "*** Substitution done -- please confirm."
1787                         xxxm="\$ans"
1788                         ans=\`echo $n "\$ans$c" | tr '$trnl' ' '\`
1789                         xxxm="\$ans"
1790                         ans=!
1791                         ;;
1792                 *)
1793                         echo "*** Error -- try again."
1794                         ans=!
1795                         ;;
1796                 esac
1797                 $myecho
1798                 ;;
1799         esac
1800         case "\$ans\$xxxm\$nostick" in
1801         '')
1802                 ans=!
1803                 $myecho
1804                 ;;
1805         esac
1806 done
1807 case "\$ans" in
1808 '') ans="\$xxxm";;
1809 esac
1810 EOSC
1811
1812 : create .config dir to save info across Configure sessions
1813 test -d ../.config || mkdir ../.config
1814 cat >../.config/README <<EOF
1815 This directory created by Configure to save information that should
1816 persist across sessions for $package.
1817
1818 You may safely delete it if you wish.
1819 EOF
1820
1821 xversion=`awk '/define[         ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
1822 case "$usedevel" in
1823 $define|true|[yY]*) ;;
1824 *) case "$xversion" in
1825    *[13579])
1826         cat >&4 <<EOH
1827 *** WHOA THERE!!! ***
1828
1829     This is an UNSTABLE DEVELOPMENT release.
1830     The version of this $package distribution is $xversion, that is, odd,
1831     (as opposed to even) and that signifies a development release.
1832     If you want a maintenance release, you want an even-numbered version.
1833
1834     Do ***NOT*** install this into production use.
1835     Data corruption and crashes are possible.
1836
1837     It is most seriously suggested that you do not continue any further
1838     unless you want to help in developing and debugging Perl.
1839
1840     If you *still* want to build perl, you can answer 'y' now,
1841     or pass -Dusedevel to Configure.
1842
1843 EOH
1844         rp='Do you really want to continue?'
1845         dflt='n'
1846         . ./myread
1847         case "$ans" in
1848         [yY]) echo >&4 "Okay, continuing."
1849               usedevel="$define" ;;
1850         *) echo >&4 "Okay, bye."
1851            exit 1
1852            ;;
1853         esac
1854         ;;
1855     esac
1856     ;;
1857 esac
1858 case "$usedevel" in
1859 $define|true|[yY]*)
1860         case "$versiononly" in
1861         '') versiononly="$define" ;;
1862         esac
1863         case "$installusrbinperl" in
1864         '') installusrbinperl="$undef" ;;
1865         esac
1866         ;;
1867 esac
1868
1869 : general instructions
1870 needman=true
1871 firsttime=true
1872 user=`(logname) 2>/dev/null`
1873 case "$user" in
1874 '') user=`whoami 2>&1`;;
1875 esac
1876 if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
1877         firsttime=false
1878         echo " "
1879         rp='Would you like to see the instructions?'
1880         dflt=n
1881         . ./myread
1882         case "$ans" in
1883         [yY]*) ;;
1884         *) needman=false;;
1885         esac
1886 fi
1887 if $needman; then
1888         cat <<EOH
1889
1890 This installation shell script will examine your system and ask you questions
1891 to determine how the perl5 package should be installed. If you get
1892 stuck on a question, you may use a ! shell escape to start a subshell or
1893 execute a command.  Many of the questions will have default answers in square
1894 brackets; typing carriage return will give you the default.
1895
1896 On some of the questions which ask for file or directory names you are allowed
1897 to use the ~name construct to specify the login directory belonging to "name",
1898 even if you don't have a shell which knows about that.  Questions where this is
1899 allowed will be marked "(~name ok)".
1900
1901 EOH
1902         rp=''
1903         dflt='Type carriage return to continue'
1904         . ./myread
1905         cat <<'EOH'
1906
1907 The prompter used in this script allows you to use shell variables and
1908 backticks in your answers.  You may use $1, $2, etc...  to refer to the words
1909 in the default answer, as if the default line was a set of arguments given to a
1910 script shell.  This means you may also use $* to repeat the whole default line,
1911 so you do not have to re-type everything to add something to the default.
1912
1913 Everytime there is a substitution, you will have to confirm.  If there is an
1914 error (e.g. an unmatched backtick), the default answer will remain unchanged
1915 and you will be prompted again.
1916
1917 If you are in a hurry, you may run 'Configure -d'.  This will bypass nearly all
1918 the questions and use the computed defaults (or the previous answers if there
1919 was already a config.sh file). Type 'Configure -h' for a list of options.
1920 You may also start interactively and then answer '& -d' at any prompt to turn
1921 on the non-interactive behaviour for the remainder of the execution.
1922
1923 EOH
1924         . ./myread
1925         cat <<EOH
1926
1927 Much effort has been expended to ensure that this shell script will run on any
1928 Unix system.  If despite that it blows up on yours, your best bet is to edit
1929 Configure and run it again.  If you can't run Configure for some reason,
1930 you'll have to generate a config.sh file by hand.  Whatever problems you
1931 have, let me (perlbug@perl.org) know how I blew it.
1932
1933 This installation script affects things in two ways:
1934
1935 1) it may do direct variable substitutions on some of the files included
1936    in this kit.
1937 2) it builds a config.h file for inclusion in C programs.  You may edit
1938    any of these files as the need arises after running this script.
1939
1940 If you make a mistake on a question, there is no easy way to back up to it
1941 currently.  The easiest thing to do is to edit config.sh and rerun all the SH
1942 files.  Configure will offer to let you do this before it runs the SH files.
1943
1944 EOH
1945         dflt='Type carriage return to continue'
1946         . ./myread
1947         case "$firsttime" in
1948         true) echo $user >>../.config/instruct;;
1949         esac
1950 fi
1951
1952 : find out where common programs are
1953 echo " "
1954 echo "Locating common programs..." >&4
1955 cat <<EOSC >loc
1956 $startsh
1957 case \$# in
1958 0) exit 1;;
1959 esac
1960 thing=\$1
1961 shift
1962 dflt=\$1
1963 shift
1964 for dir in \$*; do
1965         case "\$thing" in
1966         .)
1967         if test -d \$dir/\$thing; then
1968                 echo \$dir
1969                 exit 0
1970         fi
1971         ;;
1972         *)
1973         for thisthing in \$dir/\$thing; do
1974                 : just loop through to pick last item
1975         done
1976         if test -f \$thisthing; then
1977                 echo \$thisthing
1978                 exit 0
1979         elif test -f \$dir/\$thing.exe; then
1980                 if test -n "$DJGPP"; then
1981                         echo \$dir/\$thing.exe
1982                 else
1983                         : on Eunice apparently
1984                         echo \$dir/\$thing
1985                 fi
1986                 exit 0
1987         fi
1988         ;;
1989         esac
1990 done
1991 echo \$dflt
1992 exit 1
1993 EOSC
1994 chmod +x loc
1995 $eunicefix loc
1996 loclist="
1997 awk
1998 cat
1999 comm
2000 cp
2001 echo
2002 expr
2003 grep
2004 ls
2005 make
2006 mkdir
2007 rm
2008 sed
2009 sort
2010 touch
2011 tr
2012 uniq
2013 "
2014 trylist="
2015 Mcc
2016 ar
2017 bison
2018 byacc
2019 cpp
2020 csh
2021 date
2022 egrep
2023 gzip
2024 less
2025 ln
2026 more
2027 nm
2028 nroff
2029 pg
2030 test
2031 uname
2032 zip
2033 "
2034 pth=`echo $PATH | sed -e "s/$p_/ /g"`
2035 pth="$pth /lib /usr/lib"
2036 for file in $loclist; do
2037         eval xxx=\$$file
2038         case "$xxx" in
2039         /*|?:[\\/]*)
2040                 if test -f "$xxx"; then
2041                         : ok
2042                 else
2043                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2044                         xxx=`./loc $file $file $pth`
2045                 fi
2046                 ;;
2047         '') xxx=`./loc $file $file $pth`;;
2048         *) xxx=`./loc $xxx $xxx $pth`;;
2049         esac
2050         eval $file=$xxx
2051         eval _$file=$xxx
2052         case "$xxx" in
2053         /*)
2054                 echo $file is in $xxx.
2055                 ;;
2056         ?:[\\/]*)
2057                 echo $file is in $xxx.
2058                 ;;
2059         *)
2060                 echo "I don't know where '$file' is, and my life depends on it." >&4
2061                 echo "Go find a public domain implementation or fix your PATH setting!" >&4
2062                 exit 1
2063                 ;;
2064         esac
2065 done
2066 echo " "
2067 echo "Don't worry if any of the following aren't found..."
2068 say=offhand
2069 for file in $trylist; do
2070         eval xxx=\$$file
2071         case "$xxx" in
2072         /*|?:[\\/]*)
2073                 if test -f "$xxx"; then
2074                         : ok
2075                 else
2076                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2077                         xxx=`./loc $file $file $pth`
2078                 fi
2079                 ;;
2080         '') xxx=`./loc $file $file $pth`;;
2081         *) xxx=`./loc $xxx $xxx $pth`;;
2082         esac
2083         eval $file=$xxx
2084         eval _$file=$xxx
2085         case "$xxx" in
2086         /*)
2087                 echo $file is in $xxx.
2088                 ;;
2089         ?:[\\/]*)
2090                 echo $file is in $xxx.
2091                 ;;
2092         *)
2093                 echo "I don't see $file out there, $say."
2094                 say=either
2095                 ;;
2096         esac
2097 done
2098 case "$egrep" in
2099 egrep)
2100         echo "Substituting grep for egrep."
2101         egrep=$grep
2102         ;;
2103 esac
2104 case "$ln" in
2105 ln)
2106         echo "Substituting cp for ln."
2107         ln=$cp
2108         ;;
2109 esac
2110 case "$test" in
2111 test)
2112         echo "Hopefully test is built into your sh."
2113         ;;
2114 *)
2115         if `sh -c "PATH= test true" >/dev/null 2>&1`; then
2116                 echo "Using the test built into your sh."
2117                 test=test
2118                 _test=test
2119         fi
2120         ;;
2121 esac
2122 case "$echo" in
2123 echo)
2124         echo "Hopefully echo is built into your sh."
2125         ;;
2126 '') ;;
2127 *)
2128         echo " "
2129 echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
2130         $echo $n "hi there$c" >foo1
2131         echo $n "hi there$c" >foo2
2132         if cmp foo1 foo2 >/dev/null 2>&1; then
2133                 echo "They are compatible.  In fact, they may be identical."
2134         else
2135                 case "$n" in
2136                 '-n') n='' c='\c';;
2137                 *) n='-n' c='';;
2138                 esac
2139                 cat <<FOO
2140 They are not compatible!  You are probably running ksh on a non-USG system.
2141 I'll have to use $echo instead of the builtin, since Bourne shell doesn't
2142 have echo built in and we may have to run some Bourne shell scripts.  That
2143 means I'll have to use '$n$c' to suppress newlines now.  Life is ridiculous.
2144
2145 FOO
2146                 $echo $n "The star should be here-->$c"
2147                 $echo "*"
2148         fi
2149         $rm -f foo1 foo2
2150         ;;
2151 esac
2152
2153 cat <<EOS >checkcc
2154 $startsh
2155 EOS
2156 cat <<'EOSC' >>checkcc
2157 case "$cc" in
2158 '') ;;
2159 *)  $rm -f try try.*
2160     $cat >try.c <<EOM
2161 int main(int argc, char *argv[]) {
2162   return 0;
2163 }
2164 EOM
2165     if $cc -o try $ccflags $ldflags try.c; then
2166        :
2167     else
2168         echo "Uh-oh, the C compiler '$cc' doesn't seem to be working." >&4
2169         despair=yes
2170         trygcc=yes
2171         case "$cc" in
2172         *gcc*) trygcc=no ;;
2173         esac
2174         case "`$cc -v -c try.c 2>&1`" in
2175         *gcc*) trygcc=no ;;
2176         esac
2177         if $test X"$trygcc" = Xyes; then
2178             if gcc -o try -c try.c; then
2179                 echo " "
2180                 echo "You seem to have a working gcc, though." >&4
2181                 rp="Would you like to use it?"
2182                 dflt=y
2183                 if $test -f myread; then
2184                     . ./myread
2185                 else
2186                     if $test -f UU/myread; then
2187                         . ./UU/myread
2188                     else
2189                         echo "Cannot find myread, sorry.  Aborting." >&2
2190                         exit 1
2191                     fi
2192                 fi  
2193                 case "$ans" in
2194                 [yY]*) cc=gcc; ccname=gcc; ccflags=''; despair=no ;;
2195                 esac
2196             fi
2197         fi
2198         if $test X"$despair" = Xyes; then
2199             $cat >&4 <<EOM
2200 You need to find a working C compiler.
2201 Either (purchase and) install the C compiler supplied by your OS vendor,
2202 or for a free C compiler try http://gcc.gnu.org/
2203 I cannot continue any further, aborting.
2204 EOM
2205             exit 1
2206         fi
2207     fi
2208     $rm -f try try.*
2209     ;;
2210 esac
2211 EOSC
2212
2213 : determine whether symbolic links are supported
2214 echo " "
2215 $touch blurfl
2216 if $ln -s blurfl sym > /dev/null 2>&1 ; then
2217         echo "Symbolic links are supported." >&4
2218         lns="$ln -s"
2219 else
2220         echo "Symbolic links are NOT supported." >&4
2221         lns="$ln"
2222 fi
2223 $rm -f blurfl sym
2224
2225 : determine whether symbolic links are supported
2226 echo " "
2227 case "$lns" in
2228 *"ln -s")
2229         echo "Checking how to test for symbolic links..." >&4
2230         $lns blurfl sym
2231         if $test "X$issymlink" = X; then
2232                 sh -c "PATH= test -h sym" >/dev/null 2>&1
2233                 if test $? = 0; then
2234                         issymlink="test -h"
2235                 fi              
2236         fi
2237         if $test "X$issymlink" = X; then
2238                 if  $test -h >/dev/null 2>&1; then
2239                         issymlink="$test -h"
2240                         echo "Your builtin 'test -h' may be broken, I'm using external '$test -h'." >&4
2241                 fi              
2242         fi
2243         if $test "X$issymlink" = X; then
2244                 if $test -L sym 2>/dev/null; then
2245                         issymlink="$test -L"
2246                 fi
2247         fi
2248         if $test "X$issymlink" != X; then
2249                 echo "You can test for symbolic links with '$issymlink'." >&4
2250         else
2251                 echo "I do not know how you can test for symbolic links." >&4
2252         fi
2253         $rm -f blurfl sym
2254         ;;
2255 *)      echo "No symbolic links, so not testing for their testing..." >&4
2256         ;;
2257 esac
2258 echo " "
2259
2260
2261 case "$mksymlinks" in
2262 $define|true|[yY]*)
2263         case "$src" in
2264         ''|'.') echo "Cannot create symlinks in the original directory." >&4
2265                 exit 1
2266                 ;;
2267         *)      case "$lns:$issymlink" in
2268                 *"ln -s:"*"test -"?)
2269                         echo "Creating the symbolic links..." >&4
2270                         echo "(First creating the subdirectories...)" >&4
2271                         cd ..
2272                         awk '{print $1}' $src/MANIFEST | grep / | sed 's:/[^/]*$::' | sort -u | while true; do
2273                                 read directory
2274                                 test -z "$directory" && break
2275                                 mkdir -p $directory
2276                         done
2277                         # Sanity check 1.
2278                         if test ! -d t/base; then
2279                                 echo "Failed to create the subdirectories.  Aborting." >&4
2280                                 exit 1
2281                         fi
2282                         echo "(Then creating the symlinks...)" >&4
2283                         awk '{print $1}' $src/MANIFEST | while true; do
2284                                 read filename
2285                                 test -z "$filename" && break
2286                                 if test -f $filename; then
2287                                         if $issymlink $filename; then
2288                                                 rm -f $filename
2289                                         fi
2290                                 fi
2291                                 if test -f $filename; then
2292                                         echo "$filename already exists, not symlinking."
2293                                 else
2294                                         ln -s $src/$filename $filename
2295                                 fi
2296                         done
2297                         # Sanity check 2.
2298                         if test ! -f t/base/commonsense.t; then
2299                                 echo "Failed to create the symlinks.  Aborting." >&4
2300                                 exit 1
2301                         fi
2302                         cd UU
2303                         ;;
2304                 *)      echo "(I cannot figure out how to do symbolic links, ignoring mksymlinks)." >&4
2305                         ;;
2306                 esac
2307                 ;;
2308         esac
2309         ;;
2310 esac
2311
2312
2313 case "$usecrosscompile" in
2314 $define|true|[yY]*)
2315         $echo "Cross-compiling..."
2316         croak=''
2317         case "$cc" in
2318         *-*-gcc) # A cross-compiling gcc, probably.
2319             targetarch=`$echo $cc|$sed 's/-gcc$//'`
2320             ar=$targetarch-ar
2321             # leave out ld, choosing it is more complex
2322             nm=$targetarch-nm
2323             ranlib=$targetarch-ranlib
2324             $echo 'extern int foo;' > try.c
2325             set X `$cc -v -E perl.c 2>&1 | $awk '/^#include </,/^End of search /'|$grep '/include'`
2326             shift
2327             if $test $# -gt 0; then
2328                 incpth="$incpth $*"
2329                 incpth="$echo $incpth|$sed 's/^ //'"
2330                 echo "Guessing incpth $incpth" >&4
2331                 for i in $*; do
2332                     j=`$echo $i|$sed 's,/include$,/lib,'`
2333                     if $test -d $j; then
2334                         libpth="$libpth $j"
2335                     fi
2336                 done   
2337                 libpth="$echo $libpth|$sed 's/^ //'"
2338                 echo "Guessing libpth $libpth." >&4
2339             fi
2340             $rm -f try.c
2341             ;;
2342         esac
2343         case "$targetarch" in
2344         '') echo "Targetarch not defined." >&4; croak=y ;;
2345         *)  echo "Using targetarch $targetarch." >&4 ;;
2346         esac
2347         case "$incpth" in
2348         '') echo "Incpth not defined." >&4; croak=y ;;
2349         *)  echo "Using incpth $incpth." >&4 ;;
2350         esac
2351         case "$libpth" in
2352         '') echo "Libpth not defined." >&4; croak=y ;;
2353         *)  echo "Using libpth $libpth." >&4 ;;
2354         esac
2355         case "$usrinc" in
2356         '') for i in $incpth; do
2357                 if $test -f $i/errno.h -a -f $i/stdio.h -a -f $i/time.h; then
2358                     usrinc=$i
2359                     echo "Guessing usrinc $usrinc." >&4
2360                     break
2361                 fi
2362             done
2363             case "$usrinc" in
2364             '') echo "Usrinc not defined." >&4; croak=y ;;
2365             esac
2366             ;;
2367         *)  echo "Using usrinc $usrinc." >&4 ;;
2368         esac
2369         case "$targethost" in
2370         '') echo "Targethost not defined." >&4; croak=y ;;
2371         *)  echo "Using targethost $targethost." >&4
2372         esac
2373         locincpth=' '
2374         loclibpth=' '
2375         case "$croak" in
2376         y) echo "Cannot continue, aborting." >&4; exit 1 ;;
2377         esac
2378         case "$src" in
2379         /*) run=$src/Cross/run
2380             to=$src/Cross/to
2381             from=$src/Cross/from
2382             ;;
2383         *)  pwd=`$test -f ../Configure & cd ..; pwd`
2384             run=$pwd/Cross/run
2385             to=$pwd/Cross/to
2386             from=$pwd/Cross/from
2387             ;;
2388         esac
2389         case "$targetrun" in
2390         '') targetrun=ssh ;;
2391         esac
2392         case "$targetto" in
2393         '') targetto=scp ;;
2394         esac
2395         case "$targetfrom" in
2396         '') targetfrom=scp ;;
2397         esac
2398         run=$run-$targetrun
2399         to=$to-$targetto
2400         from=$from-$targetfrom
2401         case "$targetdir" in
2402         '')  targetdir=/tmp
2403              echo "Guessing targetdir $targetdir." >&4
2404              ;;
2405         esac
2406         case "$targetuser" in
2407         '')  targetuser=root
2408              echo "Guessing targetuser $targetuser." >&4
2409              ;;
2410         esac
2411         case "$targetfrom" in
2412         scp)    q=-q ;;
2413         *)      q='' ;;
2414         esac
2415         case "$targetrun" in
2416         ssh|rsh)
2417             cat >$run <<EOF
2418 #!/bin/sh
2419 exe=\$1
2420 shift
2421 $to \$exe
2422 $targetrun -l $targetuser $targethost "cd $targetdir && ./\$exe \$@"
2423 EOF
2424             ;;
2425         *)  echo "Unknown targetrun '$targetrun'" >&4
2426             exit 1
2427             ;;
2428         esac
2429         case "$targetto" in
2430         scp|rcp)
2431             cat >$to <<EOF
2432 #!/bin/sh
2433 for f in \$@
2434 do
2435   $targetto $q \$f $targetuser@$targethost:$targetdir/. || exit 1
2436 done
2437 exit 0
2438 EOF
2439             ;;
2440         cp) cat >$to <<EOF
2441 #!/bin/sh
2442 cp \$@ $targetdir/.
2443 EOF
2444             ;;
2445         *)  echo "Unknown targetto '$targetto'" >&4
2446             exit 1
2447             ;;
2448         esac
2449         case "$targetfrom" in
2450         scp|rcp)
2451           cat >$from <<EOF
2452 #!/bin/sh
2453 for f in \$@
2454 do
2455   $targetfrom $q $targetuser@$targethost:$targetdir/\$f . || exit 1
2456 done
2457 exit 0
2458 EOF
2459             ;;
2460         cp) cat >$from <<EOF
2461 #!/bin/sh
2462 for f in \$@
2463 do
2464   cp $targetdir/\$f . || exit 1
2465 done
2466 exit 0
2467 EOF
2468             ;;
2469         *)  echo "Unknown targetfrom '$targetfrom'" >&4
2470             exit 1
2471             ;;
2472         esac
2473         if $test ! -f $run; then
2474             echo "Target 'run' script '$run' not found." >&4
2475         else
2476             chmod a+rx $run
2477         fi
2478         if $test ! -f $to; then
2479             echo "Target 'to' script '$to' not found." >&4
2480         else
2481             chmod a+rx $to
2482         fi
2483         if $test ! -f $from; then
2484             echo "Target 'from' script '$from' not found." >&4
2485         else
2486             chmod a+rx $from
2487         fi
2488         if $test ! -f $run -o ! -f $to -o ! -f $from; then
2489             exit 1
2490         fi
2491         cat >&4 <<EOF
2492 Using '$run' for remote execution, and '$from' and '$to'
2493 for remote file transfer.
2494 EOF
2495         ;;
2496 *)      run=''
2497         to=:
2498         from=:
2499         usecrosscompile='undef'
2500         targetarch=''
2501         ;;
2502 esac
2503
2504 : see whether [:lower:] and [:upper:] are supported character classes
2505 echo " "
2506 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
2507 ABYZ)
2508         echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
2509         up='[:upper:]'
2510         low='[:lower:]'
2511         ;;
2512 *)      # There is a discontinuity in EBCDIC between 'I' and 'J'
2513         # (0xc9 and 0xd1), therefore that is a nice testing point.
2514         if test "X$up" = X -o "X$low" = X; then
2515             case "`echo IJ | $tr '[I-J]' '[i-j]' 2>/dev/null`" in
2516             ij) up='[A-Z]'
2517                 low='[a-z]'
2518                 ;;
2519             esac
2520         fi
2521         if test "X$up" = X -o "X$low" = X; then
2522             case "`echo IJ | $tr I-J i-j 2>/dev/null`" in
2523             ij) up='A-Z'
2524                 low='a-z'
2525                 ;;
2526             esac
2527         fi
2528         if test "X$up" = X -o "X$low" = X; then
2529             case "`echo IJ | od -x 2>/dev/null`" in
2530             *C9D1*|*c9d1*)
2531                 echo "Hey, this might be EBCDIC." >&4
2532                 if test "X$up" = X -o "X$low" = X; then
2533                     case "`echo IJ | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
2534                     ij) up='[A-IJ-RS-Z]'
2535                         low='[a-ij-rs-z]'
2536                         ;;
2537                     esac
2538                 fi
2539                 if test "X$up" = X -o "X$low" = X; then
2540                     case "`echo IJ | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
2541                     ij) up='A-IJ-RS-Z'
2542                         low='a-ij-rs-z'
2543                         ;;
2544                     esac
2545                 fi
2546                 ;;
2547             esac
2548         fi
2549 esac
2550 case "`echo IJ | $tr \"$up\" \"$low\" 2>/dev/null`" in
2551 ij)
2552     echo "Using $up and $low to convert case." >&4
2553     ;;
2554 *)
2555     echo "I don't know how to translate letters from upper to lower case." >&4
2556     echo "Your tr is not acting any way I know of." >&4
2557     exit 1
2558     ;;
2559 esac
2560 : set up the translation script tr, must be called with ./tr of course
2561 cat >tr <<EOSC
2562 $startsh
2563 case "\$1\$2" in
2564 '[A-Z][a-z]') exec $tr '$up' '$low';;
2565 '[a-z][A-Z]') exec $tr '$low' '$up';;
2566 esac
2567 exec $tr "\$@"
2568 EOSC
2569 chmod +x tr
2570 $eunicefix tr
2571
2572 : Try to determine whether config.sh was made on this system
2573 case "$config_sh" in
2574 '')
2575 myuname=`$uname -a 2>/dev/null`
2576 $test -z "$myuname" && myuname=`hostname 2>/dev/null`
2577 # tr '[A-Z]' '[a-z]' would not work in EBCDIC
2578 # because the A-Z/a-z are not consecutive.
2579 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
2580         ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
2581 newmyuname="$myuname"
2582 dflt=n
2583 case "$knowitall" in
2584 '')
2585         if test -f ../config.sh; then
2586                 if $contains myuname= ../config.sh >/dev/null 2>&1; then
2587                         eval "`grep myuname= ../config.sh`"
2588                 fi
2589                 if test "X$myuname" = "X$newmyuname"; then
2590                         dflt=y
2591                 fi
2592         fi
2593         ;;
2594 *) dflt=y;;
2595 esac
2596
2597 : Get old answers from old config file if Configure was run on the
2598 : same system, otherwise use the hints.
2599 hint=default
2600 cd ..
2601 if test -f config.sh; then
2602         echo " "
2603         rp="I see a config.sh file.  Shall I use it to set the defaults?"
2604         . UU/myread
2605         case "$ans" in
2606         n*|N*) echo "OK, I'll ignore it."
2607                 mv config.sh config.sh.old
2608                 myuname="$newmyuname"
2609                 ;;
2610         *)  echo "Fetching default answers from your old config.sh file..." >&4
2611                 tmp_n="$n"
2612                 tmp_c="$c"
2613                 tmp_sh="$sh"
2614                 . ./config.sh
2615                 cp config.sh UU
2616                 n="$tmp_n"
2617                 c="$tmp_c"
2618                 : Older versions did not always set $sh.  Catch re-use of such
2619                 : an old config.sh.
2620                 case "$sh" in
2621                 '') sh="$tmp_sh" ;;
2622                 esac
2623                 hint=previous
2624                 ;;
2625         esac
2626 fi
2627 . ./UU/checkcc
2628 if test ! -f config.sh; then
2629         $cat <<EOM
2630
2631 First time through, eh?  I have some defaults handy for some systems
2632 that need some extra help getting the Configure answers right:
2633
2634 EOM
2635         (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/   /g' >&4
2636         dflt=''
2637         : Half the following guesses are probably wrong... If you have better
2638         : tests or hints, please send them to perlbug@perl.org
2639         : The metaconfig authors would also appreciate a copy...
2640         $test -f /irix && osname=irix
2641         $test -f /xenix && osname=sco_xenix
2642         $test -f /dynix && osname=dynix
2643         $test -f /dnix && osname=dnix
2644         $test -f /lynx.os && osname=lynxos
2645         $test -f /unicos && osname=unicos && osvers=`$uname -r`
2646         $test -f /unicosmk && osname=unicosmk && osvers=`$uname -r`
2647         $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
2648         $test -f /bin/mips && /bin/mips && osname=mips
2649         $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
2650                 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
2651         $test -d /usr/apollo/bin && osname=apollo
2652         $test -f /etc/saf/_sactab && osname=svr4
2653         $test -d /usr/include/minix && osname=minix
2654         if $test -d /MachTen -o -d /MachTen_Folder; then
2655                 osname=machten
2656                 if $test -x /sbin/version; then
2657                         osvers=`/sbin/version | $awk '{print $2}' |
2658                         $sed -e 's/[A-Za-z]$//'`
2659                 elif $test -x /usr/etc/version; then
2660                         osvers=`/usr/etc/version | $awk '{print $2}' |
2661                         $sed -e 's/[A-Za-z]$//'`
2662                 else
2663                         osvers="$2.$3"
2664                 fi
2665         fi
2666
2667         $test -f /sys/posix.dll &&
2668                 $test -f /usr/bin/what &&
2669                 set X `/usr/bin/what /sys/posix.dll` &&
2670                 $test "$3" = UWIN &&
2671                 osname=uwin &&
2672                 osvers="$5"
2673
2674         if $test -f $uname; then
2675                 set X $myuname
2676                 shift
2677
2678                 case "$5" in
2679                 fps*) osname=fps ;;
2680                 mips*)
2681                         case "$4" in
2682                         umips) osname=umips ;;
2683                         *) osname=mips ;;
2684                         esac;;
2685                 [23]100) osname=mips ;;
2686                 next*) osname=next ;;
2687                 i386*)
2688                         tmp=`/bin/uname -X 2>/dev/null|awk '/3\.2v[45]/{ print $(NF) }'`
2689                         if $test "$tmp" != "" -a "$3" = "3.2" -a -f '/etc/systemid'; then
2690                                 osname='sco'
2691                                 osvers=$tmp
2692                         elif $test -f /etc/kconfig; then
2693                                 osname=isc
2694                                 if test "$lns" = "$ln -s"; then
2695                                         osvers=4
2696                                 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
2697                                         osvers=3
2698                                 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
2699                                         osvers=2
2700                                 fi
2701                         fi
2702                         tmp=''
2703                         ;;
2704                 pc*)
2705                         if test -n "$DJGPP"; then
2706                                 osname=dos
2707                                 osvers=djgpp
2708                         fi
2709                         ;;
2710                 esac
2711
2712                 case "$1" in
2713                 aix) osname=aix
2714                         tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
2715                         case "$tmp" in
2716                         'not found') osvers="$4"."$3" ;;
2717                         '<3240'|'<>3240') osvers=3.2.0 ;;
2718                         '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
2719                         '=3250'|'>3250') osvers=3.2.5 ;;
2720                         *) osvers=$tmp;;
2721                         esac
2722                         ;;
2723                 bsd386) osname=bsd386
2724                         osvers=`$uname -r`
2725                         ;;
2726                 cygwin*) osname=cygwin
2727                         osvers="$3"
2728                         ;;
2729                 *dc.osx) osname=dcosx
2730                         osvers="$3"
2731                         ;;
2732                 dnix) osname=dnix
2733                         osvers="$3"
2734                         ;;
2735                 domainos) osname=apollo
2736                         osvers="$3"
2737                         ;;
2738                 dgux) osname=dgux 
2739                         osvers="$3"
2740                         ;;
2741                 dynixptx*) osname=dynixptx
2742                         osvers=`echo "$4"|sed 's/^v//'`
2743                         ;;
2744                 freebsd) osname=freebsd 
2745                         osvers="$3" ;;
2746                 genix) osname=genix ;;
2747                 hp*) osname=hpux 
2748                         osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
2749                         ;;
2750                 irix*) osname=irix
2751                         case "$3" in
2752                         4*) osvers=4 ;;
2753                         5*) osvers=5 ;;
2754                         *)      osvers="$3" ;;
2755                         esac
2756                         ;;
2757                 linux) osname=linux
2758                         case "$3" in
2759                         *)      osvers="$3" ;;
2760                         esac
2761                         ;;
2762                 MiNT) osname=mint
2763                         ;;
2764                 netbsd*) osname=netbsd
2765                         osvers="$3"
2766                         ;;
2767                 news-os) osvers="$3"
2768                         case "$3" in
2769                         4*) osname=newsos4 ;;
2770                         *) osname=newsos ;;
2771                         esac
2772                         ;;
2773                 next*) osname=next ;;
2774                 nonstop-ux) osname=nonstopux ;;
2775                 POSIX-BC | posix-bc ) osname=posix-bc
2776                         osvers="$3"
2777                         ;;
2778                 powerux | power_ux | powermax_os | powermaxos | \
2779                 powerunix | power_unix) osname=powerux
2780                         osvers="$3"
2781                         ;;
2782                 qnx) osname=qnx
2783                         osvers="$4"
2784                         ;;
2785                 solaris) osname=solaris
2786                         case "$3" in
2787                         5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2788                         *)      osvers="$3" ;;
2789                         esac
2790                         ;;
2791                 sunos) osname=sunos
2792                         case "$3" in
2793                         5*) osname=solaris
2794                                 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2795                         *)      osvers="$3" ;;
2796                         esac
2797                         ;;
2798                 titanos) osname=titanos
2799                         case "$3" in
2800                         1*) osvers=1 ;;
2801                         2*) osvers=2 ;;
2802                         3*) osvers=3 ;;
2803                         4*) osvers=4 ;;
2804                         *)      osvers="$3" ;;
2805                         esac
2806                         ;;
2807                 ultrix) osname=ultrix
2808                         osvers="$3"
2809                         ;;
2810                 osf1|mls+)      case "$5" in
2811                                 alpha)
2812                                         osname=dec_osf
2813                                         osvers=`sizer -v | awk '{print $3}' |  tr '[A-Z]' '[a-z]' | sed 's/^[xvt]//'`
2814                                         case "$osvers" in
2815                                         [1-9].[0-9]*) ;;
2816                                         *) osvers=`echo "$3" | sed 's/^[xvt]//'` ;;
2817                                         esac
2818                                         ;;
2819                         hp*)    osname=hp_osf1  ;;
2820                         mips)   osname=mips_osf1 ;;
2821                         esac
2822                         ;;
2823                 unixware) osname=svr5
2824                         osvers="$4"
2825                         ;;
2826                 uts) osname=uts
2827                         osvers="$3"
2828                         ;;
2829                 $2) case "$osname" in
2830                         *isc*) ;;
2831                         *freebsd*) ;;
2832                         svr*)
2833                                 : svr4.x or possibly later
2834                                 case "svr$3" in 
2835                                 ${osname}*)
2836                                         osname=svr$3
2837                                         osvers=$4
2838                                         ;;
2839                                 esac
2840                                 case "$osname" in
2841                                 svr4.0)
2842                                         : Check for ESIX
2843                                         if test -f /stand/boot ; then
2844                                                 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
2845                                                 if test -n "$INITPROG" -a -f "$INITPROG"; then
2846                         isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
2847                                                         if test -n "$isesix"; then
2848                                                                 osname=esix4
2849                                                         fi
2850                                                 fi
2851                                         fi
2852                                         ;;
2853                                 esac
2854                                 ;;
2855                         *)      if test -f /etc/systemid; then
2856                                         osname=sco
2857                                         set `echo $3 | $sed 's/\./ /g'` $4
2858                                         if $test -f $src/hints/sco_$1_$2_$3.sh; then
2859                                                 osvers=$1.$2.$3
2860                                         elif $test -f $src/hints/sco_$1_$2.sh; then
2861                                                 osvers=$1.$2
2862                                         elif $test -f $src/hints/sco_$1.sh; then
2863                                                 osvers=$1
2864                                         fi
2865                                 else
2866                                         case "$osname" in
2867                                         '') : Still unknown.  Probably a generic Sys V.
2868                                                 osname="sysv"
2869                                                 osvers="$3"
2870                                                 ;;
2871                                         esac
2872                                 fi
2873                                 ;;
2874                         esac
2875                         ;;
2876                 *)      case "$osname" in
2877                         '') : Still unknown.  Probably a generic BSD.
2878                                 osname="$1"
2879                                 osvers="$3"
2880                                 ;;
2881                         esac
2882                         ;;
2883                 esac
2884         else
2885                 if test -f /vmunix -a -f $src/hints/news_os.sh; then
2886                         (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
2887                         if $contains news-os UU/kernel.what >/dev/null 2>&1; then
2888                                 osname=news_os
2889                         fi
2890                         $rm -f UU/kernel.what
2891                 elif test -d c:/.; then
2892                         set X $myuname
2893                         osname=os2
2894                         osvers="$5"
2895                 fi
2896         fi
2897         
2898         case "$targetarch" in
2899         '') ;;
2900         *)  hostarch=$osname
2901             osname=`echo $targetarch|sed 's,^[^-]*-,,'`
2902             osvers=''
2903             ;;
2904         esac
2905
2906         : Now look for a hint file osname_osvers, unless one has been
2907         : specified already.
2908         case "$hintfile" in
2909         ''|' ')
2910                 file=`echo "${osname}_${osvers}" | $sed -e 's%\.%_%g' -e 's%_$%%'`
2911                 : Also try without trailing minor version numbers.
2912                 xfile=`echo $file | $sed -e 's%_[^_]*$%%'`
2913                 xxfile=`echo $xfile | $sed -e 's%_[^_]*$%%'`
2914                 xxxfile=`echo $xxfile | $sed -e 's%_[^_]*$%%'`
2915                 xxxxfile=`echo $xxxfile | $sed -e 's%_[^_]*$%%'`
2916                 case "$file" in
2917                 '') dflt=none ;;
2918                 *)  case "$osvers" in
2919                         '') dflt=$file
2920                                 ;;
2921                         *)  if $test -f $src/hints/$file.sh ; then
2922                                         dflt=$file
2923                                 elif $test -f $src/hints/$xfile.sh ; then
2924                                         dflt=$xfile
2925                                 elif $test -f $src/hints/$xxfile.sh ; then
2926                                         dflt=$xxfile
2927                                 elif $test -f $src/hints/$xxxfile.sh ; then
2928                                         dflt=$xxxfile
2929                                 elif $test -f $src/hints/$xxxxfile.sh ; then
2930                                         dflt=$xxxxfile
2931                                 elif $test -f "$src/hints/${osname}.sh" ; then
2932                                         dflt="${osname}"
2933                                 else
2934                                         dflt=none
2935                                 fi
2936                                 ;;
2937                         esac
2938                         ;;
2939                 esac
2940                 if $test -f Policy.sh ; then
2941                         case "$dflt" in
2942                         *Policy*) ;;
2943                         none) dflt="Policy" ;;
2944                         *) dflt="Policy $dflt" ;;
2945                         esac
2946                 fi
2947                 ;;
2948         *)
2949                 dflt=`echo $hintfile | $sed 's/\.sh$//'`
2950                 ;;
2951         esac
2952
2953         if $test -f Policy.sh ; then
2954                 $cat <<EOM
2955
2956 There's also a Policy hint file available, which should make the
2957 site-specific (policy) questions easier to answer.
2958 EOM
2959
2960         fi
2961
2962         $cat <<EOM
2963
2964 You may give one or more space-separated answers, or "none" if appropriate.
2965 A well-behaved OS will have no hints, so answering "none" or just "Policy"
2966 is a good thing.  DO NOT give a wrong version or a wrong OS.
2967
2968 EOM
2969
2970         rp="Which of these apply, if any?"
2971         . UU/myread
2972         tans=$ans
2973         for file in $tans; do
2974                 if $test X$file = XPolicy -a -f Policy.sh; then
2975                         . Policy.sh
2976                         $cat Policy.sh >> UU/config.sh
2977                 elif $test -f $src/hints/$file.sh; then
2978                         . $src/hints/$file.sh
2979                         $cat $src/hints/$file.sh >> UU/config.sh
2980                 elif $test X"$tans" = X -o X"$tans" = Xnone ; then
2981                         : nothing
2982                 else
2983                         : Give one chance to correct a possible typo.
2984                         echo "$file.sh does not exist"
2985                         dflt=$file
2986                         rp="hint to use instead?"
2987                         . UU/myread
2988                         for file in $ans; do
2989                                 if $test -f "$src/hints/$file.sh"; then
2990                                         . $src/hints/$file.sh
2991                                         $cat $src/hints/$file.sh >> UU/config.sh
2992                                 elif $test X$ans = X -o X$ans = Xnone ; then
2993                                         : nothing
2994                                 else
2995                                         echo "$file.sh does not exist -- ignored."
2996                                 fi
2997                         done
2998                 fi
2999         done
3000
3001         hint=recommended
3002         : Remember our hint file for later.
3003         if $test -f "$src/hints/$file.sh" ; then
3004                 hintfile="$file"
3005         else
3006                 hintfile=''
3007         fi
3008 fi
3009 cd UU
3010 ;;
3011 *)
3012         echo " "
3013         echo "Fetching default answers from $config_sh..." >&4
3014         tmp_n="$n"
3015         tmp_c="$c"
3016         cd ..
3017         cp $config_sh config.sh 2>/dev/null
3018         chmod +w config.sh
3019         . ./config.sh
3020         cd UU
3021         cp ../config.sh .
3022         n="$tmp_n"
3023         c="$tmp_c"
3024         hint=previous
3025         ;;
3026 esac
3027 test "$override" && . ./optdef.sh
3028
3029 : Restore computed paths
3030 for file in $loclist $trylist; do
3031         eval $file="\$_$file"
3032 done
3033
3034 cat << EOM
3035
3036 Configure uses the operating system name and version to set some defaults.
3037 The default value is probably right if the name rings a bell. Otherwise,
3038 since spelling matters for me, either accept the default or answer "none"
3039 to leave it blank.
3040
3041 EOM
3042 case "$osname" in
3043         ''|' ')
3044                 case "$hintfile" in
3045                 ''|' '|none) dflt=none ;;
3046                 *)  dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
3047                 esac
3048                 ;;
3049         *) dflt="$osname" ;;
3050 esac
3051 rp="Operating system name?"
3052 . ./myread
3053 case "$ans" in
3054 none)  osname='' ;;
3055 *) osname=`echo "$ans" | $sed -e 's/[   ][      ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
3056 esac
3057 echo " "
3058 case "$osvers" in
3059         ''|' ')
3060                 case "$hintfile" in
3061                 ''|' '|none) dflt=none ;;
3062                 *)      dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
3063                         dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
3064                         case "$dflt" in
3065                         ''|' ') dflt=none ;;
3066                         esac
3067                         ;;
3068                 esac
3069                 ;;
3070         *) dflt="$osvers" ;;
3071 esac
3072 rp="Operating system version?"
3073 . ./myread
3074 case "$ans" in
3075 none)  osvers='' ;;
3076 *) osvers="$ans" ;;
3077 esac
3078
3079
3080 . ./posthint.sh
3081
3082 : who configured the system
3083 cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
3084 cf_by=`(logname) 2>/dev/null`
3085 case "$cf_by" in
3086 "")
3087         cf_by=`(whoami) 2>/dev/null`
3088         case "$cf_by" in
3089         "") cf_by=unknown ;;
3090         esac ;;
3091 esac
3092
3093 : set up the script used to warn in case of inconsistency
3094 cat <<EOS >whoa
3095 $startsh
3096 EOS
3097 cat <<'EOSC' >>whoa
3098 dflt=y
3099 echo " "
3100 echo "*** WHOA THERE!!! ***" >&4
3101 echo "    The $hint value for \$$var on this machine was \"$was\"!" >&4
3102 rp="    Keep the $hint value?"
3103 . ./myread
3104 case "$ans" in
3105 y) td=$was; tu=$was;;
3106 esac
3107 EOSC
3108
3109 : function used to set $1 to $val
3110 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
3111 case "$val$was" in
3112 $define$undef) . ./whoa; eval "$var=\$td";;
3113 $undef$define) . ./whoa; eval "$var=\$tu";;
3114 *) eval "$var=$val";;
3115 esac'
3116
3117 case "$usethreads" in
3118 $define|true|[yY]*)     dflt='y';;
3119 *) dflt='n';;
3120 esac
3121 cat <<EOM
3122
3123 Perl can be built to take advantage of threads on some systems.
3124 To do so, Configure can be run with -Dusethreads.
3125
3126 Note that threading is a highly experimental feature, and
3127 some known race conditions still remain.  If you choose to try
3128 it, be very sure to not actually deploy it for production
3129 purposes.  README.threads has more details, and is required
3130 reading if you enable threads.
3131
3132 If this doesn't make any sense to you, just accept the default '$dflt'.
3133 EOM
3134 rp='Build a threading Perl?'
3135 . ./myread
3136 case "$ans" in
3137 y|Y)    val="$define" ;;
3138 *)      val="$undef" ;;
3139 esac
3140 set usethreads
3141 eval $setvar
3142
3143 case "$usethreads" in
3144 $define)
3145         $cat <<EOM
3146
3147 As of 5.5.640, Perl has two different internal threading implementations,
3148 the 5.005 version (5005threads) and an interpreter-based version
3149 (ithreads) that has one interpreter per thread.  Both are very 
3150 experimental.  This arrangement exists to help developers work out
3151 which one is better.
3152
3153 If you're a casual user, you probably don't want interpreter-threads
3154 at this time.  There doesn't yet exist a way to create threads from
3155 within Perl in this model, i.e., "use Thread;" will NOT work.
3156 EOM
3157         : Default to ithreads unless overridden on command line or with
3158         : old config.sh
3159         dflt='y'
3160         case "$use5005threads" in
3161                 $define|true|[yY]*) dflt='n';;
3162         esac
3163         case "$useithreads" in
3164                 $undef|false|[nN]*) dflt='n';;
3165         esac
3166         rp='Use interpreter-based ithreads?'
3167         . ./myread
3168         case "$ans" in
3169         y|Y)    val="$define" ;;
3170         *)      val="$undef" ;;
3171         esac
3172         set useithreads
3173         eval $setvar
3174         : Now set use5005threads to the opposite value.
3175         case "$useithreads" in
3176         $define) val="$undef" ;;
3177         *) val="$define" ;;
3178         esac
3179         set use5005threads
3180         eval $setvar
3181         ;;
3182 *)
3183         useithreads="$undef"
3184         use5005threads="$undef"
3185         ;;
3186 esac
3187
3188 case "$useithreads$use5005threads" in
3189 "$define$define")
3190         $cat >&4 <<EOM
3191
3192 You cannot have both the ithreads and the 5.005 threads enabled
3193 at the same time.  Disabling the 5.005 threads since they are
3194 much less stable than the ithreads.
3195
3196 EOM
3197         use5005threads="$undef"
3198         ;;
3199 esac
3200
3201 case "$d_oldpthreads" in
3202 '')     : Configure tests would be welcome here.  For now, assume undef.
3203         val="$undef" ;;
3204 *)      val="$d_oldpthreads" ;;
3205 esac
3206 set d_oldpthreads
3207 eval $setvar
3208
3209
3210 case "$usethreads" in
3211 "$define"|true|[yY]*)
3212 : Look for a hint-file generated 'call-back-unit'.  If the
3213 : user has specified that a threading perl is to be built,
3214 : we may need to set or change some other defaults.
3215         if $test -f usethreads.cbu; then
3216                 echo "Your platform has some specific hints for threaded builds, using them..."
3217                 . ./usethreads.cbu
3218         else
3219                 $cat <<EOM
3220 (Your platform doesn't have any specific hints for threaded builds.
3221  Assuming POSIX threads, then.)
3222 EOM
3223         fi
3224         ;;
3225 esac
3226
3227 cat <<EOM
3228
3229 Perl can be built so that multiple Perl interpreters can coexist
3230 within the same Perl executable.
3231 EOM
3232
3233 case "$useithreads" in
3234 $define)
3235         cat <<EOM
3236 This multiple interpreter support is required for interpreter-based threads.
3237 EOM
3238         val="$define"
3239         ;;
3240 *)      case "$usemultiplicity" in
3241         $define|true|[yY]*)     dflt='y';;
3242         *) dflt='n';;
3243         esac
3244         echo " "
3245         echo "If this doesn't make any sense to you, just accept the default '$dflt'."
3246         rp='Build Perl for multiplicity?'
3247         . ./myread
3248         case "$ans" in
3249         y|Y)    val="$define" ;;
3250         *)      val="$undef" ;;
3251         esac
3252         ;;
3253 esac
3254 set usemultiplicity
3255 eval $setvar
3256
3257 : make some quick guesses about what we are up against
3258 echo " "
3259 $echo $n "Hmm...  $c"
3260 echo exit 1 >bsd
3261 echo exit 1 >usg
3262 echo exit 1 >v7
3263 echo exit 1 >osf1
3264 echo exit 1 >eunice
3265 echo exit 1 >xenix
3266 echo exit 1 >venix
3267 echo exit 1 >os2
3268 d_bsd="$undef"
3269 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
3270 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
3271 then
3272         echo "Looks kind of like an OSF/1 system, but we'll see..."
3273         echo exit 0 >osf1
3274 elif test `echo abc | $tr a-z A-Z` = Abc ; then
3275         xxx=`./loc addbib blurfl $pth`
3276         if $test -f $xxx; then
3277         echo "Looks kind of like a USG system with BSD features, but we'll see..."
3278                 echo exit 0 >bsd
3279                 echo exit 0 >usg
3280         else
3281                 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
3282                         echo "Looks kind of like an extended USG system, but we'll see..."
3283                 else
3284                         echo "Looks kind of like a USG system, but we'll see..."
3285                 fi
3286                 echo exit 0 >usg
3287         fi
3288 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
3289         echo "Looks kind of like a BSD system, but we'll see..."
3290         d_bsd="$define"
3291         echo exit 0 >bsd
3292 else
3293         echo "Looks kind of like a Version 7 system, but we'll see..."
3294         echo exit 0 >v7
3295 fi
3296 case "$eunicefix" in
3297 *unixtovms*)
3298         $cat <<'EOI'
3299 There is, however, a strange, musty smell in the air that reminds me of
3300 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
3301 EOI
3302         echo exit 0 >eunice
3303         d_eunice="$define"
3304 : it so happens the Eunice I know will not run shell scripts in Unix format
3305         ;;
3306 *)
3307         echo " "
3308         echo "Congratulations.  You aren't running Eunice."
3309         d_eunice="$undef"
3310         ;;
3311 esac
3312 : Detect OS2.  The p_ variable is set above in the Head.U unit.
3313 : Note that this also -- wrongly -- detects e.g. dos-djgpp, which also uses
3314 : semicolon as a patch separator
3315 case "$p_" in
3316 :) ;;
3317 *)
3318         $cat <<'EOI'
3319 I have the feeling something is not exactly right, however...don't tell me...
3320 lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
3321 (Or you may be running DOS with DJGPP.)
3322 EOI
3323         echo exit 0 >os2
3324         ;;
3325 esac
3326 if test -f /xenix; then
3327         echo "Actually, this looks more like a XENIX system..."
3328         echo exit 0 >xenix
3329         d_xenix="$define"
3330 else
3331         echo " "
3332         echo "It's not Xenix..."
3333         d_xenix="$undef"
3334 fi
3335 chmod +x xenix
3336 $eunicefix xenix
3337 if test -f /venix; then
3338         echo "Actually, this looks more like a VENIX system..."
3339         echo exit 0 >venix
3340 else
3341         echo " "
3342         if ./xenix; then
3343                 : null
3344         else
3345                 echo "Nor is it Venix..."
3346         fi
3347 fi
3348 chmod +x bsd usg v7 osf1 eunice xenix venix os2
3349 $eunicefix bsd usg v7 osf1 eunice xenix venix os2
3350 $rm -f foo
3351
3352 case "$cc" in
3353 '') dflt=cc;;
3354 *) dflt="$cc";;
3355 esac
3356 rp="Use which C compiler?"
3357 . ./myread
3358 cc="$ans"
3359 : Look for a hint-file generated 'call-back-unit'.  Now that the
3360 : user has specified the compiler, we may need to set or change some
3361 : other defaults.
3362 if $test -f cc.cbu; then
3363     . ./cc.cbu
3364 fi
3365 . ./checkcc
3366
3367 echo " "
3368 echo "Checking for GNU cc in disguise and/or its version number..." >&4
3369 $cat >try.c <<EOM
3370 #include <stdio.h>
3371 int main() {
3372 #ifdef __GNUC__
3373 #ifdef __VERSION__
3374         printf("%s\n", __VERSION__);
3375 #else
3376         printf("%s\n", "1");
3377 #endif
3378 #endif
3379         exit(0);
3380 }
3381 EOM
3382 if $cc -o try $ccflags $ldflags try.c; then
3383         gccversion=`$run ./try`
3384         case "$gccversion" in
3385         '') echo "You are not using GNU cc." ;;
3386         *)  echo "You are using GNU cc $gccversion."
3387             ccname=gcc  
3388             ;;
3389         esac
3390 else
3391         echo " "
3392         echo "*** WHOA THERE!!! ***" >&4
3393         echo "    Your C compiler \"$cc\" doesn't seem to be working!" >&4
3394         case "$knowitall" in
3395         '')
3396         echo "    You'd better start hunting for one and let me know about it." >&4
3397                 exit 1
3398                 ;;
3399         esac
3400 fi
3401 $rm -f try try.*
3402 case "$gccversion" in
3403 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3404 esac
3405 case "$gccversion" in
3406 '') gccosandvers='' ;;
3407 *) gccshortvers=`echo "$gccversion"|sed 's/ .*//'`
3408    gccosandvers=`$cc -v 2>&1|grep '/specs$'|sed "s!.*/[^-/]*-[^-/]*-\([^-/]*\)/$gccshortvers/specs!\1!"`
3409    gccshortvers=''
3410    case "$gccosandvers" in
3411    $osname) gccosandvers='' ;; # linux gccs seem to have no linux osvers, grr
3412    $osname$osvers) ;; # looking good
3413    $osname*) cat <<EOM >&4
3414
3415 *** WHOA THERE!!! ***
3416
3417     Your gcc has not been compiled for the exact release of
3418     your operating system ($gccosandvers versus $osname$osvers).
3419
3420     In general it is a good idea to keep gcc synchronized with
3421     the operating system because otherwise serious problems
3422     may ensue when trying to compile software, like Perl.
3423
3424     I'm trying to be optimistic here, though, and will continue.
3425     If later during the configuration and build icky compilation
3426     problems appear (headerfile conflicts being the most common
3427     manifestation), I suggest reinstalling the gcc to match
3428     your operating system release.
3429
3430 EOM
3431       ;;
3432    *) gccosandvers='' ;; # failed to parse, better be silent
3433    esac
3434    ;;
3435 esac
3436 case "$ccname" in
3437 '') ccname="$cc" ;;
3438 esac
3439
3440 case "$gccversion" in
3441 '') ;;
3442 *)  case "$ccflags" in
3443     *-Wall*) ;;
3444     *) ccflags="$ccflags -Wall" ;;
3445     esac
3446     ;;
3447 esac
3448
3449 : see how we invoke the C preprocessor
3450 echo " "
3451 echo "Now, how can we feed standard input to your C preprocessor..." >&4
3452 cat <<'EOT' >testcpp.c
3453 #define ABC abc
3454 #define XYZ xyz
3455 ABC.XYZ
3456 EOT
3457 cd ..
3458 if test ! -f cppstdin; then
3459         if test "X$osname" = "Xaix" -a "X$gccversion" = X; then
3460                 # AIX cc -E doesn't show the absolute headerfile
3461                 # locations but we'll cheat by using the -M flag.
3462                 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
3463         else
3464                 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
3465         fi
3466 else
3467         echo "Keeping your $hint cppstdin wrapper."
3468 fi
3469 chmod 755 cppstdin
3470 wrapper=`pwd`/cppstdin
3471 ok='false'
3472 cd UU
3473
3474 if $test "X$cppstdin" != "X" && \
3475         $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
3476         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3477 then
3478         echo "You used to use $cppstdin $cppminus so we'll use that again."
3479         case "$cpprun" in
3480         '') echo "But let's see if we can live without a wrapper..." ;;
3481         *)
3482                 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
3483                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3484                 then
3485                         echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
3486                         ok='true'
3487                 else
3488                         echo "(However, $cpprun $cpplast does not work, let's see...)"
3489                 fi
3490                 ;;
3491         esac
3492 else
3493         case "$cppstdin" in
3494         '') ;;
3495         *)
3496                 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
3497                 ;;
3498         esac
3499 fi
3500
3501 if $ok; then
3502         : nothing
3503 elif echo 'Maybe "'"$cc"' -E" will work...'; \
3504         $cc -E <testcpp.c >testcpp.out 2>&1; \
3505         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3506         echo "Yup, it does."
3507         x_cpp="$cc -E"
3508         x_minus='';
3509 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
3510         $cc -E - <testcpp.c >testcpp.out 2>&1; \
3511         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3512         echo "Yup, it does."
3513         x_cpp="$cc -E"
3514         x_minus='-';
3515 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
3516         $cc -P <testcpp.c >testcpp.out 2>&1; \
3517         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3518         echo "Yipee, that works!"
3519         x_cpp="$cc -P"
3520         x_minus='';
3521 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
3522         $cc -P - <testcpp.c >testcpp.out 2>&1; \
3523         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3524         echo "At long last!"
3525         x_cpp="$cc -P"
3526         x_minus='-';
3527 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
3528         $cpp <testcpp.c >testcpp.out 2>&1; \
3529         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3530         echo "It works!"
3531         x_cpp="$cpp"
3532         x_minus='';
3533 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
3534         $cpp - <testcpp.c >testcpp.out 2>&1; \
3535         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3536         echo "Hooray, it works!  I was beginning to wonder."
3537         x_cpp="$cpp"
3538         x_minus='-';
3539 elif echo 'Uh-uh.  Time to get fancy.  Trying a wrapper...'; \
3540         $wrapper <testcpp.c >testcpp.out 2>&1; \
3541         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3542         x_cpp="$wrapper"
3543         x_minus=''
3544         echo "Eureka!"
3545 else
3546         dflt=''
3547         rp="No dice.  I can't find a C preprocessor.  Name one:"
3548         . ./myread
3549         x_cpp="$ans"
3550         x_minus=''
3551         $x_cpp <testcpp.c >testcpp.out 2>&1
3552         if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3553                 echo "OK, that will do." >&4
3554         else
3555 echo "Sorry, I can't get that to work.  Go find one and rerun Configure." >&4
3556                 exit 1
3557         fi
3558 fi
3559
3560 case "$ok" in
3561 false)
3562         cppstdin="$x_cpp"
3563         cppminus="$x_minus"
3564         cpprun="$x_cpp"
3565         cpplast="$x_minus"
3566         set X $x_cpp
3567         shift
3568         case "$1" in
3569         "$cpp")
3570                 echo "Perhaps can we force $cc -E using a wrapper..."
3571                 if $wrapper <testcpp.c >testcpp.out 2>&1; \
3572                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3573                 then
3574                         echo "Yup, we can."
3575                         cppstdin="$wrapper"
3576                         cppminus='';
3577                 else
3578                         echo "Nope, we'll have to live without it..."
3579                 fi
3580                 ;;
3581         esac
3582         case "$cpprun" in
3583         "$wrapper")
3584                 cpprun=''
3585                 cpplast=''
3586                 ;;
3587         esac
3588         ;;
3589 esac
3590
3591 case "$cppstdin" in
3592 "$wrapper"|'cppstdin') ;;
3593 *) $rm -f $wrapper;;
3594 esac
3595 $rm -f testcpp.c testcpp.out
3596
3597 : decide how portable to be.  Allow command line overrides.
3598 case "$d_portable" in
3599 "$undef") ;;
3600 *)      d_portable="$define" ;;
3601 esac
3602
3603 : set up shell script to do ~ expansion
3604 cat >filexp <<EOSS
3605 $startsh
3606 : expand filename
3607 case "\$1" in
3608  ~/*|~)
3609         echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
3610         ;;
3611  ~*)
3612         if $test -f /bin/csh; then
3613                 /bin/csh -f -c "glob \$1"
3614                 failed=\$?
3615                 echo ""
3616                 exit \$failed
3617         else
3618                 name=\`$expr x\$1 : '..\([^/]*\)'\`
3619                 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
3620                 if $test ! -d "\$dir"; then
3621                         me=\`basename \$0\`
3622                         echo "\$me: can't locate home directory for: \$name" >&2
3623                         exit 1
3624                 fi
3625                 case "\$1" in
3626                 */*)
3627                         echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
3628                         ;;
3629                 *)
3630                         echo \$dir
3631                         ;;
3632                 esac
3633         fi
3634         ;;
3635 *)
3636         echo \$1
3637         ;;
3638 esac
3639 EOSS
3640 chmod +x filexp
3641 $eunicefix filexp
3642
3643 : now set up to get a file name
3644 cat <<EOS >getfile
3645 $startsh
3646 EOS
3647 cat <<'EOSC' >>getfile
3648 tilde=''
3649 fullpath=''
3650 already=''
3651 skip=''
3652 none_ok=''
3653 exp_file=''
3654 nopath_ok=''
3655 orig_rp="$rp"
3656 orig_dflt="$dflt"
3657 case "$gfpth" in
3658 '') gfpth='.' ;;
3659 esac
3660
3661 case "$fn" in
3662 *\(*)
3663         expr $fn : '.*(\(.*\)).*' | $tr ',' $trnl >getfile.ok
3664         fn=`echo $fn | sed 's/(.*)//'`
3665         ;;
3666 esac
3667
3668 case "$fn" in
3669 *:*)
3670         loc_file=`expr $fn : '.*:\(.*\)'`
3671         fn=`expr $fn : '\(.*\):.*'`
3672         ;;
3673 esac
3674
3675 case "$fn" in
3676 *~*) tilde=true;;
3677 esac
3678 case "$fn" in
3679 */*) fullpath=true;;
3680 esac
3681 case "$fn" in
3682 *+*) skip=true;;
3683 esac
3684 case "$fn" in
3685 *n*) none_ok=true;;
3686 esac
3687 case "$fn" in
3688 *e*) exp_file=true;;
3689 esac
3690 case "$fn" in
3691 *p*) nopath_ok=true;;
3692 esac
3693
3694 case "$fn" in
3695 *f*) type='File';;
3696 *d*) type='Directory';;
3697 *l*) type='Locate';;
3698 esac
3699
3700 what="$type"
3701 case "$what" in
3702 Locate) what='File';;
3703 esac
3704
3705 case "$exp_file" in
3706 '')
3707         case "$d_portable" in
3708         "$define") ;;
3709         *) exp_file=true;;
3710         esac
3711         ;;
3712 esac
3713
3714 cd ..
3715 while test "$type"; do
3716         redo=''
3717         rp="$orig_rp"
3718         dflt="$orig_dflt"
3719         case "$tilde" in
3720         true) rp="$rp (~name ok)";;
3721         esac
3722         . UU/myread
3723         if test -f UU/getfile.ok && \
3724                 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
3725         then
3726                 value="$ans"
3727                 ansexp="$ans"
3728                 break
3729         fi
3730         case "$ans" in
3731         none)
3732                 value=''
3733                 ansexp=''
3734                 case "$none_ok" in
3735                 true) type='';;
3736                 esac
3737                 ;;
3738         *)
3739                 case "$tilde" in
3740                 '') value="$ans"
3741                         ansexp="$ans";;
3742                 *)
3743                         value=`UU/filexp $ans`
3744                         case $? in
3745                         0)
3746                                 if test "$ans" != "$value"; then
3747                                         echo "(That expands to $value on this system.)"
3748                                 fi
3749                                 ;;
3750                         *) value="$ans";;
3751                         esac
3752                         ansexp="$value"
3753                         case "$exp_file" in
3754                         '') value="$ans";;
3755                         esac
3756                         ;;
3757                 esac
3758                 case "$fullpath" in
3759                 true)
3760                         case "$ansexp" in
3761                         /*) value="$ansexp" ;;
3762                         [a-zA-Z]:/*) value="$ansexp" ;;
3763                         *)
3764                                 redo=true
3765                                 case "$already" in
3766                                 true)
3767                                 echo "I shall only accept a full path name, as in /bin/ls." >&4
3768                                 echo "Use a ! shell escape if you wish to check pathnames." >&4
3769                                         ;;
3770                                 *)
3771                                 echo "Please give a full path name, starting with slash." >&4
3772                                         case "$tilde" in
3773                                         true)
3774                                 echo "Note that using ~name is ok provided it expands well." >&4
3775                                                 already=true
3776                                                 ;;
3777                                         esac
3778                                 esac
3779                                 ;;
3780                         esac
3781                         ;;
3782                 esac
3783                 case "$redo" in
3784                 '')
3785                         case "$type" in
3786                         File)
3787                                 for fp in $gfpth; do
3788                                         if test "X$fp" = X.; then
3789                                             pf="$ansexp"
3790                                         else    
3791                                             pf="$fp/$ansexp"
3792                                         fi
3793                                         if test -f "$pf"; then
3794                                                 type=''
3795                                         elif test -r "$pf" || (test -h "$pf") >/dev/null 2>&1
3796                                         then
3797                                                 echo "($value is not a plain file, but that's ok.)"
3798                                                 type=''
3799                                         fi
3800                                         if test X"$type" = X; then
3801                                             value="$pf"
3802                                             break
3803                                         fi
3804                                 done
3805                                 ;;
3806                         Directory)
3807                                 for fp in $gfpth; do
3808                                         if test "X$fp" = X.; then
3809                                             dir="$ans"
3810                                             direxp="$ansexp"
3811                                         else    
3812                                             dir="$fp/$ansexp"
3813                                             direxp="$fp/$ansexp"
3814                                         fi
3815                                         if test -d "$direxp"; then
3816                                                 type=''
3817                                                 value="$dir"
3818                                                 break
3819                                         fi
3820                                 done
3821                                 ;;
3822                         Locate)
3823                                 if test -d "$ansexp"; then
3824                                         echo "(Looking for $loc_file in directory $value.)"
3825                                         value="$value/$loc_file"
3826                                         ansexp="$ansexp/$loc_file"
3827                                 fi
3828                                 if test -f "$ansexp"; then
3829                                         type=''
3830                                 fi
3831                                 case "$nopath_ok" in
3832                                 true)   case "$value" in
3833                                         */*) ;;
3834                                         *)      echo "Assuming $value will be in people's path."
3835                                                 type=''
3836                                                 ;;
3837                                         esac
3838                                         ;;
3839                                 esac
3840                                 ;;
3841                         esac
3842
3843                         case "$skip" in
3844                         true) type='';
3845                         esac
3846
3847                         case "$type" in
3848                         '') ;;
3849                         *)
3850                                 if test "$fastread" = yes; then
3851                                         dflt=y
3852                                 else
3853                                         dflt=n
3854                                 fi
3855                                 rp="$what $value doesn't exist.  Use that name anyway?"
3856                                 . UU/myread
3857                                 dflt=''
3858                                 case "$ans" in
3859                                 y*) type='';;
3860                                 *) echo " ";;
3861                                 esac
3862                                 ;;
3863                         esac
3864                         ;;
3865                 esac
3866                 ;;
3867         esac
3868 done
3869 cd UU
3870 ans="$value"
3871 rp="$orig_rp"
3872 dflt="$orig_dflt"
3873 rm -f getfile.ok
3874 test "X$gfpthkeep" != Xy && gfpth=""
3875 EOSC
3876
3877 : What should the include directory be ?
3878 echo " "
3879 $echo $n "Hmm...  $c"
3880 dflt='/usr/include'
3881 incpath=''
3882 mips_type=''
3883 if $test -f /bin/mips && /bin/mips; then
3884         echo "Looks like a MIPS system..."
3885         $cat >usr.c <<'EOCP'
3886 #ifdef SYSTYPE_BSD43
3887 /bsd43
3888 #endif
3889 EOCP
3890         if cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
3891                 dflt='/bsd43/usr/include'
3892                 incpath='/bsd43'
3893                 mips_type='BSD 4.3'
3894         else
3895                 mips_type='System V'
3896         fi
3897         $rm -f usr.c usr.out
3898         echo "and you're compiling with the $mips_type compiler and libraries."
3899         xxx_prompt=y
3900         echo "exit 0" >mips
3901 else
3902         echo "Doesn't look like a MIPS system."
3903         xxx_prompt=n
3904         echo "exit 1" >mips
3905 fi
3906 chmod +x mips
3907 $eunicefix mips
3908 case "$usrinc" in
3909 '') ;;
3910 *) dflt="$usrinc";;
3911 esac
3912 case "$xxx_prompt" in
3913 y)      fn=d/
3914         echo " "
3915         rp='Where are the include files you want to use?'
3916         . ./getfile
3917         usrinc="$ans"
3918         ;;
3919 *)      usrinc="$dflt"
3920         ;;
3921 esac
3922
3923 : Set private lib path
3924 case "$plibpth" in
3925 '') if ./mips; then
3926                 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
3927         fi;;
3928 esac
3929 case "$libpth" in
3930 ' ') dlist='';;
3931 '') dlist="$loclibpth $plibpth $glibpth";;
3932 *) dlist="$libpth";;
3933 esac
3934
3935 : Now check and see which directories actually exist, avoiding duplicates
3936 libpth=''
3937 for xxx in $dlist
3938 do
3939     if $test -d $xxx; then
3940                 case " $libpth " in
3941                 *" $xxx "*) ;;
3942                 *) libpth="$libpth $xxx";;
3943                 esac
3944     fi
3945 done
3946 $cat <<'EOM'
3947
3948 Some systems have incompatible or broken versions of libraries.  Among
3949 the directories listed in the question below, please remove any you
3950 know not to be holding relevant libraries, and add any that are needed.
3951 Say "none" for none.
3952
3953 EOM
3954 case "$libpth" in
3955 '') dflt='none';;
3956 *)
3957         set X $libpth
3958         shift
3959         dflt=${1+"$@"}
3960         ;;
3961 esac
3962 rp="Directories to use for library searches?"
3963 . ./myread
3964 case "$ans" in
3965 none) libpth=' ';;
3966 *) libpth="$ans";;
3967 esac
3968
3969 : compute shared library extension
3970 case "$so" in
3971 '')
3972         if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
3973                 dflt='sl'
3974         else
3975                 dflt='so'
3976         fi
3977         ;;
3978 *) dflt="$so";;
3979 esac
3980 $cat <<EOM
3981
3982 On some systems, shared libraries may be available.  Answer 'none' if
3983 you want to suppress searching of shared libraries for the remainder
3984 of this configuration.
3985
3986 EOM
3987 rp='What is the file extension used for shared libraries?'
3988 . ./myread
3989 so="$ans"
3990
3991 : Define several unixisms.
3992 : Hints files or command line option can be used to override them.
3993 : The convoluted testing is in case hints files set either the old
3994 : or the new name.
3995 case "$_exe" in
3996 '')     case "$exe_ext" in
3997     '') ;;
3998         *)      _exe="$exe_ext" ;;
3999         esac
4000         ;;
4001 esac
4002 case "$_a" in
4003 '')     case "$lib_ext" in
4004     '') _a='.a';;
4005         *)      _a="$lib_ext" ;;
4006         esac
4007         ;;
4008 esac
4009 case "$_o" in
4010 '') case "$obj_ext" in
4011         '')     _o='.o';;
4012         *)      _o="$obj_ext";;
4013         esac
4014         ;;
4015 esac
4016 case "$p_" in
4017 '') case "$path_sep" in
4018         '')     p_=':';;
4019         *)      p_="$path_sep";;
4020         esac
4021         ;;
4022 esac
4023 exe_ext=$_exe
4024 lib_ext=$_a
4025 obj_ext=$_o
4026 path_sep=$p_
4027
4028 : Which makefile gets called first.  This is used by make depend.
4029 case "$firstmakefile" in
4030 '') firstmakefile='makefile';;
4031 esac
4032
4033 case "$usesocks" in
4034 $define|true|[yY]*)     dflt='y';;
4035 *) dflt='n';;
4036 esac
4037 cat <<EOM
4038
4039 Perl can be built to use the SOCKS proxy protocol library.  To do so,
4040 Configure must be run with -Dusesocks.  If you use SOCKS you also need
4041 to use the PerlIO abstraction layer, this will be implicitly selected.
4042
4043 If this doesn't make any sense to you, just accept the default '$dflt'.
4044 EOM
4045 rp='Build Perl for SOCKS?'
4046 . ./myread
4047 case "$ans" in
4048 y|Y)    val="$define" ;;     
4049 *)      val="$undef" ;;
4050 esac
4051 set usesocks
4052 eval $setvar
4053
4054 case "$usesocks" in
4055 $define|true|[yY]*) useperlio="$define";;
4056 esac
4057
4058 : Looking for optional libraries
4059 echo " "
4060 echo "Checking for optional libraries..." >&4
4061 case "$libs" in
4062 ' '|'') dflt='';;
4063 *) dflt="$libs";;
4064 esac
4065 case "$libswanted" in
4066 '') libswanted='c_s';;
4067 esac
4068 case "$usesocks" in
4069 "$define") libswanted="$libswanted socks5 socks5_sh" ;;
4070 esac
4071 libsfound=''
4072 libsfiles=''
4073 libsdirs=''
4074 libspath=''
4075 for thisdir in $libpth $xlibpth; do
4076   test -d $thisdir && libspath="$libspath $thisdir"
4077 done
4078 for thislib in $libswanted; do
4079         for thisdir in $libspath; do
4080             xxx=''
4081             if $test ! -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
4082                 xxx=`ls $thisdir/lib$thislib.$so.[0-9] 2>/dev/null|tail -1`
4083                 $test -f "$xxx" && eval $libscheck
4084                 $test -f "$xxx" && libstyle=shared
4085             fi
4086             if test ! -f "$xxx"; then
4087                 xxx=$thisdir/lib$thislib.$so
4088                 $test -f "$xxx" && eval $libscheck
4089                 $test -f "$xxx" && libstyle=shared
4090             fi  
4091             if test ! -f "$xxx"; then
4092                 xxx=$thisdir/lib$thislib$_a
4093                 $test -f "$xxx" && eval $libscheck
4094                 $test -f "$xxx" && libstyle=static
4095             fi
4096             if test ! -f "$xxx"; then
4097                 xxx=$thisdir/$thislib$_a
4098                 $test -f "$xxx" && eval $libscheck
4099                 $test -f "$xxx" && libstyle=static
4100             fi
4101             if test ! -f "$xxx"; then
4102                 xxx=$thisdir/lib${thislib}_s$_a
4103                 $test -f "$xxx" && eval $libscheck
4104                 $test -f "$xxx" && libstyle=static
4105                 $test -f "$xxx" && thislib=${thislib}_s
4106             fi
4107             if test ! -f "$xxx"; then
4108                 xxx=$thisdir/Slib$thislib$_a
4109                 $test -f "$xxx" && eval $libscheck
4110                 $test -f "$xxx" && libstyle=static
4111             fi
4112             if $test -f "$xxx"; then
4113                 case "$libstyle" in
4114                 shared) echo "Found -l$thislib (shared)." ;;
4115                 static) echo "Found -l$thislib." ;;
4116                 *)      echo "Found -l$thislib ($libstyle)." ;;
4117                 esac
4118                 case " $dflt " in
4119                 *"-l$thislib "*);;
4120                 *) dflt="$dflt -l$thislib"
4121                    libsfound="$libsfound $xxx"
4122                    yyy=`basename $xxx`
4123                    libsfiles="$libsfiles $yyy"
4124                    yyy=`echo $xxx|$sed -e "s%/$yyy\\$%%"`
4125                    case " $libsdirs " in
4126                    *" $yyy "*) ;;
4127                    *) libsdirs="$libsdirs $yyy" ;;
4128                    esac
4129                    ;;
4130                 esac
4131                 break
4132             fi  
4133         done
4134         if $test ! -f "$xxx"; then
4135             echo "No -l$thislib."
4136         fi
4137 done
4138 set X $dflt
4139 shift
4140 dflt="$*"
4141 case "$libs" in
4142 '') dflt="$dflt";;
4143 *) dflt="$libs";;
4144 esac
4145 case "$dflt" in
4146 ' '|'') dflt='none';;
4147 esac
4148
4149 $cat <<EOM
4150
4151 In order to compile $package on your machine, a number of libraries
4152 are usually needed.  Include any other special libraries here as well.
4153 Say "none" for none.  The default list is almost always right.
4154 EOM
4155
4156 echo " "
4157 rp="What libraries to use?"
4158 . ./myread
4159 case "$ans" in
4160 none) libs=' ';;
4161 *) libs="$ans";;
4162 esac
4163
4164 : determine optimization, if desired, or use for debug flag also
4165 case "$optimize" in
4166 ' '|$undef) dflt='none';;
4167 '') dflt='-O';;
4168 *) dflt="$optimize";;
4169 esac
4170 $cat <<EOH
4171
4172 By default, $package compiles with the -O flag to use the optimizer.
4173 Alternately, you might want to use the symbolic debugger, which uses
4174 the -g flag (on traditional Unix systems).  Either flag can be
4175 specified here.  To use neither flag, specify the word "none".
4176
4177 EOH
4178 rp="What optimizer/debugger flag should be used?"
4179 . ./myread
4180 optimize="$ans"
4181 case "$optimize" in
4182 'none') optimize=" ";;
4183 esac
4184
4185 dflt=''
4186 : We will not override a previous value, but we might want to
4187 : augment a hint file
4188 case "$hint" in
4189 default|recommended)
4190         case "$gccversion" in
4191         1*) dflt='-fpcc-struct-return' ;;
4192         esac
4193         case "$optimize" in
4194         *-g*) dflt="$dflt -DDEBUGGING";;
4195         esac
4196         case "$gccversion" in
4197         2*) if test -d /etc/conf/kconfig.d &&
4198                         $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
4199                 then
4200                         dflt="$dflt -posix"
4201                 fi
4202                 ;;
4203         esac
4204         case "$gccversion" in
4205         1*) ;;
4206         2.[0-8]*) ;;
4207         ?*)     echo " "
4208                 echo "Checking if your compiler accepts -fno-strict-aliasing" 2>&1
4209                 echo 'int main(void) { return 0; }' > gcctest.c
4210                 if $cc -O2 -fno-strict-aliasing -o gcctest gcctest.c; then
4211                         echo "Yes, it does." 2>&1
4212                         case "$ccflags" in
4213                         *strict-aliasing*) 
4214                                 echo "Leaving current flags $ccflags alone." 2>&1
4215                                 ;;
4216                         *) dflt="$dflt -fno-strict-aliasing" ;;
4217                         esac
4218                 else
4219                         echo "Nope, it doesn't, but that's ok." 2>&1
4220                 fi
4221                 ;;
4222         esac
4223         ;;
4224 esac
4225
4226 case "$mips_type" in
4227 *BSD*|'') inclwanted="$locincpth $usrinc";;
4228 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
4229 esac
4230 for thisincl in $inclwanted; do
4231         if $test -d $thisincl; then
4232                 if $test x$thisincl != x$usrinc; then
4233                         case "$dflt" in
4234                         *" -I$thisincl "*);;
4235                         *) dflt="$dflt -I$thisincl ";;
4236                         esac
4237                 fi
4238         fi
4239 done
4240
4241 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
4242         xxx=true;
4243 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
4244         xxx=true;
4245 else
4246         xxx=false;
4247 fi;
4248 if $xxx; then
4249         case "$dflt" in
4250         *$2*);;
4251         *) dflt="$dflt -D$2";;
4252         esac;
4253 fi'
4254
4255 set signal.h LANGUAGE_C; eval $inctest
4256
4257 case "$usesocks" in
4258 $define)
4259         ccflags="$ccflags -DSOCKS"
4260         ;;
4261 esac
4262
4263 case "$hint" in
4264 default|recommended) dflt="$ccflags $dflt" ;;
4265 *) dflt="$ccflags";;
4266 esac
4267
4268 case "$dflt" in
4269 ''|' ') dflt=none;;
4270 esac
4271
4272 $cat <<EOH
4273
4274 Your C compiler may want other flags.  For this question you should include
4275 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
4276 but you should NOT include libraries or ld flags like -lwhatever.  If you
4277 want $package to honor its debug switch, you should include -DDEBUGGING here.
4278 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
4279
4280 To use no flags, specify the word "none".
4281
4282 EOH
4283 set X $dflt
4284 shift
4285 dflt=${1+"$@"}
4286 rp="Any additional cc flags?"
4287 . ./myread
4288 case "$ans" in
4289 none) ccflags='';;
4290 *) ccflags="$ans";;
4291 esac
4292
4293 : the following weeds options from ccflags that are of no interest to cpp
4294 case "$cppflags" in
4295 '') cppflags="$ccflags" ;;
4296 *)  cppflags="$cppflags $ccflags" ;;
4297 esac
4298 case "$gccversion" in
4299 1*) cppflags="$cppflags -D__GNUC__"
4300 esac
4301 case "$mips_type" in
4302 '');;
4303 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
4304 esac
4305 case "$cppflags" in
4306 '');;
4307 *)
4308         echo " "
4309         echo "Let me guess what the preprocessor flags are..." >&4
4310         set X $cppflags
4311         shift
4312         cppflags=''
4313         $cat >cpp.c <<'EOM'
4314 #define BLURFL foo
4315
4316 BLURFL xx LFRULB
4317 EOM
4318         previous=''
4319         for flag in $*
4320         do
4321                 case "$flag" in
4322                 -*) ftry="$flag";;
4323                 *) ftry="$previous $flag";;
4324                 esac
4325                 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
4326                         >cpp1.out 2>/dev/null && \
4327                         $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
4328                         >cpp2.out 2>/dev/null && \
4329                         $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
4330                         $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
4331                 then
4332                         cppflags="$cppflags $ftry"
4333                         previous=''
4334                 else
4335                         previous="$flag"
4336                 fi
4337         done
4338         set X $cppflags
4339         shift
4340         cppflags=${1+"$@"}
4341         case "$cppflags" in
4342         *-*)  echo "They appear to be: $cppflags";;
4343         esac
4344         $rm -f cpp.c cpp?.out
4345         ;;
4346 esac
4347
4348 : flags used in final linking phase
4349 case "$ldflags" in
4350 '') if ./venix; then
4351                 dflt='-i -z'
4352         else
4353                 dflt=''
4354         fi
4355         case "$ccflags" in
4356         *-posix*) dflt="$dflt -posix" ;;
4357         esac
4358         ;;
4359 *) dflt="$ldflags";;
4360 esac
4361
4362 : Try to guess additional flags to pick up local libraries.
4363 for thislibdir in $libpth; do
4364         case " $loclibpth " in
4365         *" $thislibdir "*)
4366                 case "$dflt " in 
4367                 *"-L$thislibdir "*) ;;
4368                 *)  dflt="$dflt -L$thislibdir" ;;
4369                 esac
4370                 ;;
4371         esac
4372 done
4373
4374 case "$dflt" in
4375 '') dflt='none' ;;
4376 esac
4377
4378 $cat <<EOH
4379
4380 Your C linker may need flags.  For this question you should
4381 include -L/whatever and any other flags used by the C linker, but you
4382 should NOT include libraries like -lwhatever.
4383
4384 Make sure you include the appropriate -L/path flags if your C linker
4385 does not normally search all of the directories you specified above,
4386 namely
4387         $libpth
4388 To use no flags, specify the word "none".
4389
4390 EOH
4391
4392 rp="Any additional ld flags (NOT including libraries)?"
4393 . ./myread
4394 case "$ans" in
4395 none) ldflags='';;
4396 *) ldflags="$ans";;
4397 esac
4398 rmlist="$rmlist pdp11"
4399
4400 : coherency check
4401 echo " "
4402 echo "Checking your choice of C compiler and flags for coherency..." >&4
4403 $cat > try.c <<'EOF'
4404 #include <stdio.h>
4405 int main() { printf("Ok\n"); exit(0); }
4406 EOF
4407 set X $cc -o try $optimize $ccflags $ldflags try.c $libs
4408 shift
4409 $cat >try.msg <<'EOM'
4410 I've tried to compile and run the following simple program:
4411
4412 EOM
4413 $cat try.c >> try.msg
4414
4415 $cat >> try.msg <<EOM
4416
4417 I used the command:
4418
4419         $*
4420         $run ./try
4421
4422 and I got the following output:
4423
4424 EOM
4425 dflt=y
4426 if $sh -c "$cc -o try $optimize $ccflags $ldflags try.c $libs" >>try.msg 2>&1; then
4427         if $sh -c "$run ./try" >>try.msg 2>&1; then
4428                 xxx=`$run ./try`
4429                 case "$xxx" in
4430                 "Ok") dflt=n ;;
4431                 *)      echo 'The program compiled OK, but produced no output.' >> try.msg
4432                         case " $libs " in
4433                         *" -lsfio "*)
4434                                 cat >> try.msg <<'EOQS'
4435 If $libs contains -lsfio, and sfio is mis-configured, then it
4436 sometimes (apparently) runs and exits with a 0 status, but with no
4437 output!  It may have to do with sfio's use of _exit vs. exit.
4438
4439 EOQS
4440                                 rp="You have a big problem.  Shall I abort Configure"
4441                                 dflt=y
4442                                 ;;
4443                         esac
4444                         ;;
4445                 esac
4446         else
4447                 echo "The program compiled OK, but exited with status $?." >>try.msg
4448                 rp="You have a problem.  Shall I abort Configure"
4449                 dflt=y
4450         fi
4451 else
4452         echo "I can't compile the test program." >>try.msg
4453         rp="You have a BIG problem.  Shall I abort Configure"
4454         dflt=y
4455 fi
4456 case "$dflt" in
4457 y)
4458         $cat try.msg >&4
4459         case "$knowitall" in
4460         '')
4461                 echo "(The supplied flags or libraries might be incorrect.)"
4462                 ;;
4463         *) dflt=n;;
4464         esac
4465         echo " "
4466         . ./myread
4467         case "$ans" in
4468         n*|N*) ;;
4469         *)      echo "Ok.  Stopping Configure." >&4
4470                 exit 1
4471                 ;;
4472         esac
4473         ;;
4474 n) echo "OK, that should do.";;
4475 esac
4476 $rm -f try try.* core
4477
4478 : define an is-a-typedef? function
4479 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
4480 case "$inclist" in
4481 "") inclist="sys/types.h";;
4482 esac;
4483 eval "varval=\$$var";
4484 case "$varval" in
4485 "")
4486         $rm -f temp.c;
4487         for inc in $inclist; do
4488                 echo "#include <$inc>" >>temp.c;
4489         done;
4490         echo "#ifdef $type" >> temp.c;
4491         echo "printf(\"We have $type\");" >> temp.c;
4492         echo "#endif" >> temp.c;
4493         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
4494         if $contains $type temp.E >/dev/null 2>&1; then
4495                 eval "$var=\$type";
4496         else
4497                 eval "$var=\$def";
4498         fi;
4499         $rm -f temp.?;;
4500 *) eval "$var=\$varval";;
4501 esac'
4502
4503 : define an is-a-typedef? function that prompts if the type is not available.
4504 typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
4505 case "$inclist" in
4506 "") inclist="sys/types.h";;
4507 esac;
4508 eval "varval=\$$var";
4509 case "$varval" in
4510 "")
4511         $rm -f temp.c;
4512         for inc in $inclist; do
4513                 echo "#include <$inc>" >>temp.c;
4514         done;
4515         echo "#ifdef $type" >> temp.c;
4516         echo "printf(\"We have $type\");" >> temp.c;
4517         echo "#endif" >> temp.c;
4518         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
4519         echo " " ;
4520         echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
4521         if $contains $type temp.E >/dev/null 2>&1; then
4522                 echo "$type found." >&4;
4523                 eval "$var=\$type";
4524         else
4525                 echo "$type NOT found." >&4;
4526                 dflt="$def";
4527                 . ./myread ;
4528                 eval "$var=\$ans";
4529         fi;
4530         $rm -f temp.?;;
4531 *) eval "$var=\$varval";;
4532 esac'
4533
4534 : define a shorthand compile call
4535 compile='
4536 mc_file=$1;
4537 shift;
4538 $cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs > /dev/null 2>&1;'
4539 : define a shorthand compile call for compilations that should be ok.
4540 compile_ok='
4541 mc_file=$1;
4542 shift;
4543 $cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs;'
4544
4545 : check for lengths of integral types
4546 echo " "
4547 case "$intsize" in
4548 '')
4549         echo "Checking to see how big your integers are..." >&4
4550         $cat >try.c <<'EOCP'
4551 #include <stdio.h>
4552 int main()
4553 {
4554         printf("intsize=%d;\n", (int)sizeof(int));
4555         printf("longsize=%d;\n", (int)sizeof(long));
4556         printf("shortsize=%d;\n", (int)sizeof(short));
4557         exit(0);
4558 }
4559 EOCP
4560         set try
4561         if eval $compile_ok && $run ./try > /dev/null; then
4562                 eval `$run ./try`
4563                 echo "Your integers are $intsize bytes long."
4564                 echo "Your long integers are $longsize bytes long."
4565                 echo "Your short integers are $shortsize bytes long."
4566         else
4567                 $cat >&4 <<EOM
4568 !
4569 Help! I can't compile and run the intsize test program: please enlighten me!
4570 (This is probably a misconfiguration in your system or libraries, and
4571 you really ought to fix it.  Still, I'll try anyway.)
4572 !
4573 EOM
4574                 dflt=4
4575                 rp="What is the size of an integer (in bytes)?"
4576                 . ./myread
4577                 intsize="$ans"
4578                 dflt=$intsize
4579                 rp="What is the size of a long integer (in bytes)?"
4580                 . ./myread
4581                 longsize="$ans"
4582                 dflt=2
4583                 rp="What is the size of a short integer (in bytes)?"
4584                 . ./myread
4585                 shortsize="$ans"
4586         fi
4587         ;;
4588 esac
4589 $rm -f try try.*
4590
4591 : see what type lseek is declared as in the kernel
4592 rp="What is the type used for lseek's offset on this system?"
4593 set off_t lseektype long stdio.h sys/types.h
4594 eval $typedef_ask
4595
4596 echo " "
4597 echo "Checking to see how big your file offsets are..." >&4
4598 $cat >try.c <<EOCP
4599 #include <sys/types.h>
4600 #include <stdio.h>
4601 int main()
4602 {
4603     printf("%d\n", (int)sizeof($lseektype));
4604     return(0); 
4605 }
4606 EOCP
4607 set try
4608 if eval $compile_ok; then
4609         lseeksize=`$run ./try`
4610         echo "Your file offsets are $lseeksize bytes long."
4611 else
4612         dflt=$longsize
4613         echo " "
4614         echo "(I can't seem to compile the test program.  Guessing...)"
4615         rp="What is the size of your file offsets (in bytes)?"
4616         . ./myread
4617         lseeksize="$ans"
4618 fi
4619 $rm -f try.c try
4620
4621 : see what type file positions are declared as in the library
4622 rp="What is the type for file position used by fsetpos()?"
4623 set fpos_t fpostype long stdio.h sys/types.h
4624 eval $typedef_ask
4625
4626 echo " "
4627 case "$fpostype" in
4628 *_t) zzz="$fpostype"    ;;
4629 *)   zzz="fpos_t"       ;;
4630 esac
4631 echo "Checking the size of $zzz..." >&4 
4632 cat > try.c <<EOCP
4633 #include <sys/types.h>
4634 #include <stdio.h>
4635 int main() {
4636     printf("%d\n", (int)sizeof($fpostype));
4637     exit(0);
4638 }
4639 EOCP
4640 set try
4641 if eval $compile_ok; then
4642         yyy=`$run ./try`
4643         case "$yyy" in
4644         '')     fpossize=4
4645                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
4646                 ;;
4647         *)      fpossize=$yyy
4648                 echo "Your $zzz is $fpossize bytes long."
4649                 ;;
4650         esac
4651 else
4652         dflt="$longsize"
4653         echo " " >&4
4654         echo "(I can't compile the test program.  Guessing...)" >&4
4655         rp="What is the size of your file positions (in bytes)?"
4656         . ./myread
4657         fpossize="$ans"
4658 fi
4659
4660
4661
4662 # Backward compatibility (uselfs is deprecated).
4663 case "$uselfs" in
4664 "$define"|true|[yY]*)
4665         cat <<EOM >&4
4666
4667 *** Configure -Duselfs is deprecated, using -Duselargefiles instead.
4668 EOM
4669         uselargefiles="$define"
4670         ;;
4671 esac                          
4672
4673 case "$lseeksize:$fpossize" in
4674 8:8) cat <<EOM
4675
4676 You can have files larger than 2 gigabytes.
4677 EOM
4678    val="$define" ;;
4679 *)    case "$uselargefiles" in
4680    "$undef"|false|[nN]*) dflt='n' ;;
4681    *)   dflt='y' ;;
4682    esac
4683    cat <<EOM
4684
4685 Perl can be built to understand large files (files larger than 2 gigabytes)
4686 on some systems.  To do so, Configure can be run with -Duselargefiles.
4687
4688 If this doesn't make any sense to you, just accept the default '$dflt'.
4689 EOM
4690    rp='Try to understand large files, if available?'
4691    . ./myread
4692    case "$ans" in
4693    y|Y)         val="$define" ;;
4694    *)           val="$undef"  ;;
4695    esac
4696    ;;
4697 esac
4698 set uselargefiles
4699 eval $setvar
4700 case "$uselargefiles" in
4701 "$define")
4702 : Look for a hint-file generated 'call-back-unit'.  If the
4703 : user has specified that a large files perl is to be built,
4704 : we may need to set or change some other defaults.
4705         if $test -f uselargefiles.cbu; then
4706                 echo "Your platform has some specific hints for large file builds, using them..."
4707                 . ./uselargefiles.cbu
4708                 echo " "
4709                 echo "Rechecking to see how big your file offsets are..." >&4
4710                 $cat >try.c <<EOCP
4711 #include <sys/types.h>
4712 #include <stdio.h>
4713 int main()
4714 {
4715     printf("%d\n", (int)sizeof($lseektype));
4716     return(0); 
4717 }
4718 EOCP
4719                 set try
4720                 if eval $compile_ok; then
4721                         lseeksize=`$run ./try`
4722                         $echo "Your file offsets are now $lseeksize bytes long."
4723                 else
4724                         dflt="$lseeksize"
4725                         echo " "
4726                         echo "(I can't seem to compile the test program.  Guessing...)"
4727                         rp="What is the size of your file offsets (in bytes)?"
4728                         . ./myread
4729                         lseeksize="$ans"
4730                 fi
4731                 case "$fpostype" in
4732                 *_t) zzz="$fpostype"    ;;
4733                 *)   zzz="fpos_t"       ;;
4734                 esac
4735                 $echo $n "Rechecking the size of $zzz...$c" >&4 
4736                 $cat > try.c <<EOCP
4737 #include <sys/types.h>
4738 #include <stdio.h>
4739 int main() {
4740     printf("%d\n", (int)sizeof($fpostype));
4741     exit(0);
4742 }
4743 EOCP
4744                 set try
4745                 if eval $compile_ok; then
4746                         yyy=`$run ./try`
4747                         dflt="$lseeksize"
4748                         case "$yyy" in
4749                         '')     echo " "
4750                                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
4751                                 ;;
4752                         *)      fpossize=$yyy
4753                                 echo " $fpossize bytes." >&4
4754                                 ;;
4755                         esac
4756                 else
4757                         dflt="$fpossize"
4758                         echo " "
4759                         echo "(I can't compile the test program.  Guessing...)" >&4
4760                         rp="What is the size of your file positions (in bytes)?"
4761                         . ./myread
4762                         fpossize="$ans"
4763                 fi
4764                 $rm -f try.c try
4765         fi
4766         ;;
4767 esac
4768
4769
4770 case "$usemorebits" in
4771 "$define"|true|[yY]*)
4772         use64bitint="$define"
4773         uselongdouble="$define"
4774         usemorebits="$define"
4775         ;;
4776 *)      usemorebits="$undef"
4777         ;;
4778 esac
4779
4780 : check for void type
4781 echo " "
4782 echo "Checking to see how well your C compiler groks the void type..." >&4
4783 case "$voidflags" in
4784 '')
4785         $cat >try.c <<'EOCP'
4786 #if TRY & 1
4787 void sub() {
4788 #else
4789 sub() {
4790 #endif
4791         extern void moo();      /* function returning void */
4792         void (*goo)();          /* ptr to func returning void */
4793 #if TRY & 8
4794         void *hue;              /* generic ptr */
4795 #endif
4796 #if TRY & 2
4797         void (*foo[10])();
4798 #endif
4799
4800 #if TRY & 4
4801         if(goo == moo) {
4802                 exit(0);
4803         }
4804 #endif
4805         exit(0);
4806 }
4807 int main() { sub(); }
4808 EOCP
4809         if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
4810                 voidflags=$defvoidused
4811         echo "Good.  It appears to support void to the level $package wants.">&4
4812                 if $contains warning .out >/dev/null 2>&1; then
4813                         echo "However, you might get some warnings that look like this:"
4814                         $cat .out
4815                 fi
4816         else
4817 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
4818                 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
4819                         echo "It supports 1..."
4820                         if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
4821                                 echo "It also supports 2..."
4822                                 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
4823                                         voidflags=7
4824                                         echo "And it supports 4 but not 8 definitely."
4825                                 else
4826                                         echo "It doesn't support 4..."
4827                                         if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
4828                                                 voidflags=11
4829                                                 echo "But it supports 8."
4830                                         else
4831                                                 voidflags=3
4832                                                 echo "Neither does it support 8."
4833                                         fi
4834                                 fi
4835                         else
4836                                 echo "It does not support 2..."
4837                                 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
4838                                         voidflags=13
4839                                         echo "But it supports 4 and 8."
4840                                 else
4841                                         if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
4842                                                 voidflags=5
4843                                                 echo "And it supports 4 but has not heard about 8."
4844                                         else
4845                                                 echo "However it supports 8 but not 4."
4846                                         fi
4847                                 fi
4848                         fi
4849                 else
4850                         echo "There is no support at all for void."
4851                         voidflags=0
4852                 fi
4853         fi
4854 esac
4855 case "$voidflags" in
4856 "$defvoidused") ;;
4857 *)      $cat >&4 <<'EOM'
4858   Support flag bits are:
4859     1: basic void declarations.
4860     2: arrays of pointers to functions returning void.
4861     4: operations between pointers to and addresses of void functions.
4862     8: generic void pointers.
4863 EOM
4864         dflt="$voidflags";
4865         rp="Your void support flags add up to what?"
4866         . ./myread
4867         voidflags="$ans"
4868         ;;
4869 esac
4870 $rm -f try.* .out
4871
4872 : check for length of pointer
4873 echo " "
4874 case "$ptrsize" in
4875 '')
4876         echo "Checking to see how big your pointers are..." >&4
4877         if test "$voidflags" -gt 7; then
4878                 echo '#define VOID_PTR char *' > try.c
4879         else
4880                 echo '#define VOID_PTR void *' > try.c
4881         fi
4882         $cat >>try.c <<'EOCP'
4883 #include <stdio.h>
4884 int main()
4885 {
4886     printf("%d\n", (int)sizeof(VOID_PTR));
4887     exit(0);
4888 }
4889 EOCP
4890         set try
4891         if eval $compile_ok; then
4892                 ptrsize=`$run ./try`
4893                 echo "Your pointers are $ptrsize bytes long."
4894         else
4895                 dflt='4'
4896                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
4897                 rp="What is the size of a pointer (in bytes)?"
4898                 . ./myread
4899                 ptrsize="$ans"
4900         fi
4901         ;;
4902 esac
4903 $rm -f try.c try
4904
4905 : check for long long
4906 echo " "
4907 echo "Checking to see if you have long long..." >&4
4908 echo 'int main() { long long x = 7; return 0; }' > try.c
4909 set try
4910 if eval $compile; then
4911         val="$define"
4912         echo "You have long long."
4913 else
4914         val="$undef"
4915         echo "You do not have long long."
4916 fi
4917 $rm try.*
4918 set d_longlong
4919 eval $setvar
4920
4921 : check for length of long long
4922 case "${d_longlong}${longlongsize}" in
4923 $define)
4924         echo " "
4925         echo "Checking to see how big your long longs are..." >&4
4926         $cat >try.c <<'EOCP'
4927 #include <stdio.h>
4928 int main()
4929 {
4930     printf("%d\n", (int)sizeof(long long));
4931     return(0);
4932 }
4933 EOCP
4934         set try
4935         if eval $compile_ok; then
4936                 longlongsize=`$run ./try`
4937                 echo "Your long longs are $longlongsize bytes long."
4938         else
4939                 dflt='8'
4940                 echo " "
4941                 echo "(I can't seem to compile the test program.  Guessing...)"
4942                 rp="What is the size of a long long (in bytes)?"
4943                 . ./myread
4944                 longlongsize="$ans"
4945         fi
4946         if $test "X$longsize" = "X$longlongsize"; then
4947                 echo "(That isn't any different from an ordinary long.)"
4948         fi      
4949         ;;
4950 esac
4951 $rm -f try.* try
4952
4953 : determine filename position in cpp output
4954 echo " "
4955 echo "Computing filename position in cpp output for #include directives..." >&4
4956 echo '#include <stdio.h>' > foo.c
4957 $cat >fieldn <<EOF
4958 $startsh
4959 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
4960 $grep '^[       ]*#.*stdio\.h' | \
4961 while read cline; do
4962         pos=1
4963         set \$cline
4964         while $test \$# -gt 0; do
4965                 if $test -r \`echo \$1 | $tr -d '"'\`; then
4966                         echo "\$pos"
4967                         exit 0
4968                 fi
4969                 shift
4970                 pos=\`expr \$pos + 1\`
4971         done
4972 done
4973 EOF
4974 chmod +x fieldn
4975 fieldn=`./fieldn`
4976 $rm -f foo.c fieldn
4977 case $fieldn in
4978 '') pos='???';;
4979 1) pos=first;;
4980 2) pos=second;;
4981 3) pos=third;;
4982 *) pos="${fieldn}th";;
4983 esac
4984 echo "Your cpp writes the filename in the $pos field of the line."
4985
4986 : locate header file
4987 $cat >findhdr <<EOF
4988 $startsh
4989 wanted=\$1
4990 name=''
4991 for usrincdir in $usrinc
4992 do
4993         if test -f \$usrincdir/\$wanted; then
4994                 echo "\$usrincdir/\$wanted"
4995                 exit 0
4996         fi
4997 done
4998 awkprg='{ print \$$fieldn }'
4999 echo "#include <\$wanted>" > foo\$\$.c
5000 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
5001 $grep "^[       ]*#.*\$wanted" | \
5002 while read cline; do
5003         name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
5004         case "\$name" in
5005         *[/\\\\]\$wanted) echo "\$name"; exit 1;;
5006         *[\\\\/]\$wanted) echo "\$name"; exit 1;;
5007         *) exit 2;;
5008         esac;
5009 done;
5010 #
5011 # status = 0: grep returned 0 lines, case statement not executed
5012 # status = 1: headerfile found
5013 # status = 2: while loop executed, no headerfile found
5014 #
5015 status=\$?
5016 $rm -f foo\$\$.c;
5017 if test \$status -eq 1; then
5018         exit 0;
5019 fi
5020 exit 1
5021 EOF
5022 chmod +x findhdr
5023
5024 : define an alternate in-header-list? function
5025 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
5026 cont=true; xxf="echo \"<\$1> found.\" >&4";
5027 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
5028 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
5029 esac;
5030 case $# in 4) instead=instead;; *) instead="at last";; esac;
5031 while $test "$cont"; do
5032         xxx=`./findhdr $1`
5033         var=$2; eval "was=\$$2";
5034         if $test "$xxx" && $test -r "$xxx";
5035         then eval $xxf;
5036         eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
5037                 cont="";
5038         else eval $xxnf;
5039         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
5040         set $yyy; shift; shift; yyy=$@;
5041         case $# in 0) cont="";;
5042         2) xxf="echo \"but I found <\$1> $instead.\" >&4";
5043                 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
5044         *) xxf="echo \"but I found <\$1\> instead.\" >&4";
5045                 xxnf="echo \"there is no <\$1>, ...\" >&4";;
5046         esac;
5047 done;
5048 while $test "$yyy";
5049 do set $yyy; var=$2; eval "was=\$$2";
5050         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
5051         set $yyy; shift; shift; yyy=$@;
5052 done'
5053
5054 : see if inttypes.h is available
5055 : we want a real compile instead of Inhdr because some systems
5056 : have an inttypes.h which includes non-existent headers
5057 echo " "
5058 $cat >try.c <<EOCP
5059 #include <inttypes.h>
5060 int main() {
5061         static int32_t foo32 = 0x12345678;
5062 }
5063 EOCP
5064 set try
5065 if eval $compile; then
5066         echo "<inttypes.h> found." >&4
5067         val="$define"
5068 else
5069         echo "<inttypes.h> NOT found." >&4
5070         val="$undef"
5071 fi
5072 $rm -f try.c try
5073 set i_inttypes
5074 eval $setvar
5075
5076 : check for int64_t
5077 echo " "
5078 echo "Checking to see if you have int64_t..." >&4
5079 $cat >try.c <<EOCP
5080 #include <sys/types.h>
5081 #$i_inttypes I_INTTYPES
5082 #ifdef I_INTTYPES
5083 #include <inttypes.h>
5084 #endif
5085 int main() { int64_t x = 7; }
5086 EOCP
5087 set try
5088 if eval $compile; then
5089         val="$define"
5090         echo "You have int64_t."
5091 else
5092         val="$undef"
5093         echo "You do not have int64_t."
5094 fi
5095 $rm -f try try.*
5096 set d_int64_t
5097 eval $setvar
5098
5099
5100 echo " "
5101 echo "Checking which 64-bit integer type we could use..." >&4
5102
5103 case "$intsize" in
5104 8) val=int
5105    set quadtype
5106    eval $setvar
5107    val='"unsigned int"'
5108    set uquadtype
5109    eval $setvar
5110    quadkind=1
5111    ;;
5112 *) case "$longsize" in
5113    8) val=long
5114       set quadtype
5115       eval $setvar
5116       val='"unsigned long"'
5117       set uquadtype
5118       eval $setvar
5119       quadkind=2
5120       ;;
5121    *) case "$d_longlong:$longlongsize" in
5122       define:8)
5123         val='"long long"'
5124         set quadtype
5125         eval $setvar
5126         val='"unsigned long long"'
5127         set uquadtype
5128         eval $setvar
5129         quadkind=3
5130         ;;
5131       *) case "$d_int64_t" in
5132          define)
5133            val=int64_t
5134            set quadtype
5135            eval $setvar
5136            val=uint64_t
5137            set uquadtype
5138            eval $setvar
5139            quadkind=4
5140            ;;
5141          esac
5142          ;;
5143       esac
5144       ;;
5145    esac
5146    ;;
5147 esac
5148
5149 case "$quadtype" in
5150 '')     echo "Alas, no 64-bit integer types in sight." >&4
5151         d_quad="$undef"
5152         ;;
5153 *)      echo "We could use '$quadtype' for 64-bit integers." >&4
5154         d_quad="$define"
5155         ;;
5156 esac
5157
5158
5159 case "$uselonglong" in
5160 "$define"|true|[yY]*)
5161         cat <<EOM >&4
5162
5163 *** Configure -Duselonglong is deprecated, using -Duse64bitint instead.
5164 EOM
5165         use64bitint="$define"
5166         ;;
5167 esac                          
5168 case "$use64bits" in
5169 "$define"|true|[yY]*)
5170         cat <<EOM >&4
5171
5172 *** Configure -Duse64bits is deprecated, using -Duse64bitint instead.
5173 EOM
5174         use64bitint="$define"
5175         ;;
5176 esac                          
5177 case "$use64bitints" in
5178 "$define"|true|[yY]*)
5179         cat <<EOM >&4
5180
5181 *** There is no Configure -Duse64bitints, using -Duse64bitint instead.
5182 EOM
5183         use64bitint="$define"
5184         ;;
5185 esac                          
5186 case "$use64bitsint" in
5187 "$define"|true|[yY]*)
5188         cat <<EOM >&4
5189
5190 *** There is no Configure -Duse64bitsint, using -Duse64bitint instead.
5191 EOM
5192         use64bitint="$define"
5193         ;;
5194 esac                          
5195 case "$uselonglongs" in
5196 "$define"|true|[yY]*)
5197         cat <<EOM >&4
5198
5199 *** There is no Configure -Duselonglongs, using -Duse64bitint instead.
5200 EOM
5201         use64bitint="$define"
5202         ;;
5203 esac                          
5204 case "$use64bitsall" in
5205 "$define"|true|[yY]*)
5206         cat <<EOM >&4
5207
5208 *** There is no Configure -Duse64bitsall, using -Duse64bitall instead.
5209 EOM
5210         use64bitall="$define"
5211         ;;
5212 esac                          
5213
5214 case "$ccflags" in
5215 *-DUSE_LONG_LONG*|*-DUSE_64_BIT_INT*|*-DUSE_64_BIT_ALL*) use64bitint="$define";;
5216 esac
5217 case "$use64bitall" in
5218 "$define"|true|[yY]*) use64bitint="$define" ;;
5219 esac
5220
5221 case "$longsize" in
5222 8) cat <<EOM
5223
5224 You have natively 64-bit long integers.
5225 EOM
5226    val="$define"
5227    ;;
5228 *) case "$use64bitint" in
5229    "$define"|true|[yY]*) dflt='y';;
5230    *) dflt='n';;
5231    esac
5232    case "$d_quad" in
5233    "$define") ;;
5234    *) dflt='n' ;;
5235    esac
5236    cat <<EOM
5237
5238 Perl can be built to take advantage of 64-bit integer types
5239 on some systems.  To do so, Configure can be run with -Duse64bitint.
5240 Choosing this option will most probably introduce binary incompatibilities.
5241
5242 If this doesn't make any sense to you, just accept the default '$dflt'.
5243 (The default has been chosen based on your configuration.)
5244 EOM
5245    rp='Try to use 64-bit integers, if available?'
5246    . ./myread
5247    case "$ans" in
5248    [yY]*) val="$define" ;;
5249    *)     val="$undef"  ;;
5250    esac
5251    ;;
5252 esac
5253 set use64bitint
5254 eval $setvar
5255
5256 case "$use64bitall" in
5257 "$define"|true|[yY]*) dflt='y' ;;
5258 *) case "$longsize" in
5259    8) dflt='y' ;;
5260    *) dflt='n' ;;
5261    esac
5262    ;;
5263 esac    
5264 cat <<EOM
5265
5266 You may also choose to try maximal 64-bitness.  It means using as much
5267 64-bitness as possible on the platform.  This in turn means even more
5268 binary incompatibilities.  On the other hand, your platform may not
5269 have any more 64-bitness available than what you already have chosen.
5270
5271 If this doesn't make any sense to you, just accept the default '$dflt'.
5272 (The default has been chosen based on your configuration.)
5273 EOM
5274 rp='Try to use maximal 64-bit support, if available?'
5275 . ./myread
5276 case "$ans" in
5277 [yY]*) val="$define" ;;
5278 *)     val="$undef"  ;;
5279 esac
5280 set use64bitall
5281 eval $setvar
5282 case "$use64bitall" in
5283 "$define")
5284         case "$use64bitint" in
5285         "$undef")
5286                 cat <<EOM
5287
5288 Since you have chosen a maximally 64-bit build, I'm also turning on
5289 the use of 64-bit integers.
5290 EOM
5291                 use64bitint="$define" ;;
5292         esac
5293         ;;
5294 esac
5295
5296 case "$use64bitall" in
5297 "$define"|true|[yY]*)
5298         case "$ptrsize" in
5299         4)      cat <<EOM >&4
5300
5301 *** You have chosen a maximally 64-bit build, but your pointers
5302 *** are only 4 bytes wide, disabling maximal 64-bitness.
5303
5304 EOM
5305                 use64bitall="$undef"
5306                 case "$use64bitint" in
5307                 "$define"|true|[yY]*) ;;
5308                 *)      cat <<EOM >&4
5309
5310 *** Downgrading from maximal 64-bitness to using 64-bit integers.
5311
5312 EOM
5313                         use64bitint="$define"
5314                         ;;
5315                 esac
5316                 ;;
5317         esac
5318         ;;
5319 esac
5320
5321 case "$use64bitint" in
5322 "$define"|true|[yY]*)
5323 : Look for a hint-file generated 'call-back-unit'.  If the
5324 : user has specified that a 64-bit perl is to be built,
5325 : we may need to set or change some other defaults.
5326         if $test -f use64bitint.cbu; then
5327                 echo "Your platform has some specific hints for 64-bit integers, using them..."
5328                 . ./use64bitint.cbu
5329         fi
5330         case "$longsize" in
5331         4) case "$archname64" in
5332            '') archname64=64int ;;
5333            esac
5334            ;;
5335         esac
5336         ;;
5337 esac
5338
5339 case "$use64bitall" in
5340 "$define"|true|[yY]*)
5341 : Look for a hint-file generated 'call-back-unit'.  If the
5342 : user has specified that a maximally 64-bit perl is to be built,
5343 : we may need to set or change some other defaults.
5344         if $test -f use64bitall.cbu; then
5345                 echo "Your platform has some specific hints for 64-bit builds, using them..."
5346                 . ./use64bitall.cbu
5347         fi
5348         case "$longsize" in
5349         4) case "$archname64" in
5350            ''|64int) archname64=64all ;;
5351            esac
5352            ;;
5353         esac
5354         ;;
5355 esac
5356
5357 echo " "
5358 echo "Checking for GNU C Library..." >&4
5359 cat >try.c <<EOM
5360 #include <stdio.h>
5361 int main()
5362 {
5363 #ifdef __GLIBC__
5364     exit(0);
5365 #else
5366     exit(1);
5367 #endif
5368 }
5369 EOM
5370 set try
5371 if eval $compile_ok && $run ./try; then
5372         val="$define"
5373         echo "You are using the GNU C Library"
5374 else
5375         val="$undef"
5376         echo "You are not using the GNU C Library"
5377 fi
5378 $rm -f try try.*
5379 set d_gnulibc
5380 eval $setvar
5381
5382 : see if nm is to be used to determine whether a symbol is defined or not
5383 case "$usenm" in
5384 '')
5385         dflt=''
5386         case "$d_gnulibc" in
5387         "$define")
5388                 echo " "
5389                 echo "nm probably won't work on the GNU C Library." >&4
5390                 dflt=n
5391                 ;;
5392         esac
5393         case "$dflt" in
5394         '') 
5395                 if $test "$osname" = aix -a ! -f /lib/syscalls.exp; then
5396                         echo " "
5397                         echo "Whoops!  This is an AIX system without /lib/syscalls.exp!" >&4
5398                         echo "'nm' won't be sufficient on this sytem." >&4
5399                         dflt=n
5400                 fi
5401                 ;;
5402         esac
5403         case "$dflt" in
5404         '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
5405                 if $test $dflt -gt 20; then
5406                         dflt=y
5407                 else
5408                         dflt=n
5409                 fi
5410                 ;;
5411         esac
5412         ;;
5413 *)
5414         case "$usenm" in
5415         true|$define) dflt=y;;
5416         *) dflt=n;;
5417         esac
5418         ;;
5419 esac
5420 $cat <<EOM
5421
5422 I can use $nm to extract the symbols from your C libraries. This
5423 is a time consuming task which may generate huge output on the disk (up
5424 to 3 megabytes) but that should make the symbols extraction faster. The
5425 alternative is to skip the 'nm' extraction part and to compile a small
5426 test program instead to determine whether each symbol is present. If
5427 you have a fast C compiler and/or if your 'nm' output cannot be parsed,
5428 this may be the best solution.
5429
5430 You probably shouldn't let me use 'nm' if you are using the GNU C Library.
5431
5432 EOM
5433 rp="Shall I use $nm to extract C symbols from the libraries?"
5434 . ./myread
5435 case "$ans" in
5436 [Nn]*) usenm=false;;
5437 *) usenm=true;;
5438 esac
5439
5440 runnm=$usenm
5441 case "$reuseval" in
5442 true) runnm=false;;
5443 esac
5444
5445 : nm options which may be necessary
5446 case "$nm_opt" in
5447 '') if $test -f /mach_boot; then
5448                 nm_opt=''       # Mach
5449         elif $test -d /usr/ccs/lib; then
5450                 nm_opt='-p'     # Solaris (and SunOS?)
5451         elif $test -f /dgux; then
5452                 nm_opt='-p'     # DG-UX
5453         elif $test -f /lib64/rld; then
5454                 nm_opt='-p'     # 64-bit Irix
5455         else
5456                 nm_opt=''
5457         fi;;
5458 esac
5459
5460 : nm options which may be necessary for shared libraries but illegal
5461 : for archive libraries.  Thank you, Linux.
5462 case "$nm_so_opt" in
5463 '')     case "$myuname" in
5464         *linux*)
5465                 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
5466                         nm_so_opt='--dynamic'
5467                 fi
5468                 ;;
5469         esac
5470         ;;
5471 esac
5472
5473 case "$runnm" in
5474 true)
5475 : get list of predefined functions in a handy place
5476 echo " "
5477 case "$libc" in
5478 '') libc=unknown
5479         case "$libs" in
5480         *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
5481         esac
5482         ;;
5483 esac
5484 case "$libs" in
5485 '') ;;
5486 *)  for thislib in $libs; do
5487         case "$thislib" in
5488         -lc|-lc_s)
5489                 : Handle C library specially below.
5490                 ;;
5491         -l*)
5492                 thislib=`echo $thislib | $sed -e 's/^-l//'`
5493                 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
5494                         :
5495                 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
5496                         :
5497                 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
5498                         :
5499                 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
5500                         :
5501                 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
5502                         :
5503                 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
5504                         :
5505                 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
5506                         :
5507                 else
5508                         try=''
5509                 fi
5510                 libnames="$libnames $try"
5511                 ;;
5512         *) libnames="$libnames $thislib" ;;
5513         esac
5514         done
5515         ;;
5516 esac
5517 xxx=normal
5518 case "$libc" in
5519 unknown)
5520         set /lib/libc.$so
5521         for xxx in $libpth; do
5522                 $test -r $1 || set $xxx/libc.$so
5523                 : The messy sed command sorts on library version numbers.
5524                 $test -r $1 || \
5525                         set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
5526                         tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
5527                                 h
5528                                 s/[0-9][0-9]*/0000&/g
5529                                 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
5530                                 G
5531                                 s/\n/ /' | \
5532                          $sort | $sed -e 's/^.* //'`
5533                 eval set \$$#
5534         done
5535         $test -r $1 || set /usr/ccs/lib/libc.$so
5536         $test -r $1 || set /lib/libsys_s$_a
5537         ;;
5538 *)
5539         set blurfl
5540         ;;
5541 esac
5542 if $test -r "$1"; then
5543         echo "Your (shared) C library seems to be in $1."
5544         libc="$1"
5545 elif $test -r /lib/libc && $test -r /lib/clib; then
5546         echo "Your C library seems to be in both /lib/clib and /lib/libc."
5547         xxx=apollo
5548         libc='/lib/clib /lib/libc'
5549         if $test -r /lib/syslib; then
5550                 echo "(Your math library is in /lib/syslib.)"
5551                 libc="$libc /lib/syslib"
5552         fi
5553 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
5554         echo "Your C library seems to be in $libc, as you said before."
5555 elif $test -r $incpath/usr/lib/libc$_a; then
5556         libc=$incpath/usr/lib/libc$_a;
5557         echo "Your C library seems to be in $libc.  That's fine."
5558 elif $test -r /lib/libc$_a; then
5559         libc=/lib/libc$_a;
5560         echo "Your C library seems to be in $libc.  You're normal."
5561 else
5562         if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
5563                 :
5564         elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
5565                 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
5566         elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
5567                 :
5568         elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
5569                 :
5570         elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
5571                 :
5572         else
5573                 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
5574         fi
5575         if $test -r "$tans"; then
5576                 echo "Your C library seems to be in $tans, of all places."
5577                 libc=$tans
5578         else
5579                 libc='blurfl'
5580         fi
5581 fi
5582 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
5583         dflt="$libc"
5584         cat <<EOM
5585
5586 If the guess above is wrong (which it might be if you're using a strange
5587 compiler, or your machine supports multiple models), you can override it here.
5588
5589 EOM
5590 else
5591         dflt=''
5592         echo $libpth | $tr ' ' $trnl | $sort | $uniq > libpath
5593         cat >&4 <<EOM
5594 I can't seem to find your C library.  I've looked in the following places:
5595
5596 EOM
5597         $sed 's/^/      /' libpath
5598         cat <<EOM
5599
5600 None of these seems to contain your C library. I need to get its name...
5601
5602 EOM
5603 fi
5604 fn=f
5605 rp='Where is your C library?'
5606 . ./getfile
5607 libc="$ans"
5608
5609 echo " "
5610 echo $libc $libnames | $tr ' ' $trnl | $sort | $uniq > libnames
5611 set X `cat libnames`
5612 shift
5613 xxx=files
5614 case $# in 1) xxx=file; esac
5615 echo "Extracting names from the following $xxx for later perusal:" >&4
5616 echo " "
5617 $sed 's/^/      /' libnames >&4
5618 echo " "
5619 $echo $n "This may take a while...$c" >&4
5620
5621 for file in $*; do
5622         case $file in
5623         *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
5624         *) $nm $nm_opt $file 2>/dev/null;;
5625         esac
5626 done >libc.tmp
5627
5628 $echo $n ".$c"
5629 $grep fprintf libc.tmp > libc.ptf
5630 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
5631 xrun='eval "<libc.tmp $com >libc.list"; echo "done" >&4'
5632 xxx='[ADTSIW]'
5633 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx  *_[_.]*//p' -e 's/^.* $xxx  *//p'";\
5634         eval $xscan;\
5635         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5636                 eval $xrun
5637 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
5638         eval $xscan;\
5639         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5640                 eval $xrun
5641 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
5642         eval $xscan;\
5643         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5644                 eval $xrun
5645 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
5646         eval $xscan;\
5647         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5648                 eval $xrun
5649 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
5650         eval $xscan;\
5651         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5652                 eval $xrun
5653 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
5654         eval $xscan;\
5655         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5656                 eval $xrun
5657 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
5658                                 -e '/ file/d' -e 's/^\([^       ]*\).*/\1/p'";\
5659         eval $xscan;\
5660         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5661                 eval $xrun
5662 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
5663         eval $xscan;\
5664         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5665                 eval $xrun
5666 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
5667         eval $xscan;\
5668         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5669                 eval $xrun
5670 elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
5671         eval $xscan;\
5672         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5673                 eval $xrun
5674 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
5675         eval $xscan;\
5676         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5677                 eval $xrun
5678 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
5679         eval $xscan;\
5680         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5681                 eval $xrun
5682 elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
5683         eval $xscan;\
5684         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5685                 eval $xrun
5686 elif com="sed -n -e 's/^__.*//' -e 's/[       ]*D[    ]*[0-9]*.*//p'";\
5687         eval $xscan;\
5688         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5689                 eval $xrun
5690 else
5691         $nm -p $* 2>/dev/null >libc.tmp
5692         $grep fprintf libc.tmp > libc.ptf
5693         if com="$sed -n -e 's/^.* [ADTSIW]  *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
5694                 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
5695         then
5696                 nm_opt='-p'
5697                 eval $xrun
5698         else
5699                 echo " "
5700                 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
5701                 com=''
5702                 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
5703                         for thisname in $libnames $libc; do
5704                                 $ar t $thisname >>libc.tmp
5705                         done
5706                         $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
5707                         echo "Ok." >&4
5708                 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
5709                         # Repeat libc to extract forwarders to DLL entries too
5710                         for thisname in $libnames $libc; do
5711                                 $ar tv $thisname >>libc.tmp
5712                                 # Revision 50 of EMX has bug in $ar.
5713                                 # it will not extract forwarders to DLL entries
5714                                 # Use emximp which will extract exactly them.
5715                                 emximp -o tmp.imp $thisname \
5716                                     2>/dev/null && \
5717                                     $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
5718                                     < tmp.imp >>libc.tmp
5719                                 $rm tmp.imp
5720                         done
5721                         $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
5722                         echo "Ok." >&4
5723                 else
5724                         echo "$ar didn't seem to work right." >&4
5725                         echo "Maybe this is a Cray...trying bld instead..." >&4
5726                         if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
5727                         then
5728                                 for thisname in $libnames; do
5729                                         bld t $libnames | \
5730                                         $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
5731                                         $ar t $thisname >>libc.tmp
5732                                 done
5733                                 echo "Ok." >&4
5734                         else
5735                                 echo "That didn't work either.  Giving up." >&4
5736                                 exit 1
5737                         fi
5738                 fi
5739         fi
5740 fi
5741 nm_extract="$com"
5742 if $test -f /lib/syscalls.exp; then
5743         echo " "
5744         echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
5745         $sed -n 's/^\([^        ]*\)[   ]*syscall[0-9]*$/\1/p' /lib/syscalls.exp >>libc.list
5746 fi
5747 ;;
5748 esac
5749 $rm -f libnames libpath
5750
5751 : is a C symbol defined?
5752 csym='tlook=$1;
5753 case "$3" in
5754 -v) tf=libc.tmp; tc=""; tdc="";;
5755 -a) tf=libc.tmp; tc="[0]"; tdc="[]";;
5756 *) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";;
5757 esac;
5758 tx=yes;
5759 case "$reuseval-$4" in
5760 true-) ;;
5761 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
5762 esac;
5763 case "$tx" in
5764 yes)
5765         case "$runnm" in
5766         true)
5767                 if $contains $tlook $tf >/dev/null 2>&1;
5768                 then tval=true;
5769                 else tval=false;
5770                 fi;;
5771         *)
5772                 echo "int main() { extern short $1$tdc; printf(\"%hd\", $1$tc); }" > t.c;
5773                 if $cc -o t $optimize $ccflags $ldflags t.c $libs >/dev/null 2>&1;
5774                 then tval=true;
5775                 else tval=false;
5776                 fi;
5777                 $rm -f t t.c;;
5778         esac;;
5779 *)
5780         case "$tval" in
5781         $define) tval=true;;
5782         *) tval=false;;
5783         esac;;
5784 esac;
5785 eval "$2=$tval"'
5786
5787 : define an is-in-libc? function
5788 inlibc='echo " "; td=$define; tu=$undef;
5789 sym=$1; var=$2; eval "was=\$$2";
5790 tx=yes;
5791 case "$reuseval$was" in
5792 true) ;;
5793 true*) tx=no;;
5794 esac;
5795 case "$tx" in
5796 yes)
5797         set $sym tres -f;
5798         eval $csym;
5799         case "$tres" in
5800         true)
5801                 echo "$sym() found." >&4;
5802                 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
5803         *)
5804                 echo "$sym() NOT found." >&4;
5805                 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
5806         esac;;
5807 *)
5808         case "$was" in
5809         $define) echo "$sym() found." >&4;;
5810         *) echo "$sym() NOT found." >&4;;
5811         esac;;
5812 esac'
5813
5814 : see if sqrtl exists
5815 set sqrtl d_sqrtl
5816 eval $inlibc
5817
5818 case "$ccflags" in
5819 *-DUSE_LONG_DOUBLE*|*-DUSE_MORE_BITS*) uselongdouble="$define" ;;
5820 esac
5821
5822 case "$uselongdouble" in
5823 $define|true|[yY]*)     dflt='y';;
5824 *) dflt='n';;
5825 esac
5826 cat <<EOM
5827
5828 Perl can be built to take advantage of long doubles which
5829 (if available) may give more accuracy and range for floating point numbers.
5830
5831 If this doesn't make any sense to you, just accept the default '$dflt'.
5832 EOM
5833 rp='Try to use long doubles if available?'
5834 . ./myread
5835 case "$ans" in
5836 y|Y)    val="$define"   ;;
5837 *)      val="$undef"    ;;
5838 esac
5839 set uselongdouble
5840 eval $setvar
5841
5842 case "$uselongdouble" in
5843 true|[yY]*) uselongdouble="$define" ;;
5844 esac
5845
5846 case "$uselongdouble" in
5847 $define)
5848 : Look for a hint-file generated 'call-back-unit'.  If the
5849 : user has specified that long doubles should be used,
5850 : we may need to set or change some other defaults.
5851         if $test -f uselongdouble.cbu; then
5852                 echo "Your platform has some specific hints for long doubles, using them..."
5853                 . ./uselongdouble.cbu
5854         else
5855                 $cat <<EOM
5856 (Your platform doesn't have any specific hints for long doubles.)
5857 EOM
5858         fi
5859         ;;
5860 esac
5861
5862 case "$uselongdouble:$d_sqrtl" in
5863 $define:$undef)
5864                 $cat <<EOM >&4
5865
5866 *** You requested the use of long doubles but you do not seem to have
5867 *** the mathematic functions for long doubles.  I'm disabling the use
5868 *** of long doubles.
5869
5870 EOM
5871         uselongdouble=$undef
5872         ;;
5873 esac
5874
5875 : check for length of double
5876 echo " "
5877 case "$doublesize" in
5878 '')
5879         echo "Checking to see how big your double precision numbers are..." >&4
5880         $cat >try.c <<'EOCP'
5881 #include <stdio.h>
5882 int main()
5883 {
5884     printf("%d\n", (int)sizeof(double));
5885     exit(0);
5886 }
5887 EOCP
5888         set try
5889         if eval $compile_ok; then
5890                 doublesize=`$run ./try`
5891                 echo "Your double is $doublesize bytes long."
5892         else
5893                 dflt='8'
5894                 echo "(I can't seem to compile the test program.  Guessing...)"
5895                 rp="What is the size of a double precision number (in bytes)?"
5896                 . ./myread
5897                 doublesize="$ans"
5898         fi
5899         ;;
5900 esac
5901 $rm -f try.c try
5902
5903 : check for long doubles
5904 echo " "
5905 echo "Checking to see if you have long double..." >&4
5906 echo 'int main() { long double x = 7.0; }' > try.c
5907 set try
5908 if eval $compile; then
5909         val="$define"
5910         echo "You have long double."
5911 else
5912         val="$undef"
5913         echo "You do not have long double."
5914 fi
5915 $rm try.*
5916 set d_longdbl
5917 eval $setvar
5918
5919 : check for length of long double
5920 case "${d_longdbl}${longdblsize}" in
5921 $define)
5922         echo " "
5923         echo "Checking to see how big your long doubles are..." >&4
5924         $cat >try.c <<'EOCP'
5925 #include <stdio.h>
5926 int main()
5927 {
5928         printf("%d\n", sizeof(long double));
5929 }
5930 EOCP
5931         set try
5932         set try
5933         if eval $compile; then
5934                 longdblsize=`$run ./try`
5935                 echo "Your long doubles are $longdblsize bytes long."
5936         else
5937                 dflt='8'
5938                 echo " "
5939                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
5940                 rp="What is the size of a long double (in bytes)?"
5941                 . ./myread
5942                 longdblsize="$ans"
5943         fi
5944         if $test "X$doublesize" = "X$longdblsize"; then
5945                 echo "(That isn't any different from an ordinary double.)"
5946         fi      
5947         ;;
5948 esac
5949 $rm -f try.* try
5950
5951 case "$useperlio" in
5952 $define|true|[yY]*|'')  dflt='y';;
5953 *) dflt='n';;
5954 esac
5955 cat <<EOM
5956
5957 Previous version of $package used the standard IO mechanisms as
5958 defined in <stdio.h>.  Versions 5.003_02 and later of $package allow
5959 alternate IO mechanisms via the PerlIO abstraction layer, but the
5960 stdio mechanism is still available if needed.  The abstraction layer
5961 can use AT&T's sfio (if you already have sfio installed) or regular stdio.
5962 Using PerlIO with sfio may cause problems with some extension modules.
5963
5964 If this doesn't make any sense to you, just accept the default '$dflt'.
5965 EOM
5966 rp='Use the PerlIO abstraction layer?'
5967 . ./myread
5968 case "$ans" in
5969 y|Y) 
5970         val="$define"
5971         ;;
5972 *)      
5973         echo "Ok, doing things the stdio way."
5974         val="$undef"
5975         ;;
5976 esac
5977 set useperlio
5978 eval $setvar 
5979
5980 case "$usesocks" in
5981 $define|true|[yY]*)
5982         case "$useperlio" in
5983         $define|true|[yY]*) ;;
5984         *)      cat >&4 <<EOM
5985
5986 You are using the SOCKS proxy protocol library which means that you
5987 should also use the PerlIO layer.  You may be headed for trouble.
5988
5989 EOM
5990                 ;;
5991         esac
5992         ;;
5993 esac
5994
5995         
5996 : determine the architecture name
5997 echo " "
5998 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
5999         tarch=`arch`"-$osname"
6000 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
6001         if uname -m > tmparch 2>&1 ; then
6002                 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
6003                         -e 's/$/'"-$osname/" tmparch`
6004         else
6005                 tarch="$osname"
6006         fi
6007         $rm -f tmparch
6008 else
6009         tarch="$osname"
6010 fi
6011 case "$myarchname" in
6012 ''|"$tarch") ;;
6013 *)
6014         echo "(Your architecture name used to be $myarchname.)"
6015         archname=''
6016         ;;
6017 esac
6018 case "$targetarch" in
6019 '') ;;
6020 *)  archname=`echo $targetarch|sed 's,^[^-]*-,,'` ;;
6021 esac
6022 myarchname="$tarch"
6023 case "$archname" in
6024 '') dflt="$tarch";;
6025 *) dflt="$archname";;
6026 esac
6027 rp='What is your architecture name'
6028 . ./myread
6029 archname="$ans"
6030 case "$usethreads" in
6031 $define)
6032         echo "Threads selected." >&4
6033         case "$archname" in
6034         *-thread*) echo "...and architecture name already has -thread." >&4
6035                 ;;
6036         *)      archname="$archname-thread"
6037                 echo "...setting architecture name to $archname." >&4
6038                 ;;
6039         esac
6040         ;;
6041 esac
6042 case "$usemultiplicity" in
6043 $define)
6044         echo "Multiplicity selected." >&4
6045         case "$archname" in
6046         *-multi*) echo "...and architecture name already has -multi." >&4
6047                 ;;
6048         *)      archname="$archname-multi"
6049                 echo "...setting architecture name to $archname." >&4
6050                 ;;
6051         esac
6052         ;;
6053 esac
6054 case "$use64bitint$use64bitall" in
6055 *"$define"*)
6056         case "$archname64" in
6057         '')
6058                 echo "This architecture is naturally 64-bit, not changing architecture name." >&4
6059                 ;;
6060         *)
6061                 case "$use64bitint" in
6062                 "$define") echo "64 bit integers selected." >&4 ;;
6063                 esac
6064                 case "$use64bitall" in
6065                 "$define") echo "Maximal 64 bitness selected." >&4 ;;
6066                 esac
6067                 case "$archname" in
6068                 *-$archname64*) echo "...and architecture name already has $archname64." >&4
6069                         ;;
6070                 *)      archname="$archname-$archname64"
6071                         echo "...setting architecture name to $archname." >&4
6072                         ;;
6073                 esac
6074                 ;;
6075         esac
6076 esac
6077 case "$uselongdouble" in
6078 $define)
6079         echo "Long doubles selected." >&4
6080         case "$longdblsize" in
6081         $doublesize)
6082                 "...but long doubles are equal to doubles, not changing architecture name." >&4
6083                 ;;
6084         *)
6085                 case "$archname" in
6086                 *-ld*) echo "...and architecture name already has -ld." >&4
6087                         ;;
6088                 *)      archname="$archname-ld"
6089                         echo "...setting architecture name to $archname." >&4
6090                         ;;
6091                 esac
6092                 ;;
6093         esac
6094         ;;
6095 esac
6096 case "$useperlio" in
6097 $define)
6098         echo "Perlio selected." >&4
6099         ;;
6100 *)
6101         echo "Perlio not selected, using stdio." >&4
6102         case "$archname" in
6103         *-stdio*) echo "...and architecture name already has -stdio." >&4
6104                 ;;
6105         *)      archname="$archname-stdio"
6106                 echo "...setting architecture name to $archname." >&4
6107                 ;;
6108         esac
6109         ;;
6110 esac
6111
6112 : determine root of directory hierarchy where package will be installed.
6113 case "$prefix" in
6114 '')
6115         dflt=`./loc . /usr/local /usr/local /local /opt /usr`
6116         ;;
6117 *)
6118         dflt="$prefix"
6119         ;;
6120 esac
6121 $cat <<EOM
6122
6123 By default, $package will be installed in $dflt/bin, manual pages
6124 under $dflt/man, etc..., i.e. with $dflt as prefix for all
6125 installation directories. Typically this is something like /usr/local.
6126 If you wish to have binaries under /usr/bin but other parts of the
6127 installation under /usr/local, that's ok: you will be prompted
6128 separately for each of the installation directories, the prefix being
6129 only used to set the defaults.
6130
6131 EOM
6132 fn=d~
6133 rp='Installation prefix to use?'
6134 . ./getfile
6135 oldprefix=''
6136 case "$prefix" in
6137 '') ;;
6138 *)
6139         case "$ans" in
6140         "$prefix") ;;
6141         *) oldprefix="$prefix";;
6142         esac
6143         ;;
6144 esac
6145 prefix="$ans"
6146 prefixexp="$ansexp"
6147
6148 case "$afsroot" in
6149 '')     afsroot=/afs ;;
6150 *)      afsroot=$afsroot ;;
6151 esac
6152
6153 : is AFS running?
6154 echo " "
6155 case "$afs" in
6156 $define|true)   afs=true ;;
6157 $undef|false)   afs=false ;;
6158 *)      if test -d $afsroot; then
6159                 afs=true
6160         else
6161                 afs=false
6162         fi
6163         ;;
6164 esac
6165 if $afs; then
6166         echo "AFS may be running... I'll be extra cautious then..." >&4
6167 else
6168         echo "AFS does not seem to be running..." >&4
6169 fi
6170
6171 : determine installation prefix for where package is to be installed.
6172 if $afs; then 
6173 $cat <<EOM
6174
6175 Since you are running AFS, I need to distinguish the directory in which
6176 files will reside from the directory in which they are installed (and from
6177 which they are presumably copied to the former directory by occult means).
6178
6179 EOM
6180         case "$installprefix" in
6181         '') dflt=`echo $prefix | sed 's#^/afs/#/afs/.#'`;;
6182         *) dflt="$installprefix";;
6183         esac
6184 else
6185 $cat <<EOM
6186
6187 In some special cases, particularly when building $package for distribution,
6188 it is convenient to distinguish between the directory in which files should 
6189 be installed from the directory ($prefix) in which they 
6190 will eventually reside.  For most users, these two directories are the same.
6191
6192 EOM
6193         case "$installprefix" in
6194         '') dflt=$prefix ;;
6195         *) dflt=$installprefix;;
6196         esac
6197 fi
6198 fn=d~
6199 rp='What installation prefix should I use for installing files?'
6200 . ./getfile
6201 installprefix="$ans"
6202 installprefixexp="$ansexp"
6203
6204 : set the prefixit variable, to compute a suitable default value
6205 prefixit='case "$3" in
6206 ""|none)
6207         case "$oldprefix" in
6208         "") eval "$1=\"\$$2\"";;
6209         *)
6210                 case "$3" in
6211                 "") eval "$1=";;
6212                 none)
6213                         eval "tp=\"\$$2\"";
6214                         case "$tp" in
6215                         ""|" ") eval "$1=\"\$$2\"";;
6216                         *) eval "$1=";;
6217                         esac;;
6218                 esac;;
6219         esac;;
6220 *)
6221         eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
6222         case "$tp" in
6223         --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
6224         /*-$oldprefix/*|\~*-$oldprefix/*)
6225                 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
6226         *) eval "$1=\"\$$2\"";;
6227         esac;;
6228 esac'
6229
6230
6231 : get the patchlevel
6232 echo " "
6233 echo "Getting the current patchlevel..." >&4
6234 if $test -r $rsrc/patchlevel.h;then
6235         revision=`awk '/define[         ]+PERL_REVISION/ {print $3}' $rsrc/patchlevel.h`
6236         patchlevel=`awk '/define[       ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
6237         subversion=`awk '/define[       ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
6238         api_revision=`awk '/define[     ]+PERL_API_REVISION/ {print $3}' $rsrc/patchlevel.h`
6239         api_version=`awk '/define[      ]+PERL_API_VERSION/ {print $3}' $rsrc/patchlevel.h`
6240         api_subversion=`awk '/define[   ]+PERL_API_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
6241        perl_patchlevel=`grep ',"DEVEL[0-9][0-9]*"' $rsrc/patchlevel.h|sed 's/[^0-9]//g'`
6242 else
6243         revision=0
6244         patchlevel=0
6245         subversion=0
6246         api_revision=0
6247         api_version=0
6248         api_subversion=0
6249         perl_patchlevel=0
6250         $echo "(You do not have patchlevel.h.  Eek.)"
6251 fi
6252 if $test -r $rsrc/.patch ; then  
6253         if $test "`cat $rsrc/.patch`" -gt "$perl_patchlevel" ; then
6254                 perl_patchlevel=`cat $rsrc/.patch`
6255         fi
6256 fi
6257 case "$perl_patchlevel" in
6258 0)  ;;
6259 '') $echo "(You have $package version $patchlevel subversion $subversion.)" ;;
6260 *)  $echo "(You have $package version $patchlevel subversion $subversion patchlevel $perl_patchlevel.)" ;;
6261 esac
6262 case "$osname" in
6263 dos|vms)
6264         : XXX Should be a Configure test for double-dots in filenames.
6265         version=`echo $revision $patchlevel $subversion | \
6266                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
6267         api_versionstring=`echo $api_revision $api_version $api_subversion | \
6268                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
6269         ;;
6270 *)
6271         version=`echo $revision $patchlevel $subversion | \
6272                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
6273         api_versionstring=`echo $api_revision $api_version $api_subversion | \
6274                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
6275         ;;
6276 esac
6277 : Special case the 5.005_xx maintenance series, which used 5.005
6278 : without any subversion label as a subdirectory in $sitelib
6279 if test "${api_revision}${api_version}${api_subversion}" = "550"; then
6280         api_versionstring='5.005'
6281 fi
6282
6283 : determine installation style
6284 : For now, try to deduce it from prefix unless it is already set.
6285 : Reproduce behavior of 5.005 and earlier, maybe drop that in 5.7.
6286 case "$installstyle" in
6287 '')     case "$prefix" in
6288                 *perl*) dflt='lib';;
6289                 *) dflt='lib/perl5' ;;
6290         esac
6291         ;;
6292 *)      dflt="$installstyle" ;;
6293 esac
6294 : Probably not worth prompting for this since we prompt for all
6295 : the directories individually, and the prompt would be too long and
6296 : confusing anyway.
6297 installstyle=$dflt
6298
6299 : determine where private library files go
6300 : Usual default is /usr/local/lib/perl5/$version.
6301 : Also allow things like /opt/perl/lib/$version, since 
6302 : /opt/perl/lib/perl5... would be redundant.
6303 : The default "style" setting is made in installstyle.U
6304 case "$installstyle" in
6305 *lib/perl5*) set dflt privlib lib/$package/$version ;;
6306 *)       set dflt privlib lib/$version ;;
6307 esac
6308 eval $prefixit
6309 $cat <<EOM
6310
6311 There are some auxiliary files for $package that need to be put into a
6312 private library directory that is accessible by everyone.
6313
6314 EOM
6315 fn=d~+
6316 rp='Pathname where the private library files will reside?'
6317 . ./getfile
6318 privlib="$ans"
6319 privlibexp="$ansexp"
6320 : Change installation prefix, if necessary.
6321 if $test X"$prefix" != X"$installprefix"; then
6322         installprivlib=`echo $privlibexp | sed "s#^$prefix#$installprefix#"`
6323 else
6324         installprivlib="$privlibexp"
6325 fi
6326
6327 : set the prefixup variable, to restore leading tilda escape
6328 prefixup='case "$prefixexp" in
6329 "$prefix") ;;
6330 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
6331 esac'
6332
6333 : determine where public architecture dependent libraries go
6334 set archlib archlib
6335 eval $prefixit
6336 : privlib default is /usr/local/lib/$package/$version
6337 : archlib default is /usr/local/lib/$package/$version/$archname
6338 : privlib may have an optional trailing /share.
6339 tdflt=`echo $privlib | $sed 's,/share$,,'`
6340 tdflt=$tdflt/$archname
6341 case "$archlib" in
6342 '')     dflt=$tdflt
6343         ;;
6344 *)      dflt="$archlib"
6345     ;;
6346 esac
6347 $cat <<EOM
6348
6349 $spackage contains architecture-dependent library files.  If you are
6350 sharing libraries in a heterogeneous environment, you might store
6351 these files in a separate location.  Otherwise, you can just include
6352 them with the rest of the public library files.
6353
6354 EOM
6355 fn=d+~
6356 rp='Where do you want to put the public architecture-dependent libraries?'
6357 . ./getfile
6358 archlib="$ans"
6359 archlibexp="$ansexp"
6360 if $test X"$archlib" = X"$privlib"; then
6361         d_archlib="$undef"
6362 else
6363         d_archlib="$define"
6364 fi
6365 : Change installation prefix, if necessary.
6366 if $test X"$prefix" != X"$installprefix"; then
6367         installarchlib=`echo $archlibexp | sed "s#^$prefix#$installprefix#"`
6368 else
6369         installarchlib="$archlibexp"
6370 fi
6371
6372
6373 : Binary compatibility with 5.005 is not possible for builds
6374 : with advanced features
6375 case "$usethreads$usemultiplicity" in
6376 *define*)
6377         bincompat5005="$undef"
6378         d_bincompat5005="$undef"
6379         ;;
6380 *)      $cat <<EOM
6381
6382 This version of Perl can be compiled for binary compatibility with 5.005.
6383 If you decide to do so, you will be able to continue using most of the
6384 extensions that were compiled for Perl 5.005.
6385
6386 EOM
6387         case "$bincompat5005$d_bincompat5005" in
6388         *"$undef"*) dflt=n ;;
6389         *) dflt=y ;;
6390         esac
6391         rp='Binary compatibility with Perl 5.005?'
6392         . ./myread
6393         case "$ans" in
6394         y*) val="$define" ;;
6395         *)  val="$undef" ;;
6396         esac
6397         set d_bincompat5005
6398         eval $setvar
6399         case "$d_bincompat5005" in
6400         "$define")
6401                 bincompat5005="$define"
6402                 ;;
6403         *)      bincompat5005="$undef"
6404                 d_bincompat5005="$undef"
6405                 ;;
6406         esac
6407         ;;
6408 esac
6409
6410
6411 : see if setuid scripts can be secure
6412 $cat <<EOM
6413
6414 Some kernels have a bug that prevents setuid #! scripts from being
6415 secure.  Some sites have disabled setuid #! scripts because of this.
6416
6417 First let's decide if your kernel supports secure setuid #! scripts.
6418 (If setuid #! scripts would be secure but have been disabled anyway,
6419 don't say that they are secure if asked.)
6420
6421 EOM
6422
6423 val="$undef"
6424 if $test -d /dev/fd; then
6425         echo "#!$ls" >reflect
6426         chmod +x,u+s reflect
6427         ./reflect >flect 2>&1
6428         if $contains "/dev/fd" flect >/dev/null; then
6429                 echo "Congratulations, your kernel has secure setuid scripts!" >&4
6430                 val="$define"
6431         else
6432                 $cat <<EOM
6433 If you are not sure if they are secure, I can check but I'll need a
6434 username and password different from the one you are using right now.
6435 If you don't have such a username or don't want me to test, simply
6436 enter 'none'.
6437
6438 EOM
6439                 rp='Other username to test security of setuid scripts with?'
6440                 dflt='none'
6441                 . ./myread
6442                 case "$ans" in
6443                 n|none)
6444                         case "$d_suidsafe" in
6445                         '')     echo "I'll assume setuid scripts are *not* secure." >&4
6446                                 dflt=n;;
6447                         "$undef")
6448                                 echo "Well, the $hint value is *not* secure." >&4
6449                                 dflt=n;;
6450                         *)      echo "Well, the $hint value *is* secure." >&4
6451                                 dflt=y;;
6452                         esac
6453                         ;;
6454                 *)
6455                         $rm -f reflect flect
6456                         echo "#!$ls" >reflect
6457                         chmod +x,u+s reflect
6458                         echo >flect
6459                         chmod a+w flect
6460                         echo '"su" will (probably) prompt you for '"$ans's password."
6461                         su $ans -c './reflect >flect'
6462                         if $contains "/dev/fd" flect >/dev/null; then
6463                                 echo "Okay, it looks like setuid scripts are secure." >&4
6464                                 dflt=y
6465                         else
6466                                 echo "I don't think setuid scripts are secure." >&4
6467                                 dflt=n
6468                         fi
6469                         ;;
6470                 esac
6471                 rp='Does your kernel have *secure* setuid scripts?'
6472                 . ./myread
6473                 case "$ans" in
6474                 [yY]*)  val="$define";;
6475                 *)      val="$undef";;
6476                 esac
6477         fi
6478 else
6479         echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
6480         echo "(That's for file descriptors, not floppy disks.)"
6481         val="$undef"
6482 fi
6483 set d_suidsafe
6484 eval $setvar
6485
6486 $rm -f reflect flect
6487
6488 : now see if they want to do setuid emulation
6489 echo " "
6490 val="$undef"
6491 case "$d_suidsafe" in
6492 "$define")
6493         val="$undef"
6494         echo "No need to emulate SUID scripts since they are secure here." >& 4
6495         ;;
6496 *)
6497         $cat <<EOM
6498 Some systems have disabled setuid scripts, especially systems where
6499 setuid scripts cannot be secure.  On systems where setuid scripts have
6500 been disabled, the setuid/setgid bits on scripts are currently
6501 useless.  It is possible for $package to detect those bits and emulate
6502 setuid/setgid in a secure fashion.  This emulation will only work if
6503 setuid scripts have been disabled in your kernel.
6504
6505 EOM
6506         case "$d_dosuid" in
6507         "$define") dflt=y ;;
6508         *) dflt=n ;;
6509         esac
6510         rp="Do you want to do setuid/setgid emulation?"
6511         . ./myread
6512         case "$ans" in
6513         [yY]*)  val="$define";;
6514         *)      val="$undef";;
6515         esac
6516         ;;
6517 esac
6518 set d_dosuid
6519 eval $setvar
6520
6521 : see if this is a malloc.h system
6522 set malloc.h i_malloc
6523 eval $inhdr
6524
6525 : see if stdlib is available
6526 set stdlib.h i_stdlib
6527 eval $inhdr
6528
6529 : determine which malloc to compile in
6530 echo " "
6531 case "$usemymalloc" in
6532 [yY]*|true|$define)     dflt='y' ;;
6533 [nN]*|false|$undef)     dflt='n' ;;
6534 *)      case "$ptrsize" in
6535         4) dflt='y' ;;
6536         *) dflt='n' ;;
6537         esac
6538         ;;
6539 esac
6540 rp="Do you wish to attempt to use the malloc that comes with $package?"
6541 . ./myread
6542 usemymalloc="$ans"
6543 case "$ans" in
6544 y*|true)
6545         usemymalloc='y'
6546         mallocsrc='malloc.c'
6547         mallocobj="malloc$_o"
6548         d_mymalloc="$define"
6549         case "$libs" in
6550         *-lmalloc*)
6551                 : Remove malloc from list of libraries to use
6552                 echo "Removing unneeded -lmalloc from library list" >&4
6553                 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
6554                 shift
6555                 libs="$*"
6556                 echo "libs = $libs" >&4
6557                 ;;
6558         esac
6559         ;;
6560 *)
6561         usemymalloc='n'
6562         mallocsrc=''
6563         mallocobj=''
6564         d_mymalloc="$undef"
6565         ;;
6566 esac
6567
6568 : compute the return types of malloc and free
6569 echo " "
6570 $cat >malloc.c <<END
6571 #$i_malloc I_MALLOC
6572 #$i_stdlib I_STDLIB
6573 #include <stdio.h>
6574 #include <sys/types.h>
6575 #ifdef I_MALLOC
6576 #include <malloc.h>
6577 #endif
6578 #ifdef I_STDLIB
6579 #include <stdlib.h>
6580 #endif
6581 #ifdef TRY_MALLOC
6582 void *malloc();
6583 #endif
6584 #ifdef TRY_FREE
6585 void free();
6586 #endif
6587 END
6588 case "$malloctype" in
6589 '')
6590         if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
6591                 malloctype='void *'
6592         else
6593                 malloctype='char *'
6594         fi
6595         ;;
6596 esac
6597 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
6598
6599 case "$freetype" in
6600 '')
6601         if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
6602                 freetype='void'
6603         else
6604                 freetype='int'
6605         fi
6606         ;;
6607 esac
6608 echo "Your system uses $freetype free(), it would seem." >&4
6609 $rm -f malloc.[co]
6610 $cat <<EOM
6611
6612 After $package is installed, you may wish to install various
6613 add-on modules and utilities.  Typically, these add-ons will
6614 be installed under $prefix with the rest
6615 of this package.  However, you may wish to install such add-ons
6616 elsewhere under a different prefix.
6617
6618 If you do not wish to put everything under a single prefix, that's
6619 ok.  You will be prompted for the individual locations; this siteprefix
6620 is only used to suggest the defaults.
6621
6622 The default should be fine for most people.
6623
6624 EOM
6625 fn=d~+
6626 rp='Installation prefix to use for add-on modules and utilities?'
6627 : XXX Here might be another good place for an installstyle setting.
6628 case "$siteprefix" in
6629 '') dflt=$prefix ;;
6630 *)  dflt=$siteprefix ;;
6631 esac
6632 . ./getfile
6633 : XXX Prefixit unit does not yet support siteprefix and vendorprefix
6634 oldsiteprefix=''
6635 case "$siteprefix" in
6636 '') ;;
6637 *)      case "$ans" in
6638         "$prefix") ;;
6639         *) oldsiteprefix="$prefix";;
6640         esac
6641         ;;
6642 esac
6643 siteprefix="$ans"
6644 siteprefixexp="$ansexp"
6645
6646 : determine where site specific libraries go.
6647 : Usual default is /usr/local/lib/perl5/site_perl/$version
6648 : The default "style" setting is made in installstyle.U
6649 : XXX No longer works with Prefixit stuff.
6650 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6651 case "$sitelib" in
6652 '') case "$installstyle" in
6653         *lib/perl5*) dflt=$siteprefix/lib/$package/site_$prog/$version ;;
6654         *)       dflt=$siteprefix/lib/site_$prog/$version ;;
6655         esac
6656         ;;
6657 *)      dflt="$sitelib"
6658         ;;
6659 esac
6660 $cat <<EOM
6661
6662 The installation process will create a directory for
6663 site-specific extensions and modules.  Most users find it convenient
6664 to place all site-specific files in this directory rather than in the
6665 main distribution directory.
6666
6667 EOM
6668 fn=d~+
6669 rp='Pathname for the site-specific library files?'
6670 . ./getfile
6671 sitelib="$ans"
6672 sitelibexp="$ansexp"
6673 sitelib_stem=`echo "$sitelibexp" | sed "s,/$version$,,"`
6674 : Change installation prefix, if necessary.
6675 if $test X"$prefix" != X"$installprefix"; then
6676         installsitelib=`echo $sitelibexp | $sed "s#^$prefix#$installprefix#"`
6677 else
6678         installsitelib="$sitelibexp"
6679 fi
6680
6681 : determine where site specific architecture-dependent libraries go.
6682 : sitelib  default is /usr/local/lib/perl5/site_perl/$version
6683 : sitearch default is /usr/local/lib/perl5/site_perl/$version/$archname
6684 : sitelib may have an optional trailing /share.
6685 case "$sitearch" in
6686 '')     dflt=`echo $sitelib | $sed 's,/share$,,'`
6687         dflt="$dflt/$archname"
6688         ;;
6689 *)      dflt="$sitearch"
6690         ;;
6691 esac
6692 set sitearch sitearch none
6693 eval $prefixit
6694 $cat <<EOM
6695
6696 The installation process will also create a directory for
6697 architecture-dependent site-specific extensions and modules.
6698
6699 EOM
6700 fn=d~+
6701 rp='Pathname for the site-specific architecture-dependent library files?'
6702 . ./getfile
6703 sitearch="$ans"
6704 sitearchexp="$ansexp"
6705 : Change installation prefix, if necessary.
6706 if $test X"$prefix" != X"$installprefix"; then
6707         installsitearch=`echo $sitearchexp | sed "s#^$prefix#$installprefix#"`
6708 else
6709         installsitearch="$sitearchexp"
6710 fi
6711
6712 $cat <<EOM
6713
6714 The installation process will also create a directory for
6715 vendor-supplied add-ons.  Vendors who supply perl with their system
6716 may find it convenient to place all vendor-supplied files in this
6717 directory rather than in the main distribution directory.  This will
6718 ease upgrades between binary-compatible maintenance versions of perl.
6719
6720 Of course you may also use these directories in whatever way you see
6721 fit.  For example, you might use them to access modules shared over a
6722 company-wide network.
6723
6724 The default answer should be fine for most people.
6725 This causes further questions about vendor add-ons to be skipped
6726 and no vendor-specific directories will be configured for perl.
6727
6728 EOM
6729 rp='Do you want to configure vendor-specific add-on directories?'
6730 case "$usevendorprefix" in
6731 define|true|[yY]*) dflt=y ;;
6732 *)      : User may have set vendorprefix directly on Configure command line.
6733         case "$vendorprefix" in
6734         ''|' ') dflt=n ;;
6735         *)      dflt=y ;;
6736         esac
6737         ;;
6738 esac
6739 . ./myread
6740 case "$ans" in
6741 [yY]*)  fn=d~+
6742         rp='Installation prefix to use for vendor-supplied add-ons?'
6743         case "$vendorprefix" in
6744         '') dflt='' ;;
6745         *)  dflt=$vendorprefix ;;
6746         esac
6747         . ./getfile
6748         : XXX Prefixit unit does not yet support siteprefix and vendorprefix
6749         oldvendorprefix=''
6750         case "$vendorprefix" in
6751         '') ;;
6752         *)      case "$ans" in
6753                 "$prefix") ;;
6754                 *) oldvendorprefix="$prefix";;
6755                 esac
6756                 ;;
6757         esac
6758         usevendorprefix="$define"
6759         vendorprefix="$ans"
6760         vendorprefixexp="$ansexp"
6761         ;;
6762 *)      usevendorprefix="$undef"
6763         vendorprefix=''
6764         vendorprefixexp=''
6765         ;;
6766 esac
6767
6768 case "$vendorprefix" in
6769 '')     d_vendorlib="$undef"
6770         vendorlib=''
6771         vendorlibexp=''
6772         ;;
6773 *)      d_vendorlib="$define"
6774         : determine where vendor-supplied modules go.
6775         : Usual default is /usr/local/lib/perl5/vendor_perl/$version
6776         case "$vendorlib" in
6777         '')
6778                 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6779                 case "$installstyle" in
6780                 *lib/perl5*) dflt=$vendorprefix/lib/$package/vendor_$prog/$version ;;
6781                 *)           dflt=$vendorprefix/lib/vendor_$prog/$version ;;
6782                 esac
6783                 ;;
6784         *)      dflt="$vendorlib"
6785                 ;;
6786         esac
6787         fn=d~+
6788         rp='Pathname for the vendor-supplied library files?'
6789         . ./getfile
6790         vendorlib="$ans"
6791         vendorlibexp="$ansexp"
6792         ;;
6793 esac
6794 vendorlib_stem=`echo "$vendorlibexp" | sed "s,/$version$,,"`
6795 : Change installation prefix, if necessary.
6796 if $test X"$prefix" != X"$installprefix"; then
6797         installvendorlib=`echo $vendorlibexp | $sed "s#^$prefix#$installprefix#"`
6798 else
6799         installvendorlib="$vendorlibexp"
6800 fi
6801
6802 case "$vendorprefix" in
6803 '')     d_vendorarch="$undef"
6804         vendorarch=''
6805         vendorarchexp=''
6806         ;;
6807 *)      d_vendorarch="$define"
6808         : determine where vendor-supplied architecture-dependent libraries go.
6809         : vendorlib  default is /usr/local/lib/perl5/vendor_perl/$version
6810         : vendorarch default is /usr/local/lib/perl5/vendor_perl/$version/$archname
6811         : vendorlib may have an optional trailing /share.
6812         case "$vendorarch" in
6813         '')     dflt=`echo $vendorlib | $sed 's,/share$,,'`
6814                 dflt="$dflt/$archname"
6815                 ;;
6816         *)      dflt="$vendorarch" ;;
6817         esac
6818         fn=d~+
6819         rp='Pathname for vendor-supplied architecture-dependent files?'
6820         . ./getfile
6821         vendorarch="$ans"
6822         vendorarchexp="$ansexp"
6823         ;;
6824 esac
6825 : Change installation prefix, if necessary.
6826 if $test X"$prefix" != X"$installprefix"; then
6827         installvendorarch=`echo $vendorarchexp | sed "s#^$prefix#$installprefix#"`
6828 else
6829         installvendorarch="$vendorarchexp"
6830 fi
6831
6832 : Final catch-all directories to search
6833 $cat <<EOM
6834
6835 Lastly, you can have perl look in other directories for extensions and
6836 modules in addition to those already specified.
6837 These directories will be searched after 
6838         $sitearch 
6839         $sitelib 
6840 EOM
6841 test X"$vendorlib" != "X" && echo '     ' $vendorlib
6842 test X"$vendorarch" != "X" && echo '    ' $vendorarch
6843 echo ' '
6844 case "$otherlibdirs" in
6845 ''|' ') dflt='none' ;;
6846 *)      dflt="$otherlibdirs" ;;
6847 esac
6848 $cat <<EOM
6849 Enter a colon-separated set of extra paths to include in perl's @INC
6850 search path, or enter 'none' for no extra paths.
6851
6852 EOM
6853
6854 rp='Colon-separated list of additional directories for perl to search?'
6855 . ./myread
6856 case "$ans" in
6857 ' '|''|none)    otherlibdirs=' ' ;;     
6858 *)      otherlibdirs="$ans" ;;
6859 esac
6860 case "$otherlibdirs" in
6861 ' ') val=$undef ;;
6862 *)      val=$define ;;
6863 esac
6864 set d_perl_otherlibdirs
6865 eval $setvar
6866
6867 : Cruising for prototypes
6868 echo " "
6869 echo "Checking out function prototypes..." >&4
6870 $cat >prototype.c <<'EOCP'
6871 int main(int argc, char *argv[]) {
6872         exit(0);}
6873 EOCP
6874 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
6875         echo "Your C compiler appears to support function prototypes."
6876         val="$define"
6877 else
6878         echo "Your C compiler doesn't seem to understand function prototypes."
6879         val="$undef"
6880 fi
6881 set prototype
6882 eval $setvar
6883 $rm -f prototype*
6884
6885 case "$prototype" in
6886 "$define") ;;
6887 *)      ansi2knr='ansi2knr'
6888         echo " "
6889         cat <<EOM >&4
6890
6891 $me:  FATAL ERROR:
6892 This version of $package can only be compiled by a compiler that 
6893 understands function prototypes.  Unfortunately, your C compiler 
6894         $cc $ccflags
6895 doesn't seem to understand them.  Sorry about that.
6896
6897 If GNU cc is available for your system, perhaps you could try that instead.  
6898
6899 Eventually, we hope to support building Perl with pre-ANSI compilers.
6900 If you would like to help in that effort, please contact <perlbug@perl.org>.
6901
6902 Aborting Configure now.
6903 EOM
6904         exit 2
6905         ;;
6906 esac
6907
6908 : determine where public executables go
6909 echo " "
6910 set dflt bin bin
6911 eval $prefixit
6912 fn=d~
6913 rp='Pathname where the public executables will reside?'
6914 . ./getfile
6915 if $test "X$ansexp" != "X$binexp"; then
6916         installbin=''
6917 fi
6918 bin="$ans"
6919 binexp="$ansexp"
6920 : Change installation prefix, if necessary.
6921 : XXX Bug? -- ignores Configure -Dinstallprefix setting.
6922 if $test X"$prefix" != X"$installprefix"; then
6923         installbin=`echo $binexp | sed "s#^$prefix#$installprefix#"`
6924 else
6925         installbin="$binexp"
6926 fi
6927
6928 : Find perl5.005 or later.
6929 echo "Looking for a previously installed perl5.005 or later... "
6930 case "$perl5" in
6931 '')     for tdir in `echo "$binexp$path_sep$PATH" | $sed "s/$path_sep/ /g"`; do
6932                 : Check if this perl is recent and can load a simple module
6933                 if $test -x $tdir/perl$exe_ext && $tdir/perl -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6934                         perl5=$tdir/perl
6935                         break;
6936                 elif $test -x $tdir/perl5$exe_ext && $tdir/perl5 -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6937                         perl5=$tdir/perl5
6938                         break;
6939                 fi
6940         done
6941         ;;
6942 *)      perl5="$perl5"
6943         ;;
6944 esac
6945 case "$perl5" in
6946 '')     echo "None found.  That's ok.";;
6947 *)      echo "Using $perl5." ;;
6948 esac
6949
6950 : Determine list of previous versions to include in @INC
6951 $cat > getverlist <<EOPL
6952 #!$perl5 -w
6953 use File::Basename;
6954 \$api_versionstring = "$api_versionstring";
6955 \$version = "$version";
6956 \$stem = "$sitelib_stem";
6957 \$archname = "$archname";
6958 EOPL
6959         $cat >> getverlist <<'EOPL'
6960 # Can't have leading @ because metaconfig interprets it as a command!
6961 ;@inc_version_list=();
6962 # XXX Redo to do opendir/readdir? 
6963 if (-d $stem) {
6964     chdir($stem);
6965     ;@candidates = glob("5.*");
6966 }
6967 else {
6968     ;@candidates = ();
6969 }
6970
6971 # XXX ToDo:  These comparisons must be reworked when two-digit
6972 # subversions come along, so that 5.7.10 compares as greater than
6973 # 5.7.3!  By that time, hope that 5.6.x is sufficiently
6974 # widespread that we can use the built-in version vectors rather
6975 # than reinventing them here.  For 5.6.0, however, we must
6976 # assume this script will likely be run by 5.005_0x.  --AD 1/2000.
6977 foreach $d (@candidates) {
6978     if ($d lt $version) {
6979         if ($d ge $api_versionstring) {
6980             unshift(@inc_version_list, grep { -d } "$d/$archname", $d);
6981         }
6982         elsif ($d ge "5.005") {
6983             unshift(@inc_version_list, grep { -d } $d);
6984         }
6985     }
6986     else {
6987         # Skip newer version.  I.e. don't look in
6988         # 5.7.0 if we're installing 5.6.1.
6989     }
6990 }
6991
6992 if (@inc_version_list) {
6993     print join(' ', @inc_version_list);
6994 }
6995 else {
6996     # Blank space to preserve value for next Configure run.
6997     print " ";
6998 }
6999 EOPL
7000 chmod +x getverlist
7001 case "$inc_version_list" in
7002 '')     if test -x "$perl5$exe_ext"; then
7003                 dflt=`$perl5 getverlist`
7004         else
7005                 dflt='none'
7006         fi
7007         ;;
7008 $undef) dflt='none' ;;
7009 *)  eval dflt=\"$inc_version_list\" ;;
7010 esac
7011 case "$dflt" in
7012 ''|' ') dflt=none ;;
7013 esac
7014 case "$dflt" in
7015 5.005) case "$bincompat5005" in
7016        $define|true|[yY]*) ;;
7017        *) dflt=none ;;
7018        esac
7019        ;;
7020 esac
7021 $cat <<'EOM'
7022
7023 In order to ease the process of upgrading, this version of perl 
7024 can be configured to use modules built and installed with earlier 
7025 versions of perl that were installed under $prefix.  Specify here
7026 the list of earlier versions that this version of perl should check.
7027 If Configure detected no earlier versions of perl installed under
7028 $prefix, then the list will be empty.  Answer 'none' to tell perl
7029 to not search earlier versions.
7030
7031 The default should almost always be sensible, so if you're not sure,
7032 just accept the default.
7033 EOM
7034
7035 rp='List of earlier versions to include in @INC?'
7036 . ./myread
7037 case "$ans" in
7038 [Nn]one|''|' ') inc_version_list=' ' ;;
7039 *) inc_version_list="$ans" ;;
7040 esac
7041 case "$inc_version_list" in
7042 ''|' ') 
7043         inc_version_list_init='0';;
7044 *)      inc_version_list_init=`echo $inc_version_list |
7045                 $sed -e 's/^/"/' -e 's/ /","/g' -e 's/$/",0/'`
7046         ;;
7047 esac
7048 $rm -f getverlist
7049
7050 : determine whether to install perl also as /usr/bin/perl
7051
7052 echo " "
7053 if $test -d /usr/bin -a "X$installbin" != X/usr/bin; then
7054         $cat <<EOM
7055 Many scripts expect perl to be installed as /usr/bin/perl.
7056 I can install the perl you are about to compile also as /usr/bin/perl
7057 (in addition to $installbin/perl).
7058 EOM
7059         case "$installusrbinperl" in
7060         "$undef"|[nN]*) dflt='n';;
7061         *)              dflt='y';;
7062         esac
7063         rp="Do you want to install perl as /usr/bin/perl?"
7064         . ./myread
7065         case "$ans" in
7066         [yY]*)  val="$define";;
7067         *)      val="$undef" ;;
7068         esac
7069 else
7070         val="$undef"
7071 fi
7072 set installusrbinperl
7073 eval $setvar
7074
7075 : see if dld is available
7076 set dld.h i_dld
7077 eval $inhdr
7078
7079 : see if dlopen exists
7080 xxx_runnm="$runnm"
7081 runnm=false
7082 set dlopen d_dlopen
7083 eval $inlibc
7084 runnm="$xxx_runnm"
7085
7086 : determine which dynamic loading, if any, to compile in
7087 echo " "
7088 dldir="ext/DynaLoader"
7089 case "$usedl" in
7090 $define|y|true)
7091         dflt='y'
7092         usedl="$define"
7093         ;;
7094 $undef|n|false)
7095         dflt='n'
7096         usedl="$undef"
7097         ;;
7098 *) 
7099         dflt='n'
7100         case "$d_dlopen" in
7101             $define) dflt='y' ;;
7102         esac
7103         case "$i_dld" in
7104             $define) dflt='y' ;;
7105         esac
7106         : Does a dl_xxx.xs file exist for this operating system
7107         $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
7108         ;;
7109 esac
7110 rp="Do you wish to use dynamic loading?"
7111 . ./myread
7112 usedl="$ans"
7113 case "$ans" in
7114 y*) usedl="$define"
7115         case "$dlsrc" in
7116         '')
7117                 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
7118                         dflt="$dldir/dl_${osname}.xs"
7119                 elif $test "$d_dlopen" = "$define" ; then
7120                         dflt="$dldir/dl_dlopen.xs"
7121                 elif $test "$i_dld" = "$define" ; then
7122                         dflt="$dldir/dl_dld.xs"
7123                 else
7124                         dflt=''
7125                 fi
7126                 ;;
7127         *)      dflt="$dldir/$dlsrc"
7128                 ;;
7129         esac
7130     echo "The following dynamic loading files are available:"
7131         : Can not go over to $dldir because getfile has path hard-coded in.
7132         tdir=`pwd`; cd $rsrc; $ls -C $dldir/dl*.xs; cd $tdir
7133         rp="Source file to use for dynamic loading"
7134         fn="fne"
7135         gfpth="$src"
7136         . ./getfile
7137         usedl="$define"
7138         : emulate basename
7139         dlsrc=`echo $ans | $sed -e 's%.*/\([^/]*\)$%\1%'`
7140
7141         $cat << EOM
7142
7143 Some systems may require passing special flags to $cc -c to
7144 compile modules that will be used to create a shared library.
7145 To use no flags, say "none".
7146
7147 EOM
7148     case "$cccdlflags" in
7149     '') case "$gccversion" in
7150                 '') case "$osname" in
7151                         hpux)   dflt='+z' ;;
7152                         next)   dflt='none' ;;
7153                         irix*)  dflt='-KPIC' ;;
7154                         svr4*|esix*|solaris|nonstopux) dflt='-KPIC' ;;
7155                         sunos)  dflt='-pic' ;;
7156                         *)      dflt='none' ;;
7157                     esac
7158                         ;;
7159                 *)  case "$osname" in
7160                         svr4*|esix*|solaris|nonstopux) dflt='-fPIC' ;;
7161                         *)      dflt='-fpic' ;;
7162                     esac ;;
7163             esac ;;
7164         ' ') dflt='none' ;;
7165     *)  dflt="$cccdlflags" ;;
7166     esac
7167     rp="Any special flags to pass to $cc -c to compile shared library modules?"
7168     . ./myread
7169     case "$ans" in
7170     none) cccdlflags=' ' ;;
7171     *) cccdlflags="$ans" ;;
7172     esac
7173
7174     cat << EOM
7175
7176 Some systems use ld to create libraries that can be dynamically loaded,
7177 while other systems (such as those using ELF) use $cc.
7178
7179 EOM
7180         case "$ld" in
7181         '')     $cat >try.c <<'EOM'
7182 /* Test for whether ELF binaries are produced */
7183 #include <fcntl.h>
7184 #include <stdlib.h>
7185 int main() {
7186         char b[4];
7187         int i = open("a.out",O_RDONLY);
7188         if(i == -1) 
7189                 exit(1); /* fail */
7190         if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
7191                 exit(0); /* succeed (yes, it's ELF) */
7192         else
7193                 exit(1); /* fail */
7194 }
7195 EOM
7196                 if $cc $ccflags $ldflags try.c >/dev/null 2>&1 && $run ./a.out; then
7197                         cat <<EOM
7198 You appear to have ELF support.  I'll use $cc to build dynamic libraries.
7199 EOM
7200                         dflt="$cc"
7201                 else
7202                         echo "I'll use ld to build dynamic libraries."
7203                         dflt='ld'
7204                 fi
7205                 rm -f try.c a.out
7206                 ;;
7207         *)      dflt="$ld"
7208                 ;;
7209         esac
7210
7211     rp="What command should be used to create dynamic libraries?"
7212     . ./myread
7213         ld="$ans"
7214
7215     cat << EOM
7216
7217 Some systems may require passing special flags to $ld to create a
7218 library that can be dynamically loaded.  If your ld flags include
7219 -L/other/path options to locate libraries outside your loader's normal
7220 search path, you may need to specify those -L options here as well.  To
7221 use no flags, say "none".
7222
7223 EOM
7224     case "$lddlflags" in
7225     '') case "$osname" in
7226                         beos) dflt='-nostart' ;;
7227                         hpux) dflt='-b';
7228                               case "$gccversion" in
7229                               '') dflt="$dflt +vnocompatwarnings" ;;
7230                               esac
7231                               ;;        
7232                         linux|irix*)    dflt='-shared' ;;
7233                         next)  dflt='none' ;;
7234                         solaris) dflt='-G' ;;
7235                         sunos) dflt='-assert nodefinitions' ;;
7236                         svr4*|esix*|nonstopux) dflt="-G $ldflags" ;;
7237                 *)     dflt='none' ;;
7238                         esac
7239                         ;;
7240     *) dflt="$lddlflags" ;;
7241     esac
7242
7243         : Try to guess additional flags to pick up local libraries.
7244         : Be careful not to append to a plain 'none'
7245         case "$dflt" in
7246         none) dflt='' ;;
7247         esac
7248         for thisflag in $ldflags; do
7249                 case "$thisflag" in
7250                 -L*|-R*)
7251                         case " $dflt " in
7252                         *" $thisflag "*) ;;
7253                         *) dflt="$dflt $thisflag" ;;
7254                         esac
7255                         ;;
7256                 esac
7257         done
7258
7259         case "$dflt" in
7260         ''|' ') dflt='none' ;;
7261         esac
7262
7263     rp="Any special flags to pass to $ld to create a dynamically loaded library?"
7264     . ./myread
7265     case "$ans" in
7266     none) lddlflags=' ' ;;
7267     *) lddlflags="$ans" ;;
7268     esac
7269
7270         cat <<EOM
7271
7272 Some systems may require passing special flags to $cc to indicate that
7273 the resulting executable will use dynamic linking.  To use no flags,
7274 say "none".
7275
7276 EOM
7277     case "$ccdlflags" in
7278     '') case "$osname" in
7279                 hpux)   dflt='-Wl,-E' ;;
7280                 linux)  dflt='-rdynamic' ;;
7281                 next)   dflt='none' ;;
7282                 sunos)  dflt='none' ;;
7283                 *)      dflt='none' ;;
7284             esac ;;
7285     ' ')  dflt='none' ;;
7286     *)  dflt="$ccdlflags" ;;
7287     esac
7288     rp="Any special flags to pass to $cc to use dynamic linking?"
7289     . ./myread
7290     case "$ans" in
7291     none) ccdlflags=' ' ;;
7292     *) ccdlflags="$ans" ;;
7293     esac
7294     ;;
7295 *)  usedl="$undef"
7296         ld='ld'
7297     dlsrc='dl_none.xs'
7298     lddlflags=''
7299     ccdlflags=''
7300     ;;
7301 esac
7302
7303 also=''
7304 case "$usedl" in
7305 $undef)
7306         # No dynamic loading being used, so don't bother even to prompt.
7307         useshrplib='false'
7308         ;;
7309 *)      case "$useshrplib" in
7310         '')     case "$osname" in
7311                 svr4*|nonstopux|dgux|dynixptx|esix|powerux|beos|cygwin*)
7312                         dflt=y
7313                         also='Building a shared libperl is required for dynamic loading to work on your system.'
7314                         ;;
7315                 next*)
7316                         case "$osvers" in
7317                         4*)     dflt=y
7318                                 also='Building a shared libperl is needed for MAB support.'
7319                                 ;;
7320                         *)      dflt=n
7321                                 ;;
7322                         esac
7323                         ;;
7324                 *)      dflt=n
7325                         ;;
7326                 esac
7327                 ;;
7328         $define|true|[Yy]*)
7329                 dflt=y
7330                 ;;
7331         *)      dflt=n
7332                 ;;
7333         esac
7334         $cat << EOM
7335
7336 The perl executable is normally obtained by linking perlmain.c with
7337 libperl${_a}, any static extensions (usually just DynaLoader), and
7338 any other libraries needed on this system (such as -lm, etc.).  Since
7339 your system supports dynamic loading, it is probably possible to build
7340 a shared libperl.$so.  If you will have more than one executable linked
7341 to libperl.$so, this will significantly reduce the size of each
7342 executable, but it may have a noticeable affect on performance.  The
7343 default is probably sensible for your system.
7344 $also
7345
7346 EOM
7347         rp="Build a shared libperl.$so (y/n)"
7348         . ./myread
7349         case "$ans" in
7350         true|$define|[Yy]*)
7351                 useshrplib='true'  ;;
7352         *)      useshrplib='false' ;;
7353         esac
7354         ;;
7355 esac
7356
7357 case "$useshrplib" in
7358 true)
7359         case "$libperl" in
7360         '')
7361                 # Figure out a good name for libperl.so.  Since it gets stored in
7362                 # a version-specific architecture-dependent library, the version
7363                 # number isn't really that important, except for making cc/ld happy.
7364                 #
7365                 # A name such as libperl.so.3.1
7366                 majmin="libperl.$so.$patchlevel.$subversion"
7367                 # A name such as libperl.so.301
7368                 majonly=`echo $patchlevel $subversion |
7369                         $awk '{printf "%d%02d", $1, $2}'`
7370                 majonly=libperl.$so.$majonly
7371                 # I'd prefer to keep the os-specific stuff here to a minimum, and
7372                 # rely on figuring it out from the naming of libc.
7373                 case "${osname}${osvers}" in
7374                 next4*)
7375                         dflt=libperl.5.$so
7376                         # XXX How handle the --version stuff for MAB?
7377                         ;;
7378                 linux*)  # ld won't link with a bare -lperl otherwise.
7379                         dflt=libperl.$so
7380                         ;;
7381                 cygwin*) # include version
7382                         dflt=`echo libperl$version | sed -e 's/\./_/g'`$lib_ext
7383                         ;;
7384                 *)      # Try to guess based on whether libc has major.minor.
7385                         case "$libc" in
7386                         *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
7387                         *libc.$so.[0-9]*) dflt=$majonly ;;
7388                         *)      dflt=libperl.$so ;;
7389                         esac
7390                         ;;
7391                 esac
7392                 ;;
7393         *)      dflt=$libperl
7394                 ;;
7395         esac
7396         cat << EOM
7397
7398 I need to select a good name for the shared libperl.  If your system uses
7399 library names with major and minor numbers, then you might want something
7400 like $majmin.  Alternatively, if your system uses a single version
7401 number for shared libraries, then you might want to use $majonly.
7402 Or, your system might be quite happy with a simple libperl.$so.
7403
7404 Since the shared libperl will get installed into a version-specific
7405 architecture-dependent directory, the version number of the shared perl
7406 library probably isn't important, so the default should be o.k.
7407
7408 EOM
7409         rp='What name do you want to give to the shared libperl?'
7410         . ./myread
7411         libperl=$ans
7412         echo "Ok, I'll use $libperl"
7413         ;;
7414 *)
7415         libperl="libperl${_a}"
7416         ;;
7417 esac
7418
7419 # Detect old use of shrpdir via undocumented Configure -Dshrpdir
7420 case "$shrpdir" in
7421 '') ;;
7422 *)      $cat >&4 <<EOM
7423 WARNING:  Use of the shrpdir variable for the installation location of
7424 the shared $libperl is not supported.  It was never documented and
7425 will not work in this version.  Let me (perlbug@perl.org)
7426 know of any problems this may cause.
7427
7428 EOM
7429         case "$shrpdir" in
7430         "$archlibexp/CORE")
7431                 $cat >&4 <<EOM
7432 But your current setting of $shrpdir is
7433 the default anyway, so it's harmless.
7434 EOM
7435                 ;;
7436         *)
7437                 $cat >&4 <<EOM
7438 Further, your current attempted setting of $shrpdir
7439 conflicts with the value of $archlibexp/CORE
7440 that installperl will use.
7441 EOM
7442                 ;;
7443         esac
7444         ;;
7445 esac
7446
7447 # How will the perl executable find the installed shared $libperl?
7448 # Add $xxx to ccdlflags.
7449 # If we can't figure out a command-line option, use $shrpenv to
7450 # set env LD_RUN_PATH.  The main perl makefile uses this.
7451 shrpdir=$archlibexp/CORE
7452 xxx=''
7453 tmp_shrpenv=''
7454 if "$useshrplib"; then
7455     case "$osname" in 
7456         aix)
7457                 # We'll set it in Makefile.SH...
7458                 ;;
7459         solaris|netbsd)
7460                 xxx="-R $shrpdir"
7461                 ;;
7462         freebsd)
7463                 xxx="-Wl,-R$shrpdir"
7464                 ;;
7465         linux|irix*|dec_osf)
7466                 xxx="-Wl,-rpath,$shrpdir"
7467                 ;;
7468         next)
7469                 # next doesn't like the default...
7470                 ;;
7471         beos)
7472                 # beos doesn't like the default, either.
7473                 ;;
7474         hpux*)
7475                 # hpux doesn't like the default, either.
7476                 tmp_shrpenv="env LDOPTS=\"+s +b${shrpdir}\""
7477                 ;;
7478         *)
7479                 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
7480                 ;;
7481         esac
7482         case "$xxx" in
7483         '') ;;
7484         *)      
7485                 # Only add $xxx if it isn't already in ccdlflags.
7486                 case " $ccdlflags " in
7487                 *" $xxx "*)     ;;
7488                 *)      ccdlflags="$ccdlflags $xxx"
7489                         cat <<EOM >&4
7490
7491 Adding $xxx to the flags
7492 passed to $ld so that the perl executable will find the 
7493 installed shared $libperl.
7494
7495 EOM
7496                         ;;
7497                 esac
7498                 ;;
7499         esac
7500 fi
7501 # Fix ccdlflags in AIX for building external extensions.
7502 # (For building Perl itself bare -bE:perl.exp is needed,
7503 #  Makefile.SH takes care of this.)
7504 case "$osname" in
7505 aix) ccdlflags="$ccdlflags -bE:$installarchlib/CORE/perl.exp" ;;
7506 esac
7507 # Respect a hint or command-line value.
7508 case "$shrpenv" in
7509 '') shrpenv="$tmp_shrpenv" ;;
7510 esac
7511 case "$ldlibpthname" in
7512 '')     ldlibpthname=LD_LIBRARY_PATH ;;
7513 none)   ldlibpthname='' ;;
7514 esac
7515
7516 : determine where manual pages are on this system
7517 echo " "
7518 case "$sysman" in
7519 '') 
7520         syspath='/usr/man/man1 /usr/man/mann /usr/man/manl /usr/man/local/man1'
7521         syspath="$syspath /usr/man/u_man/man1 /usr/share/man/man1"
7522         syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
7523         syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
7524         syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
7525         sysman=`./loc . /usr/man/man1 $syspath`
7526         ;;
7527 esac
7528 if $test -d "$sysman"; then
7529         echo "System manual is in $sysman." >&4
7530 else
7531         echo "Could not find manual pages in source form." >&4
7532 fi
7533
7534 : determine where manual pages go
7535 set man1dir man1dir none
7536 eval $prefixit
7537 $cat <<EOM
7538
7539 $spackage has manual pages available in source form.
7540 EOM
7541 case "$nroff" in
7542 nroff)
7543         echo "However, you don't have nroff, so they're probably useless to you."
7544         case "$man1dir" in
7545         '') man1dir="none";;
7546         esac;;
7547 esac
7548 echo "If you don't want the manual sources installed, answer 'none'."
7549 case "$man1dir" in
7550 ' ') dflt=none
7551         ;;
7552 '')
7553         lookpath="$prefixexp/man/man1 $prefixexp/man/l_man/man1"
7554         lookpath="$lookpath $prefixexp/man/p_man/man1"
7555         lookpath="$lookpath $prefixexp/man/u_man/man1"
7556         lookpath="$lookpath $prefixexp/man/man.1"
7557         case "$sysman" in
7558         */?_man*)       dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
7559         *)      dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
7560         esac
7561         set dflt
7562         eval $prefixup
7563         ;;
7564 *)  dflt="$man1dir"
7565         ;;
7566 esac
7567 echo " "
7568 fn=dn+~
7569 rp="Where do the main $spackage manual pages (source) go?"
7570 . ./getfile
7571 if $test "X$man1direxp" != "X$ansexp"; then
7572         installman1dir=''
7573 fi
7574 man1dir="$ans"
7575 man1direxp="$ansexp"
7576 case "$man1dir" in
7577 '')     man1dir=' '
7578         installman1dir='';;
7579 esac
7580
7581 : Change installation prefix, if necessary.
7582 if $test X"$prefix" != X"$installprefix"; then
7583         installman1dir=`echo $man1direxp | $sed "s#^$prefix#$installprefix#"`
7584 else
7585         installman1dir="$man1direxp"
7586 fi
7587
7588 : What suffix to use on installed man pages
7589
7590 case "$man1dir" in
7591 ' ')
7592         man1ext='0'
7593         ;;
7594 *)
7595         rp="What suffix should be used for the main $spackage man pages?"
7596         case "$man1ext" in
7597         '')     case "$man1dir" in
7598                 *1)  dflt=1 ;;
7599                 *1p) dflt=1p ;;
7600                 *1pm) dflt=1pm ;;
7601                 *l) dflt=l;;
7602                 *n) dflt=n;;
7603                 *o) dflt=o;;
7604                 *p) dflt=p;;
7605                 *C) dflt=C;;
7606                 *L) dflt=L;;
7607                 *L1) dflt=L1;;
7608                 *) dflt=1;;
7609                 esac
7610                 ;;
7611         *)      dflt="$man1ext";;
7612         esac
7613         . ./myread
7614         man1ext="$ans"
7615         ;;
7616 esac
7617
7618 : see if we can have long filenames
7619 echo " "
7620 first=123456789abcdef
7621 $rm -f $first
7622 if (echo hi >$first) 2>/dev/null; then
7623         if $test -f 123456789abcde; then
7624                 echo 'You cannot have filenames longer than 14 characters.  Sigh.' >&4
7625                 val="$undef"
7626         else
7627                 echo 'You can have filenames longer than 14 characters.'>&4
7628                 val="$define"
7629         fi
7630 else
7631         $cat <<'EOM'
7632 You can't have filenames longer than 14 chars.
7633 You can't even think about them!
7634 EOM
7635         val="$undef"
7636 fi 
7637 set d_flexfnam
7638 eval $setvar
7639 $rm -rf 123456789abcde*
7640
7641 : determine where library module manual pages go
7642 set man3dir man3dir none
7643 eval $prefixit
7644 $cat <<EOM
7645
7646 $spackage has manual pages for many of the library modules.
7647 EOM
7648
7649 case "$nroff" in
7650 nroff)
7651         $cat <<'EOM'
7652 However, you don't have nroff, so they're probably useless to you.
7653 EOM
7654         case "$man3dir" in
7655         '') man3dir="none";;
7656         esac;;
7657 esac
7658
7659 case "$d_flexfnam" in
7660 undef)
7661         $cat <<'EOM'
7662 However, your system can't handle the long file names like File::Basename.3. 
7663 EOM
7664         case "$man3dir" in
7665         '') man3dir="none";;
7666         esac;;
7667 esac
7668
7669 echo "If you don't want the manual sources installed, answer 'none'."
7670 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
7671 case "$man3dir" in
7672 '')     dflt=`echo "$man1dir" | $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'`
7673         if $test -d "$privlib/man/man3"; then
7674                 cat <<EOM >&4
7675
7676 WARNING:  Previous versions of perl installed man3 pages into
7677 $privlib/man/man3.  This version will suggest a 
7678 new default of $dflt.  
7679 EOM
7680                 tdflt=$dflt
7681                 dflt='n'
7682                 rp='Do you wish to preserve the old behavior?(y/n)'
7683                 . ./myread
7684                 case "$ans" in
7685                 y*) dflt="$privlib/man/man3" ;;
7686                 *)  dflt=$tdflt ;;
7687                 esac
7688     fi
7689         ;;
7690 *)      dflt="$man3dir" ;;
7691 esac
7692 case "$dflt" in
7693 ' ') dflt=none ;;
7694 esac
7695 echo " "
7696 fn=dn+~
7697 rp="Where do the $package library man pages (source) go?"
7698 . ./getfile
7699 man3dir="$ans"
7700 man3direxp="$ansexp"
7701 case "$man3dir" in
7702 '')     man3dir=' '
7703         installman3dir='';;
7704 esac
7705
7706 : Change installation prefix, if necessary.
7707 if $test X"$prefix" != X"$installprefix"; then
7708         installman3dir=`echo $man3direxp | $sed "s#^$prefix#$installprefix#"`
7709 else
7710         installman3dir="$man3direxp"
7711 fi
7712
7713 : What suffix to use on installed man pages
7714 case "$man3dir" in
7715 ' ')
7716         man3ext='0'
7717         ;;
7718 *)
7719         rp="What suffix should be used for the $package library man pages?"
7720         case "$man3ext" in
7721         '')     case "$man3dir" in
7722                 *3)  dflt=3 ;;
7723                 *3p) dflt=3p ;;
7724                 *3pm) dflt=3pm ;;
7725                 *l) dflt=l;;
7726                 *n) dflt=n;;
7727                 *o) dflt=o;;
7728                 *p) dflt=p;;
7729                 *C) dflt=C;;
7730                 *L) dflt=L;;
7731                 *L3) dflt=L3;;
7732                 *) dflt=3;;
7733                 esac
7734                 ;;
7735         *)      dflt="$man3ext";;
7736         esac
7737         . ./myread
7738         man3ext="$ans"
7739         ;;
7740 esac
7741
7742 : see if we have to deal with yellow pages, now NIS.
7743 if $test -d /usr/etc/yp || $test -d /etc/yp; then
7744         if $test -f /usr/etc/nibindd; then
7745                 echo " "
7746                 echo "I'm fairly confident you're on a NeXT."
7747                 echo " "
7748                 rp='Do you get the hosts file via NetInfo?'
7749                 dflt=y
7750                 case "$hostcat" in
7751                 nidump*) ;;
7752                 '') ;;
7753                 *) dflt=n;;
7754                 esac
7755                 . ./myread
7756                 case "$ans" in
7757                 y*) hostcat='nidump hosts .';;
7758                 *)      case "$hostcat" in
7759                         nidump*) hostcat='';;
7760                         esac
7761                         ;;
7762                 esac
7763         fi
7764         case "$hostcat" in
7765         nidump*) ;;
7766         *)
7767                 case "$hostcat" in
7768                 *ypcat*) dflt=y;;
7769                 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
7770                                 dflt=y
7771                         else
7772                                 dflt=n
7773                         fi;;
7774                 *) dflt=n;;
7775                 esac
7776                 echo " "
7777                 rp='Are you getting the hosts file via yellow pages?'
7778                 . ./myread
7779                 case "$ans" in
7780                 y*) hostcat='ypcat hosts';;
7781                 *) hostcat='cat /etc/hosts';;
7782                 esac
7783                 ;;
7784         esac
7785 fi
7786 case "$hostcat" in
7787 '') test -f /etc/hosts && hostcat='cat /etc/hosts';;
7788 esac
7789 case "$groupcat" in
7790 '') test -f /etc/group && groupcat='cat /etc/group';;
7791 esac
7792 case "$passcat" in
7793 '') test -f /etc/passwd && passcat='cat /etc/passwd';;
7794 esac
7795
7796 : now get the host name
7797 echo " "
7798 echo "Figuring out host name..." >&4
7799 case "$myhostname" in
7800 '') cont=true
7801         echo 'Maybe "hostname" will work...'
7802         if tans=`sh -c hostname 2>&1` ; then
7803                 myhostname=$tans
7804                 phostname=hostname
7805                 cont=''
7806         fi
7807         ;;
7808 *) cont='';;
7809 esac
7810 if $test "$cont"; then
7811         if ./xenix; then
7812                 echo 'Oh, dear.  Maybe "/etc/systemid" is the key...'
7813                 if tans=`cat /etc/systemid 2>&1` ; then
7814                         myhostname=$tans
7815                         phostname='cat /etc/systemid'
7816                         echo "Whadyaknow.  Xenix always was a bit strange..."
7817                         cont=''
7818                 fi
7819         elif $test -r /etc/systemid; then
7820                 echo "(What is a non-Xenix system doing with /etc/systemid?)"
7821         fi
7822 fi
7823 if $test "$cont"; then
7824         echo 'No, maybe "uuname -l" will work...'
7825         if tans=`sh -c 'uuname -l' 2>&1` ; then
7826                 myhostname=$tans
7827                 phostname='uuname -l'
7828         else
7829                 echo 'Strange.  Maybe "uname -n" will work...'
7830                 if tans=`sh -c 'uname -n' 2>&1` ; then
7831                         myhostname=$tans
7832                         phostname='uname -n'
7833                 else
7834                         echo 'Oh well, maybe I can mine it out of whoami.h...'
7835                         if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
7836                                 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
7837                                 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
7838                         else
7839                                 case "$myhostname" in
7840                                 '') echo "Does this machine have an identity crisis or something?"
7841                                         phostname='';;
7842                                 *)
7843                                         echo "Well, you said $myhostname before..."
7844                                         phostname='echo $myhostname';;
7845                                 esac
7846                         fi
7847                 fi
7848         fi
7849 fi
7850 : you do not want to know about this
7851 set $myhostname
7852 myhostname=$1
7853
7854 : verify guess
7855 if $test "$myhostname" ; then
7856         dflt=y
7857         rp='Your host name appears to be "'$myhostname'".'" Right?"
7858         . ./myread
7859         case "$ans" in
7860         y*) ;;
7861         *) myhostname='';;
7862         esac
7863 fi
7864
7865 : bad guess or no guess
7866 while $test "X$myhostname" = X ; do
7867         dflt=''
7868         rp="Please type the (one word) name of your host:"
7869         . ./myread
7870         myhostname="$ans"
7871 done
7872
7873 : translate upper to lower if necessary
7874 case "$myhostname" in
7875 *[A-Z]*)
7876         echo "(Normalizing case in your host name)"
7877         myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
7878         ;;
7879 esac
7880
7881 case "$myhostname" in
7882 *.*)
7883         dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
7884         myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
7885         echo "(Trimming domain name from host name--host name is now $myhostname)"
7886         ;;
7887 *) case "$mydomain" in
7888         '')
7889                 {
7890                         test "X$hostcat" = "Xypcat hosts" &&
7891                         ypmatch "$myhostname" hosts 2>/dev/null |\
7892                                 $sed -e 's/[     ]*#.*//; s/$/ /' > hosts && \
7893                         $test -s hosts
7894                 } || {
7895                         test "X$hostcat" != "X" &&
7896                         $hostcat | $sed -n -e "s/[       ]*#.*//; s/\$/ /
7897                                         /[       ]$myhostname[  . ]/p" > hosts
7898                 }
7899                 tmp_re="[       . ]"
7900                 if $test -f hosts; then
7901                         $test x`$awk "/[0-9].*[  ]$myhostname$tmp_re/ { sum++ }
7902                              END { print sum }" hosts` = x1 || tmp_re="[         ]"
7903                         dflt=.`$awk "/[0-9].*[   ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
7904                                 hosts | $sort | $uniq | \
7905                                 $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
7906                         case `$echo X$dflt` in
7907                         X*\ *)  echo "(Several hosts in the database matched hostname)"
7908                                 dflt=.
7909                                 ;;
7910                         X.) echo "(You do not have fully-qualified names in the hosts database)"
7911                                 ;;
7912                         esac
7913                 else
7914                         echo "(I cannot locate a hosts database anywhere)"
7915                         dflt=.
7916                 fi
7917                 case "$dflt" in
7918                 .)
7919                         tans=`./loc resolv.conf X /etc /usr/etc`
7920                         if $test -f "$tans"; then
7921                                 echo "(Attempting domain name extraction from $tans)"
7922                                 dflt=.`$sed -n -e 's/   / /g' \
7923                                   -e 's/^search  *\([^ ]*\).*/\1/p' $tans \
7924                                   | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
7925                                 case "$dflt" in
7926                                 .) dflt=.`$sed -n -e 's/        / /g' \
7927                                      -e 's/^domain  *\([^ ]*\).*/\1/p' $tans \
7928                                      | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
7929                                         ;;
7930                                 esac
7931                         fi
7932                         ;;
7933                 esac
7934                 case "$dflt" in
7935                 .) echo "(No help from resolv.conf either -- attempting clever guess)"
7936                         dflt=.`sh -c domainname 2>/dev/null`
7937                         case "$dflt" in
7938                         '') dflt='.';;
7939                         .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
7940                         esac
7941                         ;;
7942                 esac
7943                 case "$dflt$osname" in
7944                 .os390) echo "(Attempting domain name extraction from //'SYS1.TCPPARMS(TCPDATA)')"
7945                         dflt=.`awk '/^DOMAINORIGIN/ {print $2}' "//'SYS1.TCPPARMS(TCPDATA)'" 2>/dev/null`
7946                         ;;
7947                 esac
7948                 case "$dflt" in
7949                 .) echo "(Lost all hope -- silly guess then)"
7950                         dflt='.uucp'
7951                         ;;
7952                 esac
7953                 $rm -f hosts
7954                 ;;
7955         *) dflt="$mydomain";;
7956         esac;;
7957 esac
7958 echo " "
7959 rp="What is your domain name?"
7960 . ./myread
7961 tans="$ans"
7962 case "$ans" in
7963 '') ;;
7964 .*) ;;
7965 *) tans=".$tans";;
7966 esac
7967 mydomain="$tans"
7968
7969 : translate upper to lower if necessary
7970 case "$mydomain" in
7971 *[A-Z]*)
7972         echo "(Normalizing case in your domain name)"
7973         mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
7974         ;;
7975 esac
7976
7977 : a little sanity check here
7978 case "$phostname" in
7979 '') ;;
7980 *)
7981         case `$phostname | ./tr '[A-Z]' '[a-z]'` in
7982         $myhostname$mydomain|$myhostname) ;;
7983         *)
7984                 case "$phostname" in
7985                 sed*)
7986                         echo "(That doesn't agree with your whoami.h file, by the way.)"
7987                         ;;
7988                 *)
7989                         echo "(That doesn't agree with your $phostname command, by the way.)"
7990                         ;;
7991                 esac
7992         ;;
7993         esac
7994         ;;
7995 esac
7996
7997 $cat <<EOM
7998
7999 I need to get your e-mail address in Internet format if possible, i.e.
8000 something like user@host.domain. Please answer accurately since I have
8001 no easy means to double check it. The default value provided below
8002 is most probably close to reality but may not be valid from outside
8003 your organization...
8004
8005 EOM
8006 cont=x
8007 while test "$cont"; do
8008         case "$cf_email" in
8009         '') dflt="$cf_by@$myhostname$mydomain";;
8010         *) dflt="$cf_email";;
8011         esac
8012         rp='What is your e-mail address?'
8013         . ./myread
8014         cf_email="$ans"
8015         case "$cf_email" in
8016         *@*.*) cont='' ;;
8017         *)
8018                 rp='Address does not look like an Internet one.  Use it anyway?'
8019                 case "$fastread" in
8020                 yes) dflt=y ;;
8021                 *) dflt=n ;;
8022                 esac
8023                 . ./myread
8024                 case "$ans" in
8025                 y*) cont='' ;;
8026                 *) echo " " ;;
8027                 esac
8028                 ;;
8029         esac
8030 done
8031
8032 $cat <<EOM
8033
8034 If you or somebody else will be maintaining perl at your site, please
8035 fill in the correct e-mail address here so that they may be contacted
8036 if necessary. Currently, the "perlbug" program included with perl
8037 will send mail to this address in addition to perlbug@perl.org. You may
8038 enter "none" for no administrator.
8039
8040 EOM
8041 case "$perladmin" in
8042 '') dflt="$cf_email";;
8043 *) dflt="$perladmin";;
8044 esac
8045 rp='Perl administrator e-mail address'
8046 . ./myread
8047 perladmin="$ans"
8048
8049 : determine whether to only install version-specific parts.
8050 echo " "
8051 $cat <<EOM
8052 Do you want to install only the version-specific parts of the perl
8053 distribution?  Usually you do *not* want to do this.
8054 EOM
8055 case "$versiononly" in
8056 "$define"|[Yy]*|true) dflt='y' ;;
8057 *) dflt='n';
8058 esac
8059 rp="Do you want to install only the version-specific parts of perl?"
8060 . ./myread
8061 case "$ans" in
8062 [yY]*)  val="$define";;
8063 *)      val="$undef" ;;
8064 esac
8065 set versiononly
8066 eval $setvar
8067
8068 : figure out how to guarantee perl startup
8069 case "$startperl" in
8070 '')
8071         case "$sharpbang" in
8072         *!)
8073                 $cat <<EOH
8074
8075 I can use the #! construct to start perl on your system. This will
8076 make startup of perl scripts faster, but may cause problems if you
8077 want to share those scripts and perl is not in a standard place
8078 ($binexp/perl) on all your platforms. The alternative is to force
8079 a shell by starting the script with a single ':' character.
8080
8081 EOH
8082                 case "$versiononly" in
8083                 "$define")      dflt="$binexp/perl$version";;  
8084                 *)              dflt="$binexp/perl";;
8085                 esac
8086                 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
8087                 . ./myread
8088                 case "$ans" in
8089                 none)   startperl=": # use perl";;
8090                 *)      startperl="#!$ans"
8091                         if $test 30 -lt `echo "$ans" | wc -c`; then
8092                                 $cat >&4 <<EOM
8093
8094 WARNING:  Some systems limit the #! command to 32 characters.
8095 If you experience difficulty running Perl scripts with #!, try
8096 installing Perl in a directory with a shorter pathname.
8097
8098 EOM
8099                         fi ;;
8100                 esac
8101                 ;;
8102         *) startperl=": # use perl"
8103                 ;;
8104         esac
8105         ;;
8106 esac
8107 echo "I'll use $startperl to start perl scripts."
8108
8109 : figure best path for perl in scripts
8110 case "$perlpath" in
8111 '')
8112         perlpath="$binexp/perl"
8113         case "$startperl" in
8114         *!*) ;;
8115         *)
8116                 $cat <<EOH
8117
8118 I will use the "eval 'exec'" idiom to start Perl on your system.
8119 I can use the full path of your Perl binary for this purpose, but
8120 doing so may cause problems if you want to share those scripts and
8121 Perl is not always in a standard place ($binexp/perl).
8122
8123 EOH
8124                 dflt="$binexp/perl"
8125                 rp="What path shall I use in \"eval 'exec'\"?"
8126                 . ./myread
8127                 perlpath="$ans"
8128                 ;;
8129         esac
8130         ;;
8131 esac
8132 case "$startperl" in
8133 *!*)    ;;
8134 *)      echo "I'll use $perlpath in \"eval 'exec'\"" ;;
8135 esac
8136
8137 : determine where public executable scripts go
8138 set scriptdir scriptdir
8139 eval $prefixit
8140 case "$scriptdir" in
8141 '')
8142         dflt="$bin"
8143         : guess some guesses
8144         $test -d /usr/share/scripts && dflt=/usr/share/scripts
8145         $test -d /usr/share/bin     && dflt=/usr/share/bin
8146         $test -d /usr/local/script  && dflt=/usr/local/script
8147         $test -d /usr/local/scripts && dflt=/usr/local/scripts
8148         $test -d $prefixexp/script  && dflt=$prefixexp/script
8149         set dflt
8150         eval $prefixup
8151         ;;
8152 *)  dflt="$scriptdir"
8153         ;;
8154 esac
8155 $cat <<EOM
8156  
8157 Some installations have a separate directory just for executable scripts so
8158 that they can mount it across multiple architectures but keep the scripts in
8159 one spot.  You might, for example, have a subdirectory of /usr/share for this.
8160 Or you might just lump your scripts in with all your other executables.
8161  
8162 EOM
8163 fn=d~
8164 rp='Where do you keep publicly executable scripts?'
8165 . ./getfile
8166 if $test "X$ansexp" != "X$scriptdirexp"; then
8167         installscript=''
8168 fi
8169 scriptdir="$ans"
8170 scriptdirexp="$ansexp"
8171 : Change installation prefix, if necessary.
8172 if $test X"$prefix" != X"$installprefix"; then
8173         installscript=`echo $scriptdirexp | sed "s#^$prefix#$installprefix#"`
8174 else
8175         installscript="$scriptdirexp"
8176 fi
8177
8178 : determine where add-on public executables go
8179 case "$sitebin" in
8180 '')     dflt=$siteprefix/bin ;;
8181 *)      dflt=$sitebin ;;
8182 esac
8183 fn=d~
8184 rp='Pathname where the add-on public executables should be installed?'
8185 . ./getfile
8186 sitebin="$ans"
8187 sitebinexp="$ansexp"
8188 : Change installation prefix, if necessary.
8189 if $test X"$prefix" != X"$installprefix"; then
8190         installsitebin=`echo $sitebinexp | sed "s#^$prefix#$installprefix#"`
8191 else
8192         installsitebin="$sitebinexp"
8193 fi
8194
8195 case "$vendorprefix" in
8196 '')     d_vendorbin="$undef"
8197         vendorbin=''
8198         vendorbinexp=''
8199         ;;
8200 *)      d_vendorbin="$define"
8201         : determine where vendor-supplied executables go.
8202         case "$vendorbin" in
8203         '') dflt=$vendorprefix/bin ;;
8204         *)      dflt="$vendorbin" ;;
8205         esac
8206         fn=d~+
8207         rp='Pathname for the vendor-supplied executables directory?'
8208         . ./getfile
8209         vendorbin="$ans"
8210         vendorbinexp="$ansexp"
8211         ;;
8212 esac
8213 : Change installation prefix, if necessary.
8214 if $test X"$prefix" != X"$installprefix"; then
8215         installvendorbin=`echo $vendorbinexp | $sed "s#^$prefix#$installprefix#"`
8216 else
8217         installvendorbin="$vendorbinexp"
8218 fi
8219
8220 : see if qgcvt exists
8221 set qgcvt d_qgcvt
8222 eval $inlibc
8223
8224 echo " "
8225
8226 if $test X"$d_longdbl" = X"$define"; then
8227
8228 echo "Checking how to print long doubles..." >&4
8229
8230 if $test X"$sPRIfldbl" = X -a X"$doublesize" = X"$longdblsize"; then
8231         $cat >try.c <<'EOCP'
8232 #include <sys/types.h>
8233 #include <stdio.h>
8234 int main() {
8235   double d = 123.456;
8236   printf("%.3f\n", d);
8237 }
8238 EOCP
8239         set try
8240         if eval $compile; then
8241                 yyy=`$run ./try`
8242                 case "$yyy" in
8243                 123.456)
8244                         sPRIfldbl='"f"'; sPRIgldbl='"g"'; sPRIeldbl='"e"';
8245                         sPRIFUldbl='"F"'; sPRIGUldbl='"G"'; sPRIEUldbl='"E"';
8246                         echo "We will use %f."
8247                         ;;
8248                 esac
8249         fi
8250 fi
8251
8252 if $test X"$sPRIfldbl" = X; then
8253         $cat >try.c <<'EOCP'
8254 #include <sys/types.h>
8255 #include <stdio.h>
8256 int main() {
8257   long double d = 123.456;
8258   printf("%.3Lf\n", d);
8259 }
8260 EOCP
8261         set try
8262         if eval $compile; then
8263                 yyy=`$run ./try`
8264                 case "$yyy" in
8265                 123.456)
8266                         sPRIfldbl='"Lf"'; sPRIgldbl='"Lg"'; sPRIeldbl='"Le"';
8267                         sPRIFUldbl='"LF"'; sPRIGUldbl='"LG"'; sPRIEUldbl='"LE"';
8268                         echo "We will use %Lf."
8269                         ;;
8270                 esac
8271         fi
8272 fi
8273
8274 if $test X"$sPRIfldbl" = X; then
8275         $cat >try.c <<'EOCP'
8276 #include <sys/types.h>
8277 #include <stdio.h>
8278 int main() {
8279   long double d = 123.456;
8280   printf("%.3llf\n", d);
8281 }
8282 EOCP
8283         set try
8284         if eval $compile; then
8285                 yyy=`$run ./try`
8286                 case "$yyy" in
8287                 123.456)
8288                         sPRIfldbl='"llf"'; sPRIgldbl='"llg"'; sPRIeldbl='"lle"';
8289                         sPRIFUldbl='"llF"'; sPRIGUldbl='"llG"'; sPRIEUldbl='"llE"';
8290                         echo "We will use %llf."
8291                         ;;
8292                 esac
8293         fi
8294 fi
8295
8296 if $test X"$sPRIfldbl" = X; then
8297         $cat >try.c <<'EOCP'
8298 #include <sys/types.h>
8299 #include <stdio.h>
8300 int main() {
8301   long double d = 123.456;
8302   printf("%.3lf\n", d);
8303 }
8304 EOCP
8305         set try
8306         if eval $compile; then
8307                 yyy=`$run ./try`
8308                 case "$yyy" in
8309                 123.456)
8310                         sPRIfldbl='"lf"'; sPRIgldbl='"lg"'; sPRIeldbl='"le"';
8311                         sPRIFUldbl='"lF"'; sPRIGUldbl='"lG"'; sPRIEUldbl='"lE"';
8312                         echo "We will use %lf."
8313                         ;;
8314                 esac
8315         fi
8316 fi
8317
8318 if $test X"$sPRIfldbl" = X; then
8319         echo "Cannot figure out how to print long doubles." >&4
8320 else
8321         sSCNfldbl=$sPRIfldbl    # expect consistency
8322 fi
8323
8324 $rm -f try try.*
8325
8326 fi # d_longdbl
8327
8328 case "$sPRIfldbl" in
8329 '')     d_PRIfldbl="$undef"; d_PRIgldbl="$undef"; d_PRIeldbl="$undef"; 
8330         d_PRIFUldbl="$undef"; d_PRIGUldbl="$undef"; d_PRIEUldbl="$undef"; 
8331         d_SCNfldbl="$undef";
8332         ;;
8333 *)      d_PRIfldbl="$define"; d_PRIgldbl="$define"; d_PRIeldbl="$define"; 
8334         d_PRIFUldbl="$define"; d_PRIGUldbl="$define"; d_PRIEUldbl="$define"; 
8335         d_SCNfldbl="$define";
8336         ;;
8337 esac
8338
8339 : Check how to convert floats to strings.
8340 echo " "
8341 echo "Checking for an efficient way to convert floats to strings."
8342 echo " " > try.c
8343 case "$uselongdouble" in
8344 "$define") echo "#define USE_LONG_DOUBLE" >>try.c ;;
8345 esac
8346 case "$d_longdbl" in
8347 "$define") echo "#define HAS_LONG_DOUBLE" >>try.c ;;
8348 esac
8349 case "$d_PRIgldbl" in
8350 "$define") echo "#define HAS_PRIgldbl"    >>try.c ;;
8351 esac
8352 $cat >>try.c <<EOP
8353 #ifdef TRY_gconvert
8354 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
8355 char *myname = "gconvert";
8356 #endif
8357 #ifdef TRY_gcvt
8358 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
8359 char *myname = "gcvt";
8360 #endif
8361 #ifdef TRY_qgcvt
8362 #define Gconvert(x,n,t,b) qgcvt((x),(n),(b))
8363 char *myname = "qgcvt";
8364 #define DOUBLETYPE long double
8365 #endif
8366 #ifdef TRY_sprintf
8367 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE) && defined(HAS_PRIgldbl)
8368 #define Gconvert(x,n,t,b) sprintf((b),"%.*"$sPRIgldbl,(n),(x))
8369 #else
8370 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
8371 #endif
8372 char *myname = "sprintf";
8373 #endif
8374
8375 #ifndef DOUBLETYPE
8376 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
8377 #define DOUBLETYPE long double
8378 #else
8379 #define DOUBLETYPE double
8380 #endif
8381 #endif
8382
8383 #include <stdio.h>
8384
8385 #define I_STDLIB $i_stdlib
8386 #ifdef I_STDLIB
8387 #include <stdlib.h>
8388 #endif
8389
8390 int
8391 checkit(expect, got)
8392 char *expect;
8393 char *got;
8394 {
8395     if (strcmp(expect, got)) {
8396                 printf("%s oddity:  Expected %s, got %s\n",
8397                         myname, expect, got);
8398                 exit(1);
8399         }
8400 }
8401
8402 int main()
8403
8404         char buf[64]; 
8405         buf[63] = '\0';
8406
8407         /* This must be 1st test on (which?) platform */
8408         /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
8409         Gconvert((DOUBLETYPE)0.1, 8, 0, buf);
8410         checkit("0.1", buf);
8411
8412         Gconvert((DOUBLETYPE)1.0, 8, 0, buf); 
8413         checkit("1", buf);
8414
8415         Gconvert((DOUBLETYPE)1.1, 8, 0, buf); 
8416         checkit("1.1", buf);
8417
8418         Gconvert((DOUBLETYPE)1.01, 8, 0, buf); 
8419         checkit("1.01", buf);
8420
8421         Gconvert((DOUBLETYPE)1.001, 8, 0, buf); 
8422         checkit("1.001", buf);
8423
8424         Gconvert((DOUBLETYPE)1.0001, 8, 0, buf); 
8425         checkit("1.0001", buf);
8426
8427         Gconvert((DOUBLETYPE)1.00001, 8, 0, buf); 
8428         checkit("1.00001", buf);
8429
8430         Gconvert((DOUBLETYPE)1.000001, 8, 0, buf); 
8431         checkit("1.000001", buf);
8432
8433         Gconvert((DOUBLETYPE)0.0, 8, 0, buf); 
8434         checkit("0", buf);
8435
8436         Gconvert((DOUBLETYPE)-1.0, 8, 0, buf); 
8437         checkit("-1", buf);
8438
8439         /* Some Linux gcvt's give 1.e+5 here. */
8440         Gconvert((DOUBLETYPE)100000.0, 8, 0, buf); 
8441         checkit("100000", buf);
8442         
8443         /* Some Linux gcvt's give -1.e+5 here. */
8444         Gconvert((DOUBLETYPE)-100000.0, 8, 0, buf); 
8445         checkit("-100000", buf);
8446
8447         Gconvert((DOUBLETYPE)123.456, 8, 0, buf); 
8448         checkit("123.456", buf);
8449
8450         /* Testing of 1e+129 in bigintpm.t must not get extra '.' here. */
8451         Gconvert((DOUBLETYPE)1e30, 8, 0, buf);
8452         if (strlen(buf) > 5)
8453             checkit("1e+030", buf); /* for Microsoft */
8454         else
8455             checkit("1e+30", buf);
8456
8457         exit(0);
8458 }
8459 EOP
8460 case "$d_Gconvert" in
8461 gconvert*) xxx_list='gconvert gcvt sprintf' ;;
8462 gcvt*) xxx_list='gcvt gconvert sprintf' ;;
8463 sprintf*) xxx_list='sprintf gconvert gcvt' ;;
8464 *) xxx_list='gconvert gcvt sprintf' ;;
8465 esac
8466
8467 case "$d_longdbl$uselongdouble$d_PRIgldbl" in
8468 "$define$define$define")
8469     # for long doubles prefer first qgcvt, then sprintf
8470     xxx_list="`echo $xxx_list|sed s/sprintf//`" 
8471     xxx_list="sprintf $xxx_list"
8472     case "$d_qgcvt" in
8473     "$define") xxx_list="qgcvt $xxx_list" ;;
8474     esac
8475     ;;
8476 esac
8477
8478 for xxx_convert in $xxx_list; do
8479         echo "Trying $xxx_convert..."
8480         $rm -f try try$_o
8481         set try -DTRY_$xxx_convert
8482         if eval $compile; then
8483                 echo "$xxx_convert() found." >&4
8484                 if $run ./try; then
8485                         echo "I'll use $xxx_convert to convert floats into a string." >&4
8486                         break;
8487                 else
8488                         echo "...But $xxx_convert didn't work as I expected."
8489                 fi
8490         else
8491                 echo "$xxx_convert NOT found." >&4
8492         fi
8493 done
8494         
8495 case "$xxx_convert" in
8496 gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
8497 gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
8498 qgcvt) d_Gconvert='qgcvt((x),(n),(b))' ;;
8499 *) case "$uselongdouble$d_longdbl$d_PRIgldbl" in
8500    "$define$define$define")
8501       d_Gconvert="sprintf((b),\"%.*\"$sPRIgldbl,(n),(x))" ;;
8502    *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
8503    esac
8504    ;;  
8505 esac
8506
8507 : see if _fwalk exists
8508 set fwalk d__fwalk
8509 eval $inlibc
8510
8511 : Initialize h_fcntl
8512 h_fcntl=false
8513
8514 : Initialize h_sysfile
8515 h_sysfile=false
8516
8517 : access call always available on UNIX
8518 set access d_access
8519 eval $inlibc
8520
8521 : locate the flags for 'access()'
8522 case "$d_access" in
8523 "$define")
8524         echo " "
8525         $cat >access.c <<'EOCP'
8526 #include <sys/types.h>
8527 #ifdef I_FCNTL
8528 #include <fcntl.h>
8529 #endif
8530 #ifdef I_SYS_FILE
8531 #include <sys/file.h>
8532 #endif
8533 #ifdef I_UNISTD
8534 #include <unistd.h>
8535 #endif
8536 int main() {
8537         exit(R_OK);
8538 }
8539 EOCP
8540         : check sys/file.h first, no particular reason here
8541         if $test `./findhdr sys/file.h` && \
8542                 $cc -o access $cppflags -DI_SYS_FILE access.c >/dev/null 2>&1 ; then
8543                 h_sysfile=true;
8544                 echo "<sys/file.h> defines the *_OK access constants." >&4
8545         elif $test `./findhdr fcntl.h` && \
8546                 $cc -o access $cppflags -DI_FCNTL access.c >/dev/null 2>&1 ; then
8547                 h_fcntl=true;
8548                 echo "<fcntl.h> defines the *_OK access constants." >&4
8549         elif $test `./findhdr unistd.h` && \
8550                 $cc -o access $cppflags -DI_UNISTD access.c >/dev/null 2>&1 ; then
8551                 echo "<unistd.h> defines the *_OK access constants." >&4
8552         else
8553                 echo "I can't find the four *_OK access constants--I'll use mine." >&4
8554         fi
8555         ;;
8556 esac
8557 $rm -f access*
8558
8559 : see if accessx exists
8560 set accessx d_accessx
8561 eval $inlibc
8562
8563 : see if alarm exists
8564 set alarm d_alarm
8565 eval $inlibc
8566
8567 : see if atolf exists
8568 set atolf d_atolf
8569 eval $inlibc
8570
8571 : see if atoll exists
8572 set atoll d_atoll
8573 eval $inlibc
8574
8575 : Look for GNU-cc style attribute checking
8576 echo " "
8577 echo "Checking whether your compiler can handle __attribute__ ..." >&4
8578 $cat >attrib.c <<'EOCP'
8579 #include <stdio.h>
8580 void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn));
8581 EOCP
8582 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
8583         if $contains 'warning' attrib.out >/dev/null 2>&1; then
8584                 echo "Your C compiler doesn't fully support __attribute__."
8585                 val="$undef"
8586         else
8587                 echo "Your C compiler supports __attribute__."
8588                 val="$define"
8589         fi
8590 else
8591         echo "Your C compiler doesn't seem to understand __attribute__ at all."
8592         val="$undef"
8593 fi
8594 set d_attribut
8595 eval $setvar
8596 $rm -f attrib*
8597
8598 : see if bcmp exists
8599 set bcmp d_bcmp
8600 eval $inlibc
8601
8602 : see if bcopy exists
8603 set bcopy d_bcopy
8604 eval $inlibc
8605
8606 : see if this is a unistd.h system
8607 set unistd.h i_unistd
8608 eval $inhdr
8609
8610 : see if getpgrp exists
8611 set getpgrp d_getpgrp
8612 eval $inlibc
8613
8614 case "$d_getpgrp" in
8615 "$define")
8616         echo " "
8617         echo "Checking to see which flavor of getpgrp is in use..."
8618         $cat >try.c <<EOP
8619 #$i_unistd I_UNISTD
8620 #include <sys/types.h>
8621 #ifdef I_UNISTD
8622 #  include <unistd.h>
8623 #endif
8624 int main()
8625 {
8626         if (getuid() == 0) {
8627                 printf("(I see you are running Configure as super-user...)\n");
8628                 setuid(1);
8629         }
8630 #ifdef TRY_BSD_PGRP
8631         if (getpgrp(1) == 0)
8632                 exit(0);
8633 #else
8634         if (getpgrp() > 0)
8635                 exit(0);
8636 #endif
8637         exit(1);
8638 }
8639 EOP
8640         if $cc -o try -DTRY_BSD_PGRP $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
8641                 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
8642                 val="$define"
8643         elif $cc -o try $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
8644                 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
8645                 val="$undef"
8646         else
8647                 echo "I can't seem to compile and run the test program."
8648                 if ./usg; then
8649                         xxx="a USG one, i.e. you use getpgrp()."
8650                 else
8651                         # SVR4 systems can appear rather BSD-ish.
8652                         case "$i_unistd" in
8653                         $undef)
8654                                 xxx="a BSD one, i.e. you use getpgrp(pid)."
8655                                 val="$define"
8656                                 ;;
8657                         $define)
8658                                 xxx="probably a USG one, i.e. you use getpgrp()."
8659                                 val="$undef"
8660                                 ;;
8661                         esac
8662                 fi
8663                 echo "Assuming your getpgrp is $xxx" >&4
8664         fi
8665         ;;
8666 *) val="$undef";;
8667 esac
8668 set d_bsdgetpgrp
8669 eval $setvar
8670 $rm -f try try.*
8671
8672 : see if setpgrp exists
8673 set setpgrp d_setpgrp
8674 eval $inlibc
8675
8676 case "$d_setpgrp" in
8677 "$define")
8678         echo " "
8679         echo "Checking to see which flavor of setpgrp is in use..."
8680         $cat >try.c <<EOP
8681 #$i_unistd I_UNISTD
8682 #include <sys/types.h>
8683 #ifdef I_UNISTD
8684 #  include <unistd.h>
8685 #endif
8686 int main()
8687 {
8688         if (getuid() == 0) {
8689                 printf("(I see you are running Configure as super-user...)\n");
8690                 setuid(1);
8691         }
8692 #ifdef TRY_BSD_PGRP
8693         if (-1 == setpgrp(1, 1))
8694                 exit(0);
8695 #else
8696         if (setpgrp() != -1)
8697                 exit(0);
8698 #endif
8699         exit(1);
8700 }
8701 EOP
8702         if $cc -o try -DTRY_BSD_PGRP $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
8703                 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
8704                 val="$define"
8705         elif $cc -o try $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
8706                 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
8707                 val="$undef"
8708         else
8709                 echo "(I can't seem to compile and run the test program.)"
8710                 if ./usg; then
8711                         xxx="a USG one, i.e. you use setpgrp()."
8712                 else
8713                         # SVR4 systems can appear rather BSD-ish.
8714                         case "$i_unistd" in
8715                         $undef)
8716                                 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
8717                                 val="$define"
8718                                 ;;
8719                         $define)
8720                                 xxx="probably a USG one, i.e. you use setpgrp()."
8721                                 val="$undef"
8722                                 ;;
8723                         esac
8724                 fi
8725                 echo "Assuming your setpgrp is $xxx" >&4
8726         fi
8727         ;;
8728 *) val="$undef";;
8729 esac
8730 set d_bsdsetpgrp
8731 eval $setvar
8732 $rm -f try try.*
8733 : see if bzero exists
8734 set bzero d_bzero
8735 eval $inlibc
8736
8737 : see if signal is declared as pointer to function returning int or void
8738 echo " "
8739 xxx=`./findhdr signal.h`
8740 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
8741 if $contains 'int.*\*[  ]*signal' $$.tmp >/dev/null 2>&1 ; then
8742         echo "You have int (*signal())() instead of void." >&4
8743         val="$undef"
8744 elif $contains 'void.*\*[       ]*signal' $$.tmp >/dev/null 2>&1 ; then
8745         echo "You have void (*signal())()." >&4
8746         val="$define"
8747 elif $contains 'extern[         ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
8748         echo "You have int (*signal())() instead of void." >&4
8749         val="$undef"
8750 elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
8751         echo "You have void (*signal())()." >&4
8752         val="$define"
8753 else
8754         case "$d_voidsig" in
8755         '')
8756         echo "I can't determine whether signal handler returns void or int..." >&4
8757                 dflt=void
8758                 rp="What type does your signal handler return?"
8759                 . ./myread
8760                 case "$ans" in
8761                 v*) val="$define";;
8762                 *) val="$undef";;
8763                 esac;;
8764         "$define")
8765                 echo "As you already told me, signal handler returns void." >&4
8766                 val="$define"
8767                 ;;
8768         *)      echo "As you already told me, signal handler returns int." >&4
8769                 val="$undef"
8770                 ;;
8771         esac
8772 fi
8773 set d_voidsig
8774 eval $setvar
8775 case "$d_voidsig" in
8776 "$define") signal_t="void";;
8777 *) signal_t="int";;
8778 esac
8779 $rm -f $$.tmp
8780
8781 : check for ability to cast large floats to 32-bit ints.
8782 echo " "
8783 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
8784 if $test "$intsize" -ge 4; then
8785         xxx=int
8786 else
8787         xxx=long
8788 fi
8789 $cat >try.c <<EOCP
8790 #include <stdio.h>
8791 #include <sys/types.h>
8792 #include <signal.h>
8793 $signal_t blech(s) int s; { exit(3); }
8794 int main()
8795 {
8796         $xxx i32;
8797         double f, g;
8798         int result = 0;
8799         char str[16];
8800         signal(SIGFPE, blech);
8801
8802         /* Don't let compiler optimize the test away.  Store the number 
8803            in a writable string for gcc to pass to sscanf under HP/UX.
8804         */
8805         sprintf(str, "2147483647");
8806         sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
8807         g = 10 * f;
8808         i32  = ($xxx) g;
8809
8810         /* x86 processors will probably give 0x8000 0000, which is a
8811        sign change.  We don't want that.  We want to mimic SPARC
8812            behavior here, which is to preserve the sign and give
8813            back 0x7fff ffff.
8814         */
8815         if (i32 != ($xxx) f)
8816                 result |= 1;
8817         exit(result);
8818 }
8819 EOCP
8820 set try
8821 if eval $compile_ok; then
8822         $run ./try
8823         yyy=$?
8824 else
8825         echo "(I can't seem to compile the test program--assuming it can't)"
8826         yyy=1
8827 fi
8828 case "$yyy" in
8829 0)      val="$define"
8830         echo "Yup, it can."
8831         ;;
8832 *)      val="$undef"
8833         echo "Nope, it can't."
8834         ;;
8835 esac
8836 set d_casti32
8837 eval $setvar
8838 $rm -f try try.*
8839
8840 : check for ability to cast negative floats to unsigned
8841 echo " "
8842 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
8843 $cat >try.c <<EOCP
8844 #include <stdio.h>
8845 #include <sys/types.h>
8846 #include <signal.h>
8847 $signal_t blech(s) int s; { exit(7); }
8848 $signal_t blech_in_list(s) int s; { exit(4); }
8849 unsigned long dummy_long(p) unsigned long p; { return p; }
8850 unsigned int dummy_int(p) unsigned int p; { return p; }
8851 unsigned short dummy_short(p) unsigned short p; { return p; }
8852 int main()
8853 {
8854         double f;
8855         unsigned long along;
8856         unsigned int aint;
8857         unsigned short ashort;
8858         int result = 0;
8859         char str[16];
8860         
8861         /* Frustrate gcc-2.7.2's optimizer which failed this test with
8862            a direct f = -123. assignment.  gcc-2.8.0 reportedly
8863            optimized the whole file away
8864         */
8865         /* Store the number in a writable string for gcc to pass to 
8866            sscanf under HP/UX.
8867         */
8868         sprintf(str, "-123");
8869         sscanf(str, "%lf", &f);  /* f = -123.; */
8870
8871         signal(SIGFPE, blech);
8872         along = (unsigned long)f;
8873         aint = (unsigned int)f;
8874         ashort = (unsigned short)f;
8875         if (along != (unsigned long)-123)
8876                 result |= 1;
8877         if (aint != (unsigned int)-123)
8878                 result |= 1;
8879         if (ashort != (unsigned short)-123)
8880                 result |= 1;
8881         sprintf(str, "1073741824.");
8882         sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
8883         f = f + f;
8884         along = 0;
8885         along = (unsigned long)f;
8886         if (along != 0x80000000)
8887                 result |= 2;
8888         f -= 1.;
8889         along = 0;
8890         along = (unsigned long)f;
8891         if (along != 0x7fffffff)
8892                 result |= 1;
8893         f += 2.;
8894         along = 0;
8895         along = (unsigned long)f;
8896         if (along != 0x80000001)
8897                 result |= 2;
8898         if (result)
8899                 exit(result);
8900         signal(SIGFPE, blech_in_list);
8901         sprintf(str, "123.");
8902         sscanf(str, "%lf", &f);  /* f = 123.; */
8903         along = dummy_long((unsigned long)f);
8904         aint = dummy_int((unsigned int)f);
8905         ashort = dummy_short((unsigned short)f);
8906         if (along != (unsigned long)123)
8907                 result |= 4;
8908         if (aint != (unsigned int)123)
8909                 result |= 4;
8910         if (ashort != (unsigned short)123)
8911                 result |= 4;
8912         exit(result);
8913
8914 }
8915 EOCP
8916 set try
8917 if eval $compile_ok; then
8918         $run ./try
8919         castflags=$?
8920 else
8921         echo "(I can't seem to compile the test program--assuming it can't)"
8922         castflags=7
8923 fi
8924 case "$castflags" in
8925 0)      val="$define"
8926         echo "Yup, it can."
8927         ;;
8928 *)      val="$undef"
8929         echo "Nope, it can't."
8930         ;;
8931 esac
8932 set d_castneg
8933 eval $setvar
8934 $rm -f try.*
8935
8936 : see if vprintf exists
8937 echo " "
8938 if set vprintf val -f d_vprintf; eval $csym; $val; then
8939         echo 'vprintf() found.' >&4
8940         val="$define"
8941         $cat >try.c <<'EOF'
8942 #include <varargs.h>
8943
8944 int main() { xxx("foo"); }
8945
8946 xxx(va_alist)
8947 va_dcl
8948 {
8949         va_list args;
8950         char buf[10];
8951
8952         va_start(args);
8953         exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
8954 }
8955 EOF
8956         set try
8957         if eval $compile && $run ./try; then
8958                 echo "Your vsprintf() returns (int)." >&4
8959                 val2="$undef"
8960         else
8961                 echo "Your vsprintf() returns (char*)." >&4
8962                 val2="$define"
8963         fi
8964 else
8965         echo 'vprintf() NOT found.' >&4
8966                 val="$undef"
8967                 val2="$undef"
8968 fi
8969 $rm -f try try.*
8970 set d_vprintf
8971 eval $setvar
8972 val=$val2
8973 set d_charvspr
8974 eval $setvar
8975
8976 : see if chown exists
8977 set chown d_chown
8978 eval $inlibc
8979
8980 : see if chroot exists
8981 set chroot d_chroot
8982 eval $inlibc
8983
8984 : see if chsize exists
8985 set chsize d_chsize
8986 eval $inlibc
8987
8988 hasstruct='varname=$1; struct=$2; shift; shift;
8989 while $test $# -ge 2; do
8990         case "$1" in
8991         $define) echo "#include <$2>";;
8992         esac ;
8993     shift 2;
8994 done > try.c;
8995 echo "int main () { struct $struct foo; }" >> try.c;
8996 set try;
8997 if eval $compile; then
8998         val="$define";
8999 else
9000         val="$undef";
9001 fi;
9002 set $varname;
9003 eval $setvar;
9004 $rm -f try.c try.o'
9005
9006 : see if sys/types.h has to be included
9007 set sys/types.h i_systypes
9008 eval $inhdr
9009
9010 hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
9011 while $test $# -ge 2; do
9012         case "$1" in
9013         $define) echo "#include <$2>";;
9014         esac ;
9015     shift 2;
9016 done > try.c;
9017 echo "int main () { struct $struct foo; char* bar; bar = (char*)foo.$field; }" >> try.c;
9018 set try;
9019 if eval $compile; then
9020         val="$define";
9021 else
9022         val="$undef";
9023 fi;
9024 set $varname;
9025 eval $setvar;
9026 $rm -f try.c try.o'
9027
9028 socketlib=''
9029 sockethdr=''
9030 : see whether socket exists
9031 echo " "
9032 $echo $n "Hmm... $c" >&4
9033 if set socket val -f d_socket; eval $csym; $val; then
9034         echo "Looks like you have Berkeley networking support." >&4
9035         d_socket="$define"
9036         if set setsockopt val -f; eval $csym; $val; then
9037                 d_oldsock="$undef"
9038         else
9039                 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
9040                 d_oldsock="$define"
9041         fi
9042 else
9043         if $contains socklib libc.list >/dev/null 2>&1; then
9044                 echo "Looks like you have Berkeley networking support." >&4
9045                 d_socket="$define"
9046                 : we will have to assume that it supports the 4.2 BSD interface
9047                 d_oldsock="$undef"
9048         else
9049                 echo "You don't have Berkeley networking in libc$_a..." >&4
9050                 if test "X$d_socket" = "X$define"; then
9051                    echo "...but you seem to believe that you have sockets." >&4
9052                 else
9053                         for net in net socket
9054                         do
9055                                 if test -f /usr/lib/lib$net$_a; then
9056                                         ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) ||  \
9057                                         $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
9058                                         if $contains socket libc.list >/dev/null 2>&1; then
9059                                                 d_socket="$define"
9060                                                 socketlib="-l$net"
9061                                                 case "$net" in
9062                                                 net)
9063                                                         echo "...but the Wollongong group seems to have hacked it in." >&4
9064                                                         sockethdr="-I/usr/netinclude"
9065                                                         ;;
9066                                                 esac
9067                                                 echo "Found Berkeley sockets interface in lib$net." >& 4 
9068                                                 if $contains setsockopt libc.list >/dev/null 2>&1; then
9069                                                         d_oldsock="$undef"
9070                                                 else
9071                                                         echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
9072                                                         d_oldsock="$define"
9073                                                 fi
9074                                                 break
9075                                         fi
9076                                 fi
9077                         done
9078                         if test "X$d_socket" != "X$define"; then
9079                            echo "or anywhere else I see." >&4
9080                            d_socket="$undef"
9081                            d_oldsock="$undef"
9082                         fi
9083                 fi
9084         fi
9085 fi
9086
9087 : see if socketpair exists
9088 set socketpair d_sockpair
9089 eval $inlibc
9090
9091
9092 echo " "
9093 echo "Checking the availability of certain socket constants..." >& 4
9094 for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
9095         enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
9096         $cat >try.c <<EOF
9097 #include <sys/types.h>
9098 #include <sys/socket.h>
9099 int main() {
9100     int i = $ENUM;
9101 }
9102 EOF
9103         val="$undef"
9104         set try; if eval $compile; then
9105                 val="$define"
9106         fi
9107         set d_${enum}; eval $setvar
9108         $rm -f try.c try
9109 done
9110
9111 : see if this is a sys/uio.h system
9112 set sys/uio.h i_sysuio
9113 eval $inhdr
9114
9115
9116 echo " "
9117 echo "Checking to see if your system supports struct cmsghdr..." >&4
9118 set d_cmsghdr_s cmsghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
9119 eval $hasstruct
9120 case "$d_cmsghdr_s" in
9121 "$define")      echo "Yes, it does."   ;;
9122 *)              echo "No, it doesn't." ;;
9123 esac
9124
9125
9126 : check for const keyword
9127 echo " "
9128 echo 'Checking to see if your C compiler knows about "const"...' >&4
9129 $cat >const.c <<'EOCP'
9130 typedef struct spug { int drokk; } spug;
9131 int main()
9132 {
9133         const char *foo;
9134         const spug y;
9135 }
9136 EOCP
9137 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
9138         val="$define"
9139         echo "Yup, it does."
9140 else
9141         val="$undef"
9142         echo "Nope, it doesn't."
9143 fi
9144 set d_const
9145 eval $setvar
9146
9147 : see if crypt exists
9148 echo " "
9149 if set crypt val -f d_crypt; eval $csym; $val; then
9150         echo 'crypt() found.' >&4
9151         val="$define"
9152         cryptlib=''
9153 else
9154         cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
9155         if $test -z "$cryptlib"; then
9156                 cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
9157         else
9158                 cryptlib=-lcrypt
9159         fi
9160         if $test -z "$cryptlib"; then
9161                 cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
9162         else
9163                 cryptlib=-lcrypt
9164         fi
9165         if $test -z "$cryptlib"; then
9166                 cryptlib=`./loc libcrypt$_a "" $libpth`
9167         else
9168                 cryptlib=-lcrypt
9169         fi
9170         if $test -z "$cryptlib"; then
9171                 echo 'crypt() NOT found.' >&4
9172                 val="$undef"
9173         else
9174                 val="$define"
9175         fi
9176 fi
9177 set d_crypt
9178 eval $setvar
9179
9180 : get csh whereabouts
9181 case "$csh" in
9182 'csh') val="$undef" ;;
9183 *) val="$define" ;;
9184 esac
9185 set d_csh
9186 eval $setvar
9187 : Respect a hint or command line value for full_csh.
9188 case "$full_csh" in
9189 '') full_csh=$csh ;;
9190 esac
9191
9192 : see if cuserid exists
9193 set cuserid d_cuserid
9194 eval $inlibc
9195
9196 : see if this is a limits.h system
9197 set limits.h i_limits
9198 eval $inhdr
9199
9200 : see if this is a float.h system
9201 set float.h i_float
9202 eval $inhdr
9203
9204 : See if number of significant digits in a double precision number is known
9205 echo " "
9206 $cat >dbl_dig.c <<EOM
9207 #$i_limits I_LIMITS
9208 #$i_float I_FLOAT
9209 #ifdef I_LIMITS
9210 #include <limits.h>
9211 #endif
9212 #ifdef I_FLOAT
9213 #include <float.h>
9214 #endif
9215 #ifdef DBL_DIG
9216 printf("Contains DBL_DIG");
9217 #endif
9218 EOM
9219 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
9220 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
9221         echo "DBL_DIG found." >&4
9222         val="$define"
9223 else
9224         echo "DBL_DIG NOT found." >&4
9225         val="$undef"
9226 fi
9227 $rm -f dbl_dig.?
9228 set d_dbl_dig
9229 eval $setvar
9230
9231 hasproto='varname=$1; func=$2; shift; shift;
9232 while $test $# -ge 2; do
9233         case "$1" in
9234         $define) echo "#include <$2>";;
9235         esac ;
9236     shift 2;
9237 done > try.c;
9238 $cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
9239 if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
9240         echo "$func() prototype found.";
9241         val="$define";
9242 else
9243         echo "$func() prototype NOT found.";
9244         val="$undef";
9245 fi;
9246 set $varname;
9247 eval $setvar;
9248 $rm -f try.c tryout.c'
9249
9250 : see if dbm.h is available
9251 : see if dbmclose exists
9252 set dbmclose d_dbmclose
9253 eval $inlibc
9254
9255 case "$d_dbmclose" in
9256 $define)
9257         set dbm.h i_dbm
9258         eval $inhdr
9259         case "$i_dbm" in
9260         $define)
9261                 val="$undef"
9262                 set i_rpcsvcdbm
9263                 eval $setvar
9264                 ;;
9265         *)      set rpcsvc/dbm.h i_rpcsvcdbm
9266                 eval $inhdr
9267                 ;;
9268         esac
9269         ;;
9270 *)      echo "We won't be including <dbm.h>"
9271         val="$undef"
9272         set i_dbm
9273         eval $setvar
9274         val="$undef"
9275         set i_rpcsvcdbm
9276         eval $setvar
9277         ;;
9278 esac
9279
9280 : see if prototype for dbminit is available
9281 echo " "
9282 set d_dbminitproto dbminit $i_dbm dbm.h
9283 eval $hasproto
9284
9285 : see if difftime exists
9286 set difftime d_difftime
9287 eval $inlibc
9288
9289 : see if this is a dirent system
9290 echo " "
9291 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
9292         val="$define"
9293         echo "<dirent.h> found." >&4
9294 else
9295         val="$undef"
9296         if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
9297                 echo "<sys/dir.h> found." >&4
9298                 echo " "
9299         else
9300                 xinc=`./findhdr sys/ndir.h`
9301         fi
9302         echo "<dirent.h> NOT found." >&4
9303 fi
9304 set i_dirent
9305 eval $setvar
9306
9307 : Look for type of directory structure.
9308 echo " "
9309 $cppstdin $cppflags $cppminus < "$xinc" > try.c
9310
9311 case "$direntrytype" in
9312 ''|' ')
9313         case "$i_dirent" in
9314         $define) guess1='struct dirent' ;;
9315         *) guess1='struct direct'  ;;
9316         esac
9317         ;;
9318 *)      guess1="$direntrytype"
9319         ;;
9320 esac
9321
9322 case "$guess1" in
9323 'struct dirent') guess2='struct direct' ;;
9324 *) guess2='struct dirent' ;;
9325 esac
9326                 
9327 if $contains "$guess1" try.c >/dev/null 2>&1; then
9328         direntrytype="$guess1"
9329         echo "Your directory entries are $direntrytype." >&4
9330 elif $contains "$guess2" try.c >/dev/null 2>&1; then
9331         direntrytype="$guess2"
9332         echo "Your directory entries seem to be $direntrytype." >&4
9333 else
9334         echo "I don't recognize your system's directory entries." >&4
9335         rp="What type is used for directory entries on this system?"
9336         dflt="$guess1"
9337         . ./myread
9338         direntrytype="$ans"
9339 fi
9340 $rm -f try.c
9341
9342
9343 : see if the directory entry stores field length
9344 echo " "
9345 $cppstdin $cppflags $cppminus < "$xinc" > try.c
9346 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
9347         echo "Good, your directory entry keeps length information in d_namlen." >&4
9348         val="$define"
9349 else
9350         echo "Your directory entry does not know about the d_namlen field." >&4
9351         val="$undef"
9352 fi
9353 set d_dirnamlen
9354 eval $setvar
9355 $rm -f try.c
9356
9357 : see if dlerror exists
9358 xxx_runnm="$runnm"
9359 runnm=false
9360 set dlerror d_dlerror
9361 eval $inlibc
9362 runnm="$xxx_runnm"
9363
9364 : see if dlfcn is available
9365 set dlfcn.h i_dlfcn
9366 eval $inhdr
9367
9368 case "$usedl" in
9369 $define|y|true)
9370         $cat << EOM
9371
9372 On a few systems, the dynamically loaded modules that perl generates and uses
9373 will need a different extension than shared libs. The default will probably
9374 be appropriate.
9375
9376 EOM
9377         case "$dlext" in
9378         '')     dflt="$so" ;;
9379         *)      dflt="$dlext" ;;
9380         esac
9381         rp='What is the extension of dynamically loaded modules'
9382         . ./myread
9383         dlext="$ans"
9384         ;;
9385 *)
9386         dlext="none"
9387         ;;
9388 esac
9389
9390 : Check if dlsym need a leading underscore
9391 echo " "
9392 val="$undef"
9393
9394 case "$dlsrc" in
9395 dl_dlopen.xs)
9396         echo "Checking whether your dlsym() needs a leading underscore ..." >&4
9397         $cat >dyna.c <<'EOM'
9398 fred () { }
9399 EOM
9400
9401 $cat >fred.c<<EOM
9402
9403 #include <stdio.h>
9404 #$i_dlfcn I_DLFCN
9405 #ifdef I_DLFCN
9406 #include <dlfcn.h>      /* the dynamic linker include file for SunOS/Solaris */
9407 #else
9408 #include <sys/types.h>
9409 #include <nlist.h>
9410 #include <link.h>
9411 #endif
9412
9413 extern int fred() ;
9414
9415 int main()
9416 {
9417     void * handle ;
9418     void * symbol ;
9419 #ifndef RTLD_LAZY
9420     int mode = 1 ;
9421 #else
9422     int mode = RTLD_LAZY ;
9423 #endif
9424     handle = dlopen("./dyna.$dlext", mode) ;
9425     if (handle == NULL) {
9426         printf ("1\n") ;
9427         fflush (stdout) ;
9428         exit(0);
9429     }
9430     symbol = dlsym(handle, "fred") ;
9431     if (symbol == NULL) {
9432         /* try putting a leading underscore */
9433         symbol = dlsym(handle, "_fred") ;
9434         if (symbol == NULL) {
9435             printf ("2\n") ;
9436             fflush (stdout) ;
9437             exit(0);
9438         }
9439         printf ("3\n") ;
9440     }
9441     else
9442         printf ("4\n") ;
9443     fflush (stdout) ;
9444     exit(0);
9445 }
9446 EOM
9447         : Call the object file tmp-dyna.o in case dlext=o.
9448         if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 && 
9449                 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 && 
9450                 $ld -o dyna.$dlext $ldflags $lddlflags tmp-dyna${_o} > /dev/null 2>&1 && 
9451                 $cc -o fred $ccflags $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1 && $to dyna.$dlext; then
9452                 xxx=`$run ./fred`
9453                 case $xxx in
9454                 1)      echo "Test program failed using dlopen." >&4
9455                         echo "Perhaps you should not use dynamic loading." >&4;;
9456                 2)      echo "Test program failed using dlsym." >&4
9457                         echo "Perhaps you should not use dynamic loading." >&4;;
9458                 3)      echo "dlsym needs a leading underscore" >&4
9459                         val="$define" ;;
9460                 4)      echo "dlsym doesn't need a leading underscore." >&4;;
9461                 esac
9462         else
9463                 echo "I can't compile and run the test program." >&4
9464                 echo "I'm guessing that dlsym doesn't need a leading underscore." >&4
9465         fi
9466         ;;
9467 esac
9468                 
9469 $rm -f fred fred.? dyna.$dlext dyna.? tmp-dyna.?
9470
9471 set d_dlsymun
9472 eval $setvar
9473
9474 : see if prototype for drand48 is available
9475 echo " "
9476 set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
9477 eval $hasproto
9478
9479 : see if dup2 exists
9480 set dup2 d_dup2
9481 eval $inlibc
9482
9483 : see if eaccess exists
9484 set eaccess d_eaccess
9485 eval $inlibc
9486
9487 : see if endgrent exists
9488 set endgrent d_endgrent
9489 eval $inlibc
9490
9491 : see if endhostent exists
9492 set endhostent d_endhent
9493 eval $inlibc
9494
9495 : see if endnetent exists
9496 set endnetent d_endnent
9497 eval $inlibc
9498
9499 : see if endprotoent exists
9500 set endprotoent d_endpent
9501 eval $inlibc
9502
9503 : see if endpwent exists
9504 set endpwent d_endpwent
9505 eval $inlibc
9506
9507 : see if endservent exists
9508 set endservent d_endsent
9509 eval $inlibc
9510
9511 : Locate the flags for 'open()'
9512 echo " "
9513 $cat >try.c <<'EOCP'
9514 #include <sys/types.h>
9515 #ifdef I_FCNTL
9516 #include <fcntl.h>
9517 #endif
9518 #ifdef I_SYS_FILE
9519 #include <sys/file.h>
9520 #endif
9521 int main() {
9522         if(O_RDONLY);
9523 #ifdef O_TRUNC
9524         exit(0);
9525 #else
9526         exit(1);
9527 #endif
9528 }
9529 EOCP
9530 : check sys/file.h first to get FREAD on Sun
9531 if $test `./findhdr sys/file.h` && \
9532                 set try -DI_SYS_FILE && eval $compile; then
9533         h_sysfile=true;
9534         echo "<sys/file.h> defines the O_* constants..." >&4
9535         if $run ./try; then
9536                 echo "and you have the 3 argument form of open()." >&4
9537                 val="$define"
9538         else
9539                 echo "but not the 3 argument form of open().  Oh, well." >&4
9540                 val="$undef"
9541         fi
9542 elif $test `./findhdr fcntl.h` && \
9543                 set try -DI_FCNTL && eval $compile; then
9544         h_fcntl=true;
9545         echo "<fcntl.h> defines the O_* constants..." >&4
9546         if $run ./try; then
9547                 echo "and you have the 3 argument form of open()." >&4
9548                 val="$define"
9549         else
9550                 echo "but not the 3 argument form of open().  Oh, well." >&4
9551                 val="$undef"
9552         fi
9553 else
9554         val="$undef"
9555         echo "I can't find the O_* constant definitions!  You got problems." >&4
9556 fi
9557 set d_open3
9558 eval $setvar
9559 $rm -f try try.*
9560
9561 : see which of string.h or strings.h is needed
9562 echo " "
9563 strings=`./findhdr string.h`
9564 if $test "$strings" && $test -r "$strings"; then
9565         echo "Using <string.h> instead of <strings.h>." >&4
9566         val="$define"
9567 else
9568         val="$undef"
9569         strings=`./findhdr strings.h`
9570         if $test "$strings" && $test -r "$strings"; then
9571                 echo "Using <strings.h> instead of <string.h>." >&4
9572         else
9573                 echo "No string header found -- You'll surely have problems." >&4
9574         fi
9575 fi
9576 set i_string
9577 eval $setvar
9578 case "$i_string" in
9579 "$undef") strings=`./findhdr strings.h`;;
9580 *)        strings=`./findhdr string.h`;;
9581 esac
9582
9583 : check for non-blocking I/O stuff
9584 case "$h_sysfile" in
9585 true) echo "#include <sys/file.h>" > head.c;;
9586 *)
9587        case "$h_fcntl" in
9588        true) echo "#include <fcntl.h>" > head.c;;
9589        *) echo "#include <sys/fcntl.h>" > head.c;;
9590        esac
9591        ;;
9592 esac
9593 echo " "
9594 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
9595 case "$o_nonblock" in
9596 '')
9597         $cat head.c > try.c
9598         $cat >>try.c <<'EOCP'
9599 #include <stdio.h>
9600 int main() {
9601 #ifdef O_NONBLOCK
9602         printf("O_NONBLOCK\n");
9603         exit(0);
9604 #endif
9605 #ifdef O_NDELAY
9606         printf("O_NDELAY\n");
9607         exit(0);
9608 #endif
9609 #ifdef FNDELAY
9610         printf("FNDELAY\n");
9611         exit(0);
9612 #endif
9613         exit(0);
9614 }
9615 EOCP
9616         set try
9617         if eval $compile_ok; then
9618                 o_nonblock=`$run ./try`
9619                 case "$o_nonblock" in
9620                 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
9621                 *) echo "Seems like we can use $o_nonblock.";;
9622                 esac
9623         else
9624                 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
9625         fi
9626         ;;
9627 *) echo "Using $hint value $o_nonblock.";;
9628 esac
9629 $rm -f try try.* .out core
9630
9631 echo " "
9632 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
9633 case "$eagain" in
9634 '')
9635         $cat head.c > try.c
9636         $cat >>try.c <<EOCP
9637 #include <errno.h>
9638 #include <sys/types.h>
9639 #include <signal.h>
9640 #include <stdio.h> 
9641 #define MY_O_NONBLOCK $o_nonblock
9642 #ifndef errno  /* XXX need better Configure test */
9643 extern int errno;
9644 #endif
9645 #$i_unistd I_UNISTD
9646 #ifdef I_UNISTD
9647 #include <unistd.h>
9648 #endif
9649 #$i_string I_STRING
9650 #ifdef I_STRING
9651 #include <string.h>
9652 #else
9653 #include <strings.h>
9654 #endif
9655 $signal_t blech(x) int x; { exit(3); }
9656 EOCP
9657         $cat >> try.c <<'EOCP'
9658 int main()
9659 {
9660         int pd[2];
9661         int pu[2];
9662         char buf[1];
9663         char string[100];
9664
9665         pipe(pd);       /* Down: child -> parent */
9666         pipe(pu);       /* Up: parent -> child */
9667         if (0 != fork()) {
9668                 int ret;
9669                 close(pd[1]);   /* Parent reads from pd[0] */
9670                 close(pu[0]);   /* Parent writes (blocking) to pu[1] */
9671 #ifdef F_SETFL
9672                 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
9673                         exit(1);
9674 #else
9675                 exit(4);
9676 #endif
9677                 signal(SIGALRM, blech);
9678                 alarm(5);
9679                 if ((ret = read(pd[0], buf, 1)) > 0)    /* Nothing to read! */
9680                         exit(2);
9681                 sprintf(string, "%d\n", ret);
9682                 write(2, string, strlen(string));
9683                 alarm(0);
9684 #ifdef EAGAIN
9685                 if (errno == EAGAIN) {
9686                         printf("EAGAIN\n");
9687                         goto ok;
9688                 }
9689 #endif
9690 #ifdef EWOULDBLOCK
9691                 if (errno == EWOULDBLOCK)
9692                         printf("EWOULDBLOCK\n");
9693 #endif
9694         ok:
9695                 write(pu[1], buf, 1);   /* Unblocks child, tell it to close our pipe */
9696                 sleep(2);                               /* Give it time to close our pipe */
9697                 alarm(5);
9698                 ret = read(pd[0], buf, 1);      /* Should read EOF */
9699                 alarm(0);
9700                 sprintf(string, "%d\n", ret);
9701                 write(3, string, strlen(string));
9702                 exit(0);
9703         }
9704
9705         close(pd[0]);                   /* We write to pd[1] */
9706         close(pu[1]);                   /* We read from pu[0] */
9707         read(pu[0], buf, 1);    /* Wait for parent to signal us we may continue */
9708         close(pd[1]);                   /* Pipe pd is now fully closed! */
9709         exit(0);                                /* Bye bye, thank you for playing! */
9710 }
9711 EOCP
9712         set try
9713         if eval $compile_ok; then
9714                 echo "$startsh" >mtry
9715                 echo "$run ./try >try.out 2>try.ret 3>try.err || exit 4" >>mtry
9716                 chmod +x mtry
9717                 ./mtry >/dev/null 2>&1
9718                 case $? in
9719                 0) eagain=`$cat try.out`;;
9720                 1) echo "Could not perform non-blocking setting!";;
9721                 2) echo "I did a successful read() for something that was not there!";;
9722                 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
9723                 4) echo "Could not find F_SETFL!";;
9724                 *) echo "Something terribly wrong happened during testing.";;
9725                 esac
9726                 rd_nodata=`$cat try.ret`
9727                 echo "A read() system call with no data present returns $rd_nodata."
9728                 case "$rd_nodata" in
9729                 0|-1) ;;
9730                 *)
9731                         echo "(That's peculiar, fixing that to be -1.)"
9732                         rd_nodata=-1
9733                         ;;
9734                 esac
9735                 case "$eagain" in
9736                 '')
9737                         echo "Forcing errno EAGAIN on read() with no data available."
9738                         eagain=EAGAIN
9739                         ;;
9740                 *)
9741                         echo "Your read() sets errno to $eagain when no data is available."
9742                         ;;
9743                 esac
9744                 status=`$cat try.err`
9745                 case "$status" in
9746                 0) echo "And it correctly returns 0 to signal EOF.";;
9747                 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
9748                 *) echo "However, your read() returns '$status' on EOF??";;
9749                 esac
9750                 val="$define"
9751                 if test "$status" = "$rd_nodata"; then
9752                         echo "WARNING: you can't distinguish between EOF and no data!"
9753                         val="$undef"
9754                 fi
9755         else
9756                 echo "I can't compile the test program--assuming errno EAGAIN will do."
9757                 eagain=EAGAIN
9758         fi
9759         set d_eofnblk
9760         eval $setvar
9761         ;;
9762 *)
9763         echo "Using $hint value $eagain."
9764         echo "Your read() returns $rd_nodata when no data is present."
9765         case "$d_eofnblk" in
9766         "$define") echo "And you can see EOF because read() returns 0.";;
9767         "$undef") echo "But you can't see EOF status from read() returned value.";;
9768         *)
9769                 echo "(Assuming you can't see EOF status from read anyway.)"
9770                 d_eofnblk=$undef
9771                 ;;
9772         esac
9773         ;;
9774 esac
9775 $rm -f try try.* .out core head.c mtry
9776
9777 : see if fchmod exists
9778 set fchmod d_fchmod
9779 eval $inlibc
9780
9781 : see if fchown exists
9782 set fchown d_fchown
9783 eval $inlibc
9784
9785 : see if this is an fcntl system
9786 set fcntl d_fcntl
9787 eval $inlibc
9788
9789 echo " "
9790 : See if fcntl-based locking works.
9791 $cat >try.c <<'EOCP'
9792 #include <stdlib.h>
9793 #include <unistd.h>
9794 #include <fcntl.h>
9795 int main() {
9796 #if defined(F_SETLK) && defined(F_SETLKW)
9797      struct flock flock;
9798      int retval, fd;
9799      fd = open("try.c", O_RDONLY);
9800      flock.l_type = F_RDLCK;
9801      flock.l_whence = SEEK_SET;
9802      flock.l_start = flock.l_len = 0;
9803      retval = fcntl(fd, F_SETLK, &flock);
9804      close(fd);
9805      (retval < 0 ? exit(2) : exit(0));
9806 #else
9807      exit(2);
9808 #endif
9809 }
9810 EOCP
9811 echo "Checking if fcntl-based file locking works... "
9812 case "$d_fcntl" in
9813 "$define")
9814         set try
9815         if eval $compile_ok; then
9816                 if $run ./try; then
9817                         echo "Yes, it seems to work."
9818                         val="$define"
9819                 else
9820                         echo "Nope, it didn't work."
9821                         val="$undef"
9822                 fi
9823         else
9824                 echo "I'm unable to compile the test program, so I'll assume not."
9825                 val="$undef"
9826         fi
9827         ;;
9828 *) val="$undef";
9829         echo "Nope, since you don't even have fcntl()."
9830         ;;
9831 esac
9832 set d_fcntl_can_lock
9833 eval $setvar
9834 $rm -f try*
9835
9836
9837 : see if sys/select.h has to be included
9838 set sys/select.h i_sysselct
9839 eval $inhdr
9840
9841 : see if we should include time.h, sys/time.h, or both
9842 echo " "
9843 if test "X$timeincl" = X; then
9844         echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
9845         $echo $n "I'm now running the test program...$c"
9846         $cat >try.c <<'EOCP'
9847 #include <sys/types.h>
9848 #ifdef I_TIME
9849 #include <time.h>
9850 #endif
9851 #ifdef I_SYSTIME
9852 #ifdef SYSTIMEKERNEL
9853 #define KERNEL
9854 #endif
9855 #include <sys/time.h>
9856 #endif
9857 #ifdef I_SYSSELECT
9858 #include <sys/select.h>
9859 #endif
9860 int main()
9861 {
9862         struct tm foo;
9863 #ifdef S_TIMEVAL
9864         struct timeval bar;
9865 #endif
9866 #ifdef S_TIMEZONE
9867         struct timezone tzp;
9868 #endif
9869         if (foo.tm_sec == foo.tm_sec)
9870                 exit(0);
9871 #ifdef S_TIMEVAL
9872         if (bar.tv_sec == bar.tv_sec)
9873                 exit(0);
9874 #endif
9875         exit(1);
9876 }
9877 EOCP
9878         flags=''
9879         for s_timezone in '-DS_TIMEZONE' ''; do
9880         sysselect=''
9881         for s_timeval in '-DS_TIMEVAL' ''; do
9882         for i_systimek in '' '-DSYSTIMEKERNEL'; do
9883         for i_time in '' '-DI_TIME'; do
9884         for i_systime in '-DI_SYSTIME' ''; do
9885                 case "$flags" in
9886                 '') $echo $n ".$c"
9887                         set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
9888                         if eval $compile; then
9889                                 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
9890                                 shift
9891                                 flags="$*"
9892                                 echo " "
9893                                 $echo $n "Succeeded with $flags$c"
9894                         fi
9895                         ;;
9896                 esac
9897         done
9898         done
9899         done
9900         done
9901         done
9902         timeincl=''
9903         echo " "
9904         case "$flags" in
9905         *SYSTIMEKERNEL*) i_systimek="$define"
9906                 timeincl=`./findhdr sys/time.h`
9907                 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
9908         *) i_systimek="$undef";;
9909         esac
9910         case "$flags" in
9911         *I_TIME*) i_time="$define"
9912                 timeincl=`./findhdr time.h`" $timeincl"
9913                 echo "We'll include <time.h>." >&4;;
9914         *) i_time="$undef";;
9915         esac
9916         case "$flags" in
9917         *I_SYSTIME*) i_systime="$define"
9918                 timeincl=`./findhdr sys/time.h`" $timeincl"
9919                 echo "We'll include <sys/time.h>." >&4;;
9920         *) i_systime="$undef";;
9921         esac
9922         $rm -f try.c try
9923 fi
9924
9925 : check for fd_set items
9926 $cat <<EOM
9927
9928 Checking to see how well your C compiler handles fd_set and friends ...
9929 EOM
9930 $cat >try.c <<EOCP
9931 #$i_systime I_SYS_TIME
9932 #$i_sysselct I_SYS_SELECT
9933 #$d_socket HAS_SOCKET
9934 #include <sys/types.h>
9935 #ifdef HAS_SOCKET
9936 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
9937 #endif
9938 #ifdef I_SYS_TIME
9939 #include <sys/time.h>
9940 #endif
9941 #ifdef I_SYS_SELECT
9942 #include <sys/select.h>
9943 #endif
9944 int main() {
9945         fd_set fds;
9946
9947 #ifdef TRYBITS
9948         if(fds.fds_bits);
9949 #endif
9950
9951 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
9952         exit(0);
9953 #else
9954         exit(1);
9955 #endif
9956 }
9957 EOCP
9958 set try -DTRYBITS
9959 if eval $compile; then
9960         d_fds_bits="$define"
9961         d_fd_set="$define"
9962         echo "Well, your system knows about the normal fd_set typedef..." >&4
9963         if $run ./try; then
9964                 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
9965                 d_fd_macros="$define"
9966         else
9967                 $cat >&4 <<'EOM'
9968 but not the normal fd_set macros!  Gaaack!  I'll have to cover for you.
9969 EOM
9970                 d_fd_macros="$undef"
9971         fi
9972 else
9973         $cat <<'EOM'
9974 Hmm, your compiler has some difficulty with fd_set.  Checking further...
9975 EOM
9976         set try
9977         if eval $compile; then
9978                 d_fds_bits="$undef"
9979                 d_fd_set="$define"
9980                 echo "Well, your system has some sort of fd_set available..." >&4
9981                 if $run ./try; then
9982                         echo "and you have the normal fd_set macros." >&4
9983                         d_fd_macros="$define"
9984                 else
9985                         $cat <<'EOM'
9986 but not the normal fd_set macros!  Gross!  More work for me...
9987 EOM
9988                         d_fd_macros="$undef"
9989                 fi
9990         else
9991         echo "Well, you got zip.  That's OK, I can roll my own fd_set stuff." >&4
9992                 d_fd_set="$undef"
9993                 d_fds_bits="$undef"
9994                 d_fd_macros="$undef"
9995         fi
9996 fi
9997 $rm -f try try.*
9998
9999 : see if fgetpos exists
10000 set fgetpos d_fgetpos
10001 eval $inlibc
10002
10003 : see if flock exists
10004 set flock d_flock
10005 eval $inlibc
10006
10007 : see if this is a sys/file.h system
10008 val=''
10009 set sys/file.h val
10010 eval $inhdr
10011
10012 : do we need to include sys/file.h ?
10013 case "$val" in
10014 "$define")
10015         echo " "
10016         if $h_sysfile; then
10017                 val="$define"
10018                 echo "We'll be including <sys/file.h>." >&4
10019         else
10020                 val="$undef"
10021                 echo "We won't be including <sys/file.h>." >&4
10022         fi
10023         ;;
10024 *)
10025         h_sysfile=false
10026         ;;
10027 esac
10028 set i_sysfile
10029 eval $setvar
10030
10031 : see if prototype for flock is available
10032 echo " "
10033 set d_flockproto flock $i_sysfile sys/file.h
10034 eval $hasproto
10035
10036 : see if fork exists
10037 set fork d_fork
10038 eval $inlibc
10039
10040 : see if pathconf exists
10041 set pathconf d_pathconf
10042 eval $inlibc
10043
10044 : see if fpathconf exists
10045 set fpathconf d_fpathconf
10046 eval $inlibc
10047
10048
10049 : check for fpos64_t
10050 echo " "
10051 echo "Checking to see if you have fpos64_t..." >&4
10052 $cat >try.c <<EOCP
10053 #include <stdio.h>
10054 int main() { fpos64_t x = 7; }
10055 EOCP
10056 set try
10057 if eval $compile; then
10058         val="$define"
10059         echo "You have fpos64_t."
10060 else
10061         val="$undef"
10062         echo "You do not have fpos64_t."
10063         case "$fpossize" in
10064         8) echo "(Your fpos_t is 64 bits, so you could use that.)" ;;
10065         esac
10066 fi
10067 $rm -f try.* try
10068 set d_fpos64_t
10069 eval $setvar
10070
10071 : see if frexpl exists
10072 set frexpl d_frexpl
10073 eval $inlibc
10074
10075 : see if this is a sys/param system
10076 set sys/param.h i_sysparam
10077 eval $inhdr
10078
10079 : see if this is a sys/mount.h system
10080 set sys/mount.h i_sysmount
10081 eval $inhdr
10082
10083
10084 echo " "
10085 echo "Checking to see if your system supports struct fs_data..." >&4
10086 set d_fs_data_s fs_data $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h
10087 eval $hasstruct
10088 case "$d_fs_data_s" in
10089 "$define")      echo "Yes, it does."   ;;
10090 *)              echo "No, it doesn't." ;;
10091 esac
10092
10093 : see if fseeko exists
10094 set fseeko d_fseeko
10095 eval $inlibc
10096 case "$longsize" in
10097 8) echo "(Your long is 64 bits, so you could use fseek.)" ;;
10098 esac
10099
10100 : see if fsetpos exists
10101 set fsetpos d_fsetpos
10102 eval $inlibc
10103
10104
10105 : see if fstatfs exists
10106 set fstatfs d_fstatfs
10107 eval $inlibc
10108
10109
10110 : see if statvfs exists
10111 set statvfs d_statvfs
10112 eval $inlibc
10113
10114 : see if fstatvfs exists
10115 set fstatvfs d_fstatvfs
10116 eval $inlibc
10117
10118
10119 : see if fsync exists
10120 set fsync d_fsync
10121 eval $inlibc
10122
10123 : see if ftello exists
10124 set ftello d_ftello
10125 eval $inlibc
10126 case "$longsize" in
10127 8) echo "(Your long is 64 bits, so you could use ftell.)" ;;
10128 esac
10129
10130 : see if getcwd exists
10131 set getcwd d_getcwd
10132 eval $inlibc
10133
10134 : see if getespwnam exists
10135 set getespwnam d_getespwnam
10136 eval $inlibc
10137
10138
10139 : see if getfsstat exists
10140 set getfsstat d_getfsstat
10141 eval $inlibc
10142
10143 : see if getgrent exists
10144 set getgrent d_getgrent
10145 eval $inlibc
10146
10147 : see if gethostbyaddr exists
10148 set gethostbyaddr d_gethbyaddr
10149 eval $inlibc
10150
10151 : see if gethostbyname exists
10152 set gethostbyname d_gethbyname
10153 eval $inlibc
10154
10155 : see if gethostent exists
10156 set gethostent d_gethent
10157 eval $inlibc
10158
10159 : see how we will look up host name
10160 echo " "
10161 call=''
10162 if set gethostname val -f d_gethname; eval $csym; $val; then
10163         echo 'gethostname() found.' >&4
10164         d_gethname="$define"
10165         call=gethostname
10166 fi
10167 if set uname val -f d_uname; eval $csym; $val; then
10168         if ./xenix; then
10169                 $cat <<'EOM'
10170 uname() was found, but you're running xenix, and older versions of xenix
10171 have a broken uname(). If you don't really know whether your xenix is old
10172 enough to have a broken system call, use the default answer.
10173
10174 EOM
10175                 dflt=y
10176                 case "$d_uname" in
10177                 "$define") dflt=n;;
10178                 esac
10179                 rp='Is your uname() broken?'
10180                 . ./myread
10181                 case "$ans" in
10182                 n*) d_uname="$define"; call=uname;;
10183                 esac
10184         else
10185                 echo 'uname() found.' >&4
10186                 d_uname="$define"
10187                 case "$call" in
10188                 '') call=uname ;;
10189                 esac
10190         fi
10191 fi
10192 case "$d_gethname" in
10193 '') d_gethname="$undef";;
10194 esac
10195 case "$d_uname" in
10196 '') d_uname="$undef";;
10197 esac
10198 case "$d_uname$d_gethname" in
10199 *define*)
10200         dflt=n
10201         cat <<EOM
10202  
10203 Every now and then someone has a $call() that lies about the hostname
10204 but can't be fixed for political or economic reasons.  If you wish, I can
10205 pretend $call() isn't there and maybe compute hostname at run-time
10206 thanks to the '$phostname' command.
10207
10208 EOM
10209         rp="Shall I ignore $call() from now on?"
10210         . ./myread
10211         case "$ans" in
10212         y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
10213         esac;;
10214 esac
10215 case "$phostname" in
10216 '') aphostname='';;
10217 *) case "$aphostname" in
10218         /*) ;;
10219         *) set X $phostname
10220                 shift
10221                 file=$1
10222                 shift
10223                 file=`./loc $file $file $pth`
10224                 aphostname=`echo $file $*`
10225                 ;;
10226         esac
10227         ;;
10228 esac
10229 case "$d_uname$d_gethname" in
10230 *define*) ;;
10231 *)
10232         case "$phostname" in
10233         '')
10234                 echo "There will be no way for $package to get your hostname." >&4;;
10235         *)
10236         echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
10237                 ;;
10238         esac;;
10239 esac
10240 case "$d_phostname" in
10241 '') d_phostname="$undef";;
10242 esac
10243
10244 : see if this is a netdb.h system
10245 set netdb.h i_netdb
10246 eval $inhdr
10247
10248 : see if prototypes for various gethostxxx netdb.h functions are available
10249 echo " "
10250 set d_gethostprotos gethostent $i_netdb netdb.h
10251 eval $hasproto
10252
10253 : see if getitimer exists
10254 set getitimer d_getitimer
10255 eval $inlibc
10256
10257 : see if getlogin exists
10258 set getlogin d_getlogin
10259 eval $inlibc
10260
10261 : see if getmnt exists
10262 set getmnt d_getmnt
10263 eval $inlibc
10264
10265 : see if getmntent exists
10266 set getmntent d_getmntent
10267 eval $inlibc
10268
10269 : see if getnetbyaddr exists
10270 set getnetbyaddr d_getnbyaddr
10271 eval $inlibc
10272
10273 : see if getnetbyname exists
10274 set getnetbyname d_getnbyname
10275 eval $inlibc
10276
10277 : see if getnetent exists
10278 set getnetent d_getnent
10279 eval $inlibc
10280
10281 : see if prototypes for various getnetxxx netdb.h functions are available
10282 echo " "
10283 set d_getnetprotos getnetent $i_netdb netdb.h
10284 eval $hasproto
10285
10286 : see if getpagesize exists
10287 set getpagesize d_getpagsz
10288 eval $inlibc
10289
10290
10291 : see if getprotobyname exists
10292 set getprotobyname d_getpbyname
10293 eval $inlibc
10294
10295 : see if getprotobynumber exists
10296 set getprotobynumber d_getpbynumber
10297 eval $inlibc
10298
10299 : see if getprotoent exists
10300 set getprotoent d_getpent
10301 eval $inlibc
10302
10303 : see if getpgid exists
10304 set getpgid d_getpgid
10305 eval $inlibc
10306
10307 : see if getpgrp2 exists
10308 set getpgrp2 d_getpgrp2
10309 eval $inlibc
10310
10311 : see if getppid exists
10312 set getppid d_getppid
10313 eval $inlibc
10314
10315 : see if getpriority exists
10316 set getpriority d_getprior
10317 eval $inlibc
10318
10319 : see if prototypes for various getprotoxxx netdb.h functions are available
10320 echo " "
10321 set d_getprotoprotos getprotoent $i_netdb netdb.h
10322 eval $hasproto
10323
10324 : see if getprpwnam exists
10325 set getprpwnam d_getprpwnam
10326 eval $inlibc
10327
10328 : see if getpwent exists
10329 set getpwent d_getpwent
10330 eval $inlibc
10331
10332
10333 : see if getservbyname exists
10334 set getservbyname d_getsbyname
10335 eval $inlibc
10336
10337 : see if getservbyport exists
10338 set getservbyport d_getsbyport
10339 eval $inlibc
10340
10341 : see if getservent exists
10342 set getservent d_getsent
10343 eval $inlibc
10344
10345 : see if prototypes for various getservxxx netdb.h functions are available
10346 echo " "
10347 set d_getservprotos getservent $i_netdb netdb.h
10348 eval $hasproto
10349
10350 : see if getspnam exists
10351 set getspnam d_getspnam
10352 eval $inlibc
10353
10354 : see if gettimeofday or ftime exists
10355 set gettimeofday d_gettimeod
10356 eval $inlibc
10357 case "$d_gettimeod" in
10358 "$undef")
10359         set ftime d_ftime 
10360         eval $inlibc
10361         ;;
10362 *)
10363         val="$undef"; set d_ftime; eval $setvar
10364         ;;
10365 esac
10366 case "$d_gettimeod$d_ftime" in
10367 "$undef$undef")
10368         echo " "
10369         echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
10370         ;;
10371 esac
10372
10373 : see if this is an grp system
10374 set grp.h i_grp
10375 eval $inhdr
10376
10377 case "$i_grp" in
10378 $define)
10379         xxx=`./findhdr grp.h`
10380         $cppstdin $cppflags $cppminus < $xxx >$$.h
10381
10382         if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
10383                 val="$define"
10384         else
10385                 val="$undef"
10386         fi
10387         set d_grpasswd
10388         eval $setvar
10389
10390         $rm -f $$.h
10391         ;;
10392 *)
10393         val="$undef";
10394         set d_grpasswd; eval $setvar
10395         ;;
10396 esac
10397
10398 : see if hasmntopt exists
10399 set hasmntopt d_hasmntopt
10400 eval $inlibc
10401
10402 : see if this is a netinet/in.h or sys/in.h system
10403 set netinet/in.h i_niin sys/in.h i_sysin
10404 eval $inhdr
10405
10406 : see if arpa/inet.h has to be included
10407 set arpa/inet.h i_arpainet
10408 eval $inhdr
10409
10410 : see if htonl --and friends-- exists
10411 val=''
10412 set htonl val
10413 eval $inlibc
10414
10415 : Maybe they are macros.
10416 case "$val" in
10417 $undef)
10418         $cat >htonl.c <<EOM
10419 #include <stdio.h>
10420 #include <sys/types.h>
10421 #$i_niin I_NETINET_IN
10422 #$i_sysin I_SYS_IN
10423 #$i_arpainet I_ARPA_INET
10424 #ifdef I_NETINET_IN
10425 #include <netinet/in.h>
10426 #endif
10427 #ifdef I_SYS_IN
10428 #include <sys/in.h>
10429 #endif
10430 #ifdef I_ARPA_INET
10431 #include <arpa/inet.h>
10432 #endif
10433 #ifdef htonl
10434 printf("Defined as a macro.");
10435 #endif
10436 EOM
10437         $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
10438         if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
10439                 val="$define"
10440                 echo "But it seems to be defined as a macro." >&4
10441         fi
10442         $rm -f htonl.?
10443         ;;
10444 esac
10445 set d_htonl
10446 eval $setvar
10447
10448 : see if iconv exists
10449 set iconv d_iconv
10450 eval $inlibc
10451
10452 : index or strchr
10453 echo " "
10454 if set index val -f; eval $csym; $val; then
10455         if set strchr val -f d_strchr; eval $csym; $val; then
10456                 if $contains strchr "$strings" >/dev/null 2>&1 ; then
10457                         val="$define"
10458                         vali="$undef"
10459                         echo "strchr() found." >&4
10460                 else
10461                         val="$undef"
10462                         vali="$define"
10463                         echo "index() found." >&4
10464                 fi
10465         else
10466                 val="$undef"
10467                 vali="$define"
10468                 echo "index() found." >&4
10469         fi
10470 else
10471         if set strchr val -f d_strchr; eval $csym; $val; then
10472                 val="$define"
10473                 vali="$undef"
10474                 echo "strchr() found." >&4
10475         else
10476                 echo "No index() or strchr() found!" >&4
10477                 val="$undef"
10478                 vali="$undef"
10479         fi
10480 fi
10481 set d_strchr; eval $setvar
10482 val="$vali"
10483 set d_index; eval $setvar
10484
10485 : check whether inet_aton exists
10486 set inet_aton d_inetaton
10487 eval $inlibc
10488
10489 : Look for isascii
10490 echo " "
10491 $cat >isascii.c <<'EOCP'
10492 #include <stdio.h>
10493 #include <ctype.h>
10494 int main() {
10495         int c = 'A';
10496         if (isascii(c))
10497                 exit(0);
10498         else
10499                 exit(1);
10500 }
10501 EOCP
10502 set isascii
10503 if eval $compile; then
10504         echo "isascii() found." >&4
10505         val="$define"
10506 else
10507         echo "isascii() NOT found." >&4
10508         val="$undef"
10509 fi
10510 set d_isascii
10511 eval $setvar
10512 $rm -f isascii*
10513
10514 : see if isnan exists
10515 set isnan d_isnan
10516 eval $inlibc
10517
10518 : see if isnanl exists
10519 set isnanl d_isnanl
10520 eval $inlibc
10521
10522 : see if killpg exists
10523 set killpg d_killpg
10524 eval $inlibc
10525
10526 : see if lchown exists
10527 echo " "
10528 $cat > try.c <<'EOCP'
10529 /* System header to define __stub macros and hopefully few prototypes,
10530     which can conflict with char lchown(); below.  */
10531 #include <assert.h>
10532 /* Override any gcc2 internal prototype to avoid an error.  */
10533 /* We use char because int might match the return type of a gcc2
10534    builtin and then its argument prototype would still apply.  */
10535 char lchown();
10536 int main() {
10537     /*  The GNU C library defines this for functions which it implements
10538         to always fail with ENOSYS.  Some functions are actually named
10539         something starting with __ and the normal name is an alias.  */
10540 #if defined (__stub_lchown) || defined (__stub___lchown)
10541 choke me
10542 #else
10543 lchown();
10544 #endif
10545 ; return 0; }
10546 EOCP
10547 set try
10548 if eval $compile; then
10549     $echo "lchown() found." >&4
10550     val="$define"
10551 else
10552     $echo "lchown() NOT found." >&4
10553     val="$undef"
10554 fi
10555 set d_lchown
10556 eval $setvar
10557
10558 : See if number of significant digits in a double precision number is known
10559 echo " "
10560 $cat >ldbl_dig.c <<EOM
10561 #$i_limits I_LIMITS
10562 #$i_float I_FLOAT
10563 #ifdef I_LIMITS
10564 #include <limits.h>
10565 #endif
10566 #ifdef I_FLOAT
10567 #include <float.h>
10568 #endif
10569 #ifdef LDBL_DIG
10570 printf("Contains LDBL_DIG");
10571 #endif
10572 EOM
10573 $cppstdin $cppflags $cppminus < ldbl_dig.c >ldbl_dig.E 2>/dev/null
10574 if $contains 'LDBL_DIG' ldbl_dig.E >/dev/null 2>&1; then
10575         echo "LDBL_DIG found." >&4
10576         val="$define"
10577 else
10578         echo "LDBL_DIG NOT found." >&4
10579         val="$undef"
10580 fi
10581 $rm -f ldbl_dig.?
10582 set d_ldbl_dig
10583 eval $setvar
10584
10585 : see if link exists
10586 set link d_link
10587 eval $inlibc
10588
10589 : see if localeconv exists
10590 set localeconv d_locconv
10591 eval $inlibc
10592
10593 : see if lockf exists
10594 set lockf d_lockf
10595 eval $inlibc
10596
10597 : see if prototype for lseek is available
10598 echo " "
10599 set d_lseekproto lseek $i_systypes sys/types.h $i_unistd unistd.h
10600 eval $hasproto
10601
10602 : see if lstat exists
10603 set lstat d_lstat
10604 eval $inlibc
10605
10606 : see if madvise exists
10607 set madvise d_madvise
10608 eval $inlibc
10609
10610 : see if mblen exists
10611 set mblen d_mblen
10612 eval $inlibc
10613
10614 : see if mbstowcs exists
10615 set mbstowcs d_mbstowcs
10616 eval $inlibc
10617
10618 : see if mbtowc exists
10619 set mbtowc d_mbtowc
10620 eval $inlibc
10621
10622 : see if memchr exists
10623 set memchr d_memchr
10624 eval $inlibc
10625
10626 : see if memcmp exists
10627 set memcmp d_memcmp
10628 eval $inlibc
10629
10630 : see if memcpy exists
10631 set memcpy d_memcpy
10632 eval $inlibc
10633
10634 : see if memmove exists
10635 set memmove d_memmove
10636 eval $inlibc
10637
10638 : see if memset exists
10639 set memset d_memset
10640 eval $inlibc
10641
10642 : see if mkdir exists
10643 set mkdir d_mkdir
10644 eval $inlibc
10645
10646 : see if mkdtemp exists
10647 set mkdtemp d_mkdtemp
10648 eval $inlibc
10649
10650 : see if mkfifo exists
10651 set mkfifo d_mkfifo
10652 eval $inlibc
10653
10654 : see if mkstemp exists
10655 set mkstemp d_mkstemp
10656 eval $inlibc
10657
10658 : see if mkstemps exists
10659 set mkstemps d_mkstemps
10660 eval $inlibc
10661
10662 : see if mktime exists
10663 set mktime d_mktime
10664 eval $inlibc
10665
10666 : see if this is a sys/mman.h system
10667 set sys/mman.h i_sysmman
10668 eval $inhdr
10669
10670 : see if mmap exists
10671 set mmap d_mmap
10672 eval $inlibc
10673 : see what shmat returns
10674 : default to something harmless
10675 mmaptype='void *'
10676 case "$i_sysmman$d_mmap" in
10677 "$define$define")
10678         $cat >mmap.c <<'END'
10679 #include <sys/mman.h>
10680 void *mmap();
10681 END
10682         if $cc $ccflags -c mmap.c >/dev/null 2>&1; then
10683                 mmaptype='void *'
10684         else
10685                 mmaptype='caddr_t'
10686         fi
10687         echo "and it returns ($mmaptype)." >&4
10688         ;;
10689 esac
10690
10691
10692
10693 : see if modfl exists
10694 set modfl d_modfl
10695 eval $inlibc
10696
10697 d_modfl_pow32_bug="$undef"
10698
10699 case "$d_longdbl$d_modfl" in
10700 $define$define)
10701         $cat <<EOM
10702 Checking to see whether your modfl() is okay for large values...
10703 EOM
10704 $cat >try.c <<EOCP
10705 #include <math.h> 
10706 #include <stdio.h>
10707 int main() {
10708     long double nv = 4294967303.15;
10709     long double v, w;
10710     v = modfl(nv, &w);         
10711 #ifdef __GLIBC__
10712     printf("glibc");
10713 #endif
10714     printf(" %"$sPRIfldbl" %"$sPRIfldbl" %"$sPRIfldbl"\n", nv, v, w);
10715     return 0;
10716 }
10717 EOCP
10718         case "$osname:$gccversion" in
10719         aix:)   saveccflags="$ccflags"
10720                 ccflags="$ccflags -qlongdouble" ;; # to avoid core dump
10721         esac
10722         set try
10723         if eval $compile; then
10724                 foo=`$run ./try`
10725                 case "$foo" in
10726                 *" 4294967303.150000 1.150000 4294967302.000000")
10727                         echo >&4 "Your modfl() is broken for large values."
10728                         d_modfl_pow32_bug="$define"
10729                         case "$foo" in
10730                         glibc)  echo >&4 "You should upgrade your glibc to at least 2.2.2 to get a fixed modfl()."
10731                         ;;
10732                         esac
10733                         ;;
10734                 *" 4294967303.150000 0.150000 4294967303.000000")
10735                         echo >&4 "Your modfl() seems okay for large values."
10736                         ;;
10737                 *)      echo >&4 "I don't understand your modfl() at all."
10738                         d_modfl="$undef"
10739                         ;;
10740                 esac
10741                 $rm -f try.* try core core.try.*
10742         else
10743                 echo "I cannot figure out whether your modfl() is okay, assuming it isn't."
10744                 d_modfl="$undef"
10745         fi
10746         case "$osname:$gccversion" in
10747         aix:)   $ccflags="saveccflags" ;; # restore
10748         esac
10749         ;;
10750 esac
10751
10752 : see if mprotect exists
10753 set mprotect d_mprotect
10754 eval $inlibc
10755
10756 : see if msgctl exists
10757 set msgctl d_msgctl
10758 eval $inlibc
10759
10760 : see if msgget exists
10761 set msgget d_msgget
10762 eval $inlibc
10763
10764 : see if msgsnd exists
10765 set msgsnd d_msgsnd
10766 eval $inlibc
10767
10768 : see if msgrcv exists
10769 set msgrcv d_msgrcv
10770 eval $inlibc
10771
10772 : see how much of the 'msg*(2)' library is present.
10773 h_msg=true
10774 echo " "
10775 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
10776 *"$undef"*) h_msg=false;;
10777 esac
10778 case "$osname" in
10779 freebsd)
10780     case "`ipcs 2>&1`" in
10781     "SVID messages"*"not configured"*)
10782         echo "Your $osname does not have the msg*(2) configured." >&4
10783         h_msg=false
10784         val="$undef"
10785         set msgctl d_msgctl
10786         eval $setvar
10787         set msgget d_msgget
10788         eval $setvar
10789         set msgsnd d_msgsnd
10790         eval $setvar
10791         set msgrcv d_msgrcv
10792         eval $setvar
10793         ;;
10794     esac
10795     ;;
10796 esac
10797 : we could also check for sys/ipc.h ...
10798 if $h_msg && $test `./findhdr sys/msg.h`; then
10799         echo "You have the full msg*(2) library." >&4
10800         val="$define"
10801 else
10802         echo "You don't have the full msg*(2) library." >&4
10803         val="$undef"
10804 fi
10805 set d_msg
10806 eval $setvar
10807
10808
10809 echo " "
10810 echo "Checking to see if your system supports struct msghdr..." >&4
10811 set d_msghdr_s msghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
10812 eval $hasstruct
10813 case "$d_msghdr_s" in
10814 "$define")      echo "Yes, it does."   ;;
10815 *)              echo "No, it doesn't." ;;
10816 esac
10817
10818
10819 : see if msync exists
10820 set msync d_msync
10821 eval $inlibc
10822
10823 : see if munmap exists
10824 set munmap d_munmap
10825 eval $inlibc
10826
10827 : see if nice exists
10828 set nice d_nice
10829 eval $inlibc
10830
10831 : check for length of character
10832 echo " "
10833 case "$charsize" in
10834 '')
10835         echo "Checking to see how big your characters are (hey, you never know)..." >&4
10836         $cat >try.c <<'EOCP'
10837 #include <stdio.h>
10838 int main()
10839 {
10840     printf("%d\n", (int)sizeof(char));
10841     exit(0);
10842 }
10843 EOCP
10844         set try
10845         if eval $compile_ok; then
10846                 dflt=`$run ./try`
10847         else
10848                 dflt='1'
10849                 echo "(I can't seem to compile the test program.  Guessing...)"
10850         fi
10851         ;;
10852 *)
10853         dflt="$charsize"
10854         ;;
10855 esac
10856 rp="What is the size of a character (in bytes)?"
10857 . ./myread
10858 charsize="$ans"
10859 $rm -f try.c try
10860
10861 : check for volatile keyword
10862 echo " "
10863 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
10864 $cat >try.c <<'EOCP'
10865 int main()
10866 {
10867         typedef struct _goo_struct goo_struct;
10868         goo_struct * volatile goo = ((goo_struct *)0);
10869         struct _goo_struct {
10870                 long long_int;
10871                 int reg_int;
10872                 char char_var;
10873         };
10874         typedef unsigned short foo_t;
10875         char *volatile foo;
10876         volatile int bar;
10877         volatile foo_t blech;
10878         foo = foo;
10879 }
10880 EOCP
10881 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
10882         val="$define"
10883         echo "Yup, it does."
10884 else
10885         val="$undef"
10886         echo "Nope, it doesn't."
10887 fi
10888 set d_volatile
10889 eval $setvar
10890 $rm -f try.*
10891
10892
10893 echo " "
10894 $echo "Choosing the C types to be used for Perl's internal types..." >&4
10895
10896 case "$use64bitint:$d_quad:$quadtype" in
10897 define:define:?*)
10898         ivtype="$quadtype"
10899         uvtype="$uquadtype"
10900         ivsize=8
10901         uvsize=8
10902         ;;
10903 *)      ivtype="long"
10904         uvtype="unsigned long"
10905         ivsize=$longsize
10906         uvsize=$longsize
10907         ;;
10908 esac
10909
10910 case "$uselongdouble:$d_longdbl" in
10911 define:define)
10912         nvtype="long double"
10913         nvsize=$longdblsize
10914         ;;
10915 *)      nvtype=double
10916         nvsize=$doublesize
10917         ;;
10918 esac
10919
10920 $echo "(IV will be "$ivtype", $ivsize bytes)"
10921 $echo "(UV will be "$uvtype", $uvsize bytes)"
10922 $echo "(NV will be "$nvtype", $nvsize bytes)"
10923
10924 $cat >try.c <<EOCP
10925 #$i_inttypes I_INTTYPES
10926 #ifdef I_INTTYPES
10927 #include <inttypes.h>
10928 #endif
10929 #include <stdio.h>
10930 int main() {
10931 #ifdef INT8
10932    int8_t i =  INT8_MAX;
10933   uint8_t u = UINT8_MAX;
10934   printf("int8_t\n");
10935 #endif
10936 #ifdef INT16
10937    int16_t i =  INT16_MAX;
10938   uint16_t i = UINT16_MAX;
10939   printf("int16_t\n");
10940 #endif
10941 #ifdef INT32
10942    int32_t i =  INT32_MAX;
10943   uint32_t u = UINT32_MAX;
10944   printf("int32_t\n");
10945 #endif
10946 }
10947 EOCP
10948
10949 case "$i8type" in
10950 '')     case "$charsize" in
10951         1)      i8type=char
10952                 u8type="unsigned char"
10953                 i8size=$charsize
10954                 u8size=$charsize
10955                 ;;
10956         esac
10957         ;;
10958 esac
10959 case "$i8type" in
10960 '')     set try -DINT8
10961         if eval $compile; then
10962                 case "`$run ./try`" in
10963                 int8_t) i8type=int8_t
10964                         u8type=uint8_t
10965                         i8size=1
10966                         u8size=1
10967                         ;;
10968                 esac
10969         fi
10970         ;;
10971 esac
10972 case "$i8type" in
10973 '')     if $test $charsize -ge 1; then
10974                 i8type=char
10975                 u8type="unsigned char"
10976                 i8size=$charsize
10977                 u8size=$charsize
10978         fi
10979         ;;
10980 esac
10981
10982 case "$i16type" in
10983 '')     case "$shortsize" in
10984         2)      i16type=short
10985                 u16type="unsigned short"
10986                 i16size=$shortsize
10987                 u16size=$shortsize
10988                 ;;
10989         esac
10990         ;;
10991 esac
10992 case "$i16type" in
10993 '')     set try -DINT16
10994         if eval $compile; then
10995                 case "`$run ./try`" in
10996                 int16_t)
10997                         i16type=int16_t
10998                         u16type=uint16_t
10999                         i16size=2
11000                         u16size=2
11001                         ;;
11002                 esac
11003         fi
11004         ;;
11005 esac
11006 case "$i16type" in
11007 '')     if $test $shortsize -ge 2; then
11008                 i16type=short
11009                 u16type="unsigned short"
11010                 i16size=$shortsize
11011                 u16size=$shortsize
11012         fi
11013         ;;
11014 esac
11015
11016 case "$i32type" in
11017 '')     case "$longsize" in
11018         4)      i32type=long
11019                 u32type="unsigned long"
11020                 i32size=$longsize
11021                 u32size=$longsize
11022                 ;;
11023         *)      case "$intsize" in
11024                 4)      i32type=int
11025                         u32type="unsigned int"
11026                         i32size=$intsize
11027                         u32size=$intsize
11028                         ;;
11029                 esac
11030                 ;;
11031         esac
11032         ;;
11033 esac
11034 case "$i32type" in
11035 '')     set try -DINT32
11036         if eval $compile; then
11037                 case "`$run ./try`" in
11038                 int32_t)
11039                         i32type=int32_t
11040                         u32type=uint32_t
11041                         i32size=4
11042                         u32size=4
11043                         ;;
11044                 esac
11045         fi
11046         ;;
11047 esac
11048 case "$i32type" in
11049 '')     if $test $intsize -ge 4; then
11050                 i32type=int
11051                 u32type="unsigned int"
11052                 i32size=$intsize
11053                 u32size=$intsize
11054         fi
11055         ;;
11056 esac
11057
11058 case "$i64type" in
11059 '')     case "$d_quad:$quadtype" in
11060         define:?*)
11061                 i64type="$quadtype"
11062                 u64type="$uquadtype"
11063                 i64size=8
11064                 u64size=8
11065                 ;;
11066         esac
11067         ;;
11068 esac
11069
11070 $echo "Checking how many bits of your UVs your NVs can preserve..." >&4
11071 : volatile so that the compiler has to store it out to memory.
11072 if test X"$d_volatile" = X"$define"; then
11073         volatile=volatile
11074 fi
11075 $cat <<EOP >try.c
11076 #include <stdio.h>
11077 #include <sys/types.h>
11078 #include <signal.h>
11079 #ifdef SIGFPE
11080 $volatile int bletched = 0;
11081 $signal_t blech(s) int s; { bletched = 1; }
11082 #endif
11083 int main() {
11084     $uvtype u = 0;
11085     $nvtype d;
11086     int     n = 8 * $uvsize;
11087     int     i;
11088 #ifdef SIGFPE
11089     signal(SIGFPE, blech);
11090 #endif
11091
11092     for (i = 0; i < n; i++) {
11093       u = u << 1 | ($uvtype)1;
11094       d = ($nvtype)u;
11095       if (($uvtype)d != u)
11096         break;
11097       if (d <= 0)
11098         break;
11099       d = ($nvtype)(u - 1);
11100       if (($uvtype)d != (u - 1))
11101         break;
11102 #ifdef SIGFPE
11103       if (bletched) {
11104         break;
11105 #endif
11106       } 
11107     }
11108     printf("%d\n", ((i == n) ? -n : i));
11109     exit(0);
11110 }
11111 EOP
11112 set try
11113
11114 d_nv_preserves_uv="$undef"
11115 if eval $compile; then
11116         d_nv_preserves_uv_bits="`$run ./try`"
11117 fi
11118 case "$d_nv_preserves_uv_bits" in
11119 \-[1-9]*)       
11120         d_nv_preserves_uv_bits=`expr 0 - $d_nv_preserves_uv_bits`
11121         $echo "Your NVs can preserve all $d_nv_preserves_uv_bits bits of your UVs."  2>&1
11122         d_nv_preserves_uv="$define"
11123         ;;
11124 [1-9]*) $echo "Your NVs can preserve only $d_nv_preserves_uv_bits bits of your UVs."  2>&1
11125         d_nv_preserves_uv="$undef" ;;
11126 *)      $echo "Can't figure out how many bits your NVs preserve." 2>&1
11127         d_nv_preserves_uv_bits="$undef" ;;
11128 esac
11129
11130 $rm -f try.* try
11131
11132
11133 : check for off64_t
11134 echo " "
11135 echo "Checking to see if you have off64_t..." >&4
11136 $cat >try.c <<EOCP
11137 #include <sys/types.h>
11138 #include <unistd.h>
11139 int main() { off64_t x = 7; }
11140 EOCP
11141 set try
11142 if eval $compile; then
11143         val="$define"
11144         echo "You have off64_t."
11145 else
11146         val="$undef"
11147         echo "You do not have off64_t."
11148         case "$lseeksize" in
11149         8) echo "(Your off_t is 64 bits, so you could use that.)" ;;
11150         esac
11151 fi
11152 $rm -f try.* try
11153 set d_off64_t
11154 eval $setvar
11155
11156 : see if POSIX threads are available
11157 set pthread.h i_pthread
11158 eval $inhdr
11159
11160
11161
11162
11163 : how to create joinable pthreads
11164 if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
11165         echo " "
11166         echo "Checking what constant to use for creating joinable pthreads..." >&4 
11167         $cat >try.c <<'EOCP'
11168 #include <pthread.h>
11169 int main() {
11170     int detachstate = JOINABLE;
11171 }
11172 EOCP
11173         set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
11174         if eval $compile; then
11175                 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
11176                 val="$undef" # Yes, undef.
11177                 set d_old_pthread_create_joinable
11178                 eval $setvar
11179                 val=""
11180                 set old_pthread_create_joinable
11181                 eval $setvar
11182         else
11183                 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
11184                 if eval $compile; then
11185                         echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
11186                         val="$define"
11187                         set d_old_pthread_create_joinable
11188                         eval $setvar
11189                         val=PTHREAD_CREATE_UNDETACHED
11190                         set old_pthread_create_joinable
11191                         eval $setvar
11192                 else            
11193                         set try -DJOINABLE=__UNDETACHED
11194                         if eval $compile; then
11195                                 echo "You seem to use __UNDETACHED." >&4
11196                                 val="$define"
11197                                 set d_old_pthread_create_joinable
11198                                 eval $setvar
11199                                 val=__UNDETACHED
11200                                 set old_pthread_create_joinable
11201                                 eval $setvar
11202                         else
11203                                 echo "Egads, nothing obvious found.  Guessing that you use 0." >&4
11204                                 val="$define"
11205                                 set d_old_pthread_create_joinable
11206                                 eval $setvar
11207                                 val=0
11208                                 set old_pthread_create_joinable
11209                                 eval $setvar
11210                         fi
11211                 fi
11212         fi
11213         $rm -f try try.*
11214 else
11215     d_old_pthread_create_joinable="$undef"
11216     old_pthread_create_joinable=""
11217 fi
11218
11219 : see if pause exists
11220 set pause d_pause
11221 eval $inlibc
11222
11223 : see if pipe exists
11224 set pipe d_pipe
11225 eval $inlibc
11226
11227 : see if poll exists
11228 set poll d_poll
11229 eval $inlibc
11230
11231
11232 : see whether the various POSIXish _yields exist
11233 $cat >try.c <<EOP
11234 #include <pthread.h>
11235 #include <stdio.h>
11236 int main() {
11237 #ifdef SCHED_YIELD
11238         sched_yield();
11239 #else
11240 #ifdef PTHREAD_YIELD
11241         pthread_yield();
11242 #else
11243 #ifdef PTHREAD_YIELD_NULL
11244         pthread_yield(NULL);
11245 #endif
11246 #endif
11247 #endif
11248 }
11249 EOP
11250 : see if sched_yield exists
11251 set try -DSCHED_YIELD
11252 if eval $compile; then
11253     val="$define"
11254     sched_yield='sched_yield()'
11255 else
11256     val="$undef"
11257 fi
11258 case "$usethreads" in
11259 $define)
11260         case "$val" in
11261         $define) echo 'sched_yield() found.' >&4        ;;
11262         *)       echo 'sched_yield() NOT found.' >&4    ;;
11263         esac
11264 esac
11265 set d_sched_yield
11266 eval $setvar
11267
11268 : see if pthread_yield exists
11269 set try -DPTHREAD_YIELD
11270 if eval $compile; then
11271     val="$define"
11272     case "$sched_yield" in
11273     '') sched_yield='pthread_yield()' ;;
11274     esac
11275 else
11276     set try -DPTHREAD_YIELD_NULL
11277     if eval $compile; then
11278         val="$define"
11279         case "$sched_yield" in
11280         '') sched_yield='pthread_yield(NULL)' ;;
11281         esac
11282     else
11283         val="$undef"
11284     fi
11285 fi
11286 case "$usethreads" in
11287 $define)
11288         case "$val" in
11289         $define) echo 'pthread_yield() found.' >&4      ;;
11290         *)       echo 'pthread_yield() NOT found.' >&4  ;;
11291         esac
11292         ;;
11293 esac
11294 set d_pthread_yield
11295 eval $setvar
11296
11297 case "$sched_yield" in
11298 '') sched_yield=undef ;;
11299 esac
11300
11301 $rm -f try try.*
11302
11303 : see if this is a pwd.h system
11304 set pwd.h i_pwd
11305 eval $inhdr
11306
11307 case "$i_pwd" in
11308 $define)
11309         xxx=`./findhdr pwd.h`
11310         $cppstdin $cppflags $cppminus < $xxx >$$.h
11311
11312         if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
11313                 val="$define"
11314         else
11315                 val="$undef"
11316         fi
11317         set d_pwquota
11318         eval $setvar
11319
11320         if $contains 'pw_age' $$.h >/dev/null 2>&1; then
11321                 val="$define"
11322         else
11323                 val="$undef"
11324         fi
11325         set d_pwage
11326         eval $setvar
11327
11328         if $contains 'pw_change' $$.h >/dev/null 2>&1; then
11329                 val="$define"
11330         else
11331                 val="$undef"
11332         fi
11333         set d_pwchange
11334         eval $setvar
11335
11336         if $contains 'pw_class' $$.h >/dev/null 2>&1; then
11337                 val="$define"
11338         else
11339                 val="$undef"
11340         fi
11341         set d_pwclass
11342         eval $setvar
11343
11344         if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
11345                 val="$define"
11346         else
11347                 val="$undef"
11348         fi
11349         set d_pwexpire
11350         eval $setvar
11351
11352         if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
11353                 val="$define"
11354         else
11355                 val="$undef"
11356         fi
11357         set d_pwcomment
11358         eval $setvar
11359
11360         if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
11361                 val="$define"
11362         else
11363                 val="$undef"
11364         fi
11365         set d_pwgecos
11366         eval $setvar
11367
11368         if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
11369                 val="$define"
11370         else
11371                 val="$undef"
11372         fi
11373         set d_pwpasswd
11374         eval $setvar
11375
11376         $rm -f $$.h
11377         ;;
11378 *)
11379         val="$undef"; 
11380         set d_pwquota; eval $setvar
11381         set d_pwage; eval $setvar
11382         set d_pwchange; eval $setvar
11383         set d_pwclass; eval $setvar
11384         set d_pwexpire; eval $setvar
11385         set d_pwcomment; eval $setvar
11386         set d_pwgecos; eval $setvar
11387         set d_pwpasswd; eval $setvar
11388         ;;
11389 esac
11390
11391 : see if readdir and friends exist
11392 set readdir d_readdir
11393 eval $inlibc
11394 set seekdir d_seekdir
11395 eval $inlibc
11396 set telldir d_telldir
11397 eval $inlibc
11398 set rewinddir d_rewinddir
11399 eval $inlibc
11400
11401 : see if readlink exists
11402 set readlink d_readlink
11403 eval $inlibc
11404
11405 : see if readv exists
11406 set readv d_readv
11407 eval $inlibc
11408
11409 : see if recvmsg exists
11410 set recvmsg d_recvmsg
11411 eval $inlibc
11412
11413 : see if rename exists
11414 set rename d_rename
11415 eval $inlibc
11416
11417 : see if rmdir exists
11418 set rmdir d_rmdir
11419 eval $inlibc
11420
11421 : see if memory.h is available.
11422 val=''
11423 set memory.h val
11424 eval $inhdr
11425
11426 : See if it conflicts with string.h
11427 case "$val" in
11428 $define)
11429         case "$strings" in
11430         '') ;;
11431         *)
11432                 $cppstdin $cppflags $cppminus < $strings > mem.h
11433                 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
11434                         echo " "
11435                         echo "We won't be including <memory.h>."
11436                         val="$undef"
11437                 fi
11438                 $rm -f mem.h
11439                 ;;
11440         esac
11441 esac
11442 set i_memory
11443 eval $setvar
11444
11445 : can bcopy handle overlapping blocks?
11446 val="$undef"
11447 case "$d_bcopy" in
11448 "$define")
11449         echo " "
11450         echo "Checking to see if your bcopy() can do overlapping copies..." >&4
11451         $cat >try.c <<EOCP
11452 #$i_memory I_MEMORY
11453 #$i_stdlib I_STDLIB
11454 #$i_string I_STRING
11455 #$i_unistd I_UNISTD
11456 EOCP
11457         $cat >>try.c <<'EOCP'
11458 #include <stdio.h>
11459 #ifdef I_MEMORY
11460 #  include <memory.h>
11461 #endif
11462 #ifdef I_STDLIB
11463 #  include <stdlib.h>
11464 #endif
11465 #ifdef I_STRING
11466 #  include <string.h>
11467 #else
11468 #  include <strings.h>
11469 #endif
11470 #ifdef I_UNISTD
11471 #  include <unistd.h>  /* Needed for NetBSD */
11472 #endif
11473 int main()
11474 {
11475 char buf[128], abc[128];
11476 char *b;
11477 int len;
11478 int off;
11479 int align;
11480
11481 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
11482
11483 for (align = 7; align >= 0; align--) {
11484         for (len = 36; len; len--) {
11485                 b = buf+align;
11486                 bcopy(abc, b, len);
11487                 for (off = 1; off <= len; off++) {
11488                         bcopy(b, b+off, len);
11489                         bcopy(b+off, b, len);
11490                         if (bcmp(b, abc, len))
11491                                 exit(1);
11492                 }
11493         }
11494 }
11495 exit(0);
11496 }
11497 EOCP
11498         set try
11499         if eval $compile_ok; then
11500                 if $run ./try 2>/dev/null; then
11501                         echo "Yes, it can."
11502                         val="$define"
11503                 else
11504                         echo "It can't, sorry."
11505                         case "$d_memmove" in
11506                         "$define") echo "But that's Ok since you have memmove()." ;;
11507                         esac
11508                 fi
11509         else
11510                 echo "(I can't compile the test program, so we'll assume not...)"
11511                 case "$d_memmove" in
11512                 "$define") echo "But that's Ok since you have memmove()." ;;
11513                 esac
11514         fi
11515         ;;
11516 esac
11517 $rm -f try.* try core
11518 set d_safebcpy
11519 eval $setvar
11520
11521 : can memcpy handle overlapping blocks?
11522 val="$undef"
11523 case "$d_memcpy" in
11524 "$define")
11525         echo " "
11526         echo "Checking to see if your memcpy() can do overlapping copies..." >&4
11527         $cat >try.c <<EOCP
11528 #$i_memory I_MEMORY
11529 #$i_stdlib I_STDLIB
11530 #$i_string I_STRING
11531 #$i_unistd I_UNISTD
11532 EOCP
11533         $cat >>try.c <<'EOCP'
11534 #include <stdio.h>
11535 #ifdef I_MEMORY
11536 #  include <memory.h>
11537 #endif
11538 #ifdef I_STDLIB
11539 #  include <stdlib.h>
11540 #endif
11541 #ifdef I_STRING
11542 #  include <string.h>
11543 #else
11544 #  include <strings.h>
11545 #endif
11546 #ifdef I_UNISTD
11547 #  include <unistd.h>  /* Needed for NetBSD */
11548 #endif
11549 int main()
11550 {
11551 char buf[128], abc[128];
11552 char *b;
11553 int len;
11554 int off;
11555 int align;
11556
11557 /* Copy "abcde..." string to char abc[] so that gcc doesn't
11558    try to store the string in read-only memory. */
11559 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
11560
11561 for (align = 7; align >= 0; align--) {
11562         for (len = 36; len; len--) {
11563                 b = buf+align;
11564                 memcpy(b, abc, len);
11565                 for (off = 1; off <= len; off++) {
11566                         memcpy(b+off, b, len);
11567                         memcpy(b, b+off, len);
11568                         if (memcmp(b, abc, len))
11569                                 exit(1);
11570                 }
11571         }
11572 }
11573 exit(0);
11574 }
11575 EOCP
11576         set try
11577         if eval $compile_ok; then
11578                 if $run ./try 2>/dev/null; then
11579                         echo "Yes, it can."
11580                         val="$define"
11581                 else
11582                         echo "It can't, sorry."
11583                         case "$d_memmove" in
11584                         "$define") echo "But that's Ok since you have memmove()." ;;
11585                         esac
11586                 fi
11587         else
11588                 echo "(I can't compile the test program, so we'll assume not...)"
11589                 case "$d_memmove" in
11590                 "$define") echo "But that's Ok since you have memmove()." ;;
11591                 esac
11592         fi
11593         ;;
11594 esac
11595 $rm -f try.* try core
11596 set d_safemcpy
11597 eval $setvar
11598
11599 : can memcmp be trusted to compare relative magnitude?
11600 val="$undef"
11601 case "$d_memcmp" in
11602 "$define")
11603         echo " "
11604         echo "Checking if your memcmp() can compare relative magnitude..." >&4
11605         $cat >try.c <<EOCP
11606 #$i_memory I_MEMORY
11607 #$i_stdlib I_STDLIB
11608 #$i_string I_STRING
11609 #$i_unistd I_UNISTD
11610 EOCP
11611         $cat >>try.c <<'EOCP'
11612 #include <stdio.h>
11613 #ifdef I_MEMORY
11614 #  include <memory.h>
11615 #endif
11616 #ifdef I_STDLIB
11617 #  include <stdlib.h>
11618 #endif
11619 #ifdef I_STRING
11620 #  include <string.h>
11621 #else
11622 #  include <strings.h>
11623 #endif
11624 #ifdef I_UNISTD
11625 #  include <unistd.h>  /* Needed for NetBSD */
11626 #endif
11627 int main()
11628 {
11629 char a = -1;
11630 char b = 0;
11631 if ((a < b) && memcmp(&a, &b, 1) < 0)
11632         exit(1);
11633 exit(0);
11634 }
11635 EOCP
11636         set try
11637         if eval $compile_ok; then
11638                 if $run ./try 2>/dev/null; then
11639                         echo "Yes, it can."
11640                         val="$define"
11641                 else
11642                         echo "No, it can't (it uses signed chars)."
11643                 fi
11644         else
11645                 echo "(I can't compile the test program, so we'll assume not...)"
11646         fi
11647         ;;
11648 esac
11649 $rm -f try.* try core
11650 set d_sanemcmp
11651 eval $setvar
11652
11653 : see if prototype for sbrk is available
11654 echo " "
11655 set d_sbrkproto sbrk $i_unistd unistd.h
11656 eval $hasproto
11657
11658 : see if select exists
11659 set select d_select
11660 eval $inlibc
11661
11662 : see if semctl exists
11663 set semctl d_semctl
11664 eval $inlibc
11665
11666 : see if semget exists
11667 set semget d_semget
11668 eval $inlibc
11669
11670 : see if semop exists
11671 set semop d_semop
11672 eval $inlibc
11673
11674 : see how much of the 'sem*(2)' library is present.
11675 h_sem=true
11676 echo " "
11677 case "$d_semctl$d_semget$d_semop" in
11678 *"$undef"*) h_sem=false;;
11679 esac
11680 case "$osname" in
11681 freebsd)
11682     case "`ipcs 2>&1`" in
11683     "SVID messages"*"not configured"*)
11684         echo "Your $osname does not have the sem*(2) configured." >&4
11685         h_sem=false
11686         val="$undef"
11687         set semctl d_semctl
11688         eval $setvar
11689         set semget d_semget
11690         eval $setvar
11691         set semop d_semop
11692         eval $setvar
11693         ;;
11694     esac
11695     ;;
11696 esac
11697 : we could also check for sys/ipc.h ...
11698 if $h_sem && $test `./findhdr sys/sem.h`; then
11699         echo "You have the full sem*(2) library." >&4
11700         val="$define"
11701 else
11702         echo "You don't have the full sem*(2) library." >&4
11703         val="$undef"
11704 fi
11705 set d_sem
11706 eval $setvar
11707
11708 : see whether sys/sem.h defines union semun
11709 echo " "
11710 $cat > try.c <<'END'
11711 #include <sys/types.h>
11712 #include <sys/ipc.h>
11713 #include <sys/sem.h>
11714 int main () { union semun semun; semun.buf = 0; }
11715 END
11716 set try
11717 if eval $compile; then
11718     echo "You have union semun in <sys/sem.h>." >&4
11719     val="$define"
11720 else
11721     echo "You do not have union semun in <sys/sem.h>." >&4
11722     val="$undef"
11723 fi
11724 $rm -f try try.c try.h
11725 set d_union_semun
11726 eval $setvar
11727
11728 : see how to do semctl IPC_STAT
11729 case "$d_sem" in
11730 $define)
11731     : see whether semctl IPC_STAT can use union semun
11732     echo " "
11733     $cat > try.h <<END
11734 #ifndef S_IRUSR
11735 #   ifdef S_IREAD
11736 #       define S_IRUSR S_IREAD
11737 #       define S_IWUSR S_IWRITE
11738 #       define S_IXUSR S_IEXEC
11739 #   else
11740 #       define S_IRUSR 0400
11741 #       define S_IWUSR 0200
11742 #       define S_IXUSR 0100
11743 #   endif
11744 #   define S_IRGRP (S_IRUSR>>3)
11745 #   define S_IWGRP (S_IWUSR>>3)
11746 #   define S_IXGRP (S_IXUSR>>3)
11747 #   define S_IROTH (S_IRUSR>>6)
11748 #   define S_IWOTH (S_IWUSR>>6)
11749 #   define S_IXOTH (S_IXUSR>>6)
11750 #endif
11751 #ifndef S_IRWXU
11752 #   define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
11753 #   define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
11754 #   define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
11755 #endif
11756 END
11757
11758     $cat > try.c <<END
11759 #include <sys/types.h>
11760 #include <sys/ipc.h>
11761 #include <sys/sem.h>
11762 #include <sys/stat.h>
11763 #include <stdio.h>
11764 #include <errno.h>
11765 #include "try.h"
11766 #ifndef errno
11767 extern int errno;
11768 #endif
11769 #$d_union_semun HAS_UNION_SEMUN
11770 int main() {
11771     union semun
11772 #ifndef HAS_UNION_SEMUN
11773     {
11774         int val;
11775         struct semid_ds *buf;
11776         unsigned short *array;
11777     }
11778 #endif
11779     arg;
11780     int sem, st;
11781
11782 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
11783     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
11784     if (sem > -1) {
11785         struct semid_ds argbuf;
11786         arg.buf = &argbuf;
11787 #       ifdef IPC_STAT
11788         st = semctl(sem, 0, IPC_STAT, arg);
11789         if (st == 0)
11790             printf("semun\n");
11791         else
11792 #       endif /* IPC_STAT */
11793             printf("semctl IPC_STAT failed: errno = %d\n", errno);
11794 #       ifdef IPC_RMID
11795         if (semctl(sem, 0, IPC_RMID, arg) != 0)
11796 #       endif /* IPC_RMID */
11797             printf("semctl IPC_RMID failed: errno = %d\n", errno);
11798     } else
11799 #endif /* IPC_PRIVATE && ... */
11800         printf("semget failed: errno = %d\n", errno);
11801   return 0;
11802 }
11803 END
11804     val="$undef"
11805     set try
11806     if eval $compile; then
11807         xxx=`$run ./try`
11808         case "$xxx" in
11809         semun) val="$define" ;;
11810         esac
11811     fi
11812     $rm -f try try.c
11813     set d_semctl_semun
11814     eval $setvar
11815     case "$d_semctl_semun" in
11816     $define)
11817         echo "You can use union semun for semctl IPC_STAT." >&4
11818         also='also'
11819         ;;
11820     *)  echo "You cannot use union semun for semctl IPC_STAT." >&4
11821         also=''
11822         ;;
11823     esac
11824
11825     : see whether semctl IPC_STAT can use struct semid_ds pointer
11826     $cat > try.c <<'END'
11827 #include <sys/types.h>
11828 #include <sys/ipc.h>
11829 #include <sys/sem.h>
11830 #include <sys/stat.h>
11831 #include "try.h"
11832 #include <stdio.h>
11833 #include <errno.h>
11834 #ifndef errno
11835 extern int errno;
11836 #endif
11837 int main() {
11838     struct semid_ds arg;
11839     int sem, st;
11840
11841 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) &&  defined(S_IRWXO) && defined(IPC_CREAT)
11842     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
11843     if (sem > -1) {
11844 #       ifdef IPC_STAT
11845         st = semctl(sem, 0, IPC_STAT, &arg);
11846         if (st == 0)
11847             printf("semid_ds\n");
11848         else
11849 #       endif /* IPC_STAT */
11850             printf("semctl IPC_STAT failed: errno = %d\n", errno);
11851 #       ifdef IPC_RMID
11852         if (semctl(sem, 0, IPC_RMID, &arg) != 0)
11853 #       endif /* IPC_RMID */
11854             printf("semctl IPC_RMID failed: errno = %d\n", errno);
11855     } else
11856 #endif /* IPC_PRIVATE && ... */
11857         printf("semget failed: errno = %d\n", errno);
11858
11859     return 0;
11860 }
11861 END
11862     val="$undef"
11863     set try
11864     if eval $compile; then
11865         xxx=`$run ./try`
11866         case "$xxx" in
11867         semid_ds) val="$define" ;;
11868         esac
11869     fi
11870     $rm -f try try.c
11871     set d_semctl_semid_ds
11872     eval $setvar
11873     case "$d_semctl_semid_ds" in
11874     $define)
11875         echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
11876         ;;
11877     *)  echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
11878         ;;
11879     esac
11880     $rm -f try.h
11881     ;;
11882 *)  val="$undef"
11883
11884     # We do not have the full sem*(2) library, so assume we can not
11885     # use either.
11886
11887     set d_semctl_semun
11888     eval $setvar
11889
11890     set d_semctl_semid_ds
11891     eval $setvar
11892     ;;
11893 esac
11894
11895 : see if sendmsg exists
11896 set sendmsg d_sendmsg
11897 eval $inlibc
11898
11899 : see if setegid exists
11900 set setegid d_setegid
11901 eval $inlibc
11902
11903 : see if seteuid exists
11904 set seteuid d_seteuid
11905 eval $inlibc
11906
11907 : see if setgrent exists
11908 set setgrent d_setgrent
11909 eval $inlibc
11910
11911 : see if sethostent exists
11912 set sethostent d_sethent
11913 eval $inlibc
11914
11915 : see if setitimer exists
11916 set setitimer d_setitimer
11917 eval $inlibc
11918
11919 : see if setlinebuf exists
11920 set setlinebuf d_setlinebuf
11921 eval $inlibc
11922
11923 : see if setlocale exists
11924 set setlocale d_setlocale
11925 eval $inlibc
11926
11927 : see if setnetent exists
11928 set setnetent d_setnent
11929 eval $inlibc
11930
11931 : see if setprotoent exists
11932 set setprotoent d_setpent
11933 eval $inlibc
11934
11935 : see if setpgid exists
11936 set setpgid d_setpgid
11937 eval $inlibc
11938
11939 : see if setpgrp2 exists
11940 set setpgrp2 d_setpgrp2
11941 eval $inlibc
11942
11943 : see if setpriority exists
11944 set setpriority d_setprior
11945 eval $inlibc
11946
11947 : see if setproctitle exists
11948 set setproctitle d_setproctitle
11949 eval $inlibc
11950
11951 : see if setpwent exists
11952 set setpwent d_setpwent
11953 eval $inlibc
11954
11955 : see if setregid exists
11956 set setregid d_setregid
11957 eval $inlibc
11958 set setresgid d_setresgid
11959 eval $inlibc
11960
11961 : see if setreuid exists
11962 set setreuid d_setreuid
11963 eval $inlibc
11964 set setresuid d_setresuid
11965 eval $inlibc
11966
11967 : see if setrgid exists
11968 set setrgid d_setrgid
11969 eval $inlibc
11970
11971 : see if setruid exists
11972 set setruid d_setruid
11973 eval $inlibc
11974
11975 : see if setservent exists
11976 set setservent d_setsent
11977 eval $inlibc
11978
11979 : see if setsid exists
11980 set setsid d_setsid
11981 eval $inlibc
11982
11983 : see if setvbuf exists
11984 set setvbuf d_setvbuf
11985 eval $inlibc
11986
11987 : see if sfio.h is available
11988 set sfio.h i_sfio
11989 eval $inhdr
11990
11991
11992 : see if sfio library is available
11993 case "$i_sfio" in
11994 $define)
11995         val=''
11996         set sfreserve val
11997         eval $inlibc
11998         ;;
11999 *)
12000         val="$undef"
12001         ;;
12002 esac
12003 : Ok, but do we want to use it.
12004 case "$val" in
12005 $define)
12006         case "$usesfio" in
12007         true|$define|[yY]*) dflt='y';;
12008         *) dflt='n';;
12009         esac
12010         echo "$package can use the sfio library, but it is experimental."
12011         case "$useperlio" in
12012         "$undef")
12013             echo "For sfio also the PerlIO abstraction layer is needed."
12014             echo "Earlier you said you wouldn't want that."
12015             ;;
12016         esac
12017         rp="You seem to have sfio available, do you want to try using it?"
12018         . ./myread
12019         case "$ans" in
12020         y|Y)    echo "Ok, turning on both sfio and PerlIO, then."
12021                 useperlio="$define"
12022                 val="$define"
12023                 ;;
12024         *)      echo "Ok, avoiding sfio this time.  I'll use stdio instead."
12025                 val="$undef"
12026                 ;;
12027         esac
12028         ;;
12029 *)      case "$usesfio" in
12030         true|$define|[yY]*)
12031                 echo "Sorry, cannot find sfio on this machine." >&4
12032                 echo "Ignoring your setting of usesfio=$usesfio." >&4
12033                 val="$undef"
12034                 ;;
12035         esac
12036         ;;
12037 esac
12038 set d_sfio
12039 eval $setvar
12040 case "$d_sfio" in
12041 $define) usesfio='true';;
12042 *) usesfio='false';;
12043 esac
12044 case "$d_sfio" in
12045 $define) ;;
12046 *)      : Remove sfio from list of libraries to use
12047         set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
12048         shift
12049         libs="$*"
12050         echo "libs = $libs" >&4
12051 ;;
12052 esac
12053
12054
12055 : see if shmctl exists
12056 set shmctl d_shmctl
12057 eval $inlibc
12058
12059 : see if shmget exists
12060 set shmget d_shmget
12061 eval $inlibc
12062
12063 : see if shmat exists
12064 set shmat d_shmat
12065 eval $inlibc
12066 : see what shmat returns
12067 case "$d_shmat" in
12068 "$define")
12069         $cat >shmat.c <<'END'
12070 #include <sys/shm.h>
12071 void *shmat();
12072 END
12073         if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
12074                 shmattype='void *'
12075         else
12076                 shmattype='char *'
12077         fi
12078         echo "and it returns ($shmattype)." >&4
12079         : see if a prototype for shmat is available
12080         xxx=`./findhdr sys/shm.h`
12081         $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
12082         if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
12083                 val="$define"
12084         else
12085                 val="$undef"
12086         fi
12087         $rm -f shmat.[co]
12088         ;;
12089 *)
12090         val="$undef"
12091         ;;
12092 esac
12093 set d_shmatprototype
12094 eval $setvar
12095
12096 : see if shmdt exists
12097 set shmdt d_shmdt
12098 eval $inlibc
12099
12100 : see how much of the 'shm*(2)' library is present.
12101 h_shm=true
12102 echo " "
12103 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
12104 *"$undef"*) h_shm=false;;
12105 esac
12106 case "$osname" in
12107 freebsd)
12108     case "`ipcs 2>&1`" in
12109     "SVID shared memory"*"not configured"*)
12110         echo "Your $osname does not have the shm*(2) configured." >&4
12111         h_shm=false
12112         val="$undef"
12113         set shmctl d_shmctl
12114         evat $setvar
12115         set shmget d_shmget
12116         evat $setvar
12117         set shmat d_shmat
12118         evat $setvar
12119         set shmdt d_shmdt
12120         evat $setvar
12121         ;;
12122     esac
12123     ;;
12124 esac
12125 : we could also check for sys/ipc.h ...
12126 if $h_shm && $test `./findhdr sys/shm.h`; then
12127         echo "You have the full shm*(2) library." >&4
12128         val="$define"
12129 else
12130         echo "You don't have the full shm*(2) library." >&4
12131         val="$undef"
12132 fi
12133 set d_shm
12134 eval $setvar
12135
12136 echo " "
12137 : see if we have sigaction
12138 if set sigaction val -f d_sigaction; eval $csym; $val; then
12139         echo 'sigaction() found.' >&4
12140         $cat > try.c <<'EOP'
12141 #include <stdio.h>
12142 #include <sys/types.h>
12143 #include <signal.h>
12144 int main()
12145 {
12146     struct sigaction act, oact;
12147     act.sa_flags = 0;
12148     oact.sa_handler = 0;
12149     /* so that act and oact are used */
12150     exit(act.sa_flags == 0 &&  oact.sa_handler == 0);
12151 }
12152 EOP
12153         set try
12154         if eval $compile_ok; then
12155                 val="$define"
12156         else
12157                 echo "But you don't seem to have a useable struct sigaction." >&4
12158                 val="$undef"
12159         fi
12160 else
12161         echo 'sigaction NOT found.' >&4
12162         val="$undef"
12163 fi
12164 set d_sigaction; eval $setvar
12165 $rm -f try try$_o try.c
12166
12167 : see if sigprocmask exists
12168 set sigprocmask d_sigprocmask
12169 eval $inlibc
12170
12171 : see if sigsetjmp exists
12172 echo " "
12173 case "$d_sigsetjmp" in
12174 '')
12175         $cat >try.c <<'EOP'
12176 #include <setjmp.h>
12177 sigjmp_buf env;
12178 int set = 1;
12179 int main()
12180 {
12181         if (sigsetjmp(env,1))
12182                 exit(set);
12183         set = 0;
12184         siglongjmp(env, 1);
12185         exit(1);
12186 }
12187 EOP
12188         set try
12189         if eval $compile; then
12190                 if $run ./try >/dev/null 2>&1; then
12191                         echo "POSIX sigsetjmp found." >&4
12192                         val="$define"
12193                 else
12194                         $cat >&4 <<EOM
12195 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
12196 I'll ignore them.
12197 EOM
12198                         val="$undef"
12199                 fi
12200         else
12201                 echo "sigsetjmp not found." >&4
12202                 val="$undef"
12203         fi
12204         ;;
12205 *) val="$d_sigsetjmp"
12206         case "$d_sigsetjmp" in
12207         $define) echo "POSIX sigsetjmp found." >&4;;
12208         $undef) echo "sigsetjmp not found." >&4;;
12209         esac
12210         ;;
12211 esac
12212 set d_sigsetjmp
12213 eval $setvar
12214 $rm -f try.c try
12215
12216 : see if sockatmark exists
12217 set sockatmark d_sockatmark
12218 eval $inlibc
12219
12220 : see if prototype for sockatmark is available
12221 echo " "
12222 set d_sockatmarkproto sockatmark $d_socket sys/socket.h
12223 eval $hasproto
12224
12225 : see if socks5_init exists
12226 set socks5_init d_socks5_init
12227 eval $inlibc
12228
12229 : see if prototype for setresgid is available
12230 echo " "
12231 set d_sresgproto setresgid $i_unistd unistd.h
12232 eval $hasproto
12233
12234 : see if prototype for setresuid is available
12235 echo " "
12236 set d_sresuproto setresuid $i_unistd unistd.h
12237 eval $hasproto
12238
12239 : see if sys/stat.h is available
12240 set sys/stat.h i_sysstat
12241 eval $inhdr
12242
12243
12244 : see if stat knows about block sizes
12245 echo " "
12246 echo "Checking to see if your struct stat has st_blocks field..." >&4
12247 set d_statblks stat st_blocks $i_sysstat sys/stat.h
12248 eval $hasfield
12249
12250
12251 : see if this is a sys/vfs.h system
12252 set sys/vfs.h i_sysvfs
12253 eval $inhdr
12254
12255
12256 : see if this is a sys/statfs.h system
12257 set sys/statfs.h i_sysstatfs
12258 eval $inhdr
12259
12260
12261 echo " "
12262 echo "Checking to see if your system supports struct statfs..." >&4
12263 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
12264 eval $hasstruct
12265 case "$d_statfs_s" in
12266 "$define")      echo "Yes, it does."   ;;
12267 *)              echo "No, it doesn't." ;;
12268 esac
12269
12270
12271
12272 : see if struct statfs knows about f_flags
12273 case "$d_statfs_s" in
12274 define) 
12275         echo " "
12276         echo "Checking to see if your struct statfs has f_flags field..." >&4
12277         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
12278         eval $hasfield
12279         ;;
12280 *)      val="$undef"
12281         set d_statfs_f_flags
12282         eval $setvar
12283         ;;
12284 esac
12285 case "$d_statfs_f_flags" in
12286 "$define")      echo "Yes, it does."   ;;
12287 *)              echo "No, it doesn't." ;;
12288 esac
12289
12290 : see if _ptr and _cnt from stdio act std
12291 echo " "
12292
12293 if $contains '_lbfsize' `./findhdr stdio.h` >/dev/null 2>&1 ; then
12294         echo "(Looks like you have stdio.h from BSD.)"
12295         case "$stdio_ptr" in
12296         '') stdio_ptr='((fp)->_p)'
12297                 ptr_lval=$define
12298                 ;;
12299         *)      ptr_lval=$d_stdio_ptr_lval;;
12300         esac
12301         case "$stdio_cnt" in
12302         '') stdio_cnt='((fp)->_r)'
12303                 cnt_lval=$define
12304                 ;;
12305         *)      cnt_lval=$d_stdio_cnt_lval;;
12306         esac
12307         case "$stdio_base" in
12308         '') stdio_base='((fp)->_ub._base ? (fp)->_ub._base : (fp)->_bf._base)';;
12309         esac
12310         case "$stdio_bufsiz" in
12311         '') stdio_bufsiz='((fp)->_ub._base ? (fp)->_ub._size : (fp)->_bf._size)';;
12312         esac
12313 elif $contains '_IO_fpos_t' `./findhdr stdio.h` `./findhdr libio.h` >/dev/null 2>&1 ; then
12314         echo "(Looks like you have stdio.h from Linux.)"
12315         case "$stdio_ptr" in
12316         '') stdio_ptr='((fp)->_IO_read_ptr)'
12317                 ptr_lval=$define
12318                 ;;
12319         *)      ptr_lval=$d_stdio_ptr_lval;;
12320         esac
12321         case "$stdio_cnt" in
12322         '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
12323                 cnt_lval=$undef
12324                 ;;
12325         *)      cnt_lval=$d_stdio_cnt_lval;;
12326         esac
12327         case "$stdio_base" in
12328         '') stdio_base='((fp)->_IO_read_base)';;
12329         esac
12330         case "$stdio_bufsiz" in
12331         '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
12332         esac
12333 else
12334         case "$stdio_ptr" in
12335         '') stdio_ptr='((fp)->_ptr)'
12336                 ptr_lval=$define
12337                 ;;
12338         *)      ptr_lval=$d_stdio_ptr_lval;;
12339         esac
12340         case "$stdio_cnt" in
12341         '') stdio_cnt='((fp)->_cnt)'
12342                 cnt_lval=$define
12343                 ;;
12344         *)      cnt_lval=$d_stdio_cnt_lval;;
12345         esac
12346         case "$stdio_base" in
12347         '') stdio_base='((fp)->_base)';;
12348         esac
12349         case "$stdio_bufsiz" in
12350         '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
12351         esac
12352 fi
12353
12354 : test whether _ptr and _cnt really work
12355 echo "Checking how std your stdio is..." >&4
12356 $cat >try.c <<EOP
12357 #include <stdio.h>
12358 #define FILE_ptr(fp)    $stdio_ptr
12359 #define FILE_cnt(fp)    $stdio_cnt
12360 int main() {
12361         FILE *fp = fopen("try.c", "r");
12362         char c = getc(fp);
12363         if (
12364                 18 <= FILE_cnt(fp) &&
12365                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
12366         )
12367                 exit(0);
12368         exit(1);
12369 }
12370 EOP
12371 val="$undef"
12372 set try
12373 if eval $compile && $to try.c; then
12374         if $run ./try; then
12375                 echo "Your stdio acts pretty std."
12376                 val="$define"
12377         else
12378                 echo "Your stdio isn't very std."
12379         fi
12380 else
12381         echo "Your stdio doesn't appear very std."
12382 fi
12383 $rm -f try.c try
12384 set d_stdstdio
12385 eval $setvar
12386
12387 : Can _ptr be used as an lvalue?
12388 case "$d_stdstdio$ptr_lval" in
12389 $define$define) val=$define ;;
12390 *) val=$undef ;;
12391 esac
12392 set d_stdio_ptr_lval
12393 eval $setvar
12394
12395 : Can _cnt be used as an lvalue?
12396 case "$d_stdstdio$cnt_lval" in
12397 $define$define) val=$define ;;
12398 *) val=$undef ;;
12399 esac
12400 set d_stdio_cnt_lval
12401 eval $setvar
12402
12403
12404 : test whether setting _ptr sets _cnt as a side effect
12405 d_stdio_ptr_lval_sets_cnt="$undef"
12406 d_stdio_ptr_lval_nochange_cnt="$undef"
12407 case "$d_stdio_ptr_lval$d_stdstdio" in
12408 $define$define)
12409         echo "Checking to see what happens if we set the stdio ptr..." >&4
12410 $cat >try.c <<EOP
12411 #include <stdio.h>
12412 /* Can we scream? */
12413 /* Eat dust sed :-) */
12414 /* In the buffer space, no one can hear you scream. */
12415 #define FILE_ptr(fp)    $stdio_ptr
12416 #define FILE_cnt(fp)    $stdio_cnt
12417 #include <sys/types.h>
12418 int main() {
12419         FILE *fp = fopen("try.c", "r");
12420         int c;
12421         char *ptr;
12422         size_t cnt;
12423         if (!fp) {
12424             puts("Fail even to read");
12425             exit(1);
12426         }
12427         c = getc(fp); /* Read away the first # */
12428         if (c == EOF) {
12429             puts("Fail even to read");
12430             exit(1);
12431         }
12432         if (!(
12433                 18 <= FILE_cnt(fp) &&
12434                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
12435         )) {
12436                 puts("Fail even to read");
12437                 exit (1);
12438         }
12439         ptr = (char*) FILE_ptr(fp);
12440         cnt = (size_t)FILE_cnt(fp);
12441
12442         FILE_ptr(fp) += 42;
12443
12444         if ((char*)FILE_ptr(fp) != (ptr + 42)) {
12445                 printf("Fail ptr check %p != %p", FILE_ptr(fp), (ptr + 42));
12446                 exit (1);
12447         }
12448         if (FILE_cnt(fp) <= 20) {
12449                 printf ("Fail (<20 chars to test)");
12450                 exit (1);
12451         }
12452         if (strncmp(FILE_ptr(fp), "Eat dust sed :-) */\n", 20) != 0) {
12453                 puts("Fail compare");
12454                 exit (1);
12455         }
12456         if (cnt == FILE_cnt(fp)) {
12457                 puts("Pass_unchanged");
12458                 exit (0);
12459         }       
12460         if (FILE_cnt(fp) == (cnt - 42)) {
12461                 puts("Pass_changed");
12462                 exit (0);
12463         }
12464         printf("Fail count was %d now %d\n", cnt, FILE_cnt(fp));
12465         return 1;
12466
12467 }
12468 EOP
12469         set try
12470         if eval $compile && $to try.c; then
12471                 case `$run ./try` in
12472                 Pass_changed)
12473                         echo "Increasing ptr in your stdio decreases cnt by the same amount.  Good." >&4
12474                         d_stdio_ptr_lval_sets_cnt="$define" ;;
12475                 Pass_unchanged)
12476                         echo "Increasing ptr in your stdio leaves cnt unchanged.  Good." >&4
12477                         d_stdio_ptr_lval_nochange_cnt="$define" ;;
12478                 Fail*)
12479                         echo "Increasing ptr in your stdio didn't do exactly what I expected.  We'll not be doing that then." >&4 ;;
12480                 *)
12481                         echo "It appears attempting to set ptr in your stdio is a bad plan." >&4 ;;
12482         esac
12483         else
12484                 echo "It seems we can't set ptr in your stdio.  Nevermind." >&4
12485         fi
12486         $rm -f try.c try
12487         ;;
12488 esac
12489
12490 : see if _base is also standard
12491 val="$undef"
12492 case "$d_stdstdio" in
12493 $define)
12494         $cat >try.c <<EOP
12495 #include <stdio.h>
12496 #define FILE_base(fp)   $stdio_base
12497 #define FILE_bufsiz(fp) $stdio_bufsiz
12498 int main() {
12499         FILE *fp = fopen("try.c", "r");
12500         char c = getc(fp);
12501         if (
12502                 19 <= FILE_bufsiz(fp) &&
12503                 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
12504         )
12505                 exit(0);
12506         exit(1);
12507 }
12508 EOP
12509         set try
12510         if eval $compile && $to try.c; then
12511                 if $run ./try; then
12512                         echo "And its _base field acts std."
12513                         val="$define"
12514                 else
12515                         echo "But its _base field isn't std."
12516                 fi
12517         else
12518                 echo "However, it seems to be lacking the _base field."
12519         fi
12520         $rm -f try.c try
12521         ;;
12522 esac
12523 set d_stdiobase
12524 eval $setvar
12525
12526 $cat >&4 <<EOM
12527 Checking how to access stdio streams by file descriptor number...
12528 EOM
12529 case "$stdio_stream_array" in
12530 '')     $cat >try.c <<EOCP
12531 #include <stdio.h>
12532 int main() {
12533   if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
12534     printf("yes\n");
12535 }
12536 EOCP
12537         for s in _iob __iob __sF
12538         do
12539                 set try -DSTDIO_STREAM_ARRAY=$s
12540                 if eval $compile; then
12541                         case "`$run ./try`" in
12542                         yes)    stdio_stream_array=$s; break ;;
12543                         esac
12544                 fi
12545         done
12546         $rm -f try.* try$exe_ext
12547 esac
12548 case "$stdio_stream_array" in
12549 '')     $cat >&4 <<EOM
12550 I can't figure out how to access stdio streams by file descriptor number.
12551 EOM
12552         d_stdio_stream_array="$undef"
12553         ;;
12554 *)      $cat >&4 <<EOM
12555 You can access stdio streams by file descriptor number by the $stdio_stream_array array.
12556 EOM
12557         d_stdio_stream_array="$define"
12558         ;;
12559 esac
12560
12561 : see if strcoll exists
12562 set strcoll d_strcoll
12563 eval $inlibc
12564
12565 : check for structure copying
12566 echo " "
12567 echo "Checking to see if your C compiler can copy structs..." >&4
12568 $cat >try.c <<'EOCP'
12569 int main()
12570 {
12571         struct blurfl {
12572                 int dyick;
12573         } foo, bar;
12574
12575         foo = bar;
12576 }
12577 EOCP
12578 if $cc -c try.c >/dev/null 2>&1 ; then
12579         val="$define"
12580         echo "Yup, it can."
12581 else
12582         val="$undef"
12583         echo "Nope, it can't."
12584 fi
12585 set d_strctcpy
12586 eval $setvar
12587 $rm -f try.*
12588
12589 : see if strerror and/or sys_errlist[] exist
12590 echo " "
12591 if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
12592     if set strerror val -f d_strerror; eval $csym; $val; then
12593                 echo 'strerror() found.' >&4
12594                 d_strerror="$define"
12595                 d_strerrm='strerror(e)'
12596                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
12597                         echo "(You also have sys_errlist[], so we could roll our own strerror.)" 
12598                         d_syserrlst="$define"
12599                 else
12600                         echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
12601                         d_syserrlst="$undef"
12602                 fi
12603     elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
12604                         $contains '#[   ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
12605                 echo 'strerror() found in string header.' >&4
12606                 d_strerror="$define"
12607                 d_strerrm='strerror(e)'
12608                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
12609                         echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
12610                                 d_syserrlst="$define"
12611                 else
12612                         echo "(You don't appear to have any sys_errlist[], how can this be?)"
12613                         d_syserrlst="$undef"
12614                 fi
12615     elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
12616                 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
12617                 d_strerror="$undef"
12618                 d_syserrlst="$define"
12619                 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
12620     else
12621                 echo 'strerror() and sys_errlist[] NOT found.' >&4
12622                 d_strerror="$undef"
12623                 d_syserrlst="$undef"
12624                 d_strerrm='"unknown"'
12625     fi
12626 fi
12627
12628 : see if strftime exists
12629 set strftime d_strftime
12630 eval $inlibc
12631
12632 : see if strtod exists
12633 set strtod d_strtod
12634 eval $inlibc
12635
12636 : see if strtol exists
12637 set strtol d_strtol
12638 eval $inlibc
12639
12640 : see if strtold exists
12641 set strtold d_strtold
12642 eval $inlibc
12643
12644 : see if strtoll exists
12645 set strtoll d_strtoll
12646 eval $inlibc
12647
12648 case "$d_longlong-$d_strtoll" in
12649 "$define-$define")
12650         $cat <<EOM
12651 Checking whether your strtoll() works okay...
12652 EOM
12653         $cat >try.c <<'EOCP'
12654 #include <errno.h>
12655 #ifdef __hpux
12656 #define strtoll __strtoll
12657 #endif
12658 #ifdef __EMX__
12659 #define strtoll _strtoll
12660 #endif
12661 #include <stdio.h>
12662 extern long long int strtoll(char *s, char **, int); 
12663 static int bad = 0;
12664 int check(char *s, long long ell, int een) {
12665         long long gll;
12666         errno = 0;
12667         gll = strtoll(s, 0, 10);
12668         if (!((gll == ell) && (errno == een)))
12669                 bad++;
12670 }
12671 int main() {
12672         check(" 1",                                      1LL, 0);
12673         check(" 0",                                      0LL, 0);
12674         check("-1",                                     -1LL, 0);
12675         check("-9223372036854775808", -9223372036854775808LL, 0);
12676         check("-9223372036854775808", -9223372036854775808LL, 0);
12677         check(" 9223372036854775807",  9223372036854775807LL, 0);
12678         check("-9223372036854775808", -9223372036854775808LL, 0);
12679         check(" 9223372036854775808",  9223372036854775807LL, ERANGE);
12680         check("-9223372036854775809", -9223372036854775808LL, ERANGE);
12681         if (!bad)
12682                 printf("ok\n");
12683 }
12684 EOCP
12685         set try
12686         if eval $compile; then
12687                 yyy=`$run ./try`
12688                 case "$yyy" in
12689                 ok) echo "Your strtoll() seems to be working okay." ;;
12690                 *) cat <<EOM >&4
12691 Your strtoll() doesn't seem to be working okay.
12692 EOM
12693                    d_strtoll="$undef"
12694                    ;;
12695                 esac
12696         else
12697                 echo "(I can't seem to compile the test program--assuming it doesn't)"
12698                 d_strtoll="$undef"
12699         fi
12700         ;;
12701 esac
12702
12703 : see if strtoq exists
12704 set strtoq d_strtoq
12705 eval $inlibc
12706
12707 : see if strtoul exists
12708 set strtoul d_strtoul
12709 eval $inlibc
12710
12711 case "$d_strtoul" in
12712 "$define")
12713         $cat <<EOM
12714 Checking whether your strtoul() works okay...
12715 EOM
12716         $cat >try.c <<'EOCP'
12717 #include <errno.h>
12718 #include <stdio.h>
12719 extern unsigned long int strtoul(char *s, char **, int); 
12720 static int bad = 0;
12721 void check(char *s, unsigned long eul, int een) {
12722         unsigned long gul;
12723         errno = 0;
12724         gul = strtoul(s, 0, 10);
12725         if (!((gul == eul) && (errno == een)))
12726                 bad++;
12727 }
12728 int main() {
12729         check(" 1", 1L, 0);
12730         check(" 0", 0L, 0);
12731 EOCP
12732         case "$longsize" in
12733         8)
12734             $cat >>try.c <<'EOCP'
12735         check("18446744073709551615", 18446744073709551615UL, 0);
12736         check("18446744073709551616", 18446744073709551615UL, ERANGE);
12737 #if 0 /* strtoul() for /^-/ strings is undefined. */
12738         check("-1", 18446744073709551615UL, 0);
12739         check("-18446744073709551614", 2, 0);
12740         check("-18446744073709551615", 1, 0);
12741         check("-18446744073709551616", 18446744073709551615UL, ERANGE);
12742         check("-18446744073709551617", 18446744073709551615UL, ERANGE);
12743 #endif
12744 EOCP
12745                 ;;
12746         4)
12747                     $cat >>try.c <<'EOCP'
12748         check("4294967295", 4294967295UL, 0);
12749         check("4294967296", 4294967295UL, ERANGE);
12750 #if 0 /* strtoul() for /^-/ strings is undefined. */
12751         check("-1", 4294967295UL, 0);
12752         check("-4294967294", 2, 0);
12753         check("-4294967295", 1, 0);
12754         check("-4294967296", 4294967295UL, ERANGE);
12755         check("-4294967297", 4294967295UL, ERANGE);
12756 #endif
12757 EOCP
12758                 ;;
12759         *)
12760 : Should we write these tests to be more portable by sprintf-ing
12761 : ~0 and then manipulating that char string as input for strtol?
12762                 ;;
12763         esac
12764         $cat >>try.c <<'EOCP'
12765         if (!bad)
12766                 printf("ok\n");
12767         return 0;
12768 }
12769 EOCP
12770         set try
12771         if eval $compile; then
12772                 case "`$run ./try`" in
12773                 ok) echo "Your strtoul() seems to be working okay." ;;
12774                 *) cat <<EOM >&4
12775 Your strtoul() doesn't seem to be working okay.
12776 EOM
12777                    d_strtoul="$undef"
12778                    ;;
12779                 esac
12780         fi
12781         ;;
12782 esac
12783
12784 : see if strtoull exists
12785 set strtoull d_strtoull
12786 eval $inlibc
12787
12788 case "$d_longlong-$d_strtoull" in
12789 "$define-$define")
12790         $cat <<EOM
12791 Checking whether your strtoull() works okay...
12792 EOM
12793         $cat >try.c <<'EOCP'
12794 #include <errno.h>
12795 #ifdef __hpux
12796 #define strtoull __strtoull
12797 #endif
12798 #include <stdio.h>
12799 extern unsigned long long int strtoull(char *s, char **, int); 
12800 static int bad = 0;
12801 int check(char *s, long long eull, int een) {
12802         long long gull;
12803         errno = 0;
12804         gull = strtoull(s, 0, 10);
12805         if (!((gull == eull) && (errno == een)))
12806                 bad++;
12807 }
12808 int main() {
12809         check(" 1",                                        1LL, 0);
12810         check(" 0",                                        0LL, 0);
12811         check("18446744073709551615",  18446744073709551615ULL, 0);
12812         check("18446744073709551616",  18446744073709551615ULL, ERANGE);
12813 #if 0 /* strtoull() for /^-/ strings is undefined. */
12814         check("-1",                    18446744073709551615ULL, 0);
12815         check("-18446744073709551614",                     2LL, 0);
12816         check("-18446744073709551615",                     1LL, 0);
12817         check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
12818         check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
12819 #endif
12820         if (!bad)
12821                 printf("ok\n");
12822 }
12823 EOCP
12824         set try
12825         if eval $compile; then
12826                 case "`$run ./try`" in
12827                 ok) echo "Your strtoull() seems to be working okay." ;;
12828                 *) cat <<EOM >&4
12829 Your strtoull() doesn't seem to be working okay.
12830 EOM
12831                    d_strtoull="$undef"
12832                    ;;
12833                 esac
12834         fi
12835         ;;
12836 esac
12837
12838 : see if strtouq exists
12839 set strtouq d_strtouq
12840 eval $inlibc
12841
12842 case "$d_strtouq" in
12843 "$define")
12844         $cat <<EOM
12845 Checking whether your strtouq() works okay...
12846 EOM
12847         $cat >try.c <<'EOCP'
12848 #include <errno.h>
12849 #include <stdio.h>
12850 extern unsigned long long int strtouq(char *s, char **, int); 
12851 static int bad = 0;
12852 void check(char *s, unsigned long long eull, int een) {
12853         unsigned long long gull;
12854         errno = 0;
12855         gull = strtouq(s, 0, 10);
12856         if (!((gull == eull) && (errno == een)))
12857                 bad++;
12858 }
12859 int main() {
12860         check(" 1",                                        1LL, 0);
12861         check(" 0",                                        0LL, 0);
12862         check("18446744073709551615",  18446744073709551615ULL, 0);
12863         check("18446744073709551616",  18446744073709551615ULL, ERANGE);
12864 #if 0 /* strtouq() for /^-/ strings is undefined. */
12865         check("-1",                    18446744073709551615ULL, 0);
12866         check("-18446744073709551614",                     2LL, 0);
12867         check("-18446744073709551615",                     1LL, 0);
12868         check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
12869         check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
12870 #endif
12871         if (!bad)
12872                 printf("ok\n");
12873         return 0;
12874 }
12875 EOCP
12876         set try
12877         if eval $compile; then
12878                 case "`$run ./try`" in
12879                 ok) echo "Your strtouq() seems to be working okay." ;;
12880                 *) cat <<EOM >&4
12881 Your strtouq() doesn't seem to be working okay.
12882 EOM
12883                    d_strtouq="$undef"
12884                    ;;
12885                 esac
12886         fi
12887         ;;
12888 esac
12889
12890 : see if strxfrm exists
12891 set strxfrm d_strxfrm
12892 eval $inlibc
12893
12894 : see if symlink exists
12895 set symlink d_symlink
12896 eval $inlibc
12897
12898 : see if syscall exists
12899 set syscall d_syscall
12900 eval $inlibc
12901
12902 : see if prototype for syscall is available
12903 echo " "
12904 set d_syscallproto syscall $i_unistd unistd.h
12905 eval $hasproto
12906
12907 : see if sysconf exists
12908 set sysconf d_sysconf
12909 eval $inlibc
12910
12911 : see if system exists
12912 set system d_system
12913 eval $inlibc
12914
12915 : see if tcgetpgrp exists
12916 set tcgetpgrp d_tcgetpgrp
12917 eval $inlibc
12918
12919 : see if tcsetpgrp exists
12920 set tcsetpgrp d_tcsetpgrp
12921 eval $inlibc
12922
12923 : see if prototype for telldir is available
12924 echo " "
12925 set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
12926 eval $hasproto
12927
12928 : see if this is a sys/times.h system
12929 set sys/times.h i_systimes
12930 eval $inhdr
12931
12932 : see if times exists
12933 echo " "
12934 if set times val -f d_times; eval $csym; $val; then
12935         echo 'times() found.' >&4
12936         d_times="$define"
12937         inc=''
12938         case "$i_systimes" in
12939         "$define") inc='sys/times.h';;
12940         esac
12941         rp="What is the type returned by times() on this system?"
12942         set clock_t clocktype long stdio.h sys/types.h $inc
12943         eval $typedef_ask
12944 else
12945         echo 'times() NOT found, hope that will do.' >&4
12946         d_times="$undef"
12947         clocktype='int'
12948 fi
12949
12950 : see if truncate exists
12951 set truncate d_truncate
12952 eval $inlibc
12953
12954 : see if tzname[] exists
12955 echo " "
12956 if set tzname val -a d_tzname; eval $csym; $val; then
12957         val="$define"
12958         echo 'tzname[] found.' >&4
12959 else
12960         val="$undef"
12961         echo 'tzname[] NOT found.' >&4
12962 fi
12963 set d_tzname
12964 eval $setvar
12965
12966 case "$osname" in
12967 next|rhapsody|darwin) multiarch="$define" ;;
12968 esac
12969 case "$multiarch" in
12970 ''|[nN]*) multiarch="$undef" ;;
12971 esac
12972
12973 : check for ordering of bytes in a long
12974 echo " "
12975 case "$usecrosscompile$multiarch" in
12976 *$define*)
12977         $cat <<EOM
12978 You seem to be either cross-compiling or doing a multiarchitecture build,
12979 skipping the byteorder check.
12980
12981 EOM
12982         byteorder='ffff'
12983         ;;
12984 *)
12985         case "$byteorder" in
12986         '')
12987                 $cat <<'EOM'
12988 In the following, larger digits indicate more significance.  A big-endian
12989 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
12990 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
12991 machines may have weird orders like 3412.  A Cray will report 87654321,
12992 an Alpha will report 12345678. If the test program works the default is
12993 probably right.
12994 I'm now running the test program...
12995 EOM
12996                 $cat >try.c <<'EOCP'
12997 #include <stdio.h>
12998 int main()
12999 {
13000         int i;
13001         union {
13002                 unsigned long l;
13003                 char c[sizeof(long)];
13004         } u;
13005
13006         if (sizeof(long) > 4)
13007                 u.l = (0x08070605L << 32) | 0x04030201L;
13008         else
13009                 u.l = 0x04030201L;
13010         for (i = 0; i < sizeof(long); i++)
13011                 printf("%c", u.c[i]+'0');
13012         printf("\n");
13013         exit(0);
13014 }
13015 EOCP
13016                 xxx_prompt=y
13017                 set try
13018                 if eval $compile && ./try > /dev/null; then
13019                         dflt=`$run ./try`
13020                         case "$dflt" in
13021                         [1-4][1-4][1-4][1-4]|12345678|87654321)
13022                                 echo "(The test program ran ok.)"
13023                                 echo "byteorder=$dflt"
13024                                 xxx_prompt=n
13025                         ;;
13026                         ????|????????) echo "(The test program ran ok.)" ;;
13027                         *) echo "(The test program didn't run right for some reason.)" ;;
13028                         esac
13029                 else
13030                         dflt='4321'
13031                         cat <<'EOM'
13032 (I can't seem to compile the test program.  Guessing big-endian...)
13033 EOM
13034                 fi
13035                 case "$xxx_prompt" in
13036                 y)
13037                         rp="What is the order of bytes in a long?"
13038                         . ./myread
13039                         byteorder="$ans"
13040                         ;;
13041                 *)      byteorder=$dflt
13042                         ;;
13043                 esac
13044                 ;;
13045         esac
13046         $rm -f try.c try
13047         ;;
13048 esac
13049
13050
13051 $cat <<EOM
13052
13053 Checking to see whether you can access character data unalignedly...
13054 EOM
13055 $cat >try.c <<EOCP
13056 #include <stdio.h>
13057 #define U32 $u32type
13058 #define BYTEORDER $byteorder
13059 int main() {
13060 #if BYTEORDER == 0x1234 || BYTEORDER == 0x4321
13061     U8 buf[] = "\0\0\0\1\0\0\0\0";
13062     U32 *up;
13063     int i;
13064
13065     if (sizeof(U32) != 4) {
13066         printf("sizeof(U32) is not 4, but %d\n", sizeof(U32));
13067         exit(1);
13068     }
13069
13070     fflush(stdout);
13071
13072     for (i = 0; i < 4; i++) {
13073         up = (U32*)(buf + i);
13074         if (! ((*up == 1 << (8*i)) ||   /* big-endian */
13075                (*up == 1 << (8*(3-i)))  /* little-endian */
13076               )
13077            )
13078         {
13079             printf("read failed (%x)\n", *up);
13080             exit(2);
13081         }
13082     }
13083
13084     /* write test */
13085     for (i = 0; i < 4; i++) {
13086         up = (U32*)(buf + i);
13087         *up = 0xBeef;
13088         if (*up != 0xBeef) {
13089             printf("write failed (%x)\n", *up);
13090             exit(3);
13091         }
13092     }
13093
13094     exit(0);
13095 #else
13096     printf("1\n");
13097     exit(1);
13098 #endif
13099     return 0;
13100 }
13101 EOCP
13102 set try
13103 if eval $compile_ok; then
13104         echo "(Testing for character data alignment may dump core.)" >&4
13105         $run ./try 2>&1 >/dev/null
13106         case "$?" in
13107         0)      cat >&4 <<EOM
13108 You can access character data pretty unalignedly.
13109 EOM
13110                 d_u32align="$undef"
13111                 ;;
13112         *)      cat >&4 <<EOM
13113 It seems that you must access character data in an aligned manner.
13114 EOM
13115                 d_u32align="$define"
13116                 ;;
13117         esac
13118         $rm -f core core.try.* try.core
13119 else
13120         rp='Can you access character data at unaligned addresses?'
13121         dflt='n'
13122         . ./myread
13123         case "$ans" in
13124         [yY]*)  d_u32align="$undef"  ;;
13125         *)      d_u32align="$define" ;;
13126         esac
13127 fi
13128
13129 : see if ualarm exists
13130 set ualarm d_ualarm
13131 eval $inlibc
13132
13133 : see if umask exists
13134 set umask d_umask
13135 eval $inlibc
13136
13137 : see if usleep exists
13138 set usleep d_usleep
13139 eval $inlibc
13140
13141 : see if prototype for usleep is available
13142 echo " "
13143 set d_usleepproto usleep $i_unistd unistd.h
13144 eval $hasproto
13145
13146 : see if ustat exists
13147 set ustat d_ustat
13148 eval $inlibc
13149
13150 : backward compatibility for d_hvfork
13151 if test X$d_hvfork != X; then
13152         d_vfork="$d_hvfork"
13153         d_hvfork=''
13154 fi
13155 : see if there is a vfork
13156 val=''
13157 set vfork val
13158 eval $inlibc
13159
13160 : Ok, but do we want to use it. vfork is reportedly unreliable in 
13161 : perl on Solaris 2.x, and probably elsewhere.
13162 case "$val" in
13163 $define)
13164         echo " "
13165         case "$usevfork" in
13166         false) dflt='n';;
13167         *) dflt='y';;
13168         esac
13169         cat <<'EOM'
13170  
13171 Perl can only use a vfork() that doesn't suffer from strict
13172 restrictions on calling functions or modifying global data in
13173 the child.  For example, glibc-2.1 contains such a vfork()
13174 that is unsuitable.  If your system provides a proper fork()
13175 call, chances are that you do NOT want perl to use vfork().
13176
13177 EOM
13178         rp="Do you still want to use vfork()?"
13179         . ./myread
13180         case "$ans" in
13181         y|Y) ;;
13182         *)
13183                 echo "Ok, we won't use vfork()."
13184                 val="$undef"
13185                 ;;
13186         esac
13187         ;;
13188 esac
13189 set d_vfork
13190 eval $setvar
13191 case "$d_vfork" in
13192 $define) usevfork='true';;
13193 *) usevfork='false';;
13194 esac
13195
13196 : see if this is an sysdir system
13197 set sys/dir.h i_sysdir
13198 eval $inhdr
13199
13200 : see if this is an sysndir system
13201 set sys/ndir.h i_sysndir
13202 eval $inhdr
13203
13204 : see if closedir exists
13205 set closedir d_closedir
13206 eval $inlibc
13207
13208 case "$d_closedir" in
13209 "$define")
13210         echo " "
13211         echo "Checking whether closedir() returns a status..." >&4
13212         cat > try.c <<EOM
13213 #$i_dirent I_DIRENT             /**/
13214 #$i_sysdir I_SYS_DIR            /**/
13215 #$i_sysndir I_SYS_NDIR          /**/
13216 #$i_systypes I_SYS_TYPES        /**/
13217
13218 #if defined(I_SYS_TYPES)
13219 #include <sys/types.h>
13220 #endif
13221 #if defined(I_DIRENT)
13222 #include <dirent.h>
13223 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
13224 #include <sys/dir.h>
13225 #endif
13226 #else
13227 #ifdef I_SYS_NDIR
13228 #include <sys/ndir.h>
13229 #else
13230 #ifdef I_SYS_DIR
13231 #ifdef hp9000s500
13232 #include <ndir.h>       /* may be wrong in the future */
13233 #else
13234 #include <sys/dir.h>
13235 #endif
13236 #endif
13237 #endif
13238 #endif 
13239 int main() { return closedir(opendir(".")); }
13240 EOM
13241         set try
13242         if eval $compile_ok; then
13243                 if $run ./try > /dev/null 2>&1 ; then
13244                         echo "Yes, it does."
13245                         val="$undef"
13246                 else
13247                         echo "No, it doesn't."
13248                         val="$define"
13249                 fi
13250         else
13251                 echo "(I can't seem to compile the test program--assuming it doesn't)"
13252                 val="$define"
13253         fi
13254         ;;
13255 *)
13256         val="$undef";
13257         ;;
13258 esac
13259 set d_void_closedir
13260 eval $setvar
13261 $rm -f try try.*
13262 : see if there is a wait4
13263 set wait4 d_wait4
13264 eval $inlibc
13265
13266 : see if waitpid exists
13267 set waitpid d_waitpid
13268 eval $inlibc
13269
13270 : see if wcstombs exists
13271 set wcstombs d_wcstombs
13272 eval $inlibc
13273
13274 : see if wctomb exists
13275 set wctomb d_wctomb
13276 eval $inlibc
13277
13278 : see if writev exists
13279 set writev d_writev
13280 eval $inlibc
13281
13282 : preserve RCS keywords in files with variable substitution, grrr
13283 Date='$Date'
13284 Id='$Id'
13285 Log='$Log'
13286 RCSfile='$RCSfile'
13287 Revision='$Revision'
13288
13289 : check for alignment requirements
13290 echo " "
13291 case "$usecrosscompile$multiarch" in
13292 *$define*)
13293         $cat <<EOM
13294 You seem to be either cross-compiling or doing a multiarchitecture build,
13295 skipping the memory alignment check.
13296
13297 EOM
13298         case "$alignbytes" in
13299         '') alignbytes=8 ;;
13300         esac
13301         ;;
13302 *)
13303         case "$alignbytes" in
13304         '') echo "Checking alignment constraints..." >&4
13305                 if $test "X$uselongdouble" = Xdefine -a "X$d_longdbl" = Xdefine; then
13306                         $cat >try.c <<'EOCP'
13307 typedef long double NV;
13308 EOCP
13309                 else
13310                         $cat >try.c <<'EOCP'
13311 typedef double NV;
13312 EOCP
13313                 fi
13314                 $cat >>try.c <<'EOCP'
13315 #include <stdio.h>
13316 struct foobar {
13317         char foo;
13318         NV bar;
13319 } try_algn;
13320 int main()
13321 {
13322     printf("%d\n", (int)((char *)&try_algn.bar - (char *)&try_algn.foo));
13323     return(0);
13324 }
13325 EOCP
13326                 set try
13327                 if eval $compile_ok; then
13328                         dflt=`$run ./try`
13329                 else
13330                         dflt='8'
13331                         echo "(I can't seem to compile the test program...)"
13332                 fi
13333                 ;;
13334         *) dflt="$alignbytes"
13335                 ;;
13336         esac
13337         rp="Doubles must be aligned on a how-many-byte boundary?"
13338         . ./myread
13339         alignbytes="$ans"
13340         $rm -f try.c try
13341         ;;
13342 esac
13343
13344
13345 : set the base revision
13346 baserev=5.0
13347
13348 : how do we catenate cpp tokens here?
13349 echo " "
13350 echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
13351 $cat >cpp_stuff.c <<'EOCP'
13352 #define RCAT(a,b)a/**/b
13353 #define ACAT(a,b)a ## b
13354 RCAT(Rei,ser)
13355 ACAT(Cir,cus)
13356 EOCP
13357 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
13358 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
13359         echo "Oh!  Smells like ANSI's been here." >&4
13360         echo "We can catify or stringify, separately or together!"
13361         cpp_stuff=42
13362 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
13363         echo "Ah, yes!  The good old days!" >&4
13364         echo "However, in the good old days we don't know how to stringify and"
13365         echo "catify at the same time."
13366         cpp_stuff=1
13367 else
13368         $cat >&4 <<EOM
13369 Hmm, I don't seem to be able to catenate tokens with your cpp.  You're going
13370 to have to edit the values of CAT[2-5] in config.h...
13371 EOM
13372         cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
13373 fi
13374 $rm -f cpp_stuff.*
13375
13376 : see if this is a db.h system
13377 set db.h i_db
13378 eval $inhdr
13379
13380 case "$i_db" in
13381 $define)
13382         : Check db version.
13383         echo " "
13384         echo "Checking Berkeley DB version ..." >&4
13385         $cat >try.c <<EOCP
13386 #$d_const HASCONST
13387 #ifndef HASCONST
13388 #define const
13389 #endif
13390 #include <sys/types.h>
13391 #include <stdio.h>
13392 #include <db.h>
13393 int main(int argc, char *argv[])
13394 {
13395 #ifdef DB_VERSION_MAJOR /* DB version >= 2 */
13396     int Major, Minor, Patch ;
13397     unsigned long Version ;
13398     (void)db_version(&Major, &Minor, &Patch) ;
13399     if (argc == 2) {
13400         printf("%d %d %d %d %d %d\n",
13401                DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH,
13402                Major, Minor, Patch);
13403         exit(0);
13404     }
13405     printf("You have Berkeley DB Version 2 or greater.\n");
13406
13407     printf("db.h is from Berkeley DB Version %d.%d.%d\n",
13408                 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
13409     printf("libdb is from Berkeley DB Version %d.%d.%d\n",
13410                 Major, Minor, Patch) ;
13411
13412     /* check that db.h & libdb are compatible */
13413     if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
13414         printf("db.h and libdb are incompatible.\n") ;
13415         exit(3);        
13416     }
13417
13418     printf("db.h and libdb are compatible.\n") ;
13419
13420     Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
13421                 + DB_VERSION_PATCH ;
13422
13423     /* needs to be >= 2.3.4 */
13424     if (Version < 2003004) {
13425     /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
13426         printf("Perl needs Berkeley DB 2.3.4 or greater.\n") ;
13427         exit(2);        
13428     }
13429
13430     exit(0);
13431 #else
13432 #if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
13433     if (argc == 2) {
13434         printf("1 0 0\n");
13435         exit(0);
13436     }
13437     printf("You have Berkeley DB Version 1.\n");
13438     exit(0);    /* DB version < 2: the coast is clear. */
13439 #else
13440     exit(1);    /* <db.h> not Berkeley DB? */
13441 #endif
13442 #endif
13443 }
13444 EOCP
13445         set try
13446         if eval $compile_ok && $run ./try; then
13447                 echo 'Looks OK.' >&4
13448                 set `$run ./try 1`
13449                 db_version_major=$1
13450                 db_version_minor=$2
13451                 db_version_patch=$3
13452         else
13453                 echo "I can't use Berkeley DB with your <db.h>.  I'll disable Berkeley DB." >&4
13454                 i_db=$undef
13455                 case " $libs " in
13456                 *"-ldb "*)
13457                         : Remove db from list of libraries to use
13458                         echo "Removing unusable -ldb from library list" >&4
13459                         set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
13460                         shift
13461                         libs="$*"
13462                         echo "libs = $libs" >&4
13463                         ;;
13464                 esac
13465         fi
13466         $rm -f try.*
13467         ;;
13468 esac
13469
13470 case "$i_db" in
13471 define)
13472         : Check the return type needed for hash 
13473         echo " "
13474         echo "Checking return type needed for hash for Berkeley DB ..." >&4
13475         $cat >try.c <<EOCP
13476 #$d_const HASCONST
13477 #ifndef HASCONST
13478 #define const
13479 #endif
13480 #include <sys/types.h>
13481 #include <db.h>
13482
13483 #ifndef DB_VERSION_MAJOR
13484 u_int32_t hash_cb (ptr, size)
13485 const void *ptr;
13486 size_t size;
13487 {
13488 }
13489 HASHINFO info;
13490 int main()
13491 {
13492         info.hash = hash_cb;
13493 }
13494 #endif
13495 EOCP
13496         if $cc $ccflags -c try.c >try.out 2>&1 ; then
13497                 if $contains warning try.out >>/dev/null 2>&1 ; then
13498                         db_hashtype='int'
13499                 else
13500                         db_hashtype='u_int32_t'
13501                 fi
13502         else
13503                 : XXX Maybe we should just give up here.
13504                 db_hashtype=u_int32_t
13505                 $cat try.out >&4
13506                 echo "Help:  I can't seem to compile the db test program." >&4
13507                 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
13508         fi
13509         $rm -f try.*
13510         echo "Your version of Berkeley DB uses $db_hashtype for hash."
13511         ;;
13512 *)      db_hashtype=u_int32_t
13513         ;;
13514 esac
13515 case "$i_db" in
13516 define)
13517         : Check the return type needed for prefix 
13518         echo " "
13519         echo "Checking return type needed for prefix for Berkeley DB ..." >&4
13520         cat >try.c <<EOCP
13521 #$d_const HASCONST
13522 #ifndef HASCONST
13523 #define const
13524 #endif
13525 #include <sys/types.h>
13526 #include <db.h>
13527
13528 #ifndef DB_VERSION_MAJOR
13529 size_t prefix_cb (key1, key2)
13530 const DBT *key1;
13531 const DBT *key2;
13532 {
13533 }
13534 BTREEINFO info;
13535 int main()
13536 {
13537         info.prefix = prefix_cb;
13538 }
13539 #endif
13540 EOCP
13541         if $cc $ccflags -c try.c  >try.out 2>&1 ; then
13542                 if $contains warning try.out >>/dev/null 2>&1 ; then
13543                         db_prefixtype='int'
13544                 else
13545                         db_prefixtype='size_t'
13546                 fi
13547         else
13548                 db_prefixtype='size_t'
13549                 : XXX Maybe we should just give up here.
13550                 $cat try.out >&4
13551                 echo "Help:  I can't seem to compile the db test program." >&4
13552                 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
13553         fi
13554         $rm -f try.*
13555         echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
13556         ;;
13557 *)      db_prefixtype='size_t'
13558         ;;
13559 esac
13560
13561
13562 : How can we generate normalized random numbers ?
13563 echo " "
13564 echo "Looking for a random number function..." >&4
13565 case "$randfunc" in
13566 '')
13567         if set drand48 val -f; eval $csym; $val; then
13568                 dflt="drand48"
13569                 echo "Good, found drand48()." >&4
13570         elif set random val -f; eval $csym; $val; then
13571                 dflt="random"
13572                 echo "OK, found random()." >&4
13573         else
13574                 dflt="rand"
13575                 echo "Yick, looks like I have to use rand()." >&4
13576         fi
13577         echo " "
13578         ;;
13579 *)
13580         dflt="$randfunc"
13581         ;;
13582 esac
13583 cont=true
13584
13585 case "$ccflags" in
13586 *-Dmy_rand=*|*-Dmy_srand=*)
13587         echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
13588         ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
13589         ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
13590         ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
13591         ;;
13592 esac
13593
13594 while $test "$cont"; do
13595         rp="Use which function to generate random numbers?"
13596         . ./myread
13597         if $test "$ans" = "$dflt"; then
13598                 : null
13599         else
13600                 randbits=''
13601         fi
13602         randfunc="$ans"
13603         if set $ans val -f; eval $csym; $val; then
13604                 cont=''
13605         else
13606                 dflt=y
13607                 rp="I cannot find function $ans. Use that name anyway?"
13608                 . ./myread
13609                 dflt=rand
13610                 case "$ans" in
13611                         [yY]*) cont='';;
13612                 esac
13613         fi
13614         case "$cont" in
13615         '')
13616                 case "$randfunc" in
13617                 drand48)
13618                         drand01="drand48()"
13619                         seedfunc="srand48"
13620                         randbits=48
13621                         randseedtype=long
13622                         ;;
13623                 rand|random)
13624                         case "$randbits" in
13625                         '')
13626 echo "Checking to see how many bits your $randfunc() function produces..." >&4
13627                                 $cat >try.c <<EOCP
13628 #$i_unistd I_UNISTD
13629 #$i_stdlib I_STDLIB
13630 #include <stdio.h>
13631 #ifdef I_UNISTD
13632 #  include <unistd.h>
13633 #endif
13634 #ifdef I_STDLIB
13635 #  include <stdlib.h>
13636 #endif
13637 int main()
13638 {
13639         register int i;
13640         register unsigned long tmp;
13641         register unsigned long max = 0L;
13642
13643         for (i = 1000; i; i--) {
13644                 tmp = (unsigned long) $randfunc();
13645                 if (tmp > max) max = tmp;
13646         }
13647         for (i = 0; max; i++)
13648                 max /= 2;
13649         printf("%d\n",i);
13650 }
13651 EOCP
13652                                 set try
13653                                 if eval $compile_ok; then
13654                                         dflt=`try`
13655                                 else
13656                                         dflt='?'
13657                                         echo "(I can't seem to compile the test program...)"
13658                                 fi
13659                                 ;;
13660                         *)
13661                                 dflt="$randbits"
13662                                 ;;
13663                         esac
13664                         rp="How many bits does your $randfunc() function produce?"
13665                         . ./myread
13666                         randbits="$ans"
13667                         $rm -f try.c try
13668                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
13669                         seedfunc="s$randfunc"
13670                         randseedtype=unsigned
13671                         ;;
13672                 *)
13673                         dflt="31"
13674                         rp="How many bits does your $randfunc() function produce?"
13675                         . ./myread
13676                         randbits="$ans"
13677                         seedfunc="s$randfunc"
13678                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
13679                         if set $seedfunc val -f; eval $csym; $val; then
13680                                 echo "(Using $seedfunc() to seed random generator)"
13681                         else
13682                                 echo "(Warning: no $seedfunc() to seed random generator)"
13683                                 seedfunc=rand
13684                         fi
13685                         randseedtype=unsigned
13686                         ;;
13687                 esac
13688                 ;;
13689         esac
13690 done
13691
13692 echo " "
13693 echo "Determining whether or not we are on an EBCDIC system..." >&4
13694 $cat >try.c <<'EOM'
13695 int main()
13696 {
13697   if ('M'==0xd4) return 0;
13698   return 1;
13699 }
13700 EOM
13701
13702 val=$undef
13703 set try
13704 if eval $compile_ok; then
13705         if $run ./try; then
13706                 echo "You seem to speak EBCDIC." >&4
13707                 val="$define"
13708         else
13709                 echo "Nope, no EBCDIC, probably ASCII or some ISO Latin. Or UTF-8." >&4
13710         fi
13711 else
13712         echo "I'm unable to compile the test program." >&4
13713         echo "I'll assume ASCII or some ISO Latin. Or UTF8." >&4
13714 fi
13715 $rm -f try try.*
13716 set ebcdic
13717 eval $setvar
13718
13719 echo " "
13720 $cat >&4 <<EOM
13721 Checking how to flush all pending stdio output...
13722 EOM
13723 # I only know how to find the first 32 possibly open files on SunOS.
13724 # See also hints/sunos_4_1.sh and util.c  --AD
13725 case "$osname" in
13726 sunos) $echo '#define PERL_FFLUSH_ALL_FOPEN_MAX 32' > try.c ;;
13727 esac
13728 $cat >>try.c <<EOCP
13729 #include <stdio.h>
13730 #$i_unistd I_UNISTD
13731 #ifdef I_UNISTD
13732 # include <unistd.h>
13733 #endif
13734 #$d_sysconf HAS_SYSCONF
13735 #$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY
13736 #ifdef HAS_STDIO_STREAM_ARRAY
13737 # define STDIO_STREAM_ARRAY $stdio_stream_array
13738 #endif
13739 int main() {
13740   FILE* p;
13741   unlink("try.out");
13742   p = fopen("try.out", "w");
13743 #ifdef TRY_FPUTC
13744   fputc('x', p);
13745 #else
13746 # ifdef TRY_FPRINTF
13747   fprintf(p, "x");
13748 # endif
13749 #endif
13750 #ifdef TRY_FFLUSH_NULL
13751   fflush(NULL);
13752 #endif
13753 #ifdef TRY_FFLUSH_ALL
13754   {
13755     long open_max = -1;
13756 # ifdef PERL_FFLUSH_ALL_FOPEN_MAX
13757     open_max = PERL_FFLUSH_ALL_FOPEN_MAX;
13758 # else
13759 #  if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
13760     open_max = sysconf(_SC_OPEN_MAX);
13761 #  else
13762 #   ifdef FOPEN_MAX
13763     open_max = FOPEN_MAX;
13764 #   else
13765 #    ifdef OPEN_MAX
13766     open_max = OPEN_MAX;
13767 #    else
13768 #     ifdef _NFILE
13769     open_max = _NFILE;
13770 #     endif
13771 #    endif
13772 #   endif
13773 #  endif
13774 # endif 
13775 # ifdef HAS_STDIO_STREAM_ARRAY
13776     if (open_max > 0) {
13777       long i;
13778       for (i = 0; i < open_max; i++)
13779             if (STDIO_STREAM_ARRAY[i]._file >= 0 &&
13780                 STDIO_STREAM_ARRAY[i]._file < open_max &&
13781                 STDIO_STREAM_ARRAY[i]._flag)
13782                 fflush(&STDIO_STREAM_ARRAY[i]);
13783     }   
13784   }
13785 # endif
13786 #endif
13787   _exit(42);
13788 }
13789 EOCP
13790 : first we have to find out how _not_ to flush
13791 $to try.c
13792 if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
13793     output=''
13794     set try -DTRY_FPUTC
13795     if eval $compile; then
13796             $rm -f try.out
13797             $run ./try 2>/dev/null
13798             code="$?"
13799             $from try.out
13800             if $test ! -s try.out -a "X$code" = X42; then
13801                 output=-DTRY_FPUTC
13802             fi
13803     fi
13804     case "$output" in
13805     '')
13806             set try -DTRY_FPRINTF
13807             if eval $compile; then
13808                     $rm -f try.out
13809                     $run ./try 2>/dev/null
13810                     code="$?"
13811                     $from try.out
13812                     if $test ! -s try.out -a "X$code" = X42; then
13813                         output=-DTRY_FPRINTF
13814                     fi
13815             fi
13816         ;;
13817     esac
13818 fi
13819 : check for fflush NULL behaviour
13820 case "$fflushNULL" in
13821 '')     set try -DTRY_FFLUSH_NULL $output
13822         if eval $compile; then
13823                 $rm -f try.out
13824                 $run ./try 2>/dev/null
13825                 code="$?"
13826                 $from try.out
13827                 if $test -s try.out -a "X$code" = X42; then
13828                         fflushNULL="`$cat try.out`"
13829                 else
13830                         if $test "X$code" != X42; then
13831                                 $cat >&4 <<EOM
13832 (If this test failed, don't worry, we'll try another method shortly.)
13833 EOM
13834                         fi
13835                 fi
13836         fi
13837         $rm -f core try.core core.try.*
13838         case "$fflushNULL" in
13839         x)      $cat >&4 <<EOM
13840 Your fflush(NULL) works okay for output streams.
13841 Let's see if it clobbers input pipes...
13842 EOM
13843 # As of mid-March 2000 all versions of Solaris appear to have a stdio
13844 # bug that improperly flushes the input end of pipes.  So we avoid the
13845 # autoflush on fork/system/exec support for now. :-(
13846 $cat >tryp.c <<EOCP
13847 #include <stdio.h>
13848 int
13849 main(int argc, char **argv)
13850 {
13851     char buf[1024];
13852     int i;
13853     char *bp = buf;
13854     while (1) {
13855         while ((i = getc(stdin)) != -1
13856                && (*bp++ = i) != '\n'
13857                && bp < &buf[1024])
13858         /* DO NOTHING */ ;
13859         *bp = '\0';
13860         fprintf(stdout, "%s", buf);
13861         fflush(NULL);
13862         if (i == -1)
13863             return 0;
13864         bp = buf;
13865     }
13866 }
13867 EOCP
13868                 fflushNULL="$define"
13869                 set tryp
13870                 if eval $compile; then
13871                     $rm -f tryp.out
13872                     $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
13873                     if cmp tryp.c tryp.out >/dev/null 2>&1; then
13874                        $cat >&4 <<EOM
13875 fflush(NULL) seems to behave okay with input streams.
13876 EOM
13877                         fflushNULL="$define"
13878                     else
13879                         $cat >&4 <<EOM
13880 Ouch, fflush(NULL) clobbers input pipes!  We will not use it.
13881 EOM
13882                         fflushNULL="$undef"
13883                     fi
13884                 fi
13885                 $rm -f core tryp.c tryp.core core.tryp.*
13886                 ;;
13887         '')     $cat >&4 <<EOM
13888 Your fflush(NULL) isn't working (contrary to ANSI C).
13889 EOM
13890                 fflushNULL="$undef"
13891                 ;;
13892         *)      $cat >&4 <<EOM
13893 Cannot figure out whether your fflush(NULL) works or not.
13894 I'm assuming it doesn't (contrary to ANSI C).
13895 EOM
13896                 fflushNULL="$undef"
13897                 ;;
13898         esac
13899         ;;
13900 $define|true|[yY]*)
13901         fflushNULL="$define"
13902         ;;
13903 *)
13904         fflushNULL="$undef"
13905         ;;
13906 esac
13907 : check explicit looping only if NULL did not work, and if the pipe
13908 : bug does not show up on an explicit flush too
13909 case "$fflushNULL" in
13910 "$undef")
13911         $cat >tryp.c <<EOCP
13912 #include <stdio.h>
13913 int
13914 main(int argc, char **argv)
13915 {
13916     char buf[1024];
13917     int i;
13918     char *bp = buf;
13919     while (1) {
13920         while ((i = getc(stdin)) != -1
13921                && (*bp++ = i) != '\n'
13922                && bp < &buf[1024])
13923         /* DO NOTHING */ ;
13924         *bp = '\0';
13925         fprintf(stdout, "%s", buf);
13926         fflush(stdin);
13927         if (i == -1)
13928             return 0;
13929         bp = buf;
13930     }
13931 }
13932 EOCP
13933         set tryp
13934         if eval $compile; then
13935             $rm -f tryp.out
13936             $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
13937             if cmp tryp.c tryp.out >/dev/null 2>&1; then
13938                $cat >&4 <<EOM
13939 Good, at least fflush(stdin) seems to behave okay when stdin is a pipe.
13940 EOM
13941                 : now check for fflushall behaviour
13942                 case "$fflushall" in
13943                 '')     set try -DTRY_FFLUSH_ALL $output
13944                         if eval $compile; then
13945                                 $cat >&4 <<EOM
13946 (Now testing the other method--but note that this also may fail.)
13947 EOM
13948                                 $rm -f try.out
13949                                 $run ./try 2>/dev/null
13950                                 code=$?
13951                                 $from try.out
13952                                 if $test -s try.out -a "X$code" = X42; then
13953                                         fflushall="`$cat try.out`"
13954                                 fi
13955                         fi
13956                         $rm -f core try.core core.try.*
13957                         case "$fflushall" in
13958                         x)      $cat >&4 <<EOM
13959 Whew. Flushing explicitly all the stdio streams works.
13960 EOM
13961                                 fflushall="$define"
13962                                 ;;
13963                         '')     $cat >&4 <<EOM
13964 Sigh. Flushing explicitly all the stdio streams doesn't work.
13965 EOM
13966                                 fflushall="$undef"
13967                                 ;;
13968                         *)      $cat >&4 <<EOM
13969 Cannot figure out whether flushing stdio streams explicitly works or not.
13970 I'm assuming it doesn't.
13971 EOM
13972                                 fflushall="$undef"
13973                                 ;;
13974                         esac
13975                         ;;
13976                 "$define"|true|[yY]*)
13977                         fflushall="$define"
13978                         ;;
13979                 *)
13980                         fflushall="$undef"
13981                         ;;
13982                 esac
13983             else
13984                 $cat >&4 <<EOM
13985 All is futile.  Even fflush(stdin) clobbers input pipes!
13986 EOM
13987                 fflushall="$undef"
13988             fi
13989         else
13990             fflushall="$undef"
13991         fi
13992         $rm -f core tryp.c tryp.core core.tryp.*
13993         ;;
13994 *)      fflushall="$undef"
13995         ;;
13996 esac
13997
13998 case "$fflushNULL$fflushall" in
13999 undefundef)
14000         $cat <<EOM
14001 OK, I give up.  I cannot figure out how to flush pending stdio output.
14002 We won't be flushing handles at all before fork/exec/popen.
14003 EOM
14004         ;;
14005 esac
14006 $rm -f try.* try$exe_ext
14007
14008 : Store the full pathname to the ar program for use in the C program
14009 : Respect a hint or command line value for full_ar.
14010 case "$full_ar" in
14011 '') full_ar=$ar ;;
14012 esac
14013
14014 : Store the full pathname to the sed program for use in the C program
14015 full_sed=$sed
14016
14017 : see what type gids are declared as in the kernel
14018 echo " "
14019 echo "Looking for the type for group ids returned by getgid()."
14020 set gid_t gidtype xxx stdio.h sys/types.h
14021 eval $typedef
14022 case "$gidtype" in
14023 xxx)
14024         xxx=`./findhdr sys/user.h`
14025         set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
14026         case $1 in
14027         unsigned) dflt="$1 $2" ;;
14028         *) dflt="$1" ;;
14029         esac
14030         ;;
14031 *) dflt="$gidtype";;
14032 esac
14033 case "$gidtype" in
14034 gid_t) echo "gid_t found." ;;
14035 *)      rp="What is the type for group ids returned by getgid()?"
14036         . ./myread
14037         gidtype="$ans"
14038         ;;
14039 esac
14040
14041 echo " "
14042 case "$gidtype" in
14043 *_t) zzz="$gidtype"     ;;
14044 *)   zzz="gid"          ;;
14045 esac
14046 echo "Checking the size of $zzz..." >&4 
14047 cat > try.c <<EOCP
14048 #include <sys/types.h>
14049 #include <stdio.h>
14050 int main() {
14051     printf("%d\n", (int)sizeof($gidtype));
14052     exit(0);
14053 }
14054 EOCP
14055 set try
14056 if eval $compile_ok; then
14057         yyy=`$run ./try`
14058         case "$yyy" in
14059         '')     gidsize=4
14060                 echo "(I can't execute the test program--guessing $gidsize.)" >&4
14061                 ;;
14062         *)      gidsize=$yyy
14063                 echo "Your $zzz is $gidsize bytes long."
14064                 ;;
14065         esac
14066 else
14067         gidsize=4
14068         echo "(I can't compile the test program--guessing $gidsize.)" >&4
14069 fi
14070
14071
14072 echo " "
14073 case "$gidtype" in
14074 *_t) zzz="$gidtype"     ;;
14075 *)   zzz="gid"          ;;
14076 esac
14077 echo "Checking the sign of $zzz..." >&4 
14078 cat > try.c <<EOCP
14079 #include <sys/types.h>
14080 #include <stdio.h>
14081 int main() {
14082         $gidtype foo = -1;
14083         if (foo < 0)
14084                 printf("-1\n");
14085         else
14086                 printf("1\n");
14087 }
14088 EOCP
14089 set try
14090 if eval $compile; then
14091         yyy=`$run ./try`
14092         case "$yyy" in
14093         '')     gidsign=1
14094                 echo "(I can't execute the test program--guessing unsigned.)" >&4
14095                 ;;
14096         *)      gidsign=$yyy
14097                 case "$gidsign" in
14098                  1) echo "Your $zzz is unsigned." ;;
14099                 -1) echo "Your $zzz is signed."   ;;
14100                 esac
14101                 ;;
14102         esac
14103 else
14104         gidsign=1
14105         echo "(I can't compile the test program--guessing unsigned.)" >&4
14106 fi
14107
14108
14109 echo " "
14110
14111 if $test X"$quadtype" != X; then
14112
14113 echo "Checking how to print 64-bit integers..." >&4
14114
14115 if $test X"$sPRId64" = X -a X"$quadtype" = Xint; then
14116         $cat >try.c <<'EOCP'
14117 #include <sys/types.h>
14118 #include <stdio.h>
14119 int main() {
14120   int q = 12345678901;
14121   printf("%ld\n", q);
14122 }
14123 EOCP
14124         set try
14125         if eval $compile; then
14126                 yyy=`$run ./try`
14127                 case "$yyy" in
14128                 12345678901)
14129                         sPRId64='"d"'; sPRIi64='"i"'; sPRIu64='"u"';
14130                         sPRIo64='"o"'; sPRIx64='"x"'; sPRIXU64='"X"';
14131                         echo "We will use %d."
14132                         ;;
14133                 esac
14134         fi
14135 fi
14136
14137 if $test X"$sPRId64" = X -a X"$quadtype" = Xlong; then
14138         $cat >try.c <<'EOCP'
14139 #include <sys/types.h>
14140 #include <stdio.h>
14141 int main() {
14142   long q = 12345678901;
14143   printf("%ld\n", q);
14144 }
14145 EOCP
14146         set try
14147         if eval $compile; then
14148                 yyy=`$run ./try`
14149                 case "$yyy" in
14150                 12345678901)
14151                         sPRId64='"ld"'; sPRIi64='"li"'; sPRIu64='"lu"';
14152                         sPRIo64='"lo"'; sPRIx64='"lx"'; sPRIXU64='"lX"';
14153                         echo "We will use %ld."
14154                         ;;
14155                 esac
14156         fi
14157 fi
14158
14159 if $test X"$sPRId64" = X -a X"$i_inttypes" = X"$define" -a X"$quadtype" = Xint64_t; then
14160         $cat >try.c <<'EOCP'
14161 #include <sys/types.h>
14162 #include <inttypes.h>
14163 #include <stdio.h>
14164 int main() {
14165   int64_t q = 12345678901;
14166   printf("%" PRId64 "\n", q);
14167 }
14168 EOCP
14169         set try
14170         if eval $compile; then
14171                 yyy=`$run ./try`
14172                 case "$yyy" in
14173                 12345678901)
14174                         sPRId64=PRId64; sPRIi64=PRIi64; sPRIu64=PRIu64;
14175                         sPRIo64=PRIo64; sPRIx64=PRIx64; sPRIXU64=PRIXU64;
14176                         echo "We will use the C9X style."
14177                         ;;
14178                 esac
14179         fi
14180 fi
14181
14182 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
14183         $cat >try.c <<EOCP
14184 #include <sys/types.h>
14185 #include <stdio.h>
14186 int main() {
14187   $quadtype q = 12345678901;
14188   printf("%Ld\n", q);
14189 }
14190 EOCP
14191         set try
14192         if eval $compile; then
14193                 yyy=`$run ./try`
14194                 case "$yyy" in
14195                 12345678901)
14196                         sPRId64='"Ld"'; sPRIi64='"Li"'; sPRIu64='"Lu"';
14197                         sPRIo64='"Lo"'; sPRIx64='"Lx"'; sPRIXU64='"LX"';
14198                         echo "We will use %Ld."
14199                         ;;
14200                 esac
14201         fi
14202 fi
14203
14204 if $test X"$sPRId64" = X -a X"$quadtype" = X"long long"; then
14205         $cat >try.c <<'EOCP'
14206 #include <sys/types.h>
14207 #include <stdio.h>
14208 int main() {
14209   long long q = 12345678901LL; /* AIX cc requires the LL suffix. */
14210   printf("%lld\n", q);
14211 }
14212 EOCP
14213         set try
14214         if eval $compile; then
14215                 yyy=`$run ./try`
14216                 case "$yyy" in
14217                 12345678901)
14218                         sPRId64='"lld"'; sPRIi64='"lli"'; sPRIu64='"llu"';
14219                         sPRIo64='"llo"'; sPRIx64='"llx"'; sPRIXU64='"llX"';
14220                         echo "We will use the %lld style."
14221                         ;;
14222                 esac
14223         fi
14224 fi
14225
14226 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
14227         $cat >try.c <<EOCP
14228 #include <sys/types.h>
14229 #include <stdio.h>
14230 int main() {
14231   $quadtype q = 12345678901;
14232   printf("%qd\n", q);
14233 }
14234 EOCP
14235         set try
14236         if eval $compile; then
14237                 yyy=`$run ./try`
14238                 case "$yyy" in
14239                 12345678901)
14240                         sPRId64='"qd"'; sPRIi64='"qi"'; sPRIu64='"qu"';
14241                         sPRIo64='"qo"'; sPRIx64='"qx"'; sPRIXU64='"qX"';
14242                         echo "We will use %qd."
14243                         ;;
14244                 esac
14245         fi
14246 fi
14247
14248 if $test X"$sPRId64" = X; then
14249         echo "Cannot figure out how to print 64-bit integers." >&4
14250 fi
14251
14252 $rm -f try try.*
14253
14254 fi
14255
14256 case "$sPRId64" in
14257 '')     d_PRId64="$undef"; d_PRIi64="$undef"; d_PRIu64="$undef"; 
14258         d_PRIo64="$undef"; d_PRIx64="$undef"; d_PRIXU64="$undef"; 
14259         ;;
14260 *)      d_PRId64="$define"; d_PRIi64="$define"; d_PRIu64="$define"; 
14261         d_PRIo64="$define"; d_PRIx64="$define"; d_PRIXU64="$define"; 
14262         ;;
14263 esac
14264
14265
14266 echo " "
14267 $echo "Checking the format strings to be used for Perl's internal types..." >&4
14268
14269 if $test X"$ivsize" = X8; then
14270         ivdformat="$sPRId64"
14271         uvuformat="$sPRIu64"
14272         uvoformat="$sPRIo64"
14273         uvxformat="$sPRIx64"
14274         uvXUformat="$sPRIXU64"
14275 else
14276         if $test X"$ivsize" = X"$longsize"; then
14277                 ivdformat='"ld"'
14278                 uvuformat='"lu"'
14279                 uvoformat='"lo"'
14280                 uvxformat='"lx"'
14281                 uvXUformat='"lX"'
14282         else
14283                 if $test X"$ivsize" = X"$intsize"; then
14284                         ivdformat='"d"'
14285                         uvuformat='"u"'
14286                         uvoformat='"o"'
14287                         uvxformat='"x"'
14288                         uvXUformat='"X"'
14289                 else
14290                         : far out
14291                         if $test X"$ivsize" = X"$shortsize"; then
14292                                 ivdformat='"hd"'
14293                                 uvuformat='"hu"'
14294                                 uvoformat='"ho"'
14295                                 uvxformat='"hx"'
14296                                 uvXUformat='"hX"'
14297                         fi
14298                 fi
14299         fi
14300 fi
14301
14302 if $test X"$uselongdouble" = X"$define" -a X"$d_longdbl" = X"$define" -a X"$d_PRIgldbl" = X"$define"; then
14303         nveformat="$sPRIeldbl"
14304         nvfformat="$sPRIfldbl"
14305         nvgformat="$sPRIgldbl"
14306         nvEUformat="$sPRIEUldbl"
14307         nvFUformat="$sPRIFUldbl"
14308         nvGUformat="$sPRIGUldbl"
14309 else
14310         nveformat='"e"'
14311         nvfformat='"f"'
14312         nvgformat='"g"'
14313         nvEUformat='"E"'
14314         nvFUformat='"F"'
14315         nvGUformat='"G"'
14316 fi
14317
14318 case "$ivdformat" in
14319 '') echo "$0: Fatal: failed to find format strings, cannot continue." >& 4
14320     exit 1
14321     ;;
14322 esac
14323
14324
14325 echo " "
14326 $echo "Checking the format string to be used for gids..." >&4
14327
14328 case "$gidsign" in
14329 -1)     if $test X"$gidsize" = X"$ivsize"; then
14330                 gidformat="$ivdformat"
14331         else
14332                 if $test X"$gidsize" = X"$longsize"; then
14333                         gidformat='"ld"'
14334                 else
14335                         if $test X"$gidsize" = X"$intsize"; then
14336                                 gidformat='"d"'
14337                         else
14338                                 if $test X"$gidsize" = X"$shortsize"; then
14339                                         gidformat='"hd"'
14340                                 fi
14341                         fi
14342                 fi
14343         fi
14344         ;;
14345 *)      if $test X"$gidsize" = X"$uvsize"; then
14346                 gidformat="$uvuformat"
14347         else
14348                 if $test X"$gidsize" = X"$longsize"; then
14349                         gidformat='"lu"'
14350                 else
14351                         if $test X"$gidsize" = X"$intsize"; then
14352                                 gidformat='"u"'
14353                         else
14354                                 if $test X"$gidsize" = X"$shortsize"; then
14355                                         gidformat='"hu"'
14356                                 fi
14357                         fi
14358                 fi
14359         fi
14360         ;;
14361 esac
14362
14363 : see if getgroups exists
14364 set getgroups d_getgrps
14365 eval $inlibc
14366
14367 : see if setgroups exists
14368 set setgroups d_setgrps
14369 eval $inlibc
14370
14371
14372 : Find type of 2nd arg to 'getgroups()' and 'setgroups()'
14373 echo " "
14374 case "$d_getgrps$d_setgrps" in
14375 *define*)
14376         case "$groupstype" in
14377         '') dflt="$gidtype" ;;
14378         *)  dflt="$groupstype" ;;
14379         esac
14380         $cat <<EOM
14381 What type of pointer is the second argument to getgroups() and setgroups()?
14382 Usually this is the same as group ids, $gidtype, but not always.
14383
14384 EOM
14385         rp='What type pointer is the second argument to getgroups() and setgroups()?'
14386         . ./myread
14387         groupstype="$ans"
14388         ;;
14389 *)  groupstype="$gidtype";;
14390 esac
14391
14392 echo " "
14393 echo "Checking if your $make program sets \$(MAKE)..." >&4
14394 case "$make_set_make" in
14395 '')
14396         $sed 's/^X //' > testmake.mak << 'EOF'
14397 Xall:
14398 X       @echo 'maketemp="$(MAKE)"'
14399 EOF
14400         case "`$make -f testmake.mak 2>/dev/null`" in
14401         *maketemp=*) make_set_make='#' ;;
14402         *)      make_set_make="MAKE=$make" ;;
14403         esac
14404         $rm -f testmake.mak
14405         ;;
14406 esac
14407 case "$make_set_make" in
14408 '#') echo "Yup, it does.";;
14409 *) echo "Nope, it doesn't.";;
14410 esac
14411
14412 : see what type is used for mode_t
14413 rp="What is the type used for file modes for system calls (e.g. fchmod())?"
14414 set mode_t modetype int stdio.h sys/types.h
14415 eval $typedef_ask
14416
14417 : see if stdarg is available
14418 echo " "
14419 if $test `./findhdr stdarg.h`; then
14420         echo "<stdarg.h> found." >&4
14421         valstd="$define"
14422 else
14423         echo "<stdarg.h> NOT found." >&4
14424         valstd="$undef"
14425 fi
14426
14427 : see if varags is available
14428 echo " "
14429 if $test `./findhdr varargs.h`; then
14430         echo "<varargs.h> found." >&4
14431 else
14432         echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
14433 fi
14434
14435 : set up the varargs testing programs
14436 $cat > varargs.c <<EOP
14437 #ifdef I_STDARG
14438 #include <stdarg.h>
14439 #endif
14440 #ifdef I_VARARGS
14441 #include <varargs.h>
14442 #endif
14443
14444 #ifdef I_STDARG
14445 int f(char *p, ...)
14446 #else
14447 int f(va_alist)
14448 va_dcl
14449 #endif
14450 {
14451         va_list ap;
14452 #ifndef I_STDARG
14453         char *p;
14454 #endif
14455 #ifdef I_STDARG
14456         va_start(ap,p);
14457 #else
14458         va_start(ap);
14459         p = va_arg(ap, char *);
14460 #endif
14461         va_end(ap);
14462 }
14463 EOP
14464 $cat > varargs <<EOP
14465 $startsh
14466 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
14467         echo "true"
14468 else
14469         echo "false"
14470 fi
14471 $rm -f varargs$_o
14472 EOP
14473 chmod +x varargs
14474
14475 : now check which varargs header should be included
14476 echo " "
14477 i_varhdr=''
14478 case "$valstd" in
14479 "$define")
14480         if `./varargs I_STDARG`; then
14481                 val='stdarg.h'
14482         elif `./varargs I_VARARGS`; then
14483                 val='varargs.h'
14484         fi
14485         ;;
14486 *)
14487         if `./varargs I_VARARGS`; then
14488                 val='varargs.h'
14489         fi
14490         ;;
14491 esac
14492 case "$val" in
14493 '')
14494 echo "I could not find the definition for va_dcl... You have problems..." >&4
14495         val="$undef"; set i_stdarg; eval $setvar
14496         val="$undef"; set i_varargs; eval $setvar
14497         ;;
14498 *) 
14499         set i_varhdr
14500         eval $setvar
14501         case "$i_varhdr" in
14502         stdarg.h)
14503                 val="$define"; set i_stdarg; eval $setvar
14504                 val="$undef"; set i_varargs; eval $setvar
14505                 ;;
14506         varargs.h)
14507                 val="$undef"; set i_stdarg; eval $setvar
14508                 val="$define"; set i_varargs; eval $setvar
14509                 ;;
14510         esac
14511         echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
14512 esac
14513 $rm -f varargs*
14514
14515 : see if we need va_copy
14516 echo " "
14517 case "$i_stdarg" in
14518 "$define")
14519         $cat >try.c <<EOCP
14520 #include <stdarg.h>
14521 #include <stdio.h>
14522 #$i_stdlib I_STDLIB
14523 #ifdef I_STDLIB
14524 #include <stdlib.h>
14525 #endif
14526 #include <signal.h>
14527
14528 int
14529 ivfprintf(FILE *f, const char *fmt, va_list *valp)
14530 {
14531   return vfprintf(f, fmt, *valp);
14532 }
14533  
14534 int    
14535 myvfprintf(FILE *f, const  char *fmt, va_list val)
14536 {
14537   return ivfprintf(f, fmt, &val);
14538 }
14539       
14540 int
14541 myprintf(char *fmt, ...) 
14542 {
14543   va_list val;
14544   va_start(val, fmt);
14545   return myvfprintf(stdout, fmt, val); 
14546 }         
14547
14548 int
14549 main(int ac, char **av)
14550 {
14551   signal(SIGSEGV, exit);
14552
14553   myprintf("%s%cs all right, then\n", "that", '\'');                            
14554   exit(0);      
14555 }
14556 EOCP
14557         set try
14558         if eval $compile && $run ./try 2>&1 >/dev/null; then
14559                 case "`$run ./try`" in
14560                 "that's all right, then")
14561                         okay=yes
14562                         ;;
14563                 esac
14564         fi
14565         case "$okay" in
14566         yes)    echo "It seems that you don't need va_copy()." >&4
14567                 need_va_copy="$undef"
14568                 ;;
14569         *)      echo "It seems that va_copy() or similar will be needed." >&4
14570                 need_va_copy="$define"
14571                 ;;
14572         esac
14573         $rm -f try.* core core.* *.core *.core.*
14574         ;;
14575 *)      echo "You don't have <stdarg.h>, not checking for va_copy()." >&4
14576         ;;
14577 esac
14578
14579 : define a fucntion to check prototypes
14580 $cat > protochk <<EOSH
14581 $startsh
14582 cc="$cc"
14583 optimize="$optimize"
14584 ccflags="$ccflags"
14585 prototype="$prototype"
14586 define="$define"
14587 rm=$rm
14588 EOSH
14589
14590 $cat >> protochk <<'EOSH'
14591
14592 $rm -f try.c
14593 foo="$1"
14594 shift
14595 while test $# -ge 2; do
14596         case "$1" in
14597                 $define) echo "#include <$2>" >> try.c ;;
14598                 literal) echo "$2" >> try.c ;;
14599         esac
14600     shift 2
14601 done
14602 test "$prototype" = "$define"  && echo '#define CAN_PROTOTYPE' >> try.c
14603 cat >> try.c <<'EOCP'
14604 #ifdef CAN_PROTOTYPE
14605 #define _(args) args
14606 #else
14607 #define _(args) ()
14608 #endif
14609 EOCP
14610 echo "$foo" >> try.c
14611 echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
14612 $cc $optimize $ccflags -c try.c > /dev/null 2>&1
14613 status=$?
14614 $rm -f try.[co]
14615 exit $status
14616 EOSH
14617 chmod +x protochk
14618 $eunicefix protochk
14619
14620 : see what type is used for size_t
14621 rp="What is the type used for the length parameter for string functions?"
14622 set size_t sizetype 'unsigned int' stdio.h sys/types.h
14623 eval $typedef_ask
14624
14625 : check for type of arguments to gethostbyaddr. 
14626 if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
14627         case "$d_gethbyaddr" in
14628         $define)
14629                 $cat <<EOM
14630
14631 Checking to see what type of arguments are accepted by gethostbyaddr().
14632 EOM
14633                 hdrs="$define sys/types.h
14634                         $d_socket sys/socket.h 
14635                         $i_niin netinet/in.h 
14636                         $i_netdb netdb.h
14637                         $i_unistd unistd.h"
14638                 : The first arg can 'char *' or 'void *'
14639                 : The second arg is some of integral type
14640                 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
14641                         for yyy in size_t long int; do
14642                                 case "$netdb_host_type" in
14643                                 '')     try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
14644                                         if ./protochk "$try" $hdrs; then
14645                                                 echo "Your system accepts $xxx for the first arg."
14646                                                 echo "...and $yyy for the second arg."
14647                                                 netdb_host_type="$xxx"
14648                                                 netdb_hlen_type="$yyy"
14649                                         fi
14650                                         ;;
14651                                 esac
14652                         done
14653                 done
14654                 : In case none of those worked, prompt the user.
14655                 case "$netdb_host_type" in
14656                 '')     rp='What is the type for the 1st argument to gethostbyaddr?'
14657                         dflt='char *'
14658                         . ./myread
14659                         netdb_host_type=$ans
14660                         rp='What is the type for the 2nd argument to gethostbyaddr?'
14661                         dflt="$sizetype"
14662                         . ./myread
14663                         netdb_hlen_type=$ans
14664                         ;;
14665                 esac
14666                 ;;
14667         *)      : no gethostbyaddr, so pick harmless defaults
14668                 netdb_host_type='char *'
14669                 netdb_hlen_type="$sizetype"
14670                 ;;
14671         esac
14672         # Remove the "const" if needed. -- but then we'll have a 
14673         # prototype clash!
14674         # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
14675 fi
14676
14677 : check for type of argument to gethostbyname. 
14678 if test "X$netdb_name_type" = X ; then
14679         case "$d_gethbyname" in
14680         $define)
14681                 $cat <<EOM
14682
14683 Checking to see what type of argument is accepted by gethostbyname().
14684 EOM
14685                 hdrs="$define sys/types.h
14686                         $d_socket sys/socket.h 
14687                         $i_niin netinet/in.h 
14688                         $i_netdb netdb.h
14689                         $i_unistd unistd.h"
14690                 for xxx in "const char *" "char *"; do
14691                         case "$netdb_name_type" in
14692                         '')     try="extern struct hostent *gethostbyname($xxx);"
14693                                 if ./protochk "$try" $hdrs; then
14694                                         echo "Your system accepts $xxx."
14695                                         netdb_name_type="$xxx"
14696                                 fi
14697                                 ;;
14698                         esac
14699                 done
14700                 : In case none of those worked, prompt the user.
14701                 case "$netdb_name_type" in
14702                 '')     rp='What is the type for the 1st argument to gethostbyname?'
14703                         dflt='char *'
14704                         . ./myread
14705                         netdb_name_type=$ans
14706                         ;;
14707                 esac
14708                 ;;
14709         *)      : no gethostbyname, so pick harmless default
14710                 netdb_name_type='char *'
14711                 ;;
14712         esac
14713 fi
14714
14715 : check for type of 1st argument to getnetbyaddr. 
14716 if test "X$netdb_net_type" = X ; then
14717         case "$d_getnbyaddr" in
14718         $define)
14719                 $cat <<EOM
14720
14721 Checking to see what type of 1st argument is accepted by getnetbyaddr().
14722 EOM
14723                 hdrs="$define sys/types.h
14724                         $d_socket sys/socket.h 
14725                         $i_niin netinet/in.h 
14726                         $i_netdb netdb.h
14727                         $i_unistd unistd.h"
14728                 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
14729                         case "$netdb_net_type" in
14730                         '')     try="extern struct netent *getnetbyaddr($xxx, int);"
14731                                 if ./protochk "$try" $hdrs; then
14732                                         echo "Your system accepts $xxx."
14733                                         netdb_net_type="$xxx"
14734                                 fi
14735                                 ;;
14736                         esac
14737                 done
14738                 : In case none of those worked, prompt the user.
14739                 case "$netdb_net_type" in
14740                 '')     rp='What is the type for the 1st argument to getnetbyaddr?'
14741                         dflt='long'
14742                         . ./myread
14743                         netdb_net_type=$ans
14744                         ;;
14745                 esac
14746                 ;;
14747         *)      : no getnetbyaddr, so pick harmless default
14748                 netdb_net_type='long'
14749                 ;;
14750         esac
14751 fi
14752 : locate the preferred pager for this system
14753 case "$pager" in
14754 '')
14755         dflt=''
14756         case "$pg" in
14757         /*) dflt=$pg;;
14758         [a-zA-Z]:/*) dflt=$pg;;
14759         esac
14760         case "$more" in
14761         /*) dflt=$more;;
14762         [a-zA-Z]:/*) dflt=$more;;
14763         esac
14764         case "$less" in
14765         /*) dflt=$less;;
14766         [a-zA-Z]:/*) dflt=$less;;
14767         esac
14768         case "$dflt" in
14769         '') dflt=/usr/ucb/more;;
14770         esac
14771         ;;
14772 *) dflt="$pager";;
14773 esac
14774 echo " "
14775 fn=f/
14776 rp='What pager is used on your system?'
14777 . ./getfile
14778 pager="$ans"
14779
14780 : see what type pids are declared as in the kernel
14781 rp="What is the type of process ids on this system?"
14782 set pid_t pidtype int stdio.h sys/types.h
14783 eval $typedef_ask
14784
14785 : Find earliest binary compatible site_perl subdirectory perl can use.
14786 case "$bincompat5005" in
14787 "$define") xs_apiversion='5.005' ;;
14788 *) xs_apiversion=$version ;;   # The current site_perl version.
14789 esac
14790 : Find earliest pure perl site_perl subdirectory perl can use.
14791 : The versioned directories started at 5.005.
14792 pm_apiversion='5.005'
14793
14794 : see if ar generates random libraries by itself
14795 echo " "
14796 echo "Checking how to generate random libraries on your machine..." >&4
14797 echo 'int bar1() { return bar2(); }' > bar1.c
14798 echo 'int bar2() { return 2; }' > bar2.c
14799 $cat > foo.c <<'EOP'
14800 int main() { printf("%d\n", bar1()); exit(0); }
14801 EOP
14802 $cc $ccflags -c bar1.c >/dev/null 2>&1
14803 $cc $ccflags -c bar2.c >/dev/null 2>&1
14804 $cc $ccflags -c foo.c >/dev/null 2>&1
14805 $ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
14806 if $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
14807         $run ./foobar >/dev/null 2>&1; then
14808         echo "$ar appears to generate random libraries itself."
14809         orderlib=false
14810         ranlib=":"
14811 elif $ar ts bar$_a >/dev/null 2>&1 &&
14812         $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
14813         $run ./foobar >/dev/null 2>&1; then
14814                 echo "a table of contents needs to be added with '$ar ts'."
14815                 orderlib=false
14816                 ranlib="$ar ts"
14817 else
14818         case "$ranlib" in
14819         :) ranlib='';;
14820         '')
14821                 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
14822                 $test -f $ranlib || ranlib=''
14823                 ;;
14824         esac
14825         if $test -n "$ranlib"; then
14826                 echo "your system has '$ranlib'; we'll use that."
14827                 orderlib=false
14828         else
14829                 echo "your system doesn't seem to support random libraries"
14830                 echo "so we'll use lorder and tsort to order the libraries."
14831                 orderlib=true
14832                 ranlib=":"
14833         fi
14834 fi
14835 $rm -f foo* bar* 
14836
14837 : check for type of arguments to select. 
14838 case "$selecttype" in
14839 '') case "$d_select" in
14840         $define)
14841                 echo " "
14842                 $cat <<EOM
14843 Checking to see what type of arguments are accepted by select().
14844 EOM
14845                 hdrs="$define sys/types.h
14846                         $i_systime sys/time.h 
14847                         $i_sysselct sys/select.h
14848                         $d_socket sys/socket.h"
14849                 : The first arg can be int, unsigned, or size_t
14850                 : The last arg may or may not be 'const'
14851                 val=''
14852                 : void pointer has been seen but using that
14853                 : breaks the selectminbits test
14854                 for xxx in 'fd_set *' 'int *'; do
14855                         for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
14856                                 for tmo in 'struct timeval *' 'const struct timeval *'; do
14857                                         case "$val" in
14858                                         '')     try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
14859                                                 if ./protochk "$try" $hdrs; then
14860                                                         echo "Your system accepts $xxx."
14861                                                         val="$xxx"
14862                                                 fi
14863                                                 ;;
14864                                         esac
14865                                 done
14866                         done
14867                 done
14868                 case "$val" in
14869                 '')     rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
14870                         case "$d_fd_set" in
14871                                 $define) dflt="fd_set *" ;;
14872                                 *)              dflt="int *" ;;
14873                         esac
14874                         . ./myread
14875                         val=$ans
14876                         ;;
14877                 esac
14878                 selecttype="$val"
14879                 ;;
14880         *)      : no select, so pick a harmless default
14881                 selecttype='int *'
14882                 ;;
14883         esac
14884         ;;
14885 esac
14886
14887 : check for the select 'width'
14888 case "$selectminbits" in
14889 '') case "$d_select" in
14890         $define)
14891                 $cat <<EOM
14892
14893 Checking to see on how many bits at a time your select() operates...
14894 EOM
14895                 $cat >try.c <<EOCP
14896 #include <sys/types.h>
14897 #$i_time I_TIME
14898 #$i_systime I_SYS_TIME
14899 #$i_systimek I_SYS_TIME_KERNEL
14900 #ifdef I_TIME
14901 #   include <time.h>
14902 #endif
14903 #ifdef I_SYS_TIME
14904 #   ifdef I_SYS_TIME_KERNEL
14905 #       define KERNEL
14906 #   endif
14907 #   include <sys/time.h>
14908 #   ifdef I_SYS_TIME_KERNEL
14909 #       undef KERNEL
14910 #   endif
14911 #endif
14912 #$i_sysselct I_SYS_SELECT
14913 #ifdef I_SYS_SELECT
14914 #include <sys/select.h>
14915 #endif
14916 #$d_socket HAS_SOCKET
14917 #ifdef HAS_SOCKET
14918 #   include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
14919 #endif
14920 #include <stdio.h>
14921 $selecttype b;
14922 #define S sizeof(*(b))
14923 #define MINBITS 64
14924 #define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
14925 #define NBITS  (NBYTES * 8)
14926 int main() {
14927     char s[NBYTES];
14928     struct timeval t;
14929     int i;
14930     FILE* fp;
14931     int fd;
14932
14933     fclose(stdin);
14934     fp = fopen("try.c", "r");
14935     if (fp == 0)
14936       exit(1);
14937     fd = fileno(fp);
14938     if (fd < 0)
14939       exit(2);
14940     b = ($selecttype)s;
14941     for (i = 0; i < NBITS; i++)
14942         FD_SET(i, b);
14943     t.tv_sec  = 0;
14944     t.tv_usec = 0;
14945     select(fd + 1, b, 0, 0, &t);
14946     for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
14947     printf("%d\n", i + 1);
14948     return 0;
14949 }
14950 EOCP
14951                 set try
14952                 if eval $compile_ok; then
14953                         selectminbits=`$run ./try`
14954                         case "$selectminbits" in
14955                         '')     cat >&4 <<EOM
14956 Cannot figure out on how many bits at a time your select() operates.
14957 I'll play safe and guess it is 32 bits.
14958 EOM
14959                                 selectminbits=32
14960                                 bits="32 bits"
14961                                 ;;
14962                         1)      bits="1 bit" ;;
14963                         *)      bits="$selectminbits bits" ;;
14964                         esac
14965                         echo "Your select() operates on $bits at a time." >&4
14966                 else
14967                         rp='What is the minimum number of bits your select() operates on?'
14968                         case "$byteorder" in
14969                         1234|12345678)  dflt=32 ;;
14970                         *)              dflt=1  ;;
14971                         esac
14972                         . ./myread
14973                         val=$ans
14974                         selectminbits="$val"
14975                 fi
14976                 $rm -f try.* try
14977                 ;;
14978         *)      : no select, so pick a harmless default
14979                 selectminbits='32'
14980                 ;;
14981         esac
14982         ;;
14983 esac
14984
14985 : Trace out the files included by signal.h, then look for SIGxxx names.
14986 : Remove SIGARRAYSIZE used by HPUX.
14987 : Remove SIGSTKSIZE used by Linux.
14988 : Remove SIGSTKSZ used by Posix.
14989 : Remove SIGTYP void lines used by OS2.
14990 : Some cpps, like os390, dont give the file name anywhere
14991 if [ "X$fieldn" = X ]; then
14992         : Just make some guesses.  We check them later.
14993         xxx='/usr/include/signal.h /usr/include/sys/signal.h'
14994 else
14995         xxx=`echo '#include <signal.h>' |
14996         $cppstdin $cppminus $cppflags 2>/dev/null |
14997         $grep '^[       ]*#.*include' | 
14998         $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sed 's!\\\\\\\\!/!g' | $sort | $uniq`
14999 fi
15000 : Check this list of files to be sure we have parsed the cpp output ok.
15001 : This will also avoid potentially non-existent files, such 
15002 : as ../foo/bar.h
15003 xxxfiles=''
15004 for xx in $xxx /dev/null ; do
15005         $test -f "$xx" && xxxfiles="$xxxfiles $xx"
15006 done
15007 : If we have found no files, at least try signal.h
15008 case "$xxxfiles" in
15009 '')     xxxfiles=`./findhdr signal.h` ;;
15010 esac
15011 xxx=`awk '
15012 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
15013         print substr($2, 4, 20)
15014 }
15015 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
15016         print substr($3, 4, 20)
15017 }' $xxxfiles`
15018 : Append some common names just in case the awk scan failed.
15019 xxx="$xxx ABRT ALRM BUS CANCEL CHLD CLD CONT DIL EMT FPE"
15020 xxx="$xxx FREEZE HUP ILL INT IO IOT KILL LOST LWP PHONE"
15021 xxx="$xxx PIPE POLL PROF PWR QUIT RTMAX RTMIN SEGV STKFLT STOP"
15022 xxx="$xxx SYS TERM THAW TRAP TSTP TTIN TTOU URG USR1 USR2"
15023 xxx="$xxx USR3 USR4 VTALRM WAITING WINCH WIND WINDOW XCPU XFSZ"
15024
15025 : generate a few handy files for later
15026 $cat > signal.c <<'EOCP'
15027 #include <sys/types.h>
15028 #include <signal.h>
15029 #include <stdio.h>
15030 int main() {
15031
15032 /* Strange style to avoid deeply-nested #if/#else/#endif */
15033 #ifndef NSIG
15034 #  ifdef _NSIG
15035 #    define NSIG (_NSIG)
15036 #  endif
15037 #endif
15038
15039 #ifndef NSIG
15040 #  ifdef SIGMAX
15041 #    define NSIG (SIGMAX+1)
15042 #  endif
15043 #endif
15044
15045 #ifndef NSIG
15046 #  ifdef SIG_MAX
15047 #    define NSIG (SIG_MAX+1)
15048 #  endif
15049 #endif
15050
15051 #ifndef NSIG
15052 #  ifdef MAXSIG
15053 #    define NSIG (MAXSIG+1)
15054 #  endif
15055 #endif
15056
15057 #ifndef NSIG
15058 #  ifdef MAX_SIG
15059 #    define NSIG (MAX_SIG+1)
15060 #  endif
15061 #endif
15062
15063 #ifndef NSIG
15064 #  ifdef SIGARRAYSIZE
15065 #    define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
15066 #  endif
15067 #endif
15068
15069 #ifndef NSIG
15070 #  ifdef _sys_nsig
15071 #    define NSIG (_sys_nsig) /* Solaris 2.5 */
15072 #  endif
15073 #endif
15074
15075 /* Default to some arbitrary number that's big enough to get most
15076    of the common signals.
15077 */
15078 #ifndef NSIG
15079 #    define NSIG 50
15080 #endif
15081
15082 printf("NSIG %d\n", NSIG);
15083
15084 #ifndef JUST_NSIG
15085
15086 EOCP
15087
15088 echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
15089 {
15090         printf "#ifdef SIG"; printf $1; printf "\n"
15091         printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
15092         printf $1; printf ");\n"
15093         printf "#endif\n"
15094 }
15095 END {
15096         printf "#endif /* JUST_NSIG */\n";
15097         printf "exit(0);\n}\n";
15098 }
15099 ' >>signal.c
15100 $cat >signal.awk <<'EOP'
15101 BEGIN { ndups = 0 }
15102 $1 ~ /^NSIG$/ { nsig = $2 }
15103 ($1 !~ /^NSIG$/) && (NF == 2) {
15104     if ($2 > maxsig) { maxsig = $2 }
15105     if (sig_name[$2]) {
15106         dup_name[ndups] = $1
15107         dup_num[ndups] = $2
15108         ndups++ 
15109     }
15110     else {
15111         sig_name[$2] = $1
15112         sig_num[$2] = $2
15113     }
15114 }
15115 END { 
15116     if (nsig == 0) {
15117         nsig = maxsig + 1
15118     }
15119     printf("NSIG %d\n", nsig);
15120     for (n = 1; n < nsig; n++) {
15121         if (sig_name[n]) {
15122             printf("%s %d\n", sig_name[n], sig_num[n])
15123         }
15124         else {
15125             printf("NUM%d %d\n", n, n) 
15126         }
15127     }
15128     for (n = 0; n < ndups; n++) {
15129         printf("%s %d\n", dup_name[n], dup_num[n])
15130     }
15131 }
15132 EOP
15133 $cat >signal_cmd <<EOS
15134 $startsh
15135 if $test -s signal.lst; then
15136     echo "Using your existing signal.lst file"
15137         exit 0
15138 fi
15139 xxx="$xxx"
15140 EOS
15141 $cat >>signal_cmd <<'EOS'
15142
15143 set signal
15144 if eval $compile_ok; then
15145         $run ./signal$_exe | $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
15146 else
15147         echo "(I can't seem be able to compile the whole test program)" >&4
15148         echo "(I'll try it in little pieces.)" >&4
15149         set signal -DJUST_NSIG
15150         if eval $compile_ok; then
15151                 $run ./signal$_exe > signal.nsg
15152                 $cat signal.nsg
15153         else
15154                 echo "I can't seem to figure out how many signals you have." >&4
15155                 echo "Guessing 50." >&4
15156                 echo 'NSIG 50' > signal.nsg
15157         fi
15158         : Now look at all the signal names, one at a time.
15159         for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
15160                 $cat > signal.c <<EOCP
15161 #include <sys/types.h>
15162 #include <signal.h>
15163 #include <stdio.h>
15164 int main() {
15165 printf("$xx %d\n", SIG${xx});
15166 return 0;
15167 }
15168 EOCP
15169                 set signal
15170                 if eval $compile; then
15171                         echo "SIG${xx} found."
15172                         $run ./signal$_exe  >> signal.ls1
15173                 else
15174                         echo "SIG${xx} NOT found."
15175                 fi
15176         done
15177         if $test -s signal.ls1; then
15178                 $cat signal.nsg signal.ls1 |
15179                         $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
15180         fi
15181
15182 fi
15183 if $test -s signal.lst; then
15184         :
15185 else
15186         echo "(AAK! I can't compile the test programs -- Guessing)" >&4
15187         echo 'kill -l' >signal
15188         set X `csh -f <signal`
15189         $rm -f signal
15190         shift
15191         case $# in
15192         0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
15193         esac
15194         echo $@ | $tr ' ' $trnl | \
15195             $awk '{ printf "%s %d\n", $1, ++s; }
15196                   END { printf "NSIG %d\n", ++s }' >signal.lst
15197 fi
15198 $rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
15199 EOS
15200 chmod a+x signal_cmd
15201 $eunicefix signal_cmd
15202
15203 : generate list of signal names
15204 echo " "
15205 case "$sig_name_init" in
15206 '') doinit=yes ;;
15207 *)  case "$sig_num_init" in
15208     ''|*,*) doinit=yes ;;
15209     esac ;;
15210 esac
15211 case "$doinit" in
15212 yes)
15213         echo "Generating a list of signal names and numbers..." >&4
15214         . ./signal_cmd
15215         sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
15216         sig_name=`$awk 'BEGIN { printf "ZERO " }
15217                         !/^NSIG/ { printf "%s ", $1 }' signal.lst`
15218         sig_num=`$awk  'BEGIN { printf "0 " }
15219                         !/^NSIG/ { printf "%d ", $2 }' signal.lst`
15220         sig_name_init=`$awk 'BEGIN      { printf "\"ZERO\", " }
15221                              !/^NSIG/   { printf "\"%s\", ", $1 }
15222                              END        { printf "0\n" }' signal.lst`
15223         sig_num_init=`$awk  'BEGIN      { printf "0, " }
15224                              !/^NSIG/   { printf "%d, ", $2}
15225                              END        { printf "0\n"}' signal.lst`
15226         ;;
15227 esac
15228 echo "The following $sig_count signals are available:"
15229 echo " "
15230 echo $sig_name | $awk \
15231 'BEGIN { linelen = 0 }
15232 {
15233         for (i = 1; i <= NF; i++) {
15234                 name = "SIG" $i " "
15235                 linelen = linelen + length(name)
15236                 if (linelen > 70) {
15237                         printf "\n"
15238                         linelen = length(name)
15239                 }
15240                 printf "%s", name
15241         }
15242         printf "\n"
15243 }'
15244 sig_size=`echo $sig_name | awk '{print NF}'`
15245 $rm -f signal signal.c signal.awk signal.lst signal_cmd 
15246
15247 echo " "
15248 case "$sizetype" in
15249 *_t) zzz="$sizetype"    ;;
15250 *)   zzz="filesize"     ;;
15251 esac
15252 echo "Checking the size of $zzz..." >&4 
15253 cat > try.c <<EOCP
15254 #include <sys/types.h>
15255 #include <stdio.h>
15256 int main() {
15257     printf("%d\n", (int)sizeof($sizetype));
15258     exit(0);
15259 }
15260 EOCP
15261 set try
15262 if eval $compile_ok; then
15263         yyy=`$run ./try`
15264         case "$yyy" in
15265         '')     sizesize=4
15266                 echo "(I can't execute the test program--guessing $sizesize.)" >&4
15267                 ;;
15268         *)      sizesize=$yyy
15269                 echo "Your $zzz size is $sizesize bytes."
15270                 ;;
15271         esac
15272 else
15273         sizesize=4
15274         echo "(I can't compile the test program--guessing $sizesize.)" >&4
15275 fi
15276
15277
15278 : check for socklen_t
15279 echo " "
15280 echo "Checking to see if you have socklen_t..." >&4
15281 $cat >try.c <<EOCP
15282 #include <sys/types.h>
15283 #$d_socket HAS_SOCKET
15284 #ifdef HAS_SOCKET
15285 #include <sys/socket.h>
15286 #endif
15287 int main() { socklen_t x = 16; }
15288 EOCP
15289 set try
15290 if eval $compile; then
15291         val="$define"
15292         echo "You have socklen_t."
15293 else
15294         val="$undef"
15295         echo "You do not have socklen_t."
15296         case "$sizetype" in
15297         size_t) echo "(You do have size_t, that might work. Some people are happy with just an int.)" ;;
15298         esac
15299 fi
15300 $rm -f try try.*
15301 set d_socklen_t
15302 eval $setvar
15303
15304 : see if this is a socks.h system
15305 set socks.h i_socks
15306 eval $inhdr
15307
15308 : check for type of the size argument to socket calls
15309 case "$d_socket" in
15310 "$define")
15311         $cat <<EOM
15312
15313 Checking to see what type is the last argument of accept().
15314 EOM
15315         yyy=''
15316         case "$d_socklen_t" in
15317         "$define") yyy="$yyy socklen_t"
15318         esac
15319         yyy="$yyy $sizetype int long unsigned"
15320         for xxx in $yyy; do
15321                 case "$socksizetype" in
15322                 '')     try="extern int accept(int, struct sockaddr *, $xxx *);"
15323                         case "$usesocks" in
15324                         "$define")
15325                                 if ./protochk "$try" $i_systypes sys/types.h $d_socket sys/socket.h literal '#define INCLUDE_PROTOTYPES' $i_socks socks.h.; then
15326                                         echo "Your system accepts '$xxx *' for the last argument of accept()."
15327                                         socksizetype="$xxx"
15328                                 fi
15329                                 ;;
15330                         *)      if ./protochk "$try"  $i_systypes sys/types.h $d_socket sys/socket.h; then
15331                                         echo "Your system accepts '$xxx *' for the last argument of accept()."
15332                                         socksizetype="$xxx"
15333                                 fi
15334                                 ;;
15335                         esac
15336                         ;;
15337                 esac
15338         done
15339 : In case none of those worked, prompt the user.
15340         case "$socksizetype" in
15341         '')     rp='What is the type for socket address structure sizes?'
15342                 dflt='int'
15343                 . ./myread
15344                 socksizetype=$ans
15345                 ;;
15346         esac
15347         ;;
15348 *)      : no sockets, so pick relatively harmless default
15349         socksizetype='int'
15350         ;;
15351 esac
15352
15353 : see what type is used for signed size_t
15354 set ssize_t ssizetype int stdio.h sys/types.h
15355 eval $typedef
15356 dflt="$ssizetype"
15357 $cat > try.c <<EOM
15358 #include <stdio.h>
15359 #include <sys/types.h>
15360 #define Size_t $sizetype
15361 #define SSize_t $dflt
15362 int main()
15363 {
15364         if (sizeof(Size_t) == sizeof(SSize_t))
15365                 printf("$dflt\n");
15366         else if (sizeof(Size_t) == sizeof(int))
15367                 printf("int\n");
15368         else 
15369                 printf("long\n");
15370         exit(0);
15371 }
15372 EOM
15373 echo " "
15374 set try
15375 if eval $compile_ok && $run ./try > /dev/null; then
15376         ssizetype=`$run ./try`
15377         echo "I'll be using $ssizetype for functions returning a byte count." >&4
15378 else
15379         $cat >&4 <<EOM
15380 Help! I can't compile and run the ssize_t test program: please enlighten me!
15381 (This is probably a misconfiguration in your system or libraries, and
15382 you really ought to fix it.  Still, I'll try anyway.)
15383
15384 I need a type that is the same size as $sizetype, but is guaranteed to
15385 be signed.  Common values are ssize_t, int and long.
15386
15387 EOM
15388         rp="What signed type is the same size as $sizetype?"
15389         . ./myread
15390         ssizetype="$ans"
15391 fi
15392 $rm -f try try.*
15393
15394 : see what type of char stdio uses.
15395 echo " "
15396 echo '#include <stdio.h>' | $cppstdin $cppminus > stdioh
15397 if $contains 'unsigned.*char.*_ptr;' stdioh >/dev/null 2>&1 ; then
15398         echo "Your stdio uses unsigned chars." >&4
15399         stdchar="unsigned char"
15400 else
15401         echo "Your stdio uses signed chars." >&4
15402         stdchar="char"
15403 fi
15404 $rm -f stdioh
15405
15406
15407
15408 : see if time exists
15409 echo " "
15410 if test "X$d_time" = X -o X"$timetype" = X; then
15411     if set time val -f d_time; eval $csym; $val; then
15412                 echo 'time() found.' >&4
15413                 val="$define"
15414                 rp="What is the type returned by time() on this system?"
15415                 set time_t timetype long stdio.h sys/types.h
15416                 eval $typedef_ask
15417     else
15418                 echo 'time() not found, hope that will do.' >&4
15419                 val="$undef"
15420                 timetype='int';
15421     fi
15422     set d_time
15423     eval $setvar
15424 fi
15425
15426 : see what type uids are declared as in the kernel
15427 echo " "
15428 echo "Looking for the type for user ids returned by getuid()."
15429 set uid_t uidtype xxx stdio.h sys/types.h
15430 eval $typedef
15431 case "$uidtype" in
15432 xxx)
15433         xxx=`./findhdr sys/user.h`
15434         set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
15435         case $1 in
15436         unsigned) dflt="$1 $2" ;;
15437         *) dflt="$1" ;;
15438         esac
15439         ;;
15440 *) dflt="$uidtype";;
15441 esac
15442 case "$uidtype" in
15443 uid_t)  echo "uid_t found." ;;
15444 *)      rp="What is the type for user ids returned by getuid()?"
15445         . ./myread
15446         uidtype="$ans"
15447         ;;
15448 esac
15449
15450 echo " "
15451 case "$uidtype" in
15452 *_t) zzz="$uidtype"     ;;
15453 *)   zzz="uid"          ;;
15454 esac
15455 echo "Checking the size of $zzz..." >&4 
15456 cat > try.c <<EOCP
15457 #include <sys/types.h>
15458 #include <stdio.h>
15459 int main() {
15460     printf("%d\n", (int)sizeof($uidtype));
15461     exit(0);
15462 }
15463 EOCP
15464 set try
15465 if eval $compile_ok; then
15466         yyy=`$run ./try`
15467         case "$yyy" in
15468         '')     uidsize=4
15469                 echo "(I can't execute the test program--guessing $uidsize.)" >&4
15470                 ;;
15471         *)      uidsize=$yyy
15472                 echo "Your $zzz is $uidsize bytes long."
15473                 ;;
15474         esac
15475 else
15476         uidsize=4
15477         echo "(I can't compile the test program--guessing $uidsize.)" >&4
15478 fi
15479
15480 echo " "
15481 case "$uidtype" in
15482 *_t) zzz="$uidtype"     ;;
15483 *)   zzz="uid"          ;;
15484 esac
15485 echo "Checking the sign of $zzz..." >&4
15486 cat > try.c <<EOCP
15487 #include <sys/types.h>
15488 #include <stdio.h>
15489 int main() {
15490         $uidtype foo = -1;
15491         if (foo < 0)
15492                 printf("-1\n");
15493         else
15494                 printf("1\n");
15495 }
15496 EOCP
15497 set try
15498 if eval $compile; then
15499         yyy=`$run ./try`
15500         case "$yyy" in
15501         '')     uidsign=1
15502                 echo "(I can't execute the test program--guessing unsigned.)" >&4
15503                 ;;
15504         *)      uidsign=$yyy
15505                 case "$uidsign" in
15506                  1) echo "Your $zzz is unsigned." ;;
15507                 -1) echo "Your $zzz is signed."   ;;
15508                 esac
15509                 ;;
15510         esac
15511 else
15512         uidsign=1
15513         echo "(I can't compile the test program--guessing unsigned.)" >&4
15514 fi
15515
15516
15517
15518 echo " "
15519 $echo "Checking the format string to be used for uids..." >&4
15520
15521 case "$uidsign" in
15522 -1)     if $test X"$uidsize" = X"$ivsize"; then
15523                 uidformat="$ivdformat"
15524         else
15525                 if $test X"$uidsize" = X"$longsize"; then
15526                         uidformat='"ld"'
15527                 else
15528                         if $test X"$uidsize" = X"$intsize"; then
15529                                 uidformat='"d"'
15530                         else
15531                                 if $test X"$uidsize" = X"$shortsize"; then
15532                                         uidformat='"hd"'
15533                                 fi
15534                         fi
15535                 fi
15536         fi
15537         ;;
15538 *)      if $test X"$uidsize" = X"$uvsize"; then
15539                 uidformat="$uvuformat"
15540         else
15541                 if $test X"$uidsize" = X"$longsize"; then
15542                         uidformat='"lu"'
15543                 else
15544                         if $test X"$uidsize" = X"$intsize"; then
15545                                 uidformat='"u"'
15546                         else
15547                                 if $test X"$uidsize" = X"$shortsize"; then
15548                                         uidformat='"hu"'
15549                                 fi
15550                         fi
15551                 fi
15552         fi
15553         ;;
15554 esac
15555
15556 : determine compiler compiler
15557 case "$yacc" in
15558 '')
15559         dflt=yacc;;
15560 *)
15561         dflt="$yacc";;
15562 esac
15563 echo " "
15564 comp='yacc'
15565 if $test -f "$byacc"; then
15566         dflt="$byacc"
15567         comp="byacc or $comp"
15568 fi
15569 if $test -f "$bison"; then
15570         comp="$comp or bison -y"
15571 fi
15572 rp="Which compiler compiler ($comp) shall I use?"
15573 . ./myread
15574 yacc="$ans"
15575 case "$yacc" in
15576 *bis*)
15577         case "$yacc" in
15578         *-y*) ;;
15579         *)
15580                 yacc="$yacc -y"
15581                 echo "(Adding -y option to bison to get yacc-compatible behaviour.)"
15582                 ;;
15583         esac
15584         ;;
15585 esac
15586
15587 : see if fcntl.h is there
15588 val=''
15589 set fcntl.h val
15590 eval $inhdr
15591
15592 : see if we can include fcntl.h
15593 case "$val" in
15594 "$define")
15595         echo " "
15596         if $h_fcntl; then
15597                 val="$define"
15598                 echo "We'll be including <fcntl.h>." >&4
15599         else
15600                 val="$undef"
15601                 if $h_sysfile; then
15602         echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
15603                 else
15604                         echo "We won't be including <fcntl.h>." >&4
15605                 fi
15606         fi
15607         ;;
15608 *)
15609         h_fcntl=false
15610         val="$undef"
15611         ;;
15612 esac
15613 set i_fcntl
15614 eval $setvar
15615
15616 : see if this is a iconv.h system
15617 set iconv.h i_iconv
15618 eval $inhdr
15619
15620 : see if this is a ieeefp.h system
15621 set ieeefp.h i_ieeefp
15622 eval $inhdr
15623
15624 : see if this is a libutil.h system
15625 set libutil.h i_libutil
15626 eval $inhdr
15627
15628 : see if locale.h is available
15629 set locale.h i_locale
15630 eval $inhdr
15631
15632 : see if mach cthreads are available
15633 if test "X$usethreads" = "X$define"; then
15634         set mach/cthreads.h i_machcthr
15635         eval $inhdr
15636 else
15637         i_machcthr="$undef"
15638 fi
15639
15640
15641
15642 : see if this is a math.h system
15643 set math.h i_math
15644 eval $inhdr
15645
15646 : see if this is a mntent.h system
15647 set mntent.h i_mntent
15648 eval $inhdr
15649
15650 : see if ndbm.h is available
15651 set ndbm.h t_ndbm
15652 eval $inhdr
15653 case "$t_ndbm" in
15654 $define)
15655         : see if dbm_open exists
15656         set dbm_open d_dbm_open
15657         eval $inlibc
15658         case "$d_dbm_open" in
15659         $undef)
15660                 t_ndbm="$undef"
15661                 echo "We won't be including <ndbm.h>"
15662                 ;;
15663         esac
15664         ;;
15665 esac
15666 val="$t_ndbm"
15667 set i_ndbm
15668 eval $setvar
15669
15670 : see if net/errno.h is available
15671 val=''
15672 set net/errno.h val
15673 eval $inhdr
15674
15675 : Unfortunately, it causes problems on some systems.  Arrgh.
15676 case "$val" in
15677 $define)
15678         cat > try.c <<'EOM'
15679 #include <stdio.h>
15680 #include <errno.h>
15681 #include <net/errno.h>
15682 int func()
15683 {
15684         return ENOTSOCK;
15685 }
15686 EOM
15687         if $cc $ccflags -c try.c >/dev/null 2>&1; then
15688                 echo "We'll be including <net/errno.h>." >&4
15689         else
15690                 echo "We won't be including <net/errno.h>." >&4
15691                 val="$undef"
15692         fi
15693         $rm -f try.* try
15694         ;;
15695 esac
15696 set i_neterrno
15697 eval $setvar
15698
15699 : see if netinet/tcp.h is available
15700 set netinet/tcp.h i_netinettcp
15701 eval $inhdr
15702
15703 : see if this is a poll.h system
15704 set poll.h i_poll
15705 eval $inhdr
15706
15707 : see if this is a prot.h system
15708 set prot.h i_prot
15709 eval $inhdr
15710
15711 echo " "
15712 $echo "Guessing which symbols your C compiler and preprocessor define..." >&4 
15713 $cat <<'EOSH' > Cppsym.know
15714 a29k ABI64 aegis AES_SOURCE AIX AIX32 AIX370
15715 AIX41 AIX42 AIX43 AIX_SOURCE aixpc ALL_SOURCE
15716 alliant alpha am29000 AM29000 AMD64 amiga AMIGAOS AMIX
15717 ansi ANSI_C_SOURCE apollo ardent ARM32 atarist att386 att3b
15718 BeOS BIG_ENDIAN BIT_MSF bsd BSD bsd43 bsd4_2 bsd4_3 BSD4_3 bsd4_4
15719 BSD_4_3 BSD_4_4 BSD_NET2 BSD_TIME BSD_TYPES BSDCOMPAT bsdi
15720 bull c cadmus clipper CMU COFF COMPILER_VERSION
15721 concurrent convex cpu cray CRAY CRAYMPP ctix CX_UX
15722 CYGWIN DGUX DGUX_SOURCE DJGPP dmert DOLPHIN DPX2 DSO
15723 Dynix DynixPTX ELF encore EPI EXTENSIONS FILE_OFFSET_BITS
15724 FreeBSD GCC_NEW_VARARGS gcos gcx gimpel
15725 GNU_SOURCE GNUC GNUC_MINOR GO32 gould GOULD_PN
15726 H3050R H3050RX hbullx20 hcx host_mips
15727 hp200 hp300 hp700 HP700 hp800 hp9000
15728 hp9000s200 hp9000s300 hp9000s400 hp9000s500
15729 hp9000s700 hp9000s800 hp9k8 hp_osf hppa hpux HPUX_SOURCE
15730 i186 i286 i386 i486 i586 i686 i8086 i80960 i860 I960
15731 IA64 iAPX286 ibm ibm032 ibmesa IBMR2 ibmrt ILP32 ILP64
15732 INLINE_INTRINSICS INTRINSICS INT64 interdata is68k ksr1
15733 LANGUAGE_C LARGE_FILE_API LARGEFILE64_SOURCE
15734 LARGEFILE_SOURCE LFS64_LARGEFILE LFS_LARGEFILE
15735 Linux LITTLE_ENDIAN LONG64 LONG_DOUBLE LONG_LONG
15736 LONGDOUBLE LONGLONG LP64 luna luna88k Lynx
15737 M68000 m68k m88100 m88k M88KBCS_TARGET M_COFF
15738 M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM M_SYS3
15739 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX MACH machine MachTen
15740 MATH_HAS_NO_SIDE_EFFECTS
15741 mc300 mc500 mc68000 mc68010 mc68020 mc68030 mc68040
15742 mc68060 mc68k mc68k32 mc700 mc88000 mc88100 merlin
15743 mert MiNT mips MIPS_FPSET MIPS_ISA MIPS_SIM MIPS_SZINT
15744 MIPS_SZLONG MIPS_SZPTR MIPSEB MIPSEL MODERN_C motorola
15745 mpeix MSDOS MTXINU MULTIMAX mvs MVS n16 ncl_el ncl_mr
15746 NetBSD news1500 news1700 news1800 news1900 news3700
15747 news700 news800 news900 NeXT NLS nonstopux ns16000 ns32000
15748 ns32016 ns32332 ns32k nsc32000
15749 OCS88 OEMVS OpenBSD os OS2 OS390 osf OSF1 OSF_SOURCE
15750 pa_risc PA_RISC1_1 PA_RISC2_0 PARAGON parisc
15751 pc532 pdp11 PGC PIC plexus PORTAR posix
15752 POSIX1B_SOURCE POSIX2_SOURCE POSIX4_SOURCE
15753 POSIX_C_SOURCE POSIX_SOURCE POWER
15754 PROTOTYPES PWB pyr QNX R3000 REENTRANT RES Rhapsody RISC6000
15755 riscix riscos RT S390 SA110 scs SCO sequent sgi SGI_SOURCE SH3 sinix
15756 SIZE_INT SIZE_LONG SIZE_PTR SOCKET_SOURCE SOCKETS_SOURCE
15757 sony sony_news sonyrisc sparc sparclite spectrum
15758 stardent stdc STDC_EXT stratos sun sun3 sun386
15759 Sun386i svr3 svr4 SVR4_2 SVR4_SOURCE svr5
15760 SX system SYSTYPE_BSD SYSTYPE_BSD43 SYSTYPE_BSD44
15761 SYSTYPE_SVR4 SYSTYPE_SVR5 SYSTYPE_SYSV SYSV SYSV3 SYSV4 SYSV5
15762 sysV68 sysV88 Tek4132 Tek4300 titan
15763 TM3200 TM5400 TM5600
15764 tower tower32 tower32_200 tower32_600 tower32_700
15765 tower32_800 tower32_850 tss
15766 u370 u3b u3b2 u3b20 u3b200 u3b20d u3b5
15767 ultrix UMAXV UnicomPBB UnicomPBD UNICOS UNICOSMK
15768 unix UNIX95 UNIX99 unixpc unos USGr4 USGr4_2
15769 Utek UTek UTS UWIN uxpm uxps vax venix VMESA vms xenix Xenix286
15770 XOPEN_SOURCE XOPEN_SOURCE_EXTENDED XPG2 XPG2_EXTENDED
15771 XPG3 XPG3_EXTENDED XPG4 XPG4_EXTENDED
15772 z8000
15773 EOSH
15774 # Maybe put other stuff here too.
15775 cat <<EOSH >>Cppsym.know
15776 $osname
15777 EOSH
15778 ./tr '[a-z]' '[A-Z]' < Cppsym.know > Cppsym.a
15779 ./tr '[A-Z]' '[a-z]' < Cppsym.know > Cppsym.b
15780 $cat Cppsym.know > Cppsym.c
15781 $cat Cppsym.a Cppsym.b Cppsym.c | $tr ' ' $trnl | $sort | $uniq > Cppsym.know
15782 $rm -f Cppsym.a Cppsym.b Cppsym.c
15783 cat <<EOSH > Cppsym
15784 $startsh
15785 if $test \$# -gt 0; then
15786     echo \$* | $tr " " "$trnl" | ./Cppsym.try > Cppsym.got
15787     if $test -s Cppsym.got; then
15788         $rm -f Cppsym.got
15789         exit 0
15790     fi
15791     $rm -f Cppsym.got
15792     exit 1
15793 else
15794     $tr " " "$trnl" | ./Cppsym.try
15795     exit 0
15796 fi
15797 EOSH
15798 chmod +x Cppsym
15799 $eunicefix Cppsym
15800 cat <<EOSH > Cppsym.try
15801 $startsh
15802 cat <<'EOCP' > try.c
15803 #include <stdio.h>
15804 int main() {
15805 EOCP
15806 $awk \\
15807 EOSH
15808 cat <<'EOSH' >> Cppsym.try
15809 'length($1) > 0 {
15810     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
15811     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
15812     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
15813     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
15814 }'       >> try.c
15815 echo 'return 0;}' >> try.c
15816 EOSH
15817 cat <<EOSH >> Cppsym.try
15818 ccflags="$ccflags"
15819 case "$osname-$gccversion" in
15820 irix-) ccflags="\$ccflags -woff 1178" ;;
15821 os2-*) ccflags="\$ccflags -Zlinker /PM:VIO" ;;
15822 esac
15823 $cc -o try $optimize \$ccflags $ldflags try.c $libs && $run ./try
15824 EOSH
15825 chmod +x Cppsym.try
15826 $eunicefix Cppsym.try
15827 ./Cppsym < Cppsym.know > Cppsym.true
15828 : now check the C compiler for additional symbols
15829 postprocess_cc_v=''
15830 case "$osname" in
15831 aix) postprocess_cc_v="|$tr , ' '" ;;
15832 esac
15833 $cat >ccsym <<EOS
15834 $startsh
15835 $cat >tmp.c <<EOF
15836 extern int foo;
15837 EOF
15838 for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
15839 do
15840         case "\$i" in
15841         -D*) echo "\$i" | $sed 's/^-D//';;
15842         -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A\(.*\)(\(.*\))/\1=\2/';;
15843         esac
15844 done
15845 $rm -f try.c
15846 EOS
15847 postprocess_cc_v=''
15848 chmod +x ccsym
15849 $eunicefix ccsym
15850 ./ccsym > ccsym1.raw
15851 if $test -s ccsym1.raw; then
15852        $sort ccsym1.raw | $uniq >ccsym.raw
15853 else
15854        mv ccsym1.raw ccsym.raw
15855 fi
15856
15857 $awk '/\=/ { print $0; next }
15858         { print $0"=1" }' ccsym.raw >ccsym.list
15859 $awk '/\=/ { print $0; next }
15860         { print $0"=1" }' Cppsym.true >ccsym.true
15861 $comm -13 ccsym.true ccsym.list >ccsym.own
15862 $comm -12 ccsym.true ccsym.list >ccsym.com
15863 $comm -23 ccsym.true ccsym.list >ccsym.cpp
15864 also=''
15865 if $test -z ccsym.raw; then
15866         echo "Your C compiler doesn't seem to define any symbols!" >&4
15867         echo " "
15868         echo "However, your C preprocessor defines the following symbols:"
15869         $cat Cppsym.true
15870         ccsymbols=''
15871         cppsymbols=`$cat Cppsym.true`
15872         cppsymbols=`echo $cppsymbols`
15873         cppccsymbols="$cppsymbols"
15874 else
15875         if $test -s ccsym.com; then
15876                 echo "Your C compiler and pre-processor define these symbols:"
15877                 $sed -e 's/\(..*\)=.*/\1/' ccsym.com
15878                 also='also '
15879                 symbols='ones'
15880                 cppccsymbols=`$cat ccsym.com`
15881                 cppccsymbols=`echo $cppccsymbols`
15882                 $test "$silent" || sleep 1
15883         fi
15884         if $test -s ccsym.cpp; then
15885                 $test "$also" && echo " "
15886                 echo "Your C pre-processor ${also}defines the following symbols:"
15887                 $sed -e 's/\(..*\)=.*/\1/' ccsym.cpp
15888                 also='further '
15889                 cppsymbols=`$cat ccsym.cpp`
15890                 cppsymbols=`echo $cppsymbols`
15891                 $test "$silent" || sleep 1
15892         fi
15893         if $test -s ccsym.own; then
15894                 $test "$also" && echo " "
15895                 echo "Your C compiler ${also}defines the following cpp symbols:"
15896                 $sed -e 's/\(..*\)=1/\1/' ccsym.own
15897                 $sed -e 's/\(..*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
15898                 ccsymbols=`$cat ccsym.own`
15899                 ccsymbols=`echo $ccsymbols`
15900                 $test "$silent" || sleep 1
15901         fi
15902 fi
15903
15904 : see if this is a termio system
15905 val="$undef"
15906 val2="$undef"
15907 val3="$undef"
15908 if $test `./findhdr termios.h`; then
15909         set tcsetattr i_termios
15910         eval $inlibc
15911         val3="$i_termios"
15912 fi
15913 echo " "
15914 case "$val3" in
15915 "$define") echo "You have POSIX termios.h... good!" >&4;;
15916 *) if ./Cppsym pyr; then
15917                 case "`/bin/universe`" in
15918                 ucb) if $test `./findhdr sgtty.h`; then
15919                                 val2="$define"
15920                                 echo "<sgtty.h> found." >&4
15921                         else
15922                                 echo "System is pyramid with BSD universe."
15923                                 echo "<sgtty.h> not found--you could have problems." >&4
15924                         fi;;
15925                 *) if $test `./findhdr termio.h`; then
15926                                 val="$define"
15927                                 echo "<termio.h> found." >&4
15928                         else
15929                                 echo "System is pyramid with USG universe."
15930                                 echo "<termio.h> not found--you could have problems." >&4
15931                         fi;;
15932                 esac
15933         elif ./usg; then
15934                 if $test `./findhdr termio.h`; then
15935                         echo "<termio.h> found." >&4
15936                         val="$define"
15937                 elif $test `./findhdr sgtty.h`; then
15938                         echo "<sgtty.h> found." >&4
15939                         val2="$define"
15940                 else
15941 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
15942                 fi
15943         else
15944                 if $test `./findhdr sgtty.h`; then
15945                         echo "<sgtty.h> found." >&4
15946                         val2="$define"
15947                 elif $test `./findhdr termio.h`; then
15948                         echo "<termio.h> found." >&4
15949                         val="$define"
15950                 else
15951 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
15952                 fi
15953         fi;;
15954 esac
15955 set i_termio; eval $setvar
15956 val=$val2; set i_sgtty; eval $setvar
15957 val=$val3; set i_termios; eval $setvar
15958
15959 : see if this is a shadow.h system
15960 set shadow.h i_shadow
15961 eval $inhdr
15962
15963 : see if stddef is available
15964 set stddef.h i_stddef
15965 eval $inhdr
15966
15967 : see if this is a sunmath.h system
15968 set sunmath.h i_sunmath
15969 eval $inhdr
15970
15971 : see if sys/access.h is available
15972 set sys/access.h i_sysaccess
15973 eval $inhdr
15974
15975 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
15976 set sys/filio.h i_sysfilio
15977 eval $inhdr
15978 echo " "
15979 if $test `./findhdr sys/ioctl.h`; then
15980         val="$define"
15981         echo '<sys/ioctl.h> found.' >&4
15982 else
15983         val="$undef"
15984         if $test $i_sysfilio = "$define"; then
15985             echo '<sys/ioctl.h> NOT found.' >&4
15986         else
15987                 $test $i_sgtty = "$define" && xxx="sgtty.h"
15988                 $test $i_termio = "$define" && xxx="termio.h"
15989                 $test $i_termios = "$define" && xxx="termios.h"
15990 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
15991         fi
15992 fi
15993 set i_sysioctl
15994 eval $setvar
15995
15996 : see if socket ioctl defs are in sys/sockio.h
15997 echo " "
15998 xxx=`./findhdr sys/sockio.h`
15999 if $test "$xxx"; then
16000         if $contains SIOCATMARK $xxx >/dev/null 2>&1; then
16001                 val="$define"
16002                 echo "You have socket ioctls defined in <sys/sockio.h>." >&4
16003         else
16004                 val="$undef"
16005                 echo "No socket ioctls found in <sys/sockio.h>." >&4
16006         fi
16007 else
16008         val="$undef"
16009         $cat <<EOM
16010 <sys/sockio.h> not found, assuming socket ioctls are in <sys/ioctl.h>.
16011 EOM
16012 fi
16013 set i_syssockio
16014 eval $setvar
16015
16016
16017 : see if this is a syslog.h system
16018 set syslog.h i_syslog
16019 eval $inhdr
16020
16021
16022 : see if this is a sys/mode.h system
16023 set sys/mode.h i_sysmode
16024 eval $inhdr
16025
16026 : see if sys/resource.h has to be included
16027 set sys/resource.h i_sysresrc
16028 eval $inhdr
16029
16030 : see if sys/security.h is available
16031 set sys/security.h i_syssecrt
16032 eval $inhdr
16033
16034 : see if this is a sys/statvfs.h system
16035 set sys/statvfs.h i_sysstatvfs
16036 eval $inhdr
16037
16038 : see if this is a sys/un.h system
16039 set sys/un.h i_sysun
16040 eval $inhdr
16041
16042
16043 : see if this is a sys/utsname.h system
16044 set sys/utsname.h i_sysutsname
16045 eval $inhdr
16046
16047 : see if this is a syswait system
16048 set sys/wait.h i_syswait
16049 eval $inhdr
16050
16051 : see if this is a ustat.h system
16052 set ustat.h i_ustat
16053 eval $inhdr
16054
16055 : see if this is an utime system
16056 set utime.h i_utime
16057 eval $inhdr
16058
16059 : see if this is a values.h system
16060 set values.h i_values
16061 eval $inhdr
16062
16063 : see if this is a vfork system
16064 case "$d_vfork" in
16065 "$define")
16066         set vfork.h i_vfork
16067         eval $inhdr
16068         ;;
16069 *)
16070         i_vfork="$undef"
16071         ;;
16072 esac
16073
16074 : see if gdbm.h is available
16075 set gdbm.h t_gdbm
16076 eval $inhdr
16077 case "$t_gdbm" in
16078 $define)
16079         : see if gdbm_open exists
16080         set gdbm_open d_gdbm_open
16081         eval $inlibc
16082         case "$d_gdbm_open" in
16083         $undef)
16084                 t_gdbm="$undef"
16085                 echo "We won't be including <gdbm.h>"
16086                 ;;
16087         esac
16088         ;;
16089 esac
16090 val="$t_gdbm"
16091 set i_gdbm
16092 eval $setvar
16093
16094 echo " "
16095 echo "Looking for extensions..." >&4
16096 : If we are using the old config.sh, known_extensions may contain
16097 : old or inaccurate or duplicate values.
16098 known_extensions=''
16099 nonxs_extensions=''
16100 : We do not use find because it might not be available.
16101 : We do not just use MANIFEST because the user may have dropped
16102 : some additional extensions into the source tree and expect them
16103 : to be built.
16104
16105 : Function to recursively find available extensions, ignoring DynaLoader
16106 : NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
16107 find_extensions='
16108     for xxx in *; do
16109        case "$xxx" in
16110            DynaLoader|dynaload) ;;
16111            *)
16112            if $test -f $xxx/$xxx.xs; then
16113                known_extensions="$known_extensions $1$xxx";
16114            elif $test -f $xxx/Makefile.PL; then
16115                nonxs_extensions="$nonxs_extensions $1$xxx";
16116            else
16117                if $test -d $xxx -a $# -lt 10; then
16118                    set $1$xxx/ $*;
16119                    cd $xxx;
16120                    eval $find_extensions;
16121                    cd ..;
16122                    shift;
16123                fi;
16124            fi
16125            ;;
16126        esac;
16127     done'
16128 tdir=`pwd`
16129 cd $rsrc/ext
16130 set X
16131 shift
16132 eval $find_extensions
16133 set X $nonxs_extensions
16134 shift
16135 nonxs_extensions="$*"
16136 set X $known_extensions
16137 shift
16138 known_extensions="$*"
16139 cd $tdir
16140
16141 : Now see which are supported on this system.
16142 avail_ext=''
16143 for xxx in $known_extensions ; do
16144         case "$xxx" in
16145         DB_File|db_file)
16146                 case "$i_db" in
16147                 $define) avail_ext="$avail_ext $xxx" ;;
16148                 esac
16149                 ;;
16150         GDBM_File|gdbm_fil)
16151                 case "$i_gdbm" in 
16152                 $define) avail_ext="$avail_ext $xxx" ;;
16153                 esac
16154                 ;;
16155         NDBM_File|ndbm_fil)
16156                 case "$i_ndbm" in
16157                 $define)
16158                     case "$osname-$use64bitint" in
16159                     hpux-define)
16160                         case "$libs" in
16161                         *-lndbm*) avail_ext="$avail_ext $xxx" ;;
16162                         esac
16163                         ;;
16164                     *) avail_ext="$avail_ext $xxx" ;;
16165                     esac
16166                     ;;
16167                 esac
16168                 ;;
16169         ODBM_File|odbm_fil) 
16170                 case "${i_dbm}${i_rpcsvcdbm}" in
16171                 *"${define}"*)
16172                     case "$osname-$use64bitint" in
16173                     hpux-define)
16174                         case "$libs" in
16175                         *-ldbm*) avail_ext="$avail_ext $xxx" ;;
16176                         esac
16177                         ;;
16178                     *) avail_ext="$avail_ext $xxx" ;;
16179                     esac
16180                     ;;
16181                 esac
16182                 ;;
16183         POSIX|posix)
16184                 case "$useposix" in
16185                 true|define|y) avail_ext="$avail_ext $xxx" ;;
16186                 esac
16187                 ;;
16188         Opcode|opcode)
16189                 case "$useopcode" in
16190                 true|define|y) avail_ext="$avail_ext $xxx" ;;
16191                 esac
16192                 ;;
16193         Socket|socket)
16194                 case "$d_socket" in 
16195                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
16196                 esac
16197                 ;;
16198         Sys/Syslog|sys/syslog)
16199                 : XXX syslog requires socket
16200                 case "$d_socket" in 
16201                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
16202                 esac
16203                 ;;
16204         Thread|thread)
16205                 case "$usethreads" in
16206                 true|$define|y)
16207                         case "$useithreads" in
16208                         $undef|false|[nN]*) avail_ext="$avail_ext $xxx" ;;
16209                         esac
16210                 esac
16211                 ;;
16212         IPC/SysV|ipc/sysv)
16213                 : XXX Do we need a useipcsysv variable here
16214                 case "${d_msg}${d_sem}${d_shm}" in 
16215                 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
16216                 esac
16217                 ;;
16218         *)      avail_ext="$avail_ext $xxx"
16219                 ;;
16220         esac
16221 done
16222
16223 set X $avail_ext
16224 shift
16225 avail_ext="$*"
16226
16227 : Now see which nonxs extensions are supported on this system.
16228 : For now assume all are.
16229 nonxs_ext=''
16230 for xxx in $nonxs_extensions ; do
16231         case "$xxx" in
16232         *)      nonxs_ext="$nonxs_ext $xxx"
16233                 ;;
16234         esac
16235 done
16236
16237 set X $nonxs_ext
16238 shift
16239 nonxs_ext="$*"
16240
16241 case $usedl in
16242 $define)
16243         $cat <<EOM
16244 A number of extensions are supplied with $package.  You may choose to
16245 compile these extensions for dynamic loading (the default), compile
16246 them into the $package executable (static loading), or not include
16247 them at all.  Answer "none" to include no extensions.
16248 Note that DynaLoader is always built and need not be mentioned here.
16249
16250 EOM
16251         case "$dynamic_ext" in
16252         '') dflt="$avail_ext" ;;
16253         *)      dflt="$dynamic_ext"
16254                 # Perhaps we are reusing an old out-of-date config.sh.
16255                 case "$hint" in
16256                 previous)
16257                         if test X"$dynamic_ext" != X"$avail_ext"; then
16258                                 $cat <<EOM
16259 NOTICE:  Your previous config.sh list may be incorrect. 
16260 The extensions now available to you are 
16261         ${avail_ext}
16262 but the default list from your previous config.sh is
16263         ${dynamic_ext} 
16264
16265 EOM
16266                         fi
16267                         ;;
16268                 esac
16269                 ;;
16270         esac
16271         case "$dflt" in
16272         '')     dflt=none;;
16273         esac
16274         rp="What extensions do you wish to load dynamically?"
16275         . ./myread
16276         case "$ans" in
16277         none) dynamic_ext=' ' ;;
16278         *) dynamic_ext="$ans" ;;
16279         esac
16280
16281         case "$static_ext" in
16282         '')
16283                 : Exclude those already listed in dynamic linking
16284                 dflt=''
16285                 for xxx in $avail_ext; do
16286                         case " $dynamic_ext " in
16287                         *" $xxx "*) ;;
16288                         *) dflt="$dflt $xxx" ;;
16289                         esac
16290                 done
16291                 set X $dflt
16292                 shift
16293                 dflt="$*"
16294                 ;;
16295         *)  dflt="$static_ext" 
16296                 ;;
16297         esac
16298
16299         case "$dflt" in
16300         '')     dflt=none;;
16301         esac
16302         rp="What extensions do you wish to load statically?"
16303         . ./myread
16304         case "$ans" in
16305         none) static_ext=' ' ;;
16306         *) static_ext="$ans" ;;
16307         esac
16308         ;;
16309 *)
16310         $cat <<EOM
16311 A number of extensions are supplied with $package.  Answer "none" 
16312 to include no extensions. 
16313 Note that DynaLoader is always built and need not be mentioned here.
16314
16315 EOM
16316         case "$static_ext" in
16317         '') dflt="$avail_ext" ;;
16318         *)      dflt="$static_ext"
16319                 # Perhaps we are reusing an old out-of-date config.sh.
16320                 case "$hint" in
16321                 previous)
16322                         if test X"$static_ext" != X"$avail_ext"; then
16323                                 $cat <<EOM
16324 NOTICE:  Your previous config.sh list may be incorrect. 
16325 The extensions now available to you are 
16326         ${avail_ext}
16327 but the default list from your previous config.sh is
16328         ${static_ext} 
16329
16330 EOM
16331                         fi
16332                         ;;
16333                 esac
16334                 ;;
16335         esac
16336         : Exclude those that are not xs extensions
16337         case "$dflt" in
16338         '')     dflt=none;;
16339         esac
16340         rp="What extensions do you wish to include?"
16341         . ./myread
16342         case "$ans" in
16343         none) static_ext=' ' ;;
16344         *) static_ext="$ans" ;;
16345         esac
16346         ;;
16347 esac
16348
16349 set X $dynamic_ext $static_ext $nonxs_ext
16350 shift
16351 extensions="$*"
16352
16353 : Remove libraries needed only for extensions
16354 : The appropriate ext/Foo/Makefile.PL will add them back in, if necessary.
16355 : The exception is SunOS 4.x, which needs them.
16356 case "${osname}X${osvers}" in
16357 sunos*X4*)
16358     perllibs="$libs"
16359     ;;
16360 *) case "$usedl" in
16361     $define|true|[yY]*)
16362             set X `echo " $libs " | sed -e 's@ -lndbm @ @' -e 's@ -lgdbm @ @' -e 's@ -ldbm @ @' -e 's@ -ldb @ @'` 
16363             shift
16364             perllibs="$*"
16365             ;;
16366     *)  perllibs="$libs"
16367             ;;
16368     esac
16369     ;;
16370 esac
16371
16372 : Remove build directory name from cppstdin so it can be used from
16373 : either the present location or the final installed location.
16374 echo " "
16375 : Get out of the UU directory to get correct path name.
16376 cd ..
16377 case "$cppstdin" in
16378 `pwd`/cppstdin)
16379         echo "Stripping down cppstdin path name"
16380         cppstdin=cppstdin
16381         ;;
16382 esac
16383 cd UU
16384
16385 : end of configuration questions
16386 echo " "
16387 echo "End of configuration questions."
16388 echo " "
16389
16390 : back to where it started
16391 if test -d ../UU; then
16392         cd ..
16393 fi
16394
16395 : configuration may be patched via a 'config.over' file
16396 if $test -f config.over; then
16397         echo " "
16398         dflt=y
16399         rp='I see a config.over file.  Do you wish to load it?'
16400         . UU/myread
16401         case "$ans" in
16402         n*) echo "OK, I'll ignore it.";;
16403         *)      . ./config.over
16404                 echo "Configuration override changes have been loaded."
16405                 ;;
16406         esac
16407 fi
16408
16409 : in case they want portability, strip down executable paths
16410 case "$d_portable" in
16411 "$define")
16412         echo " "
16413         echo "Stripping down executable paths..." >&4
16414         for file in $loclist $trylist; do
16415                 eval temp=\$$file
16416                 eval $file=`basename $temp`
16417         done
16418         ;;
16419 esac
16420
16421 : create config.sh file
16422 echo " "
16423 echo "Creating config.sh..." >&4
16424 $spitshell <<EOT >config.sh
16425 $startsh
16426 #
16427 # This file was produced by running the Configure script. It holds all the
16428 # definitions figured out by Configure. Should you modify one of these values,
16429 # do not forget to propagate your changes by running "Configure -der". You may
16430 # instead choose to run each of the .SH files by yourself, or "Configure -S".
16431 #
16432
16433 # Package name      : $package
16434 # Source directory  : $src
16435 # Configuration time: $cf_time
16436 # Configured by     : $cf_by
16437 # Target system     : $myuname
16438
16439 Author='$Author'
16440 Date='$Date'
16441 Header='$Header'
16442 Id='$Id'
16443 Locker='$Locker'
16444 Log='$Log'
16445 Mcc='$Mcc'
16446 RCSfile='$RCSfile'
16447 Revision='$Revision'
16448 Source='$Source'
16449 State='$State'
16450 _a='$_a'
16451 _exe='$_exe'
16452 _o='$_o'
16453 afs='$afs'
16454 afsroot='$afsroot'
16455 alignbytes='$alignbytes'
16456 ansi2knr='$ansi2knr'
16457 aphostname='$aphostname'
16458 api_revision='$api_revision'
16459 api_subversion='$api_subversion'
16460 api_version='$api_version'
16461 api_versionstring='$api_versionstring'
16462 ar='$ar'
16463 archlib='$archlib'
16464 archlibexp='$archlibexp'
16465 archname64='$archname64'
16466 archname='$archname'
16467 archobjs='$archobjs'
16468 awk='$awk'
16469 baserev='$baserev'
16470 bash='$bash'
16471 bin='$bin'
16472 bincompat5005='$bincompat5005'
16473 binexp='$binexp'
16474 bison='$bison'
16475 byacc='$byacc'
16476 byteorder='$byteorder'
16477 c='$c'
16478 castflags='$castflags'
16479 cat='$cat'
16480 cc='$cc'
16481 cccdlflags='$cccdlflags'
16482 ccdlflags='$ccdlflags'
16483 ccflags='$ccflags'
16484 ccflags_uselargefiles='$ccflags_uselargefiles'
16485 ccname='$ccname'
16486 ccsymbols='$ccsymbols'
16487 ccversion='$ccversion'
16488 cf_by='$cf_by'
16489 cf_email='$cf_email'
16490 cf_time='$cf_time'
16491 charsize='$charsize'
16492 chgrp='$chgrp'
16493 chmod='$chmod'
16494 chown='$chown'
16495 clocktype='$clocktype'
16496 comm='$comm'
16497 compress='$compress'
16498 contains='$contains'
16499 cp='$cp'
16500 cpio='$cpio'
16501 cpp='$cpp'
16502 cpp_stuff='$cpp_stuff'
16503 cppccsymbols='$cppccsymbols'
16504 cppflags='$cppflags'
16505 cpplast='$cpplast'
16506 cppminus='$cppminus'
16507 cpprun='$cpprun'
16508 cppstdin='$cppstdin'
16509 cppsymbols='$cppsymbols'
16510 cryptlib='$cryptlib'
16511 csh='$csh'
16512 d_Gconvert='$d_Gconvert'
16513 d_PRIEUldbl='$d_PRIEUldbl'
16514 d_PRIFUldbl='$d_PRIFUldbl'
16515 d_PRIGUldbl='$d_PRIGUldbl'
16516 d_PRIXU64='$d_PRIXU64'
16517 d_PRId64='$d_PRId64'
16518 d_PRIeldbl='$d_PRIeldbl'
16519 d_PRIfldbl='$d_PRIfldbl'
16520 d_PRIgldbl='$d_PRIgldbl'
16521 d_PRIi64='$d_PRIi64'
16522 d_PRIo64='$d_PRIo64'
16523 d_PRIu64='$d_PRIu64'
16524 d_PRIx64='$d_PRIx64'
16525 d_SCNfldbl='$d_SCNfldbl'
16526 d__fwalk='$d__fwalk'
16527 d_access='$d_access'
16528 d_accessx='$d_accessx'
16529 d_alarm='$d_alarm'
16530 d_archlib='$d_archlib'
16531 d_atolf='$d_atolf'
16532 d_atoll='$d_atoll'
16533 d_attribut='$d_attribut'
16534 d_bcmp='$d_bcmp'
16535 d_bcopy='$d_bcopy'
16536 d_bincompat5005='$d_bincompat5005'
16537 d_bsd='$d_bsd'
16538 d_bsdgetpgrp='$d_bsdgetpgrp'
16539 d_bsdsetpgrp='$d_bsdsetpgrp'
16540 d_bzero='$d_bzero'
16541 d_casti32='$d_casti32'
16542 d_castneg='$d_castneg'
16543 d_charvspr='$d_charvspr'
16544 d_chown='$d_chown'
16545 d_chroot='$d_chroot'
16546 d_chsize='$d_chsize'
16547 d_closedir='$d_closedir'
16548 d_cmsghdr_s='$d_cmsghdr_s'
16549 d_const='$d_const'
16550 d_crypt='$d_crypt'
16551 d_csh='$d_csh'
16552 d_cuserid='$d_cuserid'
16553 d_dbl_dig='$d_dbl_dig'
16554 d_dbminitproto='$d_dbminitproto'
16555 d_difftime='$d_difftime'
16556 d_dirnamlen='$d_dirnamlen'
16557 d_dlerror='$d_dlerror'
16558 d_dlopen='$d_dlopen'
16559 d_dlsymun='$d_dlsymun'
16560 d_dosuid='$d_dosuid'
16561 d_drand48proto='$d_drand48proto'
16562 d_dup2='$d_dup2'
16563 d_eaccess='$d_eaccess'
16564 d_endgrent='$d_endgrent'
16565 d_endhent='$d_endhent'
16566 d_endnent='$d_endnent'
16567 d_endpent='$d_endpent'
16568 d_endpwent='$d_endpwent'
16569 d_endsent='$d_endsent'
16570 d_eofnblk='$d_eofnblk'
16571 d_eunice='$d_eunice'
16572 d_fchmod='$d_fchmod'
16573 d_fchown='$d_fchown'
16574 d_fcntl='$d_fcntl'
16575 d_fcntl_can_lock='$d_fcntl_can_lock'
16576 d_fd_macros='$d_fd_macros'
16577 d_fd_set='$d_fd_set'
16578 d_fds_bits='$d_fds_bits'
16579 d_fgetpos='$d_fgetpos'
16580 d_flexfnam='$d_flexfnam'
16581 d_flock='$d_flock'
16582 d_flockproto='$d_flockproto'
16583 d_fork='$d_fork'
16584 d_fpathconf='$d_fpathconf'
16585 d_fpos64_t='$d_fpos64_t'
16586 d_frexpl='$d_frexpl'
16587 d_fs_data_s='$d_fs_data_s'
16588 d_fseeko='$d_fseeko'
16589 d_fsetpos='$d_fsetpos'
16590 d_fstatfs='$d_fstatfs'
16591 d_fstatvfs='$d_fstatvfs'
16592 d_fsync='$d_fsync'
16593 d_ftello='$d_ftello'
16594 d_ftime='$d_ftime'
16595 d_getcwd='$d_getcwd'
16596 d_getespwnam='$d_getespwnam'
16597 d_getfsstat='$d_getfsstat'
16598 d_getgrent='$d_getgrent'
16599 d_getgrps='$d_getgrps'
16600 d_gethbyaddr='$d_gethbyaddr'
16601 d_gethbyname='$d_gethbyname'
16602 d_gethent='$d_gethent'
16603 d_gethname='$d_gethname'
16604 d_gethostprotos='$d_gethostprotos'
16605 d_getitimer='$d_getitimer'
16606 d_getlogin='$d_getlogin'
16607 d_getmnt='$d_getmnt'
16608 d_getmntent='$d_getmntent'
16609 d_getnbyaddr='$d_getnbyaddr'
16610 d_getnbyname='$d_getnbyname'
16611 d_getnent='$d_getnent'
16612 d_getnetprotos='$d_getnetprotos'
16613 d_getpagsz='$d_getpagsz'
16614 d_getpbyname='$d_getpbyname'
16615 d_getpbynumber='$d_getpbynumber'
16616 d_getpent='$d_getpent'
16617 d_getpgid='$d_getpgid'
16618 d_getpgrp2='$d_getpgrp2'
16619 d_getpgrp='$d_getpgrp'
16620 d_getppid='$d_getppid'
16621 d_getprior='$d_getprior'
16622 d_getprotoprotos='$d_getprotoprotos'
16623 d_getprpwnam='$d_getprpwnam'
16624 d_getpwent='$d_getpwent'
16625 d_getsbyname='$d_getsbyname'
16626 d_getsbyport='$d_getsbyport'
16627 d_getsent='$d_getsent'
16628 d_getservprotos='$d_getservprotos'
16629 d_getspnam='$d_getspnam'
16630 d_gettimeod='$d_gettimeod'
16631 d_gnulibc='$d_gnulibc'
16632 d_grpasswd='$d_grpasswd'
16633 d_hasmntopt='$d_hasmntopt'
16634 d_htonl='$d_htonl'
16635 d_iconv='$d_iconv'
16636 d_index='$d_index'
16637 d_inetaton='$d_inetaton'
16638 d_int64_t='$d_int64_t'
16639 d_isascii='$d_isascii'
16640 d_isnan='$d_isnan'
16641 d_isnanl='$d_isnanl'
16642 d_killpg='$d_killpg'
16643 d_lchown='$d_lchown'
16644 d_ldbl_dig='$d_ldbl_dig'
16645 d_link='$d_link'
16646 d_locconv='$d_locconv'
16647 d_lockf='$d_lockf'
16648 d_longdbl='$d_longdbl'
16649 d_longlong='$d_longlong'
16650 d_lseekproto='$d_lseekproto'
16651 d_lstat='$d_lstat'
16652 d_madvise='$d_madvise'
16653 d_mblen='$d_mblen'
16654 d_mbstowcs='$d_mbstowcs'
16655 d_mbtowc='$d_mbtowc'
16656 d_memchr='$d_memchr'
16657 d_memcmp='$d_memcmp'
16658 d_memcpy='$d_memcpy'
16659 d_memmove='$d_memmove'
16660 d_memset='$d_memset'
16661 d_mkdir='$d_mkdir'
16662 d_mkdtemp='$d_mkdtemp'
16663 d_mkfifo='$d_mkfifo'
16664 d_mkstemp='$d_mkstemp'
16665 d_mkstemps='$d_mkstemps'
16666 d_mktime='$d_mktime'
16667 d_mmap='$d_mmap'
16668 d_modfl='$d_modfl'
16669 d_modfl_pow32_bug='$d_modfl_pow32_bug'
16670 d_mprotect='$d_mprotect'
16671 d_msg='$d_msg'
16672 d_msg_ctrunc='$d_msg_ctrunc'
16673 d_msg_dontroute='$d_msg_dontroute'
16674 d_msg_oob='$d_msg_oob'
16675 d_msg_peek='$d_msg_peek'
16676 d_msg_proxy='$d_msg_proxy'
16677 d_msgctl='$d_msgctl'
16678 d_msgget='$d_msgget'
16679 d_msghdr_s='$d_msghdr_s'
16680 d_msgrcv='$d_msgrcv'
16681 d_msgsnd='$d_msgsnd'
16682 d_msync='$d_msync'
16683 d_munmap='$d_munmap'
16684 d_mymalloc='$d_mymalloc'
16685 d_nice='$d_nice'
16686 d_nv_preserves_uv='$d_nv_preserves_uv'
16687 d_nv_preserves_uv_bits='$d_nv_preserves_uv_bits'
16688 d_off64_t='$d_off64_t'
16689 d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
16690 d_oldpthreads='$d_oldpthreads'
16691 d_oldsock='$d_oldsock'
16692 d_open3='$d_open3'
16693 d_pathconf='$d_pathconf'
16694 d_pause='$d_pause'
16695 d_perl_otherlibdirs='$d_perl_otherlibdirs'
16696 d_phostname='$d_phostname'
16697 d_pipe='$d_pipe'
16698 d_poll='$d_poll'
16699 d_portable='$d_portable'
16700 d_pthread_yield='$d_pthread_yield'
16701 d_pwage='$d_pwage'
16702 d_pwchange='$d_pwchange'
16703 d_pwclass='$d_pwclass'
16704 d_pwcomment='$d_pwcomment'
16705 d_pwexpire='$d_pwexpire'
16706 d_pwgecos='$d_pwgecos'
16707 d_pwpasswd='$d_pwpasswd'
16708 d_pwquota='$d_pwquota'
16709 d_qgcvt='$d_qgcvt'
16710 d_quad='$d_quad'
16711 d_readdir='$d_readdir'
16712 d_readlink='$d_readlink'
16713 d_readv='$d_readv'
16714 d_recvmsg='$d_recvmsg'
16715 d_rename='$d_rename'
16716 d_rewinddir='$d_rewinddir'
16717 d_rmdir='$d_rmdir'
16718 d_safebcpy='$d_safebcpy'
16719 d_safemcpy='$d_safemcpy'
16720 d_sanemcmp='$d_sanemcmp'
16721 d_sbrkproto='$d_sbrkproto'
16722 d_sched_yield='$d_sched_yield'
16723 d_scm_rights='$d_scm_rights'
16724 d_seekdir='$d_seekdir'
16725 d_select='$d_select'
16726 d_sem='$d_sem'
16727 d_semctl='$d_semctl'
16728 d_semctl_semid_ds='$d_semctl_semid_ds'
16729 d_semctl_semun='$d_semctl_semun'
16730 d_semget='$d_semget'
16731 d_semop='$d_semop'
16732 d_sendmsg='$d_sendmsg'
16733 d_setegid='$d_setegid'
16734 d_seteuid='$d_seteuid'
16735 d_setgrent='$d_setgrent'
16736 d_setgrps='$d_setgrps'
16737 d_sethent='$d_sethent'
16738 d_setitimer='$d_setitimer'
16739 d_setlinebuf='$d_setlinebuf'
16740 d_setlocale='$d_setlocale'
16741 d_setnent='$d_setnent'
16742 d_setpent='$d_setpent'
16743 d_setpgid='$d_setpgid'
16744 d_setpgrp2='$d_setpgrp2'
16745 d_setpgrp='$d_setpgrp'
16746 d_setprior='$d_setprior'
16747 d_setproctitle='$d_setproctitle'
16748 d_setpwent='$d_setpwent'
16749 d_setregid='$d_setregid'
16750 d_setresgid='$d_setresgid'
16751 d_setresuid='$d_setresuid'
16752 d_setreuid='$d_setreuid'
16753 d_setrgid='$d_setrgid'
16754 d_setruid='$d_setruid'
16755 d_setsent='$d_setsent'
16756 d_setsid='$d_setsid'
16757 d_setvbuf='$d_setvbuf'
16758 d_sfio='$d_sfio'
16759 d_shm='$d_shm'
16760 d_shmat='$d_shmat'
16761 d_shmatprototype='$d_shmatprototype'
16762 d_shmctl='$d_shmctl'
16763 d_shmdt='$d_shmdt'
16764 d_shmget='$d_shmget'
16765 d_sigaction='$d_sigaction'
16766 d_sigprocmask='$d_sigprocmask'
16767 d_sigsetjmp='$d_sigsetjmp'
16768 d_sockatmark='$d_sockatmark'
16769 d_sockatmarkproto='$d_sockatmarkproto'
16770 d_socket='$d_socket'
16771 d_socklen_t='$d_socklen_t'
16772 d_sockpair='$d_sockpair'
16773 d_socks5_init='$d_socks5_init'
16774 d_sqrtl='$d_sqrtl'
16775 d_sresgproto='$d_sresgproto'
16776 d_sresuproto='$d_sresuproto'
16777 d_statblks='$d_statblks'
16778 d_statfs_f_flags='$d_statfs_f_flags'
16779 d_statfs_s='$d_statfs_s'
16780 d_statvfs='$d_statvfs'
16781 d_stdio_cnt_lval='$d_stdio_cnt_lval'
16782 d_stdio_ptr_lval='$d_stdio_ptr_lval'
16783 d_stdio_ptr_lval_nochange_cnt='$d_stdio_ptr_lval_nochange_cnt'
16784 d_stdio_ptr_lval_sets_cnt='$d_stdio_ptr_lval_sets_cnt'
16785 d_stdio_stream_array='$d_stdio_stream_array'
16786 d_stdiobase='$d_stdiobase'
16787 d_stdstdio='$d_stdstdio'
16788 d_strchr='$d_strchr'
16789 d_strcoll='$d_strcoll'
16790 d_strctcpy='$d_strctcpy'
16791 d_strerrm='$d_strerrm'
16792 d_strerror='$d_strerror'
16793 d_strftime='$d_strftime'
16794 d_strtod='$d_strtod'
16795 d_strtol='$d_strtol'
16796 d_strtold='$d_strtold'
16797 d_strtoll='$d_strtoll'
16798 d_strtoq='$d_strtoq'
16799 d_strtoul='$d_strtoul'
16800 d_strtoull='$d_strtoull'
16801 d_strtouq='$d_strtouq'
16802 d_strxfrm='$d_strxfrm'
16803 d_suidsafe='$d_suidsafe'
16804 d_symlink='$d_symlink'
16805 d_syscall='$d_syscall'
16806 d_syscallproto='$d_syscallproto'
16807 d_sysconf='$d_sysconf'
16808 d_sysernlst='$d_sysernlst'
16809 d_syserrlst='$d_syserrlst'
16810 d_system='$d_system'
16811 d_tcgetpgrp='$d_tcgetpgrp'
16812 d_tcsetpgrp='$d_tcsetpgrp'
16813 d_telldir='$d_telldir'
16814 d_telldirproto='$d_telldirproto'
16815 d_time='$d_time'
16816 d_times='$d_times'
16817 d_truncate='$d_truncate'
16818 d_tzname='$d_tzname'
16819 d_u32align='$d_u32align'
16820 d_ualarm='$d_ualarm'
16821 d_umask='$d_umask'
16822 d_uname='$d_uname'
16823 d_union_semun='$d_union_semun'
16824 d_usleep='$d_usleep'
16825 d_usleepproto='$d_usleepproto'
16826 d_ustat='$d_ustat'
16827 d_vendorarch='$d_vendorarch'
16828 d_vendorbin='$d_vendorbin'
16829 d_vendorlib='$d_vendorlib'
16830 d_vfork='$d_vfork'
16831 d_void_closedir='$d_void_closedir'
16832 d_voidsig='$d_voidsig'
16833 d_voidtty='$d_voidtty'
16834 d_volatile='$d_volatile'
16835 d_vprintf='$d_vprintf'
16836 d_wait4='$d_wait4'
16837 d_waitpid='$d_waitpid'
16838 d_wcstombs='$d_wcstombs'
16839 d_wctomb='$d_wctomb'
16840 d_writev='$d_writev'
16841 d_xenix='$d_xenix'
16842 date='$date'
16843 db_hashtype='$db_hashtype'
16844 db_prefixtype='$db_prefixtype'
16845 db_version_major='$db_version_major'
16846 db_version_minor='$db_version_minor'
16847 db_version_patch='$db_version_patch'
16848 defvoidused='$defvoidused'
16849 direntrytype='$direntrytype'
16850 dlext='$dlext'
16851 dlsrc='$dlsrc'
16852 doublesize='$doublesize'
16853 drand01='$drand01'
16854 dynamic_ext='$dynamic_ext'
16855 eagain='$eagain'
16856 ebcdic='$ebcdic'
16857 echo='$echo'
16858 egrep='$egrep'
16859 emacs='$emacs'
16860 eunicefix='$eunicefix'
16861 exe_ext='$exe_ext'
16862 expr='$expr'
16863 extensions='$extensions'
16864 fflushNULL='$fflushNULL'
16865 fflushall='$fflushall'
16866 find='$find'
16867 firstmakefile='$firstmakefile'
16868 flex='$flex'
16869 fpossize='$fpossize'
16870 fpostype='$fpostype'
16871 freetype='$freetype'
16872 from='$from'
16873 full_ar='$full_ar'
16874 full_csh='$full_csh'
16875 full_sed='$full_sed'
16876 gccosandvers='$gccosandvers'
16877 gccversion='$gccversion'
16878 gidformat='$gidformat'
16879 gidsign='$gidsign'
16880 gidsize='$gidsize'
16881 gidtype='$gidtype'
16882 glibpth='$glibpth'
16883 grep='$grep'
16884 groupcat='$groupcat'
16885 groupstype='$groupstype'
16886 gzip='$gzip'
16887 h_fcntl='$h_fcntl'
16888 h_sysfile='$h_sysfile'
16889 hint='$hint'
16890 hostcat='$hostcat'
16891 i16size='$i16size'
16892 i16type='$i16type'
16893 i32size='$i32size'
16894 i32type='$i32type'
16895 i64size='$i64size'
16896 i64type='$i64type'
16897 i8size='$i8size'
16898 i8type='$i8type'
16899 i_arpainet='$i_arpainet'
16900 i_bsdioctl='$i_bsdioctl'
16901 i_db='$i_db'
16902 i_dbm='$i_dbm'
16903 i_dirent='$i_dirent'
16904 i_dld='$i_dld'
16905 i_dlfcn='$i_dlfcn'
16906 i_fcntl='$i_fcntl'
16907 i_float='$i_float'
16908 i_gdbm='$i_gdbm'
16909 i_grp='$i_grp'
16910 i_iconv='$i_iconv'
16911 i_ieeefp='$i_ieeefp'
16912 i_inttypes='$i_inttypes'
16913 i_libutil='$i_libutil'
16914 i_limits='$i_limits'
16915 i_locale='$i_locale'
16916 i_machcthr='$i_machcthr'
16917 i_malloc='$i_malloc'
16918 i_math='$i_math'
16919 i_memory='$i_memory'
16920 i_mntent='$i_mntent'
16921 i_ndbm='$i_ndbm'
16922 i_netdb='$i_netdb'
16923 i_neterrno='$i_neterrno'
16924 i_netinettcp='$i_netinettcp'
16925 i_niin='$i_niin'
16926 i_poll='$i_poll'
16927 i_prot='$i_prot'
16928 i_pthread='$i_pthread'
16929 i_pwd='$i_pwd'
16930 i_rpcsvcdbm='$i_rpcsvcdbm'
16931 i_sfio='$i_sfio'
16932 i_sgtty='$i_sgtty'
16933 i_shadow='$i_shadow'
16934 i_socks='$i_socks'
16935 i_stdarg='$i_stdarg'
16936 i_stddef='$i_stddef'
16937 i_stdlib='$i_stdlib'
16938 i_string='$i_string'
16939 i_sunmath='$i_sunmath'
16940 i_sysaccess='$i_sysaccess'
16941 i_sysdir='$i_sysdir'
16942 i_sysfile='$i_sysfile'
16943 i_sysfilio='$i_sysfilio'
16944 i_sysin='$i_sysin'
16945 i_sysioctl='$i_sysioctl'
16946 i_syslog='$i_syslog'
16947 i_sysmman='$i_sysmman'
16948 i_sysmode='$i_sysmode'
16949 i_sysmount='$i_sysmount'
16950 i_sysndir='$i_sysndir'
16951 i_sysparam='$i_sysparam'
16952 i_sysresrc='$i_sysresrc'
16953 i_syssecrt='$i_syssecrt'
16954 i_sysselct='$i_sysselct'
16955 i_syssockio='$i_syssockio'
16956 i_sysstat='$i_sysstat'
16957 i_sysstatfs='$i_sysstatfs'
16958 i_sysstatvfs='$i_sysstatvfs'
16959 i_systime='$i_systime'
16960 i_systimek='$i_systimek'
16961 i_systimes='$i_systimes'
16962 i_systypes='$i_systypes'
16963 i_sysuio='$i_sysuio'
16964 i_sysun='$i_sysun'
16965 i_sysutsname='$i_sysutsname'
16966 i_sysvfs='$i_sysvfs'
16967 i_syswait='$i_syswait'
16968 i_termio='$i_termio'
16969 i_termios='$i_termios'
16970 i_time='$i_time'
16971 i_unistd='$i_unistd'
16972 i_ustat='$i_ustat'
16973 i_utime='$i_utime'
16974 i_values='$i_values'
16975 i_varargs='$i_varargs'
16976 i_varhdr='$i_varhdr'
16977 i_vfork='$i_vfork'
16978 ignore_versioned_solibs='$ignore_versioned_solibs'
16979 inc_version_list='$inc_version_list'
16980 inc_version_list_init='$inc_version_list_init'
16981 incpath='$incpath'
16982 inews='$inews'
16983 installarchlib='$installarchlib'
16984 installbin='$installbin'
16985 installman1dir='$installman1dir'
16986 installman3dir='$installman3dir'
16987 installprefix='$installprefix'
16988 installprefixexp='$installprefixexp'
16989 installprivlib='$installprivlib'
16990 installscript='$installscript'
16991 installsitearch='$installsitearch'
16992 installsitebin='$installsitebin'
16993 installsitelib='$installsitelib'
16994 installstyle='$installstyle'
16995 installusrbinperl='$installusrbinperl'
16996 installvendorarch='$installvendorarch'
16997 installvendorbin='$installvendorbin'
16998 installvendorlib='$installvendorlib'
16999 intsize='$intsize'
17000 issymlink='$issymlink'
17001 ivdformat='$ivdformat'
17002 ivsize='$ivsize'
17003 ivtype='$ivtype'
17004 known_extensions='$known_extensions'
17005 ksh='$ksh'
17006 ld='$ld'
17007 lddlflags='$lddlflags'
17008 ldflags='$ldflags'
17009 ldflags_uselargefiles='$ldflags_uselargefiles'
17010 ldlibpthname='$ldlibpthname'
17011 less='$less'
17012 lib_ext='$lib_ext'
17013 libc='$libc'
17014 libperl='$libperl'
17015 libpth='$libpth'
17016 libs='$libs'
17017 libsdirs='$libsdirs'
17018 libsfiles='$libsfiles'
17019 libsfound='$libsfound'
17020 libspath='$libspath'
17021 libswanted='$libswanted'
17022 libswanted_uselargefiles='$libswanted_uselargefiles'
17023 line='$line'
17024 lint='$lint'
17025 lkflags='$lkflags'
17026 ln='$ln'
17027 lns='$lns'
17028 locincpth='$locincpth'
17029 loclibpth='$loclibpth'
17030 longdblsize='$longdblsize'
17031 longlongsize='$longlongsize'
17032 longsize='$longsize'
17033 lp='$lp'
17034 lpr='$lpr'
17035 ls='$ls'
17036 lseeksize='$lseeksize'
17037 lseektype='$lseektype'
17038 mail='$mail'
17039 mailx='$mailx'
17040 make='$make'
17041 make_set_make='$make_set_make'
17042 mallocobj='$mallocobj'
17043 mallocsrc='$mallocsrc'
17044 malloctype='$malloctype'
17045 man1dir='$man1dir'
17046 man1direxp='$man1direxp'
17047 man1ext='$man1ext'
17048 man3dir='$man3dir'
17049 man3direxp='$man3direxp'
17050 man3ext='$man3ext'
17051 mips_type='$mips_type'
17052 mkdir='$mkdir'
17053 mmaptype='$mmaptype'
17054 modetype='$modetype'
17055 more='$more'
17056 multiarch='$multiarch'
17057 mv='$mv'
17058 myarchname='$myarchname'
17059 mydomain='$mydomain'
17060 myhostname='$myhostname'
17061 myuname='$myuname'
17062 n='$n'
17063 need_va_copy='$need_va_copy'
17064 netdb_hlen_type='$netdb_hlen_type'
17065 netdb_host_type='$netdb_host_type'
17066 netdb_name_type='$netdb_name_type'
17067 netdb_net_type='$netdb_net_type'
17068 nm='$nm'
17069 nm_opt='$nm_opt'
17070 nm_so_opt='$nm_so_opt'
17071 nonxs_ext='$nonxs_ext'
17072 nroff='$nroff'
17073 nvEUformat='$nvEUformat'
17074 nvFUformat='$nvFUformat'
17075 nvGUformat='$nvGUformat'
17076 nveformat='$nveformat'
17077 nvfformat='$nvfformat'
17078 nvgformat='$nvgformat'
17079 nvsize='$nvsize'
17080 nvtype='$nvtype'
17081 o_nonblock='$o_nonblock'
17082 obj_ext='$obj_ext'
17083 old_pthread_create_joinable='$old_pthread_create_joinable'
17084 optimize='$optimize'
17085 orderlib='$orderlib'
17086 osname='$osname'
17087 osvers='$osvers'
17088 otherlibdirs='$otherlibdirs'
17089 package='$package'
17090 pager='$pager'
17091 passcat='$passcat'
17092 patchlevel='$patchlevel'
17093 path_sep='$path_sep'
17094 perl5='$perl5'
17095 perl='$perl'
17096 perl_patchlevel='$perl_patchlevel'
17097 perladmin='$perladmin'
17098 perllibs='$perllibs'
17099 perlpath='$perlpath'
17100 pg='$pg'
17101 phostname='$phostname'
17102 pidtype='$pidtype'
17103 plibpth='$plibpth'
17104 pm_apiversion='$pm_apiversion'
17105 pmake='$pmake'
17106 pr='$pr'
17107 prefix='$prefix'
17108 prefixexp='$prefixexp'
17109 privlib='$privlib'
17110 privlibexp='$privlibexp'
17111 prototype='$prototype'
17112 ptrsize='$ptrsize'
17113 quadkind='$quadkind'
17114 quadtype='$quadtype'
17115 randbits='$randbits'
17116 randfunc='$randfunc'
17117 randseedtype='$randseedtype'
17118 ranlib='$ranlib'
17119 rd_nodata='$rd_nodata'
17120 revision='$revision'
17121 rm='$rm'
17122 rmail='$rmail'
17123 run='$run'
17124 runnm='$runnm'
17125 sPRIEUldbl='$sPRIEUldbl'
17126 sPRIFUldbl='$sPRIFUldbl'
17127 sPRIGUldbl='$sPRIGUldbl'
17128 sPRIXU64='$sPRIXU64'
17129 sPRId64='$sPRId64'
17130 sPRIeldbl='$sPRIeldbl'
17131 sPRIfldbl='$sPRIfldbl'
17132 sPRIgldbl='$sPRIgldbl'
17133 sPRIi64='$sPRIi64'
17134 sPRIo64='$sPRIo64'
17135 sPRIu64='$sPRIu64'
17136 sPRIx64='$sPRIx64'
17137 sSCNfldbl='$sSCNfldbl'
17138 sched_yield='$sched_yield'
17139 scriptdir='$scriptdir'
17140 scriptdirexp='$scriptdirexp'
17141 sed='$sed'
17142 seedfunc='$seedfunc'
17143 selectminbits='$selectminbits'
17144 selecttype='$selecttype'
17145 sendmail='$sendmail'
17146 sh='$sh'
17147 shar='$shar'
17148 sharpbang='$sharpbang'
17149 shmattype='$shmattype'
17150 shortsize='$shortsize'
17151 shrpenv='$shrpenv'
17152 shsharp='$shsharp'
17153 sig_count='$sig_count'
17154 sig_name='$sig_name'
17155 sig_name_init='$sig_name_init'
17156 sig_num='$sig_num'
17157 sig_num_init='$sig_num_init'
17158 sig_size='$sig_size'
17159 signal_t='$signal_t'
17160 sitearch='$sitearch'
17161 sitearchexp='$sitearchexp'
17162 sitebin='$sitebin'
17163 sitebinexp='$sitebinexp'
17164 sitelib='$sitelib'
17165 sitelib_stem='$sitelib_stem'
17166 sitelibexp='$sitelibexp'
17167 siteprefix='$siteprefix'
17168 siteprefixexp='$siteprefixexp'
17169 sizesize='$sizesize'
17170 sizetype='$sizetype'
17171 sleep='$sleep'
17172 smail='$smail'
17173 so='$so'
17174 sockethdr='$sockethdr'
17175 socketlib='$socketlib'
17176 socksizetype='$socksizetype'
17177 sort='$sort'
17178 spackage='$spackage'
17179 spitshell='$spitshell'
17180 src='$src'
17181 ssizetype='$ssizetype'
17182 startperl='$startperl'
17183 startsh='$startsh'
17184 static_ext='$static_ext'
17185 stdchar='$stdchar'
17186 stdio_base='$stdio_base'
17187 stdio_bufsiz='$stdio_bufsiz'
17188 stdio_cnt='$stdio_cnt'
17189 stdio_filbuf='$stdio_filbuf'
17190 stdio_ptr='$stdio_ptr'
17191 stdio_stream_array='$stdio_stream_array'
17192 strings='$strings'
17193 submit='$submit'
17194 subversion='$subversion'
17195 sysman='$sysman'
17196 tail='$tail'
17197 tar='$tar'
17198 targetarch='$targetarch'
17199 tbl='$tbl'
17200 tee='$tee'
17201 test='$test'
17202 timeincl='$timeincl'
17203 timetype='$timetype'
17204 to='$to'
17205 touch='$touch'
17206 tr='$tr'
17207 trnl='$trnl'
17208 troff='$troff'
17209 u16size='$u16size'
17210 u16type='$u16type'
17211 u32size='$u32size'
17212 u32type='$u32type'
17213 u64size='$u64size'
17214 u64type='$u64type'
17215 u8size='$u8size'
17216 u8type='$u8type'
17217 uidformat='$uidformat'
17218 uidsign='$uidsign'
17219 uidsize='$uidsize'
17220 uidtype='$uidtype'
17221 uname='$uname'
17222 uniq='$uniq'
17223 uquadtype='$uquadtype'
17224 use5005threads='$use5005threads'
17225 use64bitall='$use64bitall'
17226 use64bitint='$use64bitint'
17227 usecrosscompile='$usecrosscompile'
17228 usedl='$usedl'
17229 useithreads='$useithreads'
17230 uselargefiles='$uselargefiles'
17231 uselongdouble='$uselongdouble'
17232 usemorebits='$usemorebits'
17233 usemultiplicity='$usemultiplicity'
17234 usemymalloc='$usemymalloc'
17235 usenm='$usenm'
17236 useopcode='$useopcode'
17237 useperlio='$useperlio'
17238 useposix='$useposix'
17239 usereentrant='$usereentrant'
17240 usesfio='$usesfio'
17241 useshrplib='$useshrplib'
17242 usesocks='$usesocks'
17243 usethreads='$usethreads'
17244 usevendorprefix='$usevendorprefix'
17245 usevfork='$usevfork'
17246 usrinc='$usrinc'
17247 uuname='$uuname'
17248 uvXUformat='$uvXUformat'
17249 uvoformat='$uvoformat'
17250 uvsize='$uvsize'
17251 uvtype='$uvtype'
17252 uvuformat='$uvuformat'
17253 uvxformat='$uvxformat'
17254 vendorarch='$vendorarch'
17255 vendorarchexp='$vendorarchexp'
17256 vendorbin='$vendorbin'
17257 vendorbinexp='$vendorbinexp'
17258 vendorlib='$vendorlib'
17259 vendorlib_stem='$vendorlib_stem'
17260 vendorlibexp='$vendorlibexp'
17261 vendorprefix='$vendorprefix'
17262 vendorprefixexp='$vendorprefixexp'
17263 version='$version'
17264 versiononly='$versiononly'
17265 vi='$vi'
17266 voidflags='$voidflags'
17267 xlibpth='$xlibpth'
17268 xs_apiversion='$xs_apiversion'
17269 yacc='$yacc'
17270 yaccflags='$yaccflags'
17271 zcat='$zcat'
17272 zip='$zip'
17273 EOT
17274
17275 : Add in command line options if available
17276 $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
17277
17278 : add special variables
17279 $test -f $src/patchlevel.h && \
17280 awk '/^#define[         ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
17281 echo "PERL_PATCHLEVEL=$perl_patchlevel" >>config.sh
17282 echo "PERL_CONFIG_SH=true" >>config.sh
17283
17284 : propagate old symbols
17285 if $test -f UU/config.sh; then
17286         <UU/config.sh $sort | $uniq >UU/oldconfig.sh
17287         sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
17288         $sort | $uniq -u >UU/oldsyms
17289         set X `cat UU/oldsyms`
17290         shift
17291         case $# in
17292         0) ;;
17293         *)
17294                 cat <<EOM
17295 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
17296 EOM
17297                 echo "# Variables propagated from previous config.sh file." >>config.sh
17298                 for sym in `cat UU/oldsyms`; do
17299                         echo "    Propagating $hint variable "'$'"$sym..."
17300                         eval 'tmp="$'"${sym}"'"'
17301                         echo "$tmp" | \
17302                                 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
17303                 done
17304                 ;;
17305         esac
17306 fi
17307
17308 : Finish up by extracting the .SH files
17309 case "$alldone" in
17310 exit)
17311         $rm -rf UU
17312         echo "Extraction done."
17313         exit 0
17314         ;;
17315 cont)
17316         ;;
17317 '')
17318         dflt=''
17319         nostick=true
17320         $cat <<EOM
17321
17322 If you'd like to make any changes to the config.sh file before I begin
17323 to configure things, do it as a shell escape now (e.g. !vi config.sh).
17324
17325 EOM
17326         rp="Press return or use a shell escape to edit config.sh:"
17327         . UU/myread
17328         nostick=''
17329         case "$ans" in
17330         '') ;;
17331         *) : in case they cannot read
17332                 sh 1>&4 -c "$ans";;
17333         esac
17334         ;;
17335 esac
17336
17337 : if this fails, just run all the .SH files by hand
17338 . ./config.sh
17339
17340 echo " "
17341 exec 1>&4
17342 pwd=`pwd`
17343 . ./UU/extract
17344 cd $pwd
17345
17346 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
17347         dflt=y
17348         case "$silent" in
17349         true) ;;
17350         *)
17351                 $cat <<EOM
17352
17353 Now you need to generate make dependencies by running "$make depend".
17354 You might prefer to run it in background: "$make depend > makedepend.out &"
17355 It can take a while, so you might not want to run it right now.
17356
17357 EOM
17358                 ;;
17359         esac
17360         rp="Run $make depend now?"
17361         . UU/myread
17362         case "$ans" in
17363         y*)
17364                 $make depend && echo "Now you must run '$make'."
17365                 ;;
17366         *)
17367                 echo "You must run '$make depend' then '$make'."
17368                 ;;
17369         esac
17370 elif test -f [Mm]akefile; then
17371         echo " "
17372         echo "Now you must run a $make."
17373 else
17374         echo "Configure done."
17375 fi
17376
17377 if $test -f Policy.sh; then
17378     $cat <<EOM
17379
17380 If you compile $package on a different machine or from a different object
17381 directory, copy the Policy.sh file from this object directory to the
17382 new one before you run Configure -- this will help you with most of
17383 the policy defaults.
17384
17385 EOM
17386 fi
17387 if $test -f config.msg; then
17388     echo "Hmm.  I also noted the following information while running:"
17389     echo " "
17390     $cat config.msg >&4
17391     $rm -f config.msg
17392 fi
17393 $rm -f kit*isdone ark*isdone
17394 $rm -rf UU
17395
17396 : End of Configure
17397