22db84face118139f645a46a7a1a9bae4ca0cd59
[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 Feb 21 16:35:15 EET 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 perllibs=''
169 dynamic_ext=''
170 extensions=''
171 known_extensions=''
172 nonxs_ext=''
173 static_ext=''
174 useopcode=''
175 useposix=''
176 d_bsd=''
177 d_eunice=''
178 d_xenix=''
179 eunicefix=''
180 Mcc=''
181 ar=''
182 awk=''
183 bash=''
184 bison=''
185 byacc=''
186 cat=''
187 chgrp=''
188 chmod=''
189 chown=''
190 comm=''
191 compress=''
192 cp=''
193 cpio=''
194 cpp=''
195 csh=''
196 date=''
197 echo=''
198 egrep=''
199 emacs=''
200 expr=''
201 find=''
202 flex=''
203 grep=''
204 gzip=''
205 inews=''
206 ksh=''
207 less=''
208 line=''
209 lint=''
210 ln=''
211 lp=''
212 lpr=''
213 ls=''
214 mail=''
215 mailx=''
216 make=''
217 mkdir=''
218 more=''
219 mv=''
220 nm=''
221 nroff=''
222 perl=''
223 pg=''
224 pmake=''
225 pr=''
226 rm=''
227 rmail=''
228 sed=''
229 sendmail=''
230 shar=''
231 sleep=''
232 smail=''
233 sort=''
234 submit=''
235 tail=''
236 tar=''
237 tbl=''
238 tee=''
239 test=''
240 touch=''
241 tr=''
242 troff=''
243 uname=''
244 uniq=''
245 uuname=''
246 vi=''
247 zcat=''
248 zip=''
249 full_ar=''
250 full_sed=''
251 libswanted=''
252 hint=''
253 myuname=''
254 osname=''
255 osvers=''
256 Author=''
257 Date=''
258 Header=''
259 Id=''
260 Locker=''
261 Log=''
262 RCSfile=''
263 Revision=''
264 Source=''
265 State=''
266 _a=''
267 _exe=''
268 _o=''
269 archobjs=''
270 exe_ext=''
271 firstmakefile=''
272 lib_ext=''
273 obj_ext=''
274 path_sep=''
275 afs=''
276 alignbytes=''
277 ansi2knr=''
278 archlib=''
279 archlibexp=''
280 d_archlib=''
281 installarchlib=''
282 archname=''
283 myarchname=''
284 d_atolf=''
285 d_atoll=''
286 baserev=''
287 bin=''
288 binexp=''
289 installbin=''
290 bincompat5005=''
291 d_bincompat5005=''
292 byteorder=''
293 cc=''
294 ccflags=''
295 cppflags=''
296 ldflags=''
297 lkflags=''
298 locincpth=''
299 optimize=''
300 cf_email=''
301 cf_by=''
302 cf_time=''
303 charsize=''
304 contains=''
305 cpp_stuff=''
306 cpplast=''
307 cppminus=''
308 cpprun=''
309 cppstdin=''
310 crosscompile=''
311 d__fwalk=''
312 d_access=''
313 d_accessx=''
314 d_alarm=''
315 d_attribut=''
316 d_bcmp=''
317 d_bcopy=''
318 d_bzero=''
319 d_casti32=''
320 castflags=''
321 d_castneg=''
322 d_chown=''
323 d_chroot=''
324 d_chsize=''
325 d_closedir=''
326 d_void_closedir=''
327 d_const=''
328 cryptlib=''
329 d_crypt=''
330 d_csh=''
331 full_csh=''
332 d_cuserid=''
333 d_dbl_dig=''
334 d_difftime=''
335 d_dlerror=''
336 d_dlopen=''
337 d_dlsymun=''
338 d_dosuid=''
339 d_suidsafe=''
340 d_drand48proto=''
341 d_dup2=''
342 d_eaccess=''
343 d_endgrent=''
344 d_endhent=''
345 d_endnent=''
346 d_endpent=''
347 d_endpwent=''
348 d_endsent=''
349 d_fchmod=''
350 d_fchown=''
351 d_fcntl=''
352 d_fcntl_can_lock=''
353 d_fd_macros=''
354 d_fd_set=''
355 d_fds_bits=''
356 d_fgetpos=''
357 d_flexfnam=''
358 d_flock=''
359 d_fork=''
360 d_fpos64_t=''
361 d_frexpl=''
362 d_fs_data_s=''
363 d_fseeko=''
364 d_fsetpos=''
365 d_fstatfs=''
366 d_fsync=''
367 d_ftello=''
368 d_ftime=''
369 d_gettimeod=''
370 d_Gconvert=''
371 d_getcwd=''
372 d_getespwnam=''
373 d_getfsstat=''
374 d_getgrent=''
375 d_getgrps=''
376 d_gethbyaddr=''
377 d_gethbyname=''
378 d_gethent=''
379 aphostname=''
380 d_gethname=''
381 d_phostname=''
382 d_uname=''
383 d_gethostprotos=''
384 d_getlogin=''
385 d_getmnt=''
386 d_getmntent=''
387 d_getnbyaddr=''
388 d_getnbyname=''
389 d_getnent=''
390 d_getnetprotos=''
391 d_getpagsz=''
392 d_getpent=''
393 d_getpgid=''
394 d_getpgrp2=''
395 d_bsdgetpgrp=''
396 d_getpgrp=''
397 d_getppid=''
398 d_getprior=''
399 d_getpbyname=''
400 d_getpbynumber=''
401 d_getprotoprotos=''
402 d_getprpwnam=''
403 d_getpwent=''
404 d_getsent=''
405 d_getservprotos=''
406 d_getspnam=''
407 d_getsbyname=''
408 d_getsbyport=''
409 d_gnulibc=''
410 d_hasmntopt=''
411 d_htonl=''
412 d_iconv=''
413 d_inetaton=''
414 d_int64_t=''
415 d_isascii=''
416 d_isnan=''
417 d_isnanl=''
418 d_killpg=''
419 d_lchown=''
420 d_ldbl_dig=''
421 d_link=''
422 d_locconv=''
423 d_lockf=''
424 d_longdbl=''
425 longdblsize=''
426 d_longlong=''
427 longlongsize=''
428 d_lseekproto=''
429 d_lstat=''
430 d_madvise=''
431 d_mblen=''
432 d_mbstowcs=''
433 d_mbtowc=''
434 d_memchr=''
435 d_memcmp=''
436 d_memcpy=''
437 d_memmove=''
438 d_memset=''
439 d_mkdir=''
440 d_mkdtemp=''
441 d_mkfifo=''
442 d_mkstemp=''
443 d_mkstemps=''
444 d_mktime=''
445 d_mmap=''
446 mmaptype=''
447 d_modfl=''
448 d_mprotect=''
449 d_msg=''
450 d_msgctl=''
451 d_msgget=''
452 d_msgrcv=''
453 d_msgsnd=''
454 d_msync=''
455 d_munmap=''
456 d_nice=''
457 d_off64_t=''
458 d_open3=''
459 d_fpathconf=''
460 d_pathconf=''
461 d_pause=''
462 d_pipe=''
463 d_poll=''
464 d_portable=''
465 d_old_pthread_create_joinable=''
466 old_pthread_create_joinable=''
467 d_pthread_yield=''
468 d_sched_yield=''
469 sched_yield=''
470 d_qgcvt=''
471 d_readdir=''
472 d_rewinddir=''
473 d_seekdir=''
474 d_telldir=''
475 d_readlink=''
476 d_rename=''
477 d_rmdir=''
478 d_safebcpy=''
479 d_safemcpy=''
480 d_sanemcmp=''
481 d_sbrkproto=''
482 d_select=''
483 d_sem=''
484 d_semctl=''
485 d_semget=''
486 d_semop=''
487 d_setegid=''
488 d_seteuid=''
489 d_setgrent=''
490 d_setgrps=''
491 d_sethent=''
492 d_setlinebuf=''
493 d_setlocale=''
494 d_setnent=''
495 d_setpent=''
496 d_setpgid=''
497 d_setpgrp2=''
498 d_bsdsetpgrp=''
499 d_setpgrp=''
500 d_setprior=''
501 d_setproctitle=''
502 d_setpwent=''
503 d_setregid=''
504 d_setresgid=''
505 d_setresuid=''
506 d_setreuid=''
507 d_setrgid=''
508 d_setruid=''
509 d_setsent=''
510 d_setsid=''
511 d_setvbuf=''
512 d_sfio=''
513 usesfio=''
514 d_shm=''
515 d_shmat=''
516 d_shmatprototype=''
517 shmattype=''
518 d_shmctl=''
519 d_shmdt=''
520 d_shmget=''
521 d_sigaction=''
522 d_sigprocmask=''
523 d_sigsetjmp=''
524 d_msg_ctrunc=''
525 d_msg_dontroute=''
526 d_msg_oob=''
527 d_msg_peek=''
528 d_msg_proxy=''
529 d_oldsock=''
530 d_scm_rights=''
531 d_socket=''
532 d_sockpair=''
533 sockethdr=''
534 socketlib=''
535 d_socklen_t=''
536 d_socks5_init=''
537 d_sqrtl=''
538 d_statblks=''
539 d_statfs_f_flags=''
540 d_statfs_s=''
541 d_fstatvfs=''
542 d_statvfs=''
543 d_stdio_cnt_lval=''
544 d_stdio_ptr_lval=''
545 d_stdio_ptr_lval_nochange_cnt=''
546 d_stdio_ptr_lval_sets_cnt=''
547 d_stdiobase=''
548 d_stdstdio=''
549 stdio_base=''
550 stdio_bufsiz=''
551 stdio_cnt=''
552 stdio_filbuf=''
553 stdio_ptr=''
554 d_index=''
555 d_strchr=''
556 d_strcoll=''
557 d_strctcpy=''
558 d_strerrm=''
559 d_strerror=''
560 d_sysernlst=''
561 d_syserrlst=''
562 d_strtod=''
563 d_strtol=''
564 d_strtold=''
565 d_strtoll=''
566 d_strtoq=''
567 d_strtoul=''
568 d_strtoull=''
569 d_strtouq=''
570 d_strxfrm=''
571 d_symlink=''
572 d_syscall=''
573 d_sysconf=''
574 d_system=''
575 d_tcgetpgrp=''
576 d_tcsetpgrp=''
577 d_telldirproto=''
578 d_time=''
579 timetype=''
580 clocktype=''
581 d_times=''
582 d_truncate=''
583 d_tzname=''
584 d_umask=''
585 d_semctl_semid_ds=''
586 d_semctl_semun=''
587 d_union_semun=''
588 d_ustat=''
589 d_vfork=''
590 usevfork=''
591 d_voidsig=''
592 signal_t=''
593 d_volatile=''
594 d_charvspr=''
595 d_vprintf=''
596 d_wait4=''
597 d_waitpid=''
598 d_wcstombs=''
599 d_wctomb=''
600 dlext=''
601 cccdlflags=''
602 ccdlflags=''
603 dlsrc=''
604 ld=''
605 lddlflags=''
606 usedl=''
607 doublesize=''
608 ebcdic=''
609 fflushNULL=''
610 fflushall=''
611 fpossize=''
612 fpostype=''
613 gccosandvers=''
614 gccversion=''
615 gidformat=''
616 gidsign=''
617 gidsize=''
618 gidtype=''
619 groupstype=''
620 h_fcntl=''
621 h_sysfile=''
622 i_arpainet=''
623 db_hashtype=''
624 db_prefixtype=''
625 i_db=''
626 i_dbm=''
627 i_rpcsvcdbm=''
628 d_dirnamlen=''
629 direntrytype=''
630 i_dirent=''
631 i_dld=''
632 i_dlfcn=''
633 i_fcntl=''
634 i_float=''
635 i_gdbm=''
636 d_grpasswd=''
637 i_grp=''
638 i_iconv=''
639 i_ieeefp=''
640 i_inttypes=''
641 i_libutil=''
642 i_limits=''
643 i_locale=''
644 i_machcthr=''
645 i_malloc=''
646 i_math=''
647 i_memory=''
648 i_mntent=''
649 i_ndbm=''
650 i_netdb=''
651 i_neterrno=''
652 i_netinettcp=''
653 i_niin=''
654 i_sysin=''
655 i_poll=''
656 i_prot=''
657 i_pthread=''
658 d_pwage=''
659 d_pwchange=''
660 d_pwclass=''
661 d_pwcomment=''
662 d_pwexpire=''
663 d_pwgecos=''
664 d_pwpasswd=''
665 d_pwquota=''
666 i_pwd=''
667 i_sfio=''
668 i_shadow=''
669 i_socks=''
670 i_stddef=''
671 i_stdlib=''
672 i_string=''
673 strings=''
674 i_sunmath=''
675 i_sysaccess=''
676 i_sysdir=''
677 i_sysfile=''
678 d_voidtty=''
679 i_bsdioctl=''
680 i_sysfilio=''
681 i_sysioctl=''
682 i_syssockio=''
683 i_syslog=''
684 i_sysmman=''
685 i_sysmode=''
686 i_sysmount=''
687 i_sysndir=''
688 i_sysparam=''
689 i_sysresrc=''
690 i_syssecrt=''
691 i_sysselct=''
692 i_sysstat=''
693 i_sysstatfs=''
694 i_sysstatvfs=''
695 i_systimes=''
696 i_systypes=''
697 i_sysuio=''
698 i_sysun=''
699 i_sysutsname=''
700 i_sysvfs=''
701 i_syswait=''
702 i_sgtty=''
703 i_termio=''
704 i_termios=''
705 i_systime=''
706 i_systimek=''
707 i_time=''
708 timeincl=''
709 i_unistd=''
710 i_ustat=''
711 i_utime=''
712 i_values=''
713 i_stdarg=''
714 i_varargs=''
715 i_varhdr=''
716 i_vfork=''
717 inc_version_list=''
718 inc_version_list_init=''
719 installprefix=''
720 installprefixexp=''
721 installstyle=''
722 installusrbinperl=''
723 intsize=''
724 longsize=''
725 shortsize=''
726 issymlink=''
727 libc=''
728 ldlibpthname=''
729 libperl=''
730 shrpenv=''
731 useshrplib=''
732 glibpth=''
733 libpth=''
734 loclibpth=''
735 plibpth=''
736 xlibpth=''
737 ignore_versioned_solibs=''
738 libs=''
739 libsdirs=''
740 libsfiles=''
741 libsfound=''
742 libspath=''
743 lns=''
744 d_PRIEUldbl=''
745 d_PRIFUldbl=''
746 d_PRIGUldbl=''
747 d_PRIeldbl=''
748 d_PRIfldbl=''
749 d_PRIgldbl=''
750 d_SCNfldbl=''
751 sPRIEUldbl=''
752 sPRIFUldbl=''
753 sPRIGUldbl=''
754 sPRIeldbl=''
755 sPRIfldbl=''
756 sPRIgldbl=''
757 sSCNfldbl=''
758 lseeksize=''
759 lseektype=''
760 make_set_make=''
761 d_mymalloc=''
762 freetype=''
763 mallocobj=''
764 mallocsrc=''
765 malloctype=''
766 usemymalloc=''
767 installman1dir=''
768 man1dir=''
769 man1direxp=''
770 man1ext=''
771 installman3dir=''
772 man3dir=''
773 man3direxp=''
774 man3ext=''
775 modetype=''
776 multiarch=''
777 mydomain=''
778 myhostname=''
779 phostname=''
780 c=''
781 n=''
782 d_eofnblk=''
783 eagain=''
784 o_nonblock=''
785 rd_nodata=''
786 need_va_copy=''
787 netdb_hlen_type=''
788 netdb_host_type=''
789 netdb_name_type=''
790 netdb_net_type=''
791 groupcat=''
792 hostcat=''
793 passcat=''
794 orderlib=''
795 ranlib=''
796 d_perl_otherlibdirs=''
797 otherlibdirs=''
798 package=''
799 spackage=''
800 pager=''
801 api_revision=''
802 api_subversion=''
803 api_version=''
804 api_versionstring=''
805 patchlevel=''
806 revision=''
807 subversion=''
808 version=''
809 perl5=''
810 perladmin=''
811 perlpath=''
812 d_nv_preserves_uv=''
813 d_nv_preserves_uv_bits=''
814 i16size=''
815 i16type=''
816 i32size=''
817 i32type=''
818 i64size=''
819 i64type=''
820 i8size=''
821 i8type=''
822 ivsize=''
823 ivtype=''
824 nvsize=''
825 nvtype=''
826 u16size=''
827 u16type=''
828 u32size=''
829 u32type=''
830 u64size=''
831 u64type=''
832 u8size=''
833 u8type=''
834 uvsize=''
835 uvtype=''
836 ivdformat=''
837 nvEUformat=''
838 nvFUformat=''
839 nvGUformat=''
840 nveformat=''
841 nvfformat=''
842 nvgformat=''
843 uvXUformat=''
844 uvoformat=''
845 uvuformat=''
846 uvxformat=''
847 pidtype=''
848 prefix=''
849 prefixexp=''
850 installprivlib=''
851 privlib=''
852 privlibexp=''
853 prototype=''
854 ptrsize=''
855 d_PRIXU64=''
856 d_PRId64=''
857 d_PRIi64=''
858 d_PRIo64=''
859 d_PRIu64=''
860 d_PRIx64=''
861 sPRIXU64=''
862 sPRId64=''
863 sPRIi64=''
864 sPRIo64=''
865 sPRIu64=''
866 sPRIx64=''
867 d_quad=''
868 quadkind=''
869 quadtype=''
870 uquadtype=''
871 drand01=''
872 randbits=''
873 randfunc=''
874 randseedtype=''
875 seedfunc=''
876 installscript=''
877 scriptdir=''
878 scriptdirexp=''
879 selectminbits=''
880 selecttype=''
881 sh=''
882 sig_count=''
883 sig_name=''
884 sig_name_init=''
885 sig_num=''
886 sig_num_init=''
887 sig_size=''
888 installsitearch=''
889 sitearch=''
890 sitearchexp=''
891 installsitebin=''
892 sitebin=''
893 sitebinexp=''
894 installsitelib=''
895 sitelib=''
896 sitelib_stem=''
897 sitelibexp=''
898 siteprefix=''
899 siteprefixexp=''
900 sizesize=''
901 sizetype=''
902 so=''
903 socksizetype=''
904 sharpbang=''
905 shsharp=''
906 spitshell=''
907 src=''
908 ssizetype=''
909 startperl=''
910 startsh=''
911 stdchar=''
912 d_stdio_stream_array=''
913 stdio_stream_array=''
914 sysman=''
915 trnl=''
916 uidformat=''
917 uidsign=''
918 uidsize=''
919 uidtype=''
920 archname64=''
921 use64bitall=''
922 use64bitint=''
923 ccflags_uselargefiles=''
924 ldflags_uselargefiles=''
925 libswanted_uselargefiles=''
926 uselargefiles=''
927 uselongdouble=''
928 usemorebits=''
929 usemultiplicity=''
930 nm_opt=''
931 nm_so_opt=''
932 runnm=''
933 usenm=''
934 useperlio=''
935 usesocks=''
936 d_oldpthreads=''
937 use5005threads=''
938 useithreads=''
939 usethreads=''
940 incpath=''
941 mips_type=''
942 usrinc=''
943 d_vendorarch=''
944 installvendorarch=''
945 vendorarch=''
946 vendorarchexp=''
947 d_vendorbin=''
948 installvendorbin=''
949 vendorbin=''
950 vendorbinexp=''
951 d_vendorlib=''
952 installvendorlib=''
953 vendorlib=''
954 vendorlib_stem=''
955 vendorlibexp=''
956 usevendorprefix=''
957 vendorprefix=''
958 vendorprefixexp=''
959 versiononly=''
960 defvoidused=''
961 voidflags=''
962 pm_apiversion=''
963 xs_apiversion=''
964 yacc=''
965 yaccflags=''
966 CONFIG=''
967
968 define='define'
969 undef='undef'
970 smallmach='pdp11 i8086 z8000 i80286 iAPX286'
971 rmlist=''
972
973 : We must find out about Eunice early
974 eunicefix=':'
975 if test -f /etc/unixtovms; then
976         eunicefix=/etc/unixtovms
977 fi
978 if test -f /etc/unixtovms.exe; then
979         eunicefix=/etc/unixtovms.exe
980 fi
981
982 i_whoami=''
983 ccname=''
984 ccversion=''
985 perllibs=''
986 : set useposix=false in your hint file to disable the POSIX extension.
987 useposix=true
988 : set useopcode=false in your hint file to disable the Opcode extension.
989 useopcode=true
990 : Trailing extension.  Override this in a hint file, if needed.
991 _exe=''
992 : Extra object files, if any, needed on this platform.
993 archobjs=''
994 archname=''
995 : Possible local include directories to search.
996 : Set locincpth to "" in a hint file to defeat local include searches.
997 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
998 locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
999 :
1000 : no include file wanted by default
1001 inclwanted=''
1002
1003 groupstype=''
1004 : change the next line if compiling for Xenix/286 on Xenix/386
1005 xlibpth='/usr/lib/386 /lib/386'
1006 : Possible local library directories to search.
1007 loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
1008 loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
1009
1010 : general looking path for locating libraries
1011 glibpth="/lib /usr/lib $xlibpth"
1012 glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
1013 test -f /usr/shlib/libc.so && glibpth="/usr/shlib $glibpth"
1014 test -f /shlib/libc.so     && glibpth="/shlib $glibpth"
1015
1016 : Private path used by Configure to find libraries.  Its value
1017 : is prepended to libpth. This variable takes care of special
1018 : machines, like the mips.  Usually, it should be empty.
1019 plibpth=''
1020
1021 : default library list
1022 libswanted=''
1023 : some systems want to use only the non-versioned libso:s
1024 ignore_versioned_solibs=''
1025 archname64=''
1026 ccflags_uselargefiles=''
1027 ldflags_uselargefiles=''
1028 libswanted_uselargefiles=''
1029 : set usemultiplicity on the Configure command line to enable multiplicity.
1030 : set usesocks on the Configure command line to enable socks.
1031 : set usethreads on the Configure command line to enable threads.
1032 : full support for void wanted by default
1033 defvoidused=15
1034
1035 : List of libraries we want.
1036 : If anyone needs -lnet, put it in a hint file.
1037 libswanted='sfio socket bind inet nsl nm ndbm gdbm dbm db malloc dl'
1038 libswanted="$libswanted dld ld sun m c cposix posix"
1039 libswanted="$libswanted ndir dir crypt sec"
1040 libswanted="$libswanted ucb bsd BSD PW x iconv util"
1041 : We probably want to search /usr/shlib before most other libraries.
1042 : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
1043 glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
1044 glibpth="/usr/shlib $glibpth"
1045 : Do not use vfork unless overridden by a hint file.
1046 usevfork=false
1047
1048 : Find the basic shell for Bourne shell scripts
1049 case "$sh" in
1050 '')
1051         case "$SYSTYPE" in
1052         *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
1053         *) xxx='/bin/sh';;
1054         esac
1055         if test -f "$xxx"; then
1056                 sh="$xxx"
1057         else
1058                 : Build up a list and do a single loop so we can 'break' out.
1059                 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1060                 for xxx in sh bash ksh pdksh ash; do
1061                         for p in $pth; do
1062                                 try="$try ${p}/${xxx}"
1063                         done
1064                 done
1065                 for xxx in $try; do
1066                         if test -f "$xxx"; then
1067                                 sh="$xxx";
1068                                 break
1069                         elif test -f "$xxx.exe"; then
1070                                 sh="$xxx";
1071                                 break
1072                         fi
1073                 done
1074         fi
1075         ;;
1076 esac
1077
1078 case "$sh" in
1079 '')     cat <<EOM >&2
1080 $me:  Fatal Error:  I can't find a Bourne Shell anywhere.  
1081
1082 Usually it's in /bin/sh.  How did you even get this far?
1083 Please contact me (Perl Maintainers) at perlbug@perl.org and 
1084 we'll try to straighten this all out.
1085 EOM
1086         exit 1
1087         ;;
1088 esac
1089
1090 : see if sh knows # comments
1091 if `$sh -c '#' >/dev/null 2>&1`; then
1092         shsharp=true
1093         spitshell=cat
1094         xcat=/bin/cat
1095         test -f $xcat || xcat=/usr/bin/cat
1096         echo "#!$xcat" >try
1097         $eunicefix try
1098         chmod +x try
1099         ./try > today
1100         if test -s today; then
1101                 sharpbang='#!'
1102         else
1103                 echo "#! $xcat" > try
1104                 $eunicefix try
1105                 chmod +x try
1106                 ./try > today
1107                 if test -s today; then
1108                         sharpbang='#! '
1109                 else
1110                         sharpbang=': use '
1111                 fi
1112         fi
1113 else
1114         echo " "
1115         echo "Your $sh doesn't grok # comments--I will strip them later on."
1116         shsharp=false
1117         cd ..
1118         echo "exec grep -v '^[  ]*#'" >spitshell
1119         chmod +x spitshell
1120         $eunicefix spitshell
1121         spitshell=`pwd`/spitshell
1122         cd UU
1123         echo "I presume that if # doesn't work, #! won't work either!"
1124         sharpbang=': use '
1125 fi
1126 rm -f try today
1127
1128 : figure out how to guarantee sh startup
1129 case "$startsh" in
1130 '') startsh=${sharpbang}${sh} ;;
1131 *)
1132 esac
1133 cat >try <<EOSS
1134 $startsh
1135 set abc
1136 test "$?abc" != 1
1137 EOSS
1138
1139 chmod +x try
1140 $eunicefix try
1141 if ./try; then
1142         : echo "Yup, it does."
1143 else
1144         echo "Hmm... '$startsh' does not guarantee sh startup..."
1145         echo "You may have to fix up the shell scripts to make sure $sh runs them."
1146 fi
1147 rm -f try
1148
1149
1150 : Save command line options in file UU/cmdline.opt for later use in
1151 : generating config.sh.
1152 cat > cmdline.opt <<EOSH
1153 # Configure command line arguments.
1154 config_arg0='$0'
1155 config_args='$*'
1156 config_argc=$#
1157 EOSH
1158 argn=1
1159 for arg in "$@"; do
1160         cat >>cmdline.opt <<EOSH
1161 config_arg$argn='$arg'
1162 EOSH
1163         argn=`expr $argn + 1`
1164 done
1165
1166 : produce awk script to parse command line options
1167 cat >options.awk <<'EOF'
1168 BEGIN {
1169         optstr = "A:dD:eEf:hKOrsSU:V";  # getopt-style specification
1170
1171         len = length(optstr);
1172         for (i = 1; i <= len; i++) {
1173                 c = substr(optstr, i, 1);
1174                 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
1175                 if (a == ":") {
1176                         arg[c] = 1;
1177                         i++;
1178                 }
1179                 opt[c] = 1;
1180         }
1181 }
1182 {
1183         expect = 0;
1184         str = $0;
1185         if (substr(str, 1, 1) != "-") {
1186                 printf("'%s'\n", str);
1187                 next;
1188         }
1189         len = length($0);
1190         for (i = 2; i <= len; i++) {
1191                 c = substr(str, i, 1);
1192                 if (!opt[c]) {
1193                         printf("-%s\n", substr(str, i));
1194                         next;
1195                 }
1196                 printf("-%s\n", c);
1197                 if (arg[c]) {
1198                         if (i < len)
1199                                 printf("'%s'\n", substr(str, i + 1));
1200                         else
1201                                 expect = 1;
1202                         next;
1203                 }
1204         }
1205 }
1206 END {
1207         if (expect)
1208                 print "?";
1209 }
1210 EOF
1211
1212 : process the command line options
1213 set X `for arg in "$@"; do echo "X$arg"; done |
1214         sed -e s/X// | awk -f options.awk`
1215 eval "set $*"
1216 shift
1217 rm -f options.awk
1218
1219 : set up default values
1220 fastread=''
1221 reuseval=false
1222 config_sh=''
1223 alldone=''
1224 error=''
1225 silent=''
1226 extractsh=''
1227 override=''
1228 knowitall=''
1229 rm -f optdef.sh posthint.sh
1230 cat >optdef.sh <<EOS
1231 $startsh
1232 EOS
1233
1234
1235 : option parsing
1236 while test $# -gt 0; do
1237         case "$1" in
1238         -d) shift; fastread=yes;;
1239         -e) shift; alldone=cont;;
1240         -f)
1241                 shift
1242                 cd ..
1243                 if test -r "$1"; then
1244                         config_sh="$1"
1245                 else
1246                         echo "$me: cannot read config file $1." >&2
1247                         error=true
1248                 fi
1249                 cd UU
1250                 shift;;
1251         -h) shift; error=true;;
1252         -r) shift; reuseval=true;;
1253         -s) shift; silent=true; realsilent=true;;
1254         -E) shift; alldone=exit;;
1255         -K) shift; knowitall=true;;
1256         -O) shift; override=true;;
1257         -S) shift; silent=true; extractsh=true;;
1258         -D)
1259                 shift
1260                 case "$1" in
1261                 *=)
1262                         echo "$me: use '-U symbol=', not '-D symbol='." >&2
1263                         echo "$me: ignoring -D $1" >&2
1264                         ;;
1265                 *=*) echo "$1" | \
1266                                 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1267                 *) echo "$1='define'" >> optdef.sh;;
1268                 esac
1269                 shift
1270                 ;;
1271         -U)
1272                 shift
1273                 case "$1" in
1274                 *=) echo "$1" >> optdef.sh;;
1275                 *=*)
1276                         echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1277                         echo "$me: ignoring -U $1" >&2
1278                         ;;
1279                 *) echo "$1='undef'" >> optdef.sh;;
1280                 esac
1281                 shift
1282                 ;;
1283         -A)
1284             shift
1285             xxx=''
1286             yyy="$1"
1287             zzz=''
1288             uuu=undef
1289             case "$yyy" in
1290             *=*) zzz=`echo $yyy|sed 's!=.*!!'`
1291                  case "$zzz" in
1292                  *:*) zzz='' ;;
1293                  *)   xxx=append
1294                       zzz=" "`echo $yyy|sed 's!^[^=]*=!!'` 
1295                       yyy=`echo $yyy|sed 's!=.*!!'` ;;
1296                  esac
1297                  ;;
1298             esac
1299             case "$xxx" in
1300             '')  case "$yyy" in
1301                  *:*) xxx=`echo $yyy|sed 's!:.*!!'`
1302                       yyy=`echo $yyy|sed 's!^[^:]*:!!'`
1303                       zzz=`echo $yyy|sed 's!^[^=]*=!!'`
1304                       yyy=`echo $yyy|sed 's!=.*!!'` ;;
1305                  *)   xxx=`echo $yyy|sed 's!:.*!!'`
1306                       yyy=`echo $yyy|sed 's!^[^:]*:!!'` ;;
1307                  esac
1308                  ;;       
1309             esac
1310             case "$xxx" in
1311             append)
1312                 echo "$yyy=\"\${$yyy}$zzz\""    >> posthint.sh ;;
1313             clear)
1314                 echo "$yyy=''"                  >> posthint.sh ;;
1315             define)
1316                 case "$zzz" in
1317                 '') zzz=define ;;
1318                 esac
1319                 echo "$yyy='$zzz'"              >> posthint.sh ;;
1320             eval)
1321                 echo "eval \"$yyy=$zzz\""       >> posthint.sh ;;
1322             prepend)
1323                 echo "$yyy=\"$zzz\${$yyy}\""    >> posthint.sh ;;
1324             undef)
1325                 case "$zzz" in
1326                 '') zzz="$uuu" ;;
1327                 esac
1328                 echo "$yyy=$zzz"                >> posthint.sh ;;
1329             *)  echo "$me: unknown -A command '$xxx', ignoring -A $1" >&2 ;;
1330             esac
1331             shift
1332             ;;
1333         -V) echo "$me generated by metaconfig 3.0 PL70." >&2
1334             exit 0;;
1335         --) break;;
1336         -*) echo "$me: unknown option $1" >&2; shift; error=true;;
1337         *) break;;
1338         esac
1339 done
1340
1341 case "$error" in
1342 true)
1343         cat >&2 <<EOM
1344 Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
1345                  [-U symbol] [-U symbol=] [-A command:symbol...]
1346   -d : use defaults for all answers.
1347   -e : go on without questioning past the production of config.sh.
1348   -f : specify an alternate default configuration file.
1349   -h : print this help message and exit (with an error status).
1350   -r : reuse C symbols value if possible (skips costly nm extraction).
1351   -s : silent mode, only echoes questions and essential information.
1352   -D : define symbol to have some value:
1353          -D symbol         symbol gets the value 'define'
1354          -D symbol=value   symbol gets the value 'value'
1355   -E : stop at the end of questions, after having produced config.sh.
1356   -K : do not use unless you know what you are doing.
1357   -O : let -D and -U override definitions from loaded configuration file.
1358   -S : perform variable substitutions on all .SH files (can mix with -f)
1359   -U : undefine symbol:
1360          -U symbol    symbol gets the value 'undef'
1361          -U symbol=   symbol gets completely empty
1362   -A : manipulate symbol after the platform specific hints have been applied:
1363          -A symbol=value                append " "value to symbol
1364          -A append:symbol=value         append value to symbol
1365          -A define:symbol=value         define symbol to have value
1366          -A clear:symbol                define symbol to be ''
1367          -A define:symbol               define symbol to be 'define'
1368          -A eval:symbol=value           define symbol to be eval of value
1369          -A prepend:symbol=value        prepend value to symbol
1370          -A undef:symbol                define symbol to be 'undef'
1371          -A undef:symbol=               define symbol to be ''
1372   -V : print version number and exit (with a zero status).
1373 EOM
1374         exit 1
1375         ;;
1376 esac
1377
1378 : Sanity checks
1379 case "$fastread$alldone" in
1380 yescont|yesexit) ;;
1381 *)
1382         case "$extractsh" in
1383         true) ;;
1384         *)
1385                 if test ! -t 0; then
1386                         echo "Say 'sh Configure', not 'sh <Configure'"
1387                         exit 1
1388                 fi
1389                 ;;
1390         esac
1391         ;;
1392 esac
1393
1394 exec 4>&1
1395 case "$silent" in
1396 true) exec 1>/dev/null;;
1397 esac
1398
1399 : run the defines and the undefines, if any, but leave the file out there...
1400 touch optdef.sh
1401 . ./optdef.sh
1402 : create the posthint manipulation script and leave the file out there...
1403 touch posthint.sh
1404
1405 : set package name
1406 package=perl5
1407 first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1408 last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1409 case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1410 ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1411 *) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1412 esac
1413
1414 : Some greps do not return status, grrr.
1415 echo "grimblepritz" >grimble
1416 if grep blurfldyick grimble >/dev/null 2>&1 ; then
1417         contains=contains
1418 elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1419         contains=grep
1420 else
1421         contains=contains
1422 fi
1423 rm -f grimble
1424 : the following should work in any shell
1425 case "$contains" in
1426 contains*)
1427         echo " "
1428         echo "AGH!  Grep doesn't return a status.  Attempting remedial action."
1429         cat >contains <<'EOSS'
1430 grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1431 EOSS
1432 chmod +x contains
1433 esac
1434
1435 : Find the path to the source tree
1436 case "$src" in
1437 '') case "$0" in
1438     */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`
1439          case "$src" in
1440          /*)    ;;
1441          .)     ;;
1442          *)     src=`cd ../$src && pwd` ;;
1443          esac
1444          ;;
1445     *)   src='.';;
1446     esac;;
1447 esac
1448 case "$src" in
1449 '')     src=/
1450         rsrc=/
1451         ;;
1452 /*) rsrc="$src";;
1453 *) rsrc="../$src";;
1454 esac
1455 if test -f $rsrc/Configure && \
1456         $contains "^package=$package$" $rsrc/Configure >/dev/null 2>&1
1457 then
1458    : found it, so we are ok.
1459 else
1460         rsrc=''
1461         for src in . .. ../.. ../../.. ../../../..; do
1462                 if test -f ../$src/Configure && \
1463                         $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1464                 then
1465                         rsrc=../$src
1466                         break
1467                 fi
1468         done
1469 fi
1470 case "$rsrc" in
1471 '')
1472         cat <<EOM >&4
1473
1474 Sorry, I can't seem to locate the source dir for $package.  Please start
1475 Configure with an explicit path -- i.e. /some/path/Configure.
1476
1477 EOM
1478         exit 1
1479         ;;
1480 ../.)   rsrc='..';;
1481 *)
1482         echo " "
1483         echo "Sources for $package found in \"$src\"." >&4
1484         ;;
1485 esac
1486
1487 : script used to extract .SH files with variable substitutions
1488 cat >extract <<'EOS'
1489 CONFIGDOTSH=true
1490 echo "Doing variable substitutions on .SH files..."
1491 if test -f $src/MANIFEST; then
1492         set x `awk '{print $1}' <$src/MANIFEST | grep '\.SH$'`
1493 else
1494         echo "(Looking for .SH files under the source directory.)"
1495         set x `(cd $src; find . -name "*.SH" -print)`
1496 fi
1497 shift
1498 case $# in
1499 0) set x `(cd $src; echo *.SH)`; shift;;
1500 esac
1501 if test ! -f $src/$1; then
1502         shift
1503 fi
1504 mkdir_p='
1505 name=$1;
1506 create="";
1507 while test $name; do
1508         if test ! -d "$name"; then
1509                 create="$name $create";
1510                 name=`echo $name | sed -e "s|^[^/]*$||"`;
1511                 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
1512         else
1513                 name="";
1514         fi;
1515 done;
1516 for file in $create; do
1517         mkdir $file;
1518 done
1519 '
1520 for file in $*; do
1521         case "$src" in
1522         ".")
1523                 case "$file" in
1524                 */*)
1525                         dir=`expr X$file : 'X\(.*\)/'`
1526                         file=`expr X$file : 'X.*/\(.*\)'`
1527                         (cd $dir && . ./$file)
1528                         ;;
1529                 *)
1530                         . ./$file
1531                         ;;
1532                 esac
1533                 ;;
1534         *)
1535                 case "$file" in
1536                 */*)
1537                         dir=`expr X$file : 'X\(.*\)/'`
1538                         file=`expr X$file : 'X.*/\(.*\)'`
1539                         (set x $dir; shift; eval $mkdir_p)
1540                         sh <$src/$dir/$file
1541                         ;;
1542                 *)
1543                         sh <$src/$file
1544                         ;;
1545                 esac
1546                 ;;
1547         esac
1548 done
1549 if test -f $src/config_h.SH; then
1550         if test ! -f config.h; then
1551         : oops, they left it out of MANIFEST, probably, so do it anyway.
1552         . $src/config_h.SH
1553         fi
1554 fi
1555 EOS
1556
1557 : extract files and exit if asked to do so
1558 case "$extractsh" in
1559 true)
1560         case "$realsilent" in
1561         true) ;;
1562         *) exec 1>&4;;
1563         esac
1564         case "$config_sh" in
1565         '') config_sh='config.sh';;
1566         esac
1567         echo " "
1568         echo "Fetching answers from $config_sh..."
1569         cd ..
1570         . $config_sh
1571         test "$override" && . ./optdef.sh
1572         echo " "
1573         . UU/extract
1574         rm -rf UU
1575         echo "Done."
1576         exit 0
1577         ;;
1578 esac
1579
1580 : Eunice requires " " instead of "", can you believe it
1581 echo " "
1582 : Here we go...
1583 echo "Beginning of configuration questions for $package."
1584
1585 trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1586
1587 : first determine how to suppress newline on echo command
1588 echo " "
1589 echo "Checking echo to see how to suppress newlines..."
1590 (echo "hi there\c" ; echo " ") >.echotmp
1591 if $contains c .echotmp >/dev/null 2>&1 ; then
1592         echo "...using -n."
1593         n='-n'
1594         c=''
1595 else
1596         cat <<'EOM'
1597 ...using \c
1598 EOM
1599         n=''
1600         c='\c'
1601 fi
1602 echo $n "The star should be here-->$c"
1603 echo '*'
1604 rm -f .echotmp
1605
1606 : Now test for existence of everything in MANIFEST
1607 echo " "
1608 if test -f $rsrc/MANIFEST; then
1609         echo "First let's make sure your kit is complete.  Checking..." >&4
1610         awk '$1 !~ /PACK[A-Z]+/ {print $1}' $rsrc/MANIFEST | split -50
1611         rm -f missing
1612         tmppwd=`pwd`
1613         for filelist in x??; do
1614                 (cd $rsrc; ls `cat $tmppwd/$filelist` >/dev/null 2>>$tmppwd/missing)
1615         done
1616         if test -s missing; then
1617                 cat missing >&4
1618                 cat >&4 <<'EOM'
1619
1620 THIS PACKAGE SEEMS TO BE INCOMPLETE.
1621
1622 You have the option of continuing the configuration process, despite the
1623 distinct possibility that your kit is damaged, by typing 'y'es.  If you
1624 do, don't blame me if something goes wrong.  I advise you to type 'n'o
1625 and contact the author (perlbug@perl.org).
1626
1627 EOM
1628                 echo $n "Continue? [n] $c" >&4
1629                 read ans
1630                 case "$ans" in
1631                 y*)
1632                         echo "Continuing..." >&4
1633                         rm -f missing
1634                         ;;
1635                 *)
1636                         echo "ABORTING..." >&4
1637                         kill $$
1638                         ;;
1639                 esac
1640         else
1641                 echo "Looks good..."
1642         fi
1643 else
1644         echo "There is no MANIFEST file.  I hope your kit is complete !"
1645 fi
1646 rm -f missing x??
1647
1648 echo " "
1649 : Find the appropriate value for a newline for tr
1650 if test -n "$DJGPP"; then
1651        trnl='\012'
1652 fi
1653 if test X"$trnl" = X; then
1654         case "`echo foo|tr '\n' x 2>/dev/null`" in
1655         foox) trnl='\n' ;;
1656         esac
1657 fi
1658 if test X"$trnl" = X; then
1659         case "`echo foo|tr '\012' x 2>/dev/null`" in
1660         foox) trnl='\012' ;;
1661         esac
1662 fi
1663 if test X"$trnl" = X; then
1664         cat <<EOM >&2
1665
1666 $me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
1667
1668 EOM
1669         exit 1
1670 fi
1671
1672 : compute the number of columns on the terminal for proper question formatting
1673 case "$COLUMNS" in
1674 '') COLUMNS='80';;
1675 esac
1676
1677 : set up the echo used in my read
1678 myecho="case \"\$xxxm\" in
1679 '') echo $n \"\$rp $c\" >&4;;
1680 *) case \"\$rp\" in
1681         '') echo $n \"[\$xxxm] $c\";;
1682         *)
1683                 if test \`echo \"\$rp [\$xxxm]  \" | wc -c\` -ge $COLUMNS; then
1684                         echo \"\$rp\" >&4
1685                         echo $n \"[\$xxxm] $c\" >&4
1686                 else
1687                         echo $n \"\$rp [\$xxxm] $c\" >&4
1688                 fi
1689                 ;;
1690         esac;;
1691 esac"
1692
1693 : now set up to do reads with possible shell escape and default assignment
1694 cat <<EOSC >myread
1695 $startsh
1696 xxxm=\$dflt
1697 $myecho
1698 ans='!'
1699 case "\$fastread" in
1700 yes) case "\$dflt" in
1701         '') ;;
1702         *) ans='';
1703                 case "\$silent-\$rp" in
1704                 true-) ;;
1705                 *) echo " " >&4;;
1706                 esac;;
1707         esac;;
1708 *) case "\$silent" in
1709         true) case "\$rp" in
1710                 '') ans='';;
1711                 esac;;
1712         esac;;
1713 esac
1714 while expr "X\$ans" : "X!" >/dev/null; do
1715         read answ
1716         set x \$xxxm
1717         shift
1718         aok=''; eval "ans=\\"\$answ\\"" && aok=y
1719         case  "\$answ" in
1720         "!")
1721                 sh 1>&4
1722                 echo " "
1723                 $myecho
1724                 ;;
1725         !*)
1726                 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
1727                 shift
1728                 sh 1>&4 -c "\$*"
1729                 echo " "
1730                 $myecho
1731                 ;;
1732         "\$ans")
1733                 case "\$ans" in
1734                 \\&*)
1735                         set x \`expr "X\$ans" : "X&\(.*\)\$"\`
1736                         shift
1737                         case "\$1" in
1738                         -d)
1739                                 fastread=yes
1740                                 echo "(OK, I'll run with -d after this question.)" >&4
1741                                 ;;
1742                         -*)
1743                                 echo "*** Sorry, \$1 not supported yet." >&4
1744                                 ;;
1745                         esac
1746                         $myecho
1747                         ans=!
1748                         ;;
1749                 esac;;
1750         *)
1751                 case "\$aok" in
1752                 y)
1753                         echo "*** Substitution done -- please confirm."
1754                         xxxm="\$ans"
1755                         ans=\`echo $n "\$ans$c" | tr '$trnl' ' '\`
1756                         xxxm="\$ans"
1757                         ans=!
1758                         ;;
1759                 *)
1760                         echo "*** Error -- try again."
1761                         ans=!
1762                         ;;
1763                 esac
1764                 $myecho
1765                 ;;
1766         esac
1767         case "\$ans\$xxxm\$nostick" in
1768         '')
1769                 ans=!
1770                 $myecho
1771                 ;;
1772         esac
1773 done
1774 case "\$ans" in
1775 '') ans="\$xxxm";;
1776 esac
1777 EOSC
1778
1779 : create .config dir to save info across Configure sessions
1780 test -d ../.config || mkdir ../.config
1781 cat >../.config/README <<EOF
1782 This directory created by Configure to save information that should
1783 persist across sessions for $package.
1784
1785 You may safely delete it if you wish.
1786 EOF
1787
1788 xversion=`awk '/define[         ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
1789 case "$usedevel" in
1790 $define|true|[yY]*) ;;
1791 *) case "$xversion" in
1792    *[13579])
1793         cat >&4 <<EOH
1794 *** WHOA THERE!!! ***
1795
1796     This is an UNSTABLE DEVELOPMENT release.
1797     The version of this $package distribution is $xversion, that is, odd,
1798     (as opposed to even) and that signifies a development release.
1799     If you want a maintenance release, you want an even-numbered version.
1800
1801     Do ***NOT*** install this into production use.
1802     Data corruption and crashes are possible.
1803
1804     It is most seriously suggested that you do not continue any further
1805     unless you want to help in developing and debugging Perl.
1806
1807 EOH
1808         rp='Do you really want to continue?'
1809         dflt='n'
1810         . ./myread
1811         case "$ans" in
1812         [yY]) echo >&4 "Okay, continuing."
1813               usedevel="$define" ;;
1814         *) echo >&4 "Okay, bye."
1815            exit 1
1816            ;;
1817         esac
1818         ;;
1819     esac
1820     ;;
1821 esac
1822 case "$usedevel" in
1823 $define|true|[yY]*)
1824         case "$versiononly" in
1825         '') versiononly="$define" ;;
1826         esac
1827         case "$installusrbinperl" in
1828         '') installusrbinperl="$undef" ;;
1829         esac
1830         ;;
1831 esac
1832
1833 : general instructions
1834 needman=true
1835 firsttime=true
1836 user=`(logname) 2>/dev/null`
1837 case "$user" in
1838 '') user=`whoami 2>&1`;;
1839 esac
1840 if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
1841         firsttime=false
1842         echo " "
1843         rp='Would you like to see the instructions?'
1844         dflt=n
1845         . ./myread
1846         case "$ans" in
1847         [yY]*) ;;
1848         *) needman=false;;
1849         esac
1850 fi
1851 if $needman; then
1852         cat <<EOH
1853
1854 This installation shell script will examine your system and ask you questions
1855 to determine how the perl5 package should be installed. If you get
1856 stuck on a question, you may use a ! shell escape to start a subshell or
1857 execute a command.  Many of the questions will have default answers in square
1858 brackets; typing carriage return will give you the default.
1859
1860 On some of the questions which ask for file or directory names you are allowed
1861 to use the ~name construct to specify the login directory belonging to "name",
1862 even if you don't have a shell which knows about that.  Questions where this is
1863 allowed will be marked "(~name ok)".
1864
1865 EOH
1866         rp=''
1867         dflt='Type carriage return to continue'
1868         . ./myread
1869         cat <<'EOH'
1870
1871 The prompter used in this script allows you to use shell variables and
1872 backticks in your answers.  You may use $1, $2, etc...  to refer to the words
1873 in the default answer, as if the default line was a set of arguments given to a
1874 script shell.  This means you may also use $* to repeat the whole default line,
1875 so you do not have to re-type everything to add something to the default.
1876
1877 Everytime there is a substitution, you will have to confirm.  If there is an
1878 error (e.g. an unmatched backtick), the default answer will remain unchanged
1879 and you will be prompted again.
1880
1881 If you are in a hurry, you may run 'Configure -d'.  This will bypass nearly all
1882 the questions and use the computed defaults (or the previous answers if there
1883 was already a config.sh file). Type 'Configure -h' for a list of options.
1884 You may also start interactively and then answer '& -d' at any prompt to turn
1885 on the non-interactive behaviour for the remainder of the execution.
1886
1887 EOH
1888         . ./myread
1889         cat <<EOH
1890
1891 Much effort has been expended to ensure that this shell script will run on any
1892 Unix system.  If despite that it blows up on yours, your best bet is to edit
1893 Configure and run it again.  If you can't run Configure for some reason,
1894 you'll have to generate a config.sh file by hand.  Whatever problems you
1895 have, let me (perlbug@perl.org) know how I blew it.
1896
1897 This installation script affects things in two ways:
1898
1899 1) it may do direct variable substitutions on some of the files included
1900    in this kit.
1901 2) it builds a config.h file for inclusion in C programs.  You may edit
1902    any of these files as the need arises after running this script.
1903
1904 If you make a mistake on a question, there is no easy way to back up to it
1905 currently.  The easiest thing to do is to edit config.sh and rerun all the SH
1906 files.  Configure will offer to let you do this before it runs the SH files.
1907
1908 EOH
1909         dflt='Type carriage return to continue'
1910         . ./myread
1911         case "$firsttime" in
1912         true) echo $user >>../.config/instruct;;
1913         esac
1914 fi
1915
1916 : find out where common programs are
1917 echo " "
1918 echo "Locating common programs..." >&4
1919 cat <<EOSC >loc
1920 $startsh
1921 case \$# in
1922 0) exit 1;;
1923 esac
1924 thing=\$1
1925 shift
1926 dflt=\$1
1927 shift
1928 for dir in \$*; do
1929         case "\$thing" in
1930         .)
1931         if test -d \$dir/\$thing; then
1932                 echo \$dir
1933                 exit 0
1934         fi
1935         ;;
1936         *)
1937         for thisthing in \$dir/\$thing; do
1938                 : just loop through to pick last item
1939         done
1940         if test -f \$thisthing; then
1941                 echo \$thisthing
1942                 exit 0
1943         elif test -f \$dir/\$thing.exe; then
1944                 if test -n "$DJGPP"; then
1945                         echo \$dir/\$thing.exe
1946                 else
1947                         : on Eunice apparently
1948                         echo \$dir/\$thing
1949                 fi
1950                 exit 0
1951         fi
1952         ;;
1953         esac
1954 done
1955 echo \$dflt
1956 exit 1
1957 EOSC
1958 chmod +x loc
1959 $eunicefix loc
1960 loclist="
1961 awk
1962 cat
1963 comm
1964 cp
1965 echo
1966 expr
1967 grep
1968 ls
1969 make
1970 mkdir
1971 rm
1972 sed
1973 sort
1974 touch
1975 tr
1976 uniq
1977 "
1978 trylist="
1979 Mcc
1980 ar
1981 bison
1982 byacc
1983 cpp
1984 csh
1985 date
1986 egrep
1987 gzip
1988 less
1989 ln
1990 more
1991 nm
1992 nroff
1993 pg
1994 test
1995 uname
1996 zip
1997 "
1998 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1999 pth="$pth /lib /usr/lib"
2000 for file in $loclist; do
2001         eval xxx=\$$file
2002         case "$xxx" in
2003         /*|?:[\\/]*)
2004                 if test -f "$xxx"; then
2005                         : ok
2006                 else
2007                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2008                         xxx=`./loc $file $file $pth`
2009                 fi
2010                 ;;
2011         '') xxx=`./loc $file $file $pth`;;
2012         *) xxx=`./loc $xxx $xxx $pth`;;
2013         esac
2014         eval $file=$xxx
2015         eval _$file=$xxx
2016         case "$xxx" in
2017         /*)
2018                 echo $file is in $xxx.
2019                 ;;
2020         ?:[\\/]*)
2021                 echo $file is in $xxx.
2022                 ;;
2023         *)
2024                 echo "I don't know where '$file' is, and my life depends on it." >&4
2025                 echo "Go find a public domain implementation or fix your PATH setting!" >&4
2026                 exit 1
2027                 ;;
2028         esac
2029 done
2030 echo " "
2031 echo "Don't worry if any of the following aren't found..."
2032 say=offhand
2033 for file in $trylist; do
2034         eval xxx=\$$file
2035         case "$xxx" in
2036         /*|?:[\\/]*)
2037                 if test -f "$xxx"; then
2038                         : ok
2039                 else
2040                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2041                         xxx=`./loc $file $file $pth`
2042                 fi
2043                 ;;
2044         '') xxx=`./loc $file $file $pth`;;
2045         *) xxx=`./loc $xxx $xxx $pth`;;
2046         esac
2047         eval $file=$xxx
2048         eval _$file=$xxx
2049         case "$xxx" in
2050         /*)
2051                 echo $file is in $xxx.
2052                 ;;
2053         ?:[\\/]*)
2054                 echo $file is in $xxx.
2055                 ;;
2056         *)
2057                 echo "I don't see $file out there, $say."
2058                 say=either
2059                 ;;
2060         esac
2061 done
2062 case "$egrep" in
2063 egrep)
2064         echo "Substituting grep for egrep."
2065         egrep=$grep
2066         ;;
2067 esac
2068 case "$ln" in
2069 ln)
2070         echo "Substituting cp for ln."
2071         ln=$cp
2072         ;;
2073 esac
2074 case "$test" in
2075 test)
2076         echo "Hopefully test is built into your sh."
2077         ;;
2078 *)
2079         if `sh -c "PATH= test true" >/dev/null 2>&1`; then
2080                 echo "Using the test built into your sh."
2081                 test=test
2082                 _test=test
2083         fi
2084         ;;
2085 esac
2086 case "$echo" in
2087 echo)
2088         echo "Hopefully echo is built into your sh."
2089         ;;
2090 '') ;;
2091 *)
2092         echo " "
2093 echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
2094         $echo $n "hi there$c" >foo1
2095         echo $n "hi there$c" >foo2
2096         if cmp foo1 foo2 >/dev/null 2>&1; then
2097                 echo "They are compatible.  In fact, they may be identical."
2098         else
2099                 case "$n" in
2100                 '-n') n='' c='\c';;
2101                 *) n='-n' c='';;
2102                 esac
2103                 cat <<FOO
2104 They are not compatible!  You are probably running ksh on a non-USG system.
2105 I'll have to use $echo instead of the builtin, since Bourne shell doesn't
2106 have echo built in and we may have to run some Bourne shell scripts.  That
2107 means I'll have to use '$n$c' to suppress newlines now.  Life is ridiculous.
2108
2109 FOO
2110                 $echo $n "The star should be here-->$c"
2111                 $echo "*"
2112         fi
2113         $rm -f foo1 foo2
2114         ;;
2115 esac
2116
2117 cat <<EOS >checkcc
2118 $startsh
2119 EOS
2120 cat <<'EOSC' >>checkcc
2121 case "$cc" in
2122 '') ;;
2123 *)  $rm -f try try.*
2124     $cat >try.c <<EOM
2125 int main(int argc, char *argv[]) {
2126   return 0;
2127 }
2128 EOM
2129     if $cc -o try $ccflags try.c; then
2130        :
2131     else
2132         echo "Uh-oh, the C compiler '$cc' doesn't seem to be working." >&4
2133         despair=yes
2134         trygcc=yes
2135         case "$cc" in
2136         *gcc*) trygcc=no ;;
2137         esac
2138         case "`$cc -v -c try.c 2>&1`" in
2139         *gcc*) trygcc=no ;;
2140         esac
2141         if $test X"$trygcc" = Xyes; then
2142             if gcc -o try -c try.c; then
2143                 echo " "
2144                 echo "You seem to have a working gcc, though." >&4
2145                 rp="Would you like to use it?"
2146                 dflt=y
2147                 if $test -f myread; then
2148                     . ./myread
2149                 else
2150                     if $test -f UU/myread; then
2151                         . ./UU/myread
2152                     else
2153                         echo "Cannot find myread, sorry.  Aborting." >&2
2154                         exit 1
2155                     fi
2156                 fi  
2157                 case "$ans" in
2158                 [yY]*) cc=gcc; ccname=gcc; ccflags=''; despair=no ;;
2159                 esac
2160             fi
2161         fi
2162         if $test X"$despair" = Xyes; then
2163             $cat >&4 <<EOM
2164 You need to find a working C compiler.
2165 Either (purchase and) install the C compiler supplied by your OS vendor,
2166 or for a free C compiler try http://gcc.gnu.org/
2167 I cannot continue any further, aborting.
2168 EOM
2169             exit 1
2170         fi
2171     fi
2172     $rm -f try try.*
2173     ;;
2174 esac
2175 EOSC
2176
2177 : determine whether symbolic links are supported
2178 echo " "
2179 $touch blurfl
2180 if $ln -s blurfl sym > /dev/null 2>&1 ; then
2181         echo "Symbolic links are supported." >&4
2182         lns="$ln -s"
2183 else
2184         echo "Symbolic links are NOT supported." >&4
2185         lns="$ln"
2186 fi
2187 $rm -f blurfl sym
2188
2189 : determine whether symbolic links are supported
2190 echo " "
2191 case "$lns" in
2192 *"ln -s")
2193         echo "Checking how to test for symbolic links..." >&4
2194         $lns blurfl sym
2195         if $test "X$issymlink" = X; then
2196                 sh -c "PATH= test -h sym" >/dev/null 2>&1
2197                 if test $? = 0; then
2198                         issymlink="test -h"
2199                 fi              
2200         fi
2201         if $test "X$issymlink" = X; then
2202                 if  $test -h >/dev/null 2>&1; then
2203                         issymlink="$test -h"
2204                         echo "Your builtin 'test -h' may be broken, I'm using external '$test -h'." >&4
2205                 fi              
2206         fi
2207         if $test "X$issymlink" = X; then
2208                 if $test -L sym 2>/dev/null; then
2209                         issymlink="$test -L"
2210                 fi
2211         fi
2212         if $test "X$issymlink" != X; then
2213                 echo "You can test for symbolic links with '$issymlink'." >&4
2214         else
2215                 echo "I do not know how you can test for symbolic links." >&4
2216         fi
2217         $rm -f blurfl sym
2218         ;;
2219 *)      echo "No symbolic links, so not testing for their testing..." >&4
2220         ;;
2221 esac
2222 echo " "
2223
2224
2225 case "$mksymlinks" in
2226 $define|true|[yY]*)
2227         case "$src" in
2228         ''|'.') echo "Cannot create symlinks in the original directory." >&4
2229                 exit 1
2230                 ;;
2231         *)      case "$lns:$issymlink" in
2232                 *"ln -s:"*"test -"?)
2233                         echo "Creating the symbolic links..." >&4
2234                         echo "(First creating the subdirectories...)" >&4
2235                         cd ..
2236                         awk '{print $1}' $src/MANIFEST | grep / | sed 's:/[^/]*$::' | sort -u | while true; do
2237                                 read directory
2238                                 test -z "$directory" && break
2239                                 mkdir -p $directory
2240                         done
2241                         # Sanity check 1.
2242                         if test ! -d t/base; then
2243                                 echo "Failed to create the subdirectories.  Aborting." >&4
2244                                 exit 1
2245                         fi
2246                         echo "(Then creating the symlinks...)" >&4
2247                         awk '{print $1}' $src/MANIFEST | while true; do
2248                                 read filename
2249                                 test -z "$filename" && break
2250                                 if test -f $filename; then
2251                                         if $issymlink $filename; then
2252                                                 rm -f $filename
2253                                         fi
2254                                 fi
2255                                 if test -f $filename; then
2256                                         echo "$filename already exists, not symlinking."
2257                                 else
2258                                         ln -s $src/$filename $filename
2259                                 fi
2260                         done
2261                         # Sanity check 2.
2262                         if test ! -f t/base/commonsense.t; then
2263                                 echo "Failed to create the symlinks.  Aborting." >&4
2264                                 exit 1
2265                         fi
2266                         cd UU
2267                         ;;
2268                 *)      echo "(I cannot figure out how to do symbolic links, ignoring mksymlinks)." >&4
2269                         ;;
2270                 esac
2271                 ;;
2272         esac
2273         ;;
2274 esac
2275
2276 : see whether [:lower:] and [:upper:] are supported character classes
2277 echo " "
2278 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
2279 ABYZ)
2280         echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
2281         up='[:upper:]'
2282         low='[:lower:]'
2283         ;;
2284 *)      # There is a discontinuity in EBCDIC between 'I' and 'J'
2285         # (0xc9 and 0xd1), therefore that is a nice testing point.
2286         if test "X$up" = X -o "X$low" = X; then
2287             case "`echo IJ | $tr '[I-J]' '[i-j]' 2>/dev/null`" in
2288             ij) up='[A-Z]'
2289                 low='[a-z]'
2290                 ;;
2291             esac
2292         fi
2293         if test "X$up" = X -o "X$low" = X; then
2294             case "`echo IJ | $tr I-J i-j 2>/dev/null`" in
2295             ij) up='A-Z'
2296                 low='a-z'
2297                 ;;
2298             esac
2299         fi
2300         if test "X$up" = X -o "X$low" = X; then
2301             case "`echo IJ | od -x 2>/dev/null`" in
2302             *C9D1*|*c9d1*)
2303                 echo "Hey, this might be EBCDIC." >&4
2304                 if test "X$up" = X -o "X$low" = X; then
2305                     case "`echo IJ | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
2306                     ij) up='[A-IJ-RS-Z]'
2307                         low='[a-ij-rs-z]'
2308                         ;;
2309                     esac
2310                 fi
2311                 if test "X$up" = X -o "X$low" = X; then
2312                     case "`echo IJ | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
2313                     ij) up='A-IJ-RS-Z'
2314                         low='a-ij-rs-z'
2315                         ;;
2316                     esac
2317                 fi
2318                 ;;
2319             esac
2320         fi
2321 esac
2322 case "`echo IJ | $tr \"$up\" \"$low\" 2>/dev/null`" in
2323 ij)
2324     echo "Using $up and $low to convert case." >&4
2325     ;;
2326 *)
2327     echo "I don't know how to translate letters from upper to lower case." >&4
2328     echo "Your tr is not acting any way I know of." >&4
2329     exit 1
2330     ;;
2331 esac
2332 : set up the translation script tr, must be called with ./tr of course
2333 cat >tr <<EOSC
2334 $startsh
2335 case "\$1\$2" in
2336 '[A-Z][a-z]') exec $tr '$up' '$low';;
2337 '[a-z][A-Z]') exec $tr '$low' '$up';;
2338 esac
2339 exec $tr "\$@"
2340 EOSC
2341 chmod +x tr
2342 $eunicefix tr
2343
2344 : Try to determine whether config.sh was made on this system
2345 case "$config_sh" in
2346 '')
2347 myuname=`$uname -a 2>/dev/null`
2348 $test -z "$myuname" && myuname=`hostname 2>/dev/null`
2349 # tr '[A-Z]' '[a-z]' would not work in EBCDIC
2350 # because the A-Z/a-z are not consecutive.
2351 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
2352         ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
2353 newmyuname="$myuname"
2354 dflt=n
2355 case "$knowitall" in
2356 '')
2357         if test -f ../config.sh; then
2358                 if $contains myuname= ../config.sh >/dev/null 2>&1; then
2359                         eval "`grep myuname= ../config.sh`"
2360                 fi
2361                 if test "X$myuname" = "X$newmyuname"; then
2362                         dflt=y
2363                 fi
2364         fi
2365         ;;
2366 *) dflt=y;;
2367 esac
2368
2369 : Get old answers from old config file if Configure was run on the
2370 : same system, otherwise use the hints.
2371 hint=default
2372 cd ..
2373 if test -f config.sh; then
2374         echo " "
2375         rp="I see a config.sh file.  Shall I use it to set the defaults?"
2376         . UU/myread
2377         case "$ans" in
2378         n*|N*) echo "OK, I'll ignore it."
2379                 mv config.sh config.sh.old
2380                 myuname="$newmyuname"
2381                 ;;
2382         *)  echo "Fetching default answers from your old config.sh file..." >&4
2383                 tmp_n="$n"
2384                 tmp_c="$c"
2385                 tmp_sh="$sh"
2386                 . ./config.sh
2387                 cp config.sh UU
2388                 n="$tmp_n"
2389                 c="$tmp_c"
2390                 : Older versions did not always set $sh.  Catch re-use of such
2391                 : an old config.sh.
2392                 case "$sh" in
2393                 '') sh="$tmp_sh" ;;
2394                 esac
2395                 hint=previous
2396                 ;;
2397         esac
2398 fi
2399 . ./UU/checkcc
2400 if test ! -f config.sh; then
2401         $cat <<EOM
2402
2403 First time through, eh?  I have some defaults handy for some systems
2404 that need some extra help getting the Configure answers right:
2405
2406 EOM
2407         (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/   /g' >&4
2408         dflt=''
2409         : Half the following guesses are probably wrong... If you have better
2410         : tests or hints, please send them to perlbug@perl.org
2411         : The metaconfig authors would also appreciate a copy...
2412         $test -f /irix && osname=irix
2413         $test -f /xenix && osname=sco_xenix
2414         $test -f /dynix && osname=dynix
2415         $test -f /dnix && osname=dnix
2416         $test -f /lynx.os && osname=lynxos
2417         $test -f /unicos && osname=unicos && osvers=`$uname -r`
2418         $test -f /unicosmk && osname=unicosmk && osvers=`$uname -r`
2419         $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
2420         $test -f /bin/mips && /bin/mips && osname=mips
2421         $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
2422                 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
2423         $test -d /usr/apollo/bin && osname=apollo
2424         $test -f /etc/saf/_sactab && osname=svr4
2425         $test -d /usr/include/minix && osname=minix
2426         if $test -d /MachTen -o -d /MachTen_Folder; then
2427                 osname=machten
2428                 if $test -x /sbin/version; then
2429                         osvers=`/sbin/version | $awk '{print $2}' |
2430                         $sed -e 's/[A-Za-z]$//'`
2431                 elif $test -x /usr/etc/version; then
2432                         osvers=`/usr/etc/version | $awk '{print $2}' |
2433                         $sed -e 's/[A-Za-z]$//'`
2434                 else
2435                         osvers="$2.$3"
2436                 fi
2437         fi
2438
2439         $test -f /sys/posix.dll &&
2440                 $test -f /usr/bin/what &&
2441                 set X `/usr/bin/what /sys/posix.dll` &&
2442                 $test "$3" = UWIN &&
2443                 osname=uwin &&
2444                 osvers="$5"
2445
2446         if $test -f $uname; then
2447                 set X $myuname
2448                 shift
2449
2450                 case "$5" in
2451                 fps*) osname=fps ;;
2452                 mips*)
2453                         case "$4" in
2454                         umips) osname=umips ;;
2455                         *) osname=mips ;;
2456                         esac;;
2457                 [23]100) osname=mips ;;
2458                 next*) osname=next ;;
2459                 i386*)
2460                         tmp=`/bin/uname -X 2>/dev/null|awk '/3\.2v[45]/{ print $(NF) }'`
2461                         if $test "$tmp" != "" -a "$3" = "3.2" -a -f '/etc/systemid'; then
2462                                 osname='sco'
2463                                 osvers=$tmp
2464                         elif $test -f /etc/kconfig; then
2465                                 osname=isc
2466                                 if test "$lns" = "$ln -s"; then
2467                                         osvers=4
2468                                 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
2469                                         osvers=3
2470                                 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
2471                                         osvers=2
2472                                 fi
2473                         fi
2474                         tmp=''
2475                         ;;
2476                 pc*)
2477                         if test -n "$DJGPP"; then
2478                                 osname=dos
2479                                 osvers=djgpp
2480                         fi
2481                         ;;
2482                 esac
2483
2484                 case "$1" in
2485                 aix) osname=aix
2486                         tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
2487                         case "$tmp" in
2488                         'not found') osvers="$4"."$3" ;;
2489                         '<3240'|'<>3240') osvers=3.2.0 ;;
2490                         '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
2491                         '=3250'|'>3250') osvers=3.2.5 ;;
2492                         *) osvers=$tmp;;
2493                         esac
2494                         ;;
2495                 bsd386) osname=bsd386
2496                         osvers=`$uname -r`
2497                         ;;
2498                 cygwin*) osname=cygwin
2499                         osvers="$3"
2500                         ;;
2501                 *dc.osx) osname=dcosx
2502                         osvers="$3"
2503                         ;;
2504                 dnix) osname=dnix
2505                         osvers="$3"
2506                         ;;
2507                 domainos) osname=apollo
2508                         osvers="$3"
2509                         ;;
2510                 dgux) osname=dgux 
2511                         osvers="$3"
2512                         ;;
2513                 dynixptx*) osname=dynixptx
2514                         osvers=`echo "$4"|sed 's/^v//'`
2515                         ;;
2516                 freebsd) osname=freebsd 
2517                         osvers="$3" ;;
2518                 genix) osname=genix ;;
2519                 hp*) osname=hpux 
2520                         osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
2521                         ;;
2522                 irix*) osname=irix
2523                         case "$3" in
2524                         4*) osvers=4 ;;
2525                         5*) osvers=5 ;;
2526                         *)      osvers="$3" ;;
2527                         esac
2528                         ;;
2529                 linux) osname=linux
2530                         case "$3" in
2531                         *)      osvers="$3" ;;
2532                         esac
2533                         ;;
2534                 MiNT) osname=mint
2535                         ;;
2536                 netbsd*) osname=netbsd
2537                         osvers="$3"
2538                         ;;
2539                 news-os) osvers="$3"
2540                         case "$3" in
2541                         4*) osname=newsos4 ;;
2542                         *) osname=newsos ;;
2543                         esac
2544                         ;;
2545                 next*) osname=next ;;
2546                 nonstop-ux) osname=nonstopux ;;
2547                 POSIX-BC | posix-bc ) osname=posix-bc
2548                         osvers="$3"
2549                         ;;
2550                 powerux | power_ux | powermax_os | powermaxos | \
2551                 powerunix | power_unix) osname=powerux
2552                         osvers="$3"
2553                         ;;
2554                 qnx) osname=qnx
2555                         osvers="$4"
2556                         ;;
2557                 solaris) osname=solaris
2558                         case "$3" in
2559                         5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2560                         *)      osvers="$3" ;;
2561                         esac
2562                         ;;
2563                 sunos) osname=sunos
2564                         case "$3" in
2565                         5*) osname=solaris
2566                                 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2567                         *)      osvers="$3" ;;
2568                         esac
2569                         ;;
2570                 titanos) osname=titanos
2571                         case "$3" in
2572                         1*) osvers=1 ;;
2573                         2*) osvers=2 ;;
2574                         3*) osvers=3 ;;
2575                         4*) osvers=4 ;;
2576                         *)      osvers="$3" ;;
2577                         esac
2578                         ;;
2579                 ultrix) osname=ultrix
2580                         osvers="$3"
2581                         ;;
2582                 osf1|mls+)      case "$5" in
2583                                 alpha)
2584                                         osname=dec_osf
2585                                         osvers=`sizer -v | awk '{print $3}' |  tr '[A-Z]' '[a-z]' | sed 's/^[xvt]//'`
2586                                         case "$osvers" in
2587                                         [1-9].[0-9]*) ;;
2588                                         *) osvers=`echo "$3" | sed 's/^[xvt]//'` ;;
2589                                         esac
2590                                         ;;
2591                         hp*)    osname=hp_osf1  ;;
2592                         mips)   osname=mips_osf1 ;;
2593                         esac
2594                         ;;
2595                 unixware) osname=svr5
2596                         osvers="$4"
2597                         ;;
2598                 uts) osname=uts
2599                         osvers="$3"
2600                         ;;
2601                 $2) case "$osname" in
2602                         *isc*) ;;
2603                         *freebsd*) ;;
2604                         svr*)
2605                                 : svr4.x or possibly later
2606                                 case "svr$3" in 
2607                                 ${osname}*)
2608                                         osname=svr$3
2609                                         osvers=$4
2610                                         ;;
2611                                 esac
2612                                 case "$osname" in
2613                                 svr4.0)
2614                                         : Check for ESIX
2615                                         if test -f /stand/boot ; then
2616                                                 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
2617                                                 if test -n "$INITPROG" -a -f "$INITPROG"; then
2618                         isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
2619                                                         if test -n "$isesix"; then
2620                                                                 osname=esix4
2621                                                         fi
2622                                                 fi
2623                                         fi
2624                                         ;;
2625                                 esac
2626                                 ;;
2627                         *)      if test -f /etc/systemid; then
2628                                         osname=sco
2629                                         set `echo $3 | $sed 's/\./ /g'` $4
2630                                         if $test -f $src/hints/sco_$1_$2_$3.sh; then
2631                                                 osvers=$1.$2.$3
2632                                         elif $test -f $src/hints/sco_$1_$2.sh; then
2633                                                 osvers=$1.$2
2634                                         elif $test -f $src/hints/sco_$1.sh; then
2635                                                 osvers=$1
2636                                         fi
2637                                 else
2638                                         case "$osname" in
2639                                         '') : Still unknown.  Probably a generic Sys V.
2640                                                 osname="sysv"
2641                                                 osvers="$3"
2642                                                 ;;
2643                                         esac
2644                                 fi
2645                                 ;;
2646                         esac
2647                         ;;
2648                 *)      case "$osname" in
2649                         '') : Still unknown.  Probably a generic BSD.
2650                                 osname="$1"
2651                                 osvers="$3"
2652                                 ;;
2653                         esac
2654                         ;;
2655                 esac
2656         else
2657                 if test -f /vmunix -a -f $src/hints/news_os.sh; then
2658                         (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
2659                         if $contains news-os UU/kernel.what >/dev/null 2>&1; then
2660                                 osname=news_os
2661                         fi
2662                         $rm -f UU/kernel.what
2663                 elif test -d c:/.; then
2664                         set X $myuname
2665                         osname=os2
2666                         osvers="$5"
2667                 fi
2668         fi
2669         
2670         : Now look for a hint file osname_osvers, unless one has been
2671         : specified already.
2672         case "$hintfile" in
2673         ''|' ')
2674                 file=`echo "${osname}_${osvers}" | $sed -e 's%\.%_%g' -e 's%_$%%'`
2675                 : Also try without trailing minor version numbers.
2676                 xfile=`echo $file | $sed -e 's%_[^_]*$%%'`
2677                 xxfile=`echo $xfile | $sed -e 's%_[^_]*$%%'`
2678                 xxxfile=`echo $xxfile | $sed -e 's%_[^_]*$%%'`
2679                 xxxxfile=`echo $xxxfile | $sed -e 's%_[^_]*$%%'`
2680                 case "$file" in
2681                 '') dflt=none ;;
2682                 *)  case "$osvers" in
2683                         '') dflt=$file
2684                                 ;;
2685                         *)  if $test -f $src/hints/$file.sh ; then
2686                                         dflt=$file
2687                                 elif $test -f $src/hints/$xfile.sh ; then
2688                                         dflt=$xfile
2689                                 elif $test -f $src/hints/$xxfile.sh ; then
2690                                         dflt=$xxfile
2691                                 elif $test -f $src/hints/$xxxfile.sh ; then
2692                                         dflt=$xxxfile
2693                                 elif $test -f $src/hints/$xxxxfile.sh ; then
2694                                         dflt=$xxxxfile
2695                                 elif $test -f "$src/hints/${osname}.sh" ; then
2696                                         dflt="${osname}"
2697                                 else
2698                                         dflt=none
2699                                 fi
2700                                 ;;
2701                         esac
2702                         ;;
2703                 esac
2704                 if $test -f Policy.sh ; then
2705                         case "$dflt" in
2706                         *Policy*) ;;
2707                         none) dflt="Policy" ;;
2708                         *) dflt="Policy $dflt" ;;
2709                         esac
2710                 fi
2711                 ;;
2712         *)
2713                 dflt=`echo $hintfile | $sed 's/\.sh$//'`
2714                 ;;
2715         esac
2716
2717         if $test -f Policy.sh ; then
2718                 $cat <<EOM
2719
2720 There's also a Policy hint file available, which should make the
2721 site-specific (policy) questions easier to answer.
2722 EOM
2723
2724         fi
2725
2726         $cat <<EOM
2727
2728 You may give one or more space-separated answers, or "none" if appropriate.
2729 A well-behaved OS will have no hints, so answering "none" or just "Policy"
2730 is a good thing.  DO NOT give a wrong version or a wrong OS.
2731
2732 EOM
2733
2734         rp="Which of these apply, if any?"
2735         . UU/myread
2736         tans=$ans
2737         for file in $tans; do
2738                 if $test X$file = XPolicy -a -f Policy.sh; then
2739                         . Policy.sh
2740                         $cat Policy.sh >> UU/config.sh
2741                 elif $test -f $src/hints/$file.sh; then
2742                         . $src/hints/$file.sh
2743                         $cat $src/hints/$file.sh >> UU/config.sh
2744                 elif $test X$tans = X -o X$tans = Xnone ; then
2745                         : nothing
2746                 else
2747                         : Give one chance to correct a possible typo.
2748                         echo "$file.sh does not exist"
2749                         dflt=$file
2750                         rp="hint to use instead?"
2751                         . UU/myread
2752                         for file in $ans; do
2753                                 if $test -f "$src/hints/$file.sh"; then
2754                                         . $src/hints/$file.sh
2755                                         $cat $src/hints/$file.sh >> UU/config.sh
2756                                 elif $test X$ans = X -o X$ans = Xnone ; then
2757                                         : nothing
2758                                 else
2759                                         echo "$file.sh does not exist -- ignored."
2760                                 fi
2761                         done
2762                 fi
2763         done
2764
2765         hint=recommended
2766         : Remember our hint file for later.
2767         if $test -f "$src/hints/$file.sh" ; then
2768                 hintfile="$file"
2769         else
2770                 hintfile=''
2771         fi
2772 fi
2773 cd UU
2774 ;;
2775 *)
2776         echo " "
2777         echo "Fetching default answers from $config_sh..." >&4
2778         tmp_n="$n"
2779         tmp_c="$c"
2780         cd ..
2781         cp $config_sh config.sh 2>/dev/null
2782         chmod +w config.sh
2783         . ./config.sh
2784         cd UU
2785         cp ../config.sh .
2786         n="$tmp_n"
2787         c="$tmp_c"
2788         hint=previous
2789         ;;
2790 esac
2791 test "$override" && . ./optdef.sh
2792
2793 : Restore computed paths
2794 for file in $loclist $trylist; do
2795         eval $file="\$_$file"
2796 done
2797
2798 cat << EOM
2799
2800 Configure uses the operating system name and version to set some defaults.
2801 The default value is probably right if the name rings a bell. Otherwise,
2802 since spelling matters for me, either accept the default or answer "none"
2803 to leave it blank.
2804
2805 EOM
2806 case "$osname" in
2807         ''|' ')
2808                 case "$hintfile" in
2809                 ''|' '|none) dflt=none ;;
2810                 *)  dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
2811                 esac
2812                 ;;
2813         *) dflt="$osname" ;;
2814 esac
2815 rp="Operating system name?"
2816 . ./myread
2817 case "$ans" in
2818 none)  osname='' ;;
2819 *) osname=`echo "$ans" | $sed -e 's/[   ][      ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
2820 esac
2821 echo " "
2822 case "$osvers" in
2823         ''|' ')
2824                 case "$hintfile" in
2825                 ''|' '|none) dflt=none ;;
2826                 *)      dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
2827                         dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
2828                         case "$dflt" in
2829                         ''|' ') dflt=none ;;
2830                         esac
2831                         ;;
2832                 esac
2833                 ;;
2834         *) dflt="$osvers" ;;
2835 esac
2836 rp="Operating system version?"
2837 . ./myread
2838 case "$ans" in
2839 none)  osvers='' ;;
2840 *) osvers="$ans" ;;
2841 esac
2842
2843
2844 . ./posthint.sh
2845
2846 : who configured the system
2847 cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
2848 cf_by=`(logname) 2>/dev/null`
2849 case "$cf_by" in
2850 "")
2851         cf_by=`(whoami) 2>/dev/null`
2852         case "$cf_by" in
2853         "") cf_by=unknown ;;
2854         esac ;;
2855 esac
2856
2857 : set up the script used to warn in case of inconsistency
2858 cat <<EOS >whoa
2859 $startsh
2860 EOS
2861 cat <<'EOSC' >>whoa
2862 dflt=y
2863 echo " "
2864 echo "*** WHOA THERE!!! ***" >&4
2865 echo "    The $hint value for \$$var on this machine was \"$was\"!" >&4
2866 rp="    Keep the $hint value?"
2867 . ./myread
2868 case "$ans" in
2869 y) td=$was; tu=$was;;
2870 esac
2871 EOSC
2872
2873 : function used to set $1 to $val
2874 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
2875 case "$val$was" in
2876 $define$undef) . ./whoa; eval "$var=\$td";;
2877 $undef$define) . ./whoa; eval "$var=\$tu";;
2878 *) eval "$var=$val";;
2879 esac'
2880
2881 case "$usethreads" in
2882 $define|true|[yY]*)     dflt='y';;
2883 *) dflt='n';;
2884 esac
2885 cat <<EOM
2886
2887 Perl can be built to take advantage of threads on some systems.
2888 To do so, Configure can be run with -Dusethreads.
2889
2890 Note that threading is a highly experimental feature, and
2891 some known race conditions still remain.  If you choose to try
2892 it, be very sure to not actually deploy it for production
2893 purposes.  README.threads has more details, and is required
2894 reading if you enable threads.
2895
2896 If this doesn't make any sense to you, just accept the default '$dflt'.
2897 EOM
2898 rp='Build a threading Perl?'
2899 . ./myread
2900 case "$ans" in
2901 y|Y)    val="$define" ;;
2902 *)      val="$undef" ;;
2903 esac
2904 set usethreads
2905 eval $setvar
2906
2907 case "$usethreads" in
2908 $define)
2909         $cat <<EOM
2910
2911 As of 5.5.640, Perl has two different internal threading implementations,
2912 the 5.005 version (5005threads) and an interpreter-based version
2913 (ithreads) that has one interpreter per thread.  Both are very 
2914 experimental.  This arrangement exists to help developers work out
2915 which one is better.
2916
2917 If you're a casual user, you probably don't want interpreter-threads
2918 at this time.  There doesn't yet exist a way to create threads from
2919 within Perl in this model, i.e., "use Thread;" will NOT work.
2920 EOM
2921         : Default to ithreads unless overridden on command line or with
2922         : old config.sh
2923         dflt='y'
2924         case "$use5005threads" in
2925                 $define|true|[yY]*) dflt='n';;
2926         esac
2927         case "$useithreads" in
2928                 $undef|false|[nN]*) dflt='n';;
2929         esac
2930         rp='Use interpreter-based ithreads?'
2931         . ./myread
2932         case "$ans" in
2933         y|Y)    val="$define" ;;
2934         *)      val="$undef" ;;
2935         esac
2936         set useithreads
2937         eval $setvar
2938         : Now set use5005threads to the opposite value.
2939         case "$useithreads" in
2940         $define) val="$undef" ;;
2941         *) val="$define" ;;
2942         esac
2943         set use5005threads
2944         eval $setvar
2945         ;;
2946 *)
2947         useithreads="$undef"
2948         use5005threads="$undef"
2949         ;;
2950 esac
2951
2952 case "$useithreads$use5005threads" in
2953 "$define$define")
2954         $cat >&4 <<EOM
2955
2956 You cannot have both the ithreads and the 5.005 threads enabled
2957 at the same time.  Disabling the 5.005 threads since they are
2958 much less stable than the ithreads.
2959
2960 EOM
2961         use5005threads="$undef"
2962         ;;
2963 esac
2964
2965 case "$d_oldpthreads" in
2966 '')     : Configure tests would be welcome here.  For now, assume undef.
2967         val="$undef" ;;
2968 *)      val="$d_oldpthreads" ;;
2969 esac
2970 set d_oldpthreads
2971 eval $setvar
2972
2973
2974 case "$usethreads" in
2975 "$define"|true|[yY]*)
2976 : Look for a hint-file generated 'call-back-unit'.  If the
2977 : user has specified that a threading perl is to be built,
2978 : we may need to set or change some other defaults.
2979         if $test -f usethreads.cbu; then
2980                 echo "Your platform has some specific hints for threaded builds, using them..."
2981                 . ./usethreads.cbu
2982         else
2983                 $cat <<EOM
2984 (Your platform doesn't have any specific hints for threaded builds.
2985  Assuming POSIX threads, then.)
2986 EOM
2987         fi
2988         ;;
2989 esac
2990
2991 cat <<EOM
2992
2993 Perl can be built so that multiple Perl interpreters can coexist
2994 within the same Perl executable.
2995 EOM
2996
2997 case "$useithreads" in
2998 $define)
2999         cat <<EOM
3000 This multiple interpreter support is required for interpreter-based threads.
3001 EOM
3002         val="$define"
3003         ;;
3004 *)      case "$usemultiplicity" in
3005         $define|true|[yY]*)     dflt='y';;
3006         *) dflt='n';;
3007         esac
3008         echo " "
3009         echo "If this doesn't make any sense to you, just accept the default '$dflt'."
3010         rp='Build Perl for multiplicity?'
3011         . ./myread
3012         case "$ans" in
3013         y|Y)    val="$define" ;;
3014         *)      val="$undef" ;;
3015         esac
3016         ;;
3017 esac
3018 set usemultiplicity
3019 eval $setvar
3020
3021 : make some quick guesses about what we are up against
3022 echo " "
3023 $echo $n "Hmm...  $c"
3024 echo exit 1 >bsd
3025 echo exit 1 >usg
3026 echo exit 1 >v7
3027 echo exit 1 >osf1
3028 echo exit 1 >eunice
3029 echo exit 1 >xenix
3030 echo exit 1 >venix
3031 echo exit 1 >os2
3032 d_bsd="$undef"
3033 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
3034 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
3035 then
3036         echo "Looks kind of like an OSF/1 system, but we'll see..."
3037         echo exit 0 >osf1
3038 elif test `echo abc | $tr a-z A-Z` = Abc ; then
3039         xxx=`./loc addbib blurfl $pth`
3040         if $test -f $xxx; then
3041         echo "Looks kind of like a USG system with BSD features, but we'll see..."
3042                 echo exit 0 >bsd
3043                 echo exit 0 >usg
3044         else
3045                 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
3046                         echo "Looks kind of like an extended USG system, but we'll see..."
3047                 else
3048                         echo "Looks kind of like a USG system, but we'll see..."
3049                 fi
3050                 echo exit 0 >usg
3051         fi
3052 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
3053         echo "Looks kind of like a BSD system, but we'll see..."
3054         d_bsd="$define"
3055         echo exit 0 >bsd
3056 else
3057         echo "Looks kind of like a Version 7 system, but we'll see..."
3058         echo exit 0 >v7
3059 fi
3060 case "$eunicefix" in
3061 *unixtovms*)
3062         $cat <<'EOI'
3063 There is, however, a strange, musty smell in the air that reminds me of
3064 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
3065 EOI
3066         echo exit 0 >eunice
3067         d_eunice="$define"
3068 : it so happens the Eunice I know will not run shell scripts in Unix format
3069         ;;
3070 *)
3071         echo " "
3072         echo "Congratulations.  You aren't running Eunice."
3073         d_eunice="$undef"
3074         ;;
3075 esac
3076 : Detect OS2.  The p_ variable is set above in the Head.U unit.
3077 : Note that this also -- wrongly -- detects e.g. dos-djgpp, which also uses
3078 : semicolon as a patch separator
3079 case "$p_" in
3080 :) ;;
3081 *)
3082         $cat <<'EOI'
3083 I have the feeling something is not exactly right, however...don't tell me...
3084 lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
3085 (Or you may be running DOS with DJGPP.)
3086 EOI
3087         echo exit 0 >os2
3088         ;;
3089 esac
3090 if test -f /xenix; then
3091         echo "Actually, this looks more like a XENIX system..."
3092         echo exit 0 >xenix
3093         d_xenix="$define"
3094 else
3095         echo " "
3096         echo "It's not Xenix..."
3097         d_xenix="$undef"
3098 fi
3099 chmod +x xenix
3100 $eunicefix xenix
3101 if test -f /venix; then
3102         echo "Actually, this looks more like a VENIX system..."
3103         echo exit 0 >venix
3104 else
3105         echo " "
3106         if ./xenix; then
3107                 : null
3108         else
3109                 echo "Nor is it Venix..."
3110         fi
3111 fi
3112 chmod +x bsd usg v7 osf1 eunice xenix venix os2
3113 $eunicefix bsd usg v7 osf1 eunice xenix venix os2
3114 $rm -f foo
3115
3116 case "$cc" in
3117 '') dflt=cc;;
3118 *) dflt="$cc";;
3119 esac
3120 rp="Use which C compiler?"
3121 . ./myread
3122 cc="$ans"
3123 : Look for a hint-file generated 'call-back-unit'.  Now that the
3124 : user has specified the compiler, we may need to set or change some
3125 : other defaults.
3126 if $test -f cc.cbu; then
3127     . ./cc.cbu
3128 fi
3129 . ./checkcc
3130
3131 echo " "
3132 echo "Checking for GNU cc in disguise and/or its version number..." >&4
3133 $cat >gccvers.c <<EOM
3134 #include <stdio.h>
3135 int main() {
3136 #ifdef __GNUC__
3137 #ifdef __VERSION__
3138         printf("%s\n", __VERSION__);
3139 #else
3140         printf("%s\n", "1");
3141 #endif
3142 #endif
3143         exit(0);
3144 }
3145 EOM
3146 if $cc -o gccvers $ldflags gccvers.c; then
3147         gccversion=`./gccvers`
3148         case "$gccversion" in
3149         '') echo "You are not using GNU cc." ;;
3150         *)  echo "You are using GNU cc $gccversion."
3151             ccname=gcc  
3152             ;;
3153         esac
3154 else
3155         echo " "
3156         echo "*** WHOA THERE!!! ***" >&4
3157         echo "    Your C compiler \"$cc\" doesn't seem to be working!" >&4
3158         case "$knowitall" in
3159         '')
3160         echo "    You'd better start hunting for one and let me know about it." >&4
3161                 exit 1
3162                 ;;
3163         esac
3164 fi
3165 $rm -f gccvers*
3166 case "$gccversion" in
3167 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3168 esac
3169 case "$gccversion" in
3170 '') gccosandvers='' ;;
3171 *) gccshortvers=`echo "$gccversion"|sed 's/ .*//'`
3172    gccosandvers=`$cc -v 2>&1|grep '/specs$'|sed "s!.*/[^-/]*-[^-/]*-\([^-/]*\)/$gccshortvers/specs!\1!"`
3173    gccshortvers=''
3174    case "$gccosandvers" in
3175    $osname) gccosandvers='' ;; # linux gccs seem to have no linux osvers, grr
3176    $osname$osvers) ;; # looking good
3177    $osname*) cat <<EOM >&4
3178
3179 *** WHOA THERE!!! ***
3180
3181     Your gcc has not been compiled for the exact release of
3182     your operating system ($gccosandvers versus $osname$osvers).
3183
3184     In general it is a good idea to keep gcc synchronized with
3185     the operating system because otherwise serious problems
3186     may ensue when trying to compile software, like Perl.
3187
3188     I'm trying to be optimistic here, though, and will continue.
3189     If later during the configuration and build icky compilation
3190     problems appear (headerfile conflicts being the most common
3191     manifestation), I suggest reinstalling the gcc to match
3192     your operating system release.
3193
3194 EOM
3195       ;;
3196    *) gccosandvers='' ;; # failed to parse, better be silent
3197    esac
3198    ;;
3199 esac
3200 case "$ccname" in
3201 '') ccname="$cc" ;;
3202 esac
3203
3204 : see how we invoke the C preprocessor
3205 echo " "
3206 echo "Now, how can we feed standard input to your C preprocessor..." >&4
3207 cat <<'EOT' >testcpp.c
3208 #define ABC abc
3209 #define XYZ xyz
3210 ABC.XYZ
3211 EOT
3212 cd ..
3213 if test ! -f cppstdin; then
3214         if test "X$osname" = "Xaix" -a "X$gccversion" = X; then
3215                 # AIX cc -E doesn't show the absolute headerfile
3216                 # locations but we'll cheat by using the -M flag.
3217                 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
3218         else
3219                 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
3220         fi
3221 else
3222         echo "Keeping your $hint cppstdin wrapper."
3223 fi
3224 chmod 755 cppstdin
3225 wrapper=`pwd`/cppstdin
3226 ok='false'
3227 cd UU
3228
3229 if $test "X$cppstdin" != "X" && \
3230         $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
3231         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3232 then
3233         echo "You used to use $cppstdin $cppminus so we'll use that again."
3234         case "$cpprun" in
3235         '') echo "But let's see if we can live without a wrapper..." ;;
3236         *)
3237                 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
3238                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3239                 then
3240                         echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
3241                         ok='true'
3242                 else
3243                         echo "(However, $cpprun $cpplast does not work, let's see...)"
3244                 fi
3245                 ;;
3246         esac
3247 else
3248         case "$cppstdin" in
3249         '') ;;
3250         *)
3251                 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
3252                 ;;
3253         esac
3254 fi
3255
3256 if $ok; then
3257         : nothing
3258 elif echo 'Maybe "'"$cc"' -E" will work...'; \
3259         $cc -E <testcpp.c >testcpp.out 2>&1; \
3260         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3261         echo "Yup, it does."
3262         x_cpp="$cc -E"
3263         x_minus='';
3264 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
3265         $cc -E - <testcpp.c >testcpp.out 2>&1; \
3266         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3267         echo "Yup, it does."
3268         x_cpp="$cc -E"
3269         x_minus='-';
3270 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
3271         $cc -P <testcpp.c >testcpp.out 2>&1; \
3272         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3273         echo "Yipee, that works!"
3274         x_cpp="$cc -P"
3275         x_minus='';
3276 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
3277         $cc -P - <testcpp.c >testcpp.out 2>&1; \
3278         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3279         echo "At long last!"
3280         x_cpp="$cc -P"
3281         x_minus='-';
3282 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
3283         $cpp <testcpp.c >testcpp.out 2>&1; \
3284         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3285         echo "It works!"
3286         x_cpp="$cpp"
3287         x_minus='';
3288 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
3289         $cpp - <testcpp.c >testcpp.out 2>&1; \
3290         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3291         echo "Hooray, it works!  I was beginning to wonder."
3292         x_cpp="$cpp"
3293         x_minus='-';
3294 elif echo 'Uh-uh.  Time to get fancy.  Trying a wrapper...'; \
3295         $wrapper <testcpp.c >testcpp.out 2>&1; \
3296         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3297         x_cpp="$wrapper"
3298         x_minus=''
3299         echo "Eureka!"
3300 else
3301         dflt=''
3302         rp="No dice.  I can't find a C preprocessor.  Name one:"
3303         . ./myread
3304         x_cpp="$ans"
3305         x_minus=''
3306         $x_cpp <testcpp.c >testcpp.out 2>&1
3307         if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3308                 echo "OK, that will do." >&4
3309         else
3310 echo "Sorry, I can't get that to work.  Go find one and rerun Configure." >&4
3311                 exit 1
3312         fi
3313 fi
3314
3315 case "$ok" in
3316 false)
3317         cppstdin="$x_cpp"
3318         cppminus="$x_minus"
3319         cpprun="$x_cpp"
3320         cpplast="$x_minus"
3321         set X $x_cpp
3322         shift
3323         case "$1" in
3324         "$cpp")
3325                 echo "Perhaps can we force $cc -E using a wrapper..."
3326                 if $wrapper <testcpp.c >testcpp.out 2>&1; \
3327                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3328                 then
3329                         echo "Yup, we can."
3330                         cppstdin="$wrapper"
3331                         cppminus='';
3332                 else
3333                         echo "Nope, we'll have to live without it..."
3334                 fi
3335                 ;;
3336         esac
3337         case "$cpprun" in
3338         "$wrapper")
3339                 cpprun=''
3340                 cpplast=''
3341                 ;;
3342         esac
3343         ;;
3344 esac
3345
3346 case "$cppstdin" in
3347 "$wrapper"|'cppstdin') ;;
3348 *) $rm -f $wrapper;;
3349 esac
3350 $rm -f testcpp.c testcpp.out
3351
3352 : decide how portable to be.  Allow command line overrides.
3353 case "$d_portable" in
3354 "$undef") ;;
3355 *)      d_portable="$define" ;;
3356 esac
3357
3358 : set up shell script to do ~ expansion
3359 cat >filexp <<EOSS
3360 $startsh
3361 : expand filename
3362 case "\$1" in
3363  ~/*|~)
3364         echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
3365         ;;
3366  ~*)
3367         if $test -f /bin/csh; then
3368                 /bin/csh -f -c "glob \$1"
3369                 failed=\$?
3370                 echo ""
3371                 exit \$failed
3372         else
3373                 name=\`$expr x\$1 : '..\([^/]*\)'\`
3374                 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
3375                 if $test ! -d "\$dir"; then
3376                         me=\`basename \$0\`
3377                         echo "\$me: can't locate home directory for: \$name" >&2
3378                         exit 1
3379                 fi
3380                 case "\$1" in
3381                 */*)
3382                         echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
3383                         ;;
3384                 *)
3385                         echo \$dir
3386                         ;;
3387                 esac
3388         fi
3389         ;;
3390 *)
3391         echo \$1
3392         ;;
3393 esac
3394 EOSS
3395 chmod +x filexp
3396 $eunicefix filexp
3397
3398 : now set up to get a file name
3399 cat <<EOS >getfile
3400 $startsh
3401 EOS
3402 cat <<'EOSC' >>getfile
3403 tilde=''
3404 fullpath=''
3405 already=''
3406 skip=''
3407 none_ok=''
3408 exp_file=''
3409 nopath_ok=''
3410 orig_rp="$rp"
3411 orig_dflt="$dflt"
3412 case "$gfpth" in
3413 '') gfpth='.' ;;
3414 esac
3415
3416 case "$fn" in
3417 *\(*)
3418         expr $fn : '.*(\(.*\)).*' | $tr ',' $trnl >getfile.ok
3419         fn=`echo $fn | sed 's/(.*)//'`
3420         ;;
3421 esac
3422
3423 case "$fn" in
3424 *:*)
3425         loc_file=`expr $fn : '.*:\(.*\)'`
3426         fn=`expr $fn : '\(.*\):.*'`
3427         ;;
3428 esac
3429
3430 case "$fn" in
3431 *~*) tilde=true;;
3432 esac
3433 case "$fn" in
3434 */*) fullpath=true;;
3435 esac
3436 case "$fn" in
3437 *+*) skip=true;;
3438 esac
3439 case "$fn" in
3440 *n*) none_ok=true;;
3441 esac
3442 case "$fn" in
3443 *e*) exp_file=true;;
3444 esac
3445 case "$fn" in
3446 *p*) nopath_ok=true;;
3447 esac
3448
3449 case "$fn" in
3450 *f*) type='File';;
3451 *d*) type='Directory';;
3452 *l*) type='Locate';;
3453 esac
3454
3455 what="$type"
3456 case "$what" in
3457 Locate) what='File';;
3458 esac
3459
3460 case "$exp_file" in
3461 '')
3462         case "$d_portable" in
3463         "$define") ;;
3464         *) exp_file=true;;
3465         esac
3466         ;;
3467 esac
3468
3469 cd ..
3470 while test "$type"; do
3471         redo=''
3472         rp="$orig_rp"
3473         dflt="$orig_dflt"
3474         case "$tilde" in
3475         true) rp="$rp (~name ok)";;
3476         esac
3477         . UU/myread
3478         if test -f UU/getfile.ok && \
3479                 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
3480         then
3481                 value="$ans"
3482                 ansexp="$ans"
3483                 break
3484         fi
3485         case "$ans" in
3486         none)
3487                 value=''
3488                 ansexp=''
3489                 case "$none_ok" in
3490                 true) type='';;
3491                 esac
3492                 ;;
3493         *)
3494                 case "$tilde" in
3495                 '') value="$ans"
3496                         ansexp="$ans";;
3497                 *)
3498                         value=`UU/filexp $ans`
3499                         case $? in
3500                         0)
3501                                 if test "$ans" != "$value"; then
3502                                         echo "(That expands to $value on this system.)"
3503                                 fi
3504                                 ;;
3505                         *) value="$ans";;
3506                         esac
3507                         ansexp="$value"
3508                         case "$exp_file" in
3509                         '') value="$ans";;
3510                         esac
3511                         ;;
3512                 esac
3513                 case "$fullpath" in
3514                 true)
3515                         case "$ansexp" in
3516                         /*) value="$ansexp" ;;
3517                         [a-zA-Z]:/*) value="$ansexp" ;;
3518                         *)
3519                                 redo=true
3520                                 case "$already" in
3521                                 true)
3522                                 echo "I shall only accept a full path name, as in /bin/ls." >&4
3523                                 echo "Use a ! shell escape if you wish to check pathnames." >&4
3524                                         ;;
3525                                 *)
3526                                 echo "Please give a full path name, starting with slash." >&4
3527                                         case "$tilde" in
3528                                         true)
3529                                 echo "Note that using ~name is ok provided it expands well." >&4
3530                                                 already=true
3531                                                 ;;
3532                                         esac
3533                                 esac
3534                                 ;;
3535                         esac
3536                         ;;
3537                 esac
3538                 case "$redo" in
3539                 '')
3540                         case "$type" in
3541                         File)
3542                                 for fp in $gfpth; do
3543                                         if test "X$fp" = X.; then
3544                                             pf="$ansexp"
3545                                         else    
3546                                             pf="$fp/$ansexp"
3547                                         fi
3548                                         if test -f "$pf"; then
3549                                                 type=''
3550                                         elif test -r "$pf" || (test -h "$pf") >/dev/null 2>&1
3551                                         then
3552                                                 echo "($value is not a plain file, but that's ok.)"
3553                                                 type=''
3554                                         fi
3555                                         if test X"$type" = X; then
3556                                             value="$pf"
3557                                             break
3558                                         fi
3559                                 done
3560                                 ;;
3561                         Directory)
3562                                 for fp in $gfpth; do
3563                                         if test "X$fp" = X.; then
3564                                             dir="$ans"
3565                                             direxp="$ansexp"
3566                                         else    
3567                                             dir="$fp/$ansexp"
3568                                             direxp="$fp/$ansexp"
3569                                         fi
3570                                         if test -d "$direxp"; then
3571                                                 type=''
3572                                                 value="$dir"
3573                                                 break
3574                                         fi
3575                                 done
3576                                 ;;
3577                         Locate)
3578                                 if test -d "$ansexp"; then
3579                                         echo "(Looking for $loc_file in directory $value.)"
3580                                         value="$value/$loc_file"
3581                                         ansexp="$ansexp/$loc_file"
3582                                 fi
3583                                 if test -f "$ansexp"; then
3584                                         type=''
3585                                 fi
3586                                 case "$nopath_ok" in
3587                                 true)   case "$value" in
3588                                         */*) ;;
3589                                         *)      echo "Assuming $value will be in people's path."
3590                                                 type=''
3591                                                 ;;
3592                                         esac
3593                                         ;;
3594                                 esac
3595                                 ;;
3596                         esac
3597
3598                         case "$skip" in
3599                         true) type='';
3600                         esac
3601
3602                         case "$type" in
3603                         '') ;;
3604                         *)
3605                                 if test "$fastread" = yes; then
3606                                         dflt=y
3607                                 else
3608                                         dflt=n
3609                                 fi
3610                                 rp="$what $value doesn't exist.  Use that name anyway?"
3611                                 . UU/myread
3612                                 dflt=''
3613                                 case "$ans" in
3614                                 y*) type='';;
3615                                 *) echo " ";;
3616                                 esac
3617                                 ;;
3618                         esac
3619                         ;;
3620                 esac
3621                 ;;
3622         esac
3623 done
3624 cd UU
3625 ans="$value"
3626 rp="$orig_rp"
3627 dflt="$orig_dflt"
3628 rm -f getfile.ok
3629 test "X$gfpthkeep" != Xy && gfpth=""
3630 EOSC
3631
3632 : What should the include directory be ?
3633 echo " "
3634 $echo $n "Hmm...  $c"
3635 dflt='/usr/include'
3636 incpath=''
3637 mips_type=''
3638 if $test -f /bin/mips && /bin/mips; then
3639         echo "Looks like a MIPS system..."
3640         $cat >usr.c <<'EOCP'
3641 #ifdef SYSTYPE_BSD43
3642 /bsd43
3643 #endif
3644 EOCP
3645         if cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
3646                 dflt='/bsd43/usr/include'
3647                 incpath='/bsd43'
3648                 mips_type='BSD 4.3'
3649         else
3650                 mips_type='System V'
3651         fi
3652         $rm -f usr.c usr.out
3653         echo "and you're compiling with the $mips_type compiler and libraries."
3654         xxx_prompt=y
3655         echo "exit 0" >mips
3656 else
3657         echo "Doesn't look like a MIPS system."
3658         xxx_prompt=n
3659         echo "exit 1" >mips
3660 fi
3661 chmod +x mips
3662 $eunicefix mips
3663 case "$usrinc" in
3664 '') ;;
3665 *) dflt="$usrinc";;
3666 esac
3667 case "$xxx_prompt" in
3668 y)      fn=d/
3669         echo " "
3670         rp='Where are the include files you want to use?'
3671         . ./getfile
3672         usrinc="$ans"
3673         ;;
3674 *)      usrinc="$dflt"
3675         ;;
3676 esac
3677
3678 : Set private lib path
3679 case "$plibpth" in
3680 '') if ./mips; then
3681                 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
3682         fi;;
3683 esac
3684 case "$libpth" in
3685 ' ') dlist='';;
3686 '') dlist="$loclibpth $plibpth $glibpth";;
3687 *) dlist="$libpth";;
3688 esac
3689
3690 : Now check and see which directories actually exist, avoiding duplicates
3691 libpth=''
3692 for xxx in $dlist
3693 do
3694     if $test -d $xxx; then
3695                 case " $libpth " in
3696                 *" $xxx "*) ;;
3697                 *) libpth="$libpth $xxx";;
3698                 esac
3699     fi
3700 done
3701 $cat <<'EOM'
3702
3703 Some systems have incompatible or broken versions of libraries.  Among
3704 the directories listed in the question below, please remove any you
3705 know not to be holding relevant libraries, and add any that are needed.
3706 Say "none" for none.
3707
3708 EOM
3709 case "$libpth" in
3710 '') dflt='none';;
3711 *)
3712         set X $libpth
3713         shift
3714         dflt=${1+"$@"}
3715         ;;
3716 esac
3717 rp="Directories to use for library searches?"
3718 . ./myread
3719 case "$ans" in
3720 none) libpth=' ';;
3721 *) libpth="$ans";;
3722 esac
3723
3724 : compute shared library extension
3725 case "$so" in
3726 '')
3727         if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
3728                 dflt='sl'
3729         else
3730                 dflt='so'
3731         fi
3732         ;;
3733 *) dflt="$so";;
3734 esac
3735 $cat <<EOM
3736
3737 On some systems, shared libraries may be available.  Answer 'none' if
3738 you want to suppress searching of shared libraries for the remainder
3739 of this configuration.
3740
3741 EOM
3742 rp='What is the file extension used for shared libraries?'
3743 . ./myread
3744 so="$ans"
3745
3746 : Define several unixisms.
3747 : Hints files or command line option can be used to override them.
3748 : The convoluted testing is in case hints files set either the old
3749 : or the new name.
3750 case "$_exe" in
3751 '')     case "$exe_ext" in
3752     '') ;;
3753         *)      _exe="$exe_ext" ;;
3754         esac
3755         ;;
3756 esac
3757 case "$_a" in
3758 '')     case "$lib_ext" in
3759     '') _a='.a';;
3760         *)      _a="$lib_ext" ;;
3761         esac
3762         ;;
3763 esac
3764 case "$_o" in
3765 '') case "$obj_ext" in
3766         '')     _o='.o';;
3767         *)      _o="$obj_ext";;
3768         esac
3769         ;;
3770 esac
3771 case "$p_" in
3772 '') case "$path_sep" in
3773         '')     p_=':';;
3774         *)      p_="$path_sep";;
3775         esac
3776         ;;
3777 esac
3778 exe_ext=$_exe
3779 lib_ext=$_a
3780 obj_ext=$_o
3781 path_sep=$p_
3782
3783 : Which makefile gets called first.  This is used by make depend.
3784 case "$firstmakefile" in
3785 '') firstmakefile='makefile';;
3786 esac
3787
3788 case "$usesocks" in
3789 $define|true|[yY]*)     dflt='y';;
3790 *) dflt='n';;
3791 esac
3792 cat <<EOM
3793
3794 Perl can be built to use the SOCKS proxy protocol library.  To do so,
3795 Configure must be run with -Dusesocks.  If you use SOCKS you also need
3796 to use the PerlIO abstraction layer, this will be implicitly selected.
3797
3798 If this doesn't make any sense to you, just accept the default '$dflt'.
3799 EOM
3800 rp='Build Perl for SOCKS?'
3801 . ./myread
3802 case "$ans" in
3803 y|Y)    val="$define" ;;     
3804 *)      val="$undef" ;;
3805 esac
3806 set usesocks
3807 eval $setvar
3808
3809 case "$usesocks" in
3810 $define|true|[yY]*) useperlio="$define";;
3811 esac
3812
3813 : Looking for optional libraries
3814 echo " "
3815 echo "Checking for optional libraries..." >&4
3816 case "$libs" in
3817 ' '|'') dflt='';;
3818 *) dflt="$libs";;
3819 esac
3820 case "$libswanted" in
3821 '') libswanted='c_s';;
3822 esac
3823 case "$usesocks" in
3824 "$define") libswanted="$libswanted socks5 socks5_sh" ;;
3825 esac
3826 libsfound=''
3827 libsfiles=''
3828 libsdirs=''
3829 libspath=''
3830 for thisdir in $libpth $xlibpth; do
3831   test -d $thisdir && libspath="$libspath $thisdir"
3832 done
3833 for thislib in $libswanted; do
3834         for thisdir in $libspath; do
3835             xxx=''
3836             if $test ! -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
3837                 xxx=`ls $thisdir/lib$thislib.$so.[0-9] 2>/dev/null|tail -1`
3838                 $test -f "$xxx" && eval $libscheck
3839                 $test -f "$xxx" && libstyle=shared
3840             fi
3841             if test ! -f "$xxx"; then
3842                 xxx=$thisdir/lib$thislib.$so
3843                 $test -f "$xxx" && eval $libscheck
3844                 $test -f "$xxx" && libstyle=shared
3845             fi  
3846             if test ! -f "$xxx"; then
3847                 xxx=$thisdir/lib$thislib$_a
3848                 $test -f "$xxx" && eval $libscheck
3849                 $test -f "$xxx" && libstyle=static
3850             fi
3851             if test ! -f "$xxx"; then
3852                 xxx=$thisdir/$thislib$_a
3853                 $test -f "$xxx" && eval $libscheck
3854                 $test -f "$xxx" && libstyle=static
3855             fi
3856             if test ! -f "$xxx"; then
3857                 xxx=$thisdir/lib${thislib}_s$_a
3858                 $test -f "$xxx" && eval $libscheck
3859                 $test -f "$xxx" && libstyle=static
3860                 $test -f "$xxx" && thislib=${thislib}_s
3861             fi
3862             if test ! -f "$xxx"; then
3863                 xxx=$thisdir/Slib$thislib$_a
3864                 $test -f "$xxx" && eval $libscheck
3865                 $test -f "$xxx" && libstyle=static
3866             fi
3867             if $test -f "$xxx"; then
3868                 case "$libstyle" in
3869                 shared) echo "Found -l$thislib (shared)." ;;
3870                 static) echo "Found -l$thislib." ;;
3871                 *)      echo "Found -l$thislib ($libstyle)." ;;
3872                 esac
3873                 case " $dflt " in
3874                 *"-l$thislib "*);;
3875                 *) dflt="$dflt -l$thislib"
3876                    libsfound="$libsfound $xxx"
3877                    yyy=`basename $xxx`
3878                    libsfiles="$libsfiles $yyy"
3879                    yyy=`echo $xxx|$sed -e "s%/$yyy\\$%%"`
3880                    case " $libsdirs " in
3881                    *" $yyy "*) ;;
3882                    *) libsdirs="$libsdirs $yyy" ;;
3883                    esac
3884                    ;;
3885                 esac
3886                 break
3887             fi  
3888         done
3889         if $test ! -f "$xxx"; then
3890             echo "No -l$thislib."
3891         fi
3892 done
3893 set X $dflt
3894 shift
3895 dflt="$*"
3896 case "$libs" in
3897 '') dflt="$dflt";;
3898 *) dflt="$libs";;
3899 esac
3900 case "$dflt" in
3901 ' '|'') dflt='none';;
3902 esac
3903
3904 $cat <<EOM
3905
3906 In order to compile $package on your machine, a number of libraries
3907 are usually needed.  Include any other special libraries here as well.
3908 Say "none" for none.  The default list is almost always right.
3909 EOM
3910
3911 echo " "
3912 rp="What libraries to use?"
3913 . ./myread
3914 case "$ans" in
3915 none) libs=' ';;
3916 *) libs="$ans";;
3917 esac
3918
3919 : determine optimization, if desired, or use for debug flag also
3920 case "$optimize" in
3921 ' '|$undef) dflt='none';;
3922 '') dflt='-O';;
3923 *) dflt="$optimize";;
3924 esac
3925 $cat <<EOH
3926
3927 By default, $package compiles with the -O flag to use the optimizer.
3928 Alternately, you might want to use the symbolic debugger, which uses
3929 the -g flag (on traditional Unix systems).  Either flag can be
3930 specified here.  To use neither flag, specify the word "none".
3931
3932 EOH
3933 rp="What optimizer/debugger flag should be used?"
3934 . ./myread
3935 optimize="$ans"
3936 case "$optimize" in
3937 'none') optimize=" ";;
3938 esac
3939
3940 dflt=''
3941 : We will not override a previous value, but we might want to
3942 : augment a hint file
3943 case "$hint" in
3944 default|recommended)
3945         case "$gccversion" in
3946         1*) dflt='-fpcc-struct-return' ;;
3947         esac
3948         case "$optimize" in
3949         *-g*) dflt="$dflt -DDEBUGGING";;
3950         esac
3951         case "$gccversion" in
3952         2*) if test -d /etc/conf/kconfig.d &&
3953                         $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
3954                 then
3955                         dflt="$dflt -posix"
3956                 fi
3957                 ;;
3958         esac
3959         case "$gccversion" in
3960         1*) ;;
3961         2.[0-8]*) ;;
3962         ?*)     echo " "
3963                 echo "Checking if your compiler accepts -fno-strict-aliasing" 2>&1
3964                 echo 'int main(void) { return 0; }' > gcctest.c
3965                 if $cc -O2 -fno-strict-aliasing -o gcctest gcctest.c; then
3966                         echo "Yes, it does." 2>&1
3967                         case "$ccflags" in
3968                         *strict-aliasing*) 
3969                                 echo "Leaving current flags $ccflags alone." 2>&1
3970                                 ;;
3971                         *) dflt="$dflt -fno-strict-aliasing" ;;
3972                         esac
3973                 else
3974                         echo "Nope, it doesn't, but that's ok." 2>&1
3975                 fi
3976                 ;;
3977         esac
3978         ;;
3979 esac
3980
3981 case "$mips_type" in
3982 *BSD*|'') inclwanted="$locincpth $usrinc";;
3983 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
3984 esac
3985 for thisincl in $inclwanted; do
3986         if $test -d $thisincl; then
3987                 if $test x$thisincl != x$usrinc; then
3988                         case "$dflt" in
3989                         *" -I$thisincl "*);;
3990                         *) dflt="$dflt -I$thisincl ";;
3991                         esac
3992                 fi
3993         fi
3994 done
3995
3996 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
3997         xxx=true;
3998 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
3999         xxx=true;
4000 else
4001         xxx=false;
4002 fi;
4003 if $xxx; then
4004         case "$dflt" in
4005         *$2*);;
4006         *) dflt="$dflt -D$2";;
4007         esac;
4008 fi'
4009
4010 set signal.h LANGUAGE_C; eval $inctest
4011
4012 case "$usesocks" in
4013 $define)
4014         ccflags="$ccflags -DSOCKS"
4015         ;;
4016 esac
4017
4018 case "$hint" in
4019 default|recommended) dflt="$ccflags $dflt" ;;
4020 *) dflt="$ccflags";;
4021 esac
4022
4023 case "$dflt" in
4024 ''|' ') dflt=none;;
4025 esac
4026
4027 $cat <<EOH
4028
4029 Your C compiler may want other flags.  For this question you should include
4030 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
4031 but you should NOT include libraries or ld flags like -lwhatever.  If you
4032 want $package to honor its debug switch, you should include -DDEBUGGING here.
4033 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
4034
4035 To use no flags, specify the word "none".
4036
4037 EOH
4038 set X $dflt
4039 shift
4040 dflt=${1+"$@"}
4041 rp="Any additional cc flags?"
4042 . ./myread
4043 case "$ans" in
4044 none) ccflags='';;
4045 *) ccflags="$ans";;
4046 esac
4047
4048 : the following weeds options from ccflags that are of no interest to cpp
4049 cppflags="$ccflags"
4050 case "$gccversion" in
4051 1*) cppflags="$cppflags -D__GNUC__"
4052 esac
4053 case "$mips_type" in
4054 '');;
4055 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
4056 esac
4057 case "$cppflags" in
4058 '');;
4059 *)
4060         echo " "
4061         echo "Let me guess what the preprocessor flags are..." >&4
4062         set X $cppflags
4063         shift
4064         cppflags=''
4065         $cat >cpp.c <<'EOM'
4066 #define BLURFL foo
4067
4068 BLURFL xx LFRULB
4069 EOM
4070         previous=''
4071         for flag in $*
4072         do
4073                 case "$flag" in
4074                 -*) ftry="$flag";;
4075                 *) ftry="$previous $flag";;
4076                 esac
4077                 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
4078                         >cpp1.out 2>/dev/null && \
4079                         $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
4080                         >cpp2.out 2>/dev/null && \
4081                         $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
4082                         $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
4083                 then
4084                         cppflags="$cppflags $ftry"
4085                         previous=''
4086                 else
4087                         previous="$flag"
4088                 fi
4089         done
4090         set X $cppflags
4091         shift
4092         cppflags=${1+"$@"}
4093         case "$cppflags" in
4094         *-*)  echo "They appear to be: $cppflags";;
4095         esac
4096         $rm -f cpp.c cpp?.out
4097         ;;
4098 esac
4099
4100 : flags used in final linking phase
4101 case "$ldflags" in
4102 '') if ./venix; then
4103                 dflt='-i -z'
4104         else
4105                 dflt=''
4106         fi
4107         case "$ccflags" in
4108         *-posix*) dflt="$dflt -posix" ;;
4109         esac
4110         ;;
4111 *) dflt="$ldflags";;
4112 esac
4113
4114 : Try to guess additional flags to pick up local libraries.
4115 for thislibdir in $libpth; do
4116         case " $loclibpth " in
4117         *" $thislibdir "*)
4118                 case "$dflt " in 
4119                 *"-L$thislibdir "*) ;;
4120                 *)  dflt="$dflt -L$thislibdir" ;;
4121                 esac
4122                 ;;
4123         esac
4124 done
4125
4126 case "$dflt" in
4127 '') dflt='none' ;;
4128 esac
4129
4130 $cat <<EOH
4131
4132 Your C linker may need flags.  For this question you should
4133 include -L/whatever and any other flags used by the C linker, but you
4134 should NOT include libraries like -lwhatever.
4135
4136 Make sure you include the appropriate -L/path flags if your C linker
4137 does not normally search all of the directories you specified above,
4138 namely
4139         $libpth
4140 To use no flags, specify the word "none".
4141
4142 EOH
4143
4144 rp="Any additional ld flags (NOT including libraries)?"
4145 . ./myread
4146 case "$ans" in
4147 none) ldflags='';;
4148 *) ldflags="$ans";;
4149 esac
4150 rmlist="$rmlist pdp11"
4151
4152 : coherency check
4153 echo " "
4154 echo "Checking your choice of C compiler and flags for coherency..." >&4
4155 $cat > try.c <<'EOF'
4156 #include <stdio.h>
4157 int main() { printf("Ok\n"); exit(0); }
4158 EOF
4159 set X $cc -o try $optimize $ccflags $ldflags try.c $libs
4160 shift
4161 $cat >try.msg <<'EOM'
4162 I've tried to compile and run the following simple program:
4163
4164 EOM
4165 $cat try.c >> try.msg
4166
4167 $cat >> try.msg <<EOM
4168
4169 I used the command:
4170
4171         $*
4172         ./try
4173
4174 and I got the following output:
4175
4176 EOM
4177 dflt=y
4178 if $sh -c "$cc -o try $optimize $ccflags $ldflags try.c $libs" >>try.msg 2>&1; then
4179         if $sh -c './try' >>try.msg 2>&1; then
4180                 xxx=`./try`
4181                 case "$xxx" in
4182                 "Ok") dflt=n ;;
4183                 *)      echo 'The program compiled OK, but produced no output.' >> try.msg
4184                         case " $libs " in
4185                         *" -lsfio "*)
4186                                 cat >> try.msg <<'EOQS'
4187 If $libs contains -lsfio, and sfio is mis-configured, then it
4188 sometimes (apparently) runs and exits with a 0 status, but with no
4189 output!  It may have to do with sfio's use of _exit vs. exit.
4190
4191 EOQS
4192                                 rp="You have a big problem.  Shall I abort Configure"
4193                                 dflt=y
4194                                 ;;
4195                         esac
4196                         ;;
4197                 esac
4198         else
4199                 echo "The program compiled OK, but exited with status $?." >>try.msg
4200                 rp="You have a problem.  Shall I abort Configure"
4201                 dflt=y
4202         fi
4203 else
4204         echo "I can't compile the test program." >>try.msg
4205         rp="You have a BIG problem.  Shall I abort Configure"
4206         dflt=y
4207 fi
4208 case "$dflt" in
4209 y)
4210         $cat try.msg >&4
4211         case "$knowitall" in
4212         '')
4213                 echo "(The supplied flags or libraries might be incorrect.)"
4214                 ;;
4215         *) dflt=n;;
4216         esac
4217         echo " "
4218         . ./myread
4219         case "$ans" in
4220         n*|N*) ;;
4221         *)      echo "Ok.  Stopping Configure." >&4
4222                 exit 1
4223                 ;;
4224         esac
4225         ;;
4226 n) echo "OK, that should do.";;
4227 esac
4228 $rm -f try try.* core
4229
4230 : define an is-a-typedef? function
4231 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
4232 case "$inclist" in
4233 "") inclist="sys/types.h";;
4234 esac;
4235 eval "varval=\$$var";
4236 case "$varval" in
4237 "")
4238         $rm -f temp.c;
4239         for inc in $inclist; do
4240                 echo "#include <$inc>" >>temp.c;
4241         done;
4242         echo "#ifdef $type" >> temp.c;
4243         echo "printf(\"We have $type\");" >> temp.c;
4244         echo "#endif" >> temp.c;
4245         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
4246         if $contains $type temp.E >/dev/null 2>&1; then
4247                 eval "$var=\$type";
4248         else
4249                 eval "$var=\$def";
4250         fi;
4251         $rm -f temp.?;;
4252 *) eval "$var=\$varval";;
4253 esac'
4254
4255 : define an is-a-typedef? function that prompts if the type is not available.
4256 typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
4257 case "$inclist" in
4258 "") inclist="sys/types.h";;
4259 esac;
4260 eval "varval=\$$var";
4261 case "$varval" in
4262 "")
4263         $rm -f temp.c;
4264         for inc in $inclist; do
4265                 echo "#include <$inc>" >>temp.c;
4266         done;
4267         echo "#ifdef $type" >> temp.c;
4268         echo "printf(\"We have $type\");" >> temp.c;
4269         echo "#endif" >> temp.c;
4270         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
4271         echo " " ;
4272         echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
4273         if $contains $type temp.E >/dev/null 2>&1; then
4274                 echo "$type found." >&4;
4275                 eval "$var=\$type";
4276         else
4277                 echo "$type NOT found." >&4;
4278                 dflt="$def";
4279                 . ./myread ;
4280                 eval "$var=\$ans";
4281         fi;
4282         $rm -f temp.?;;
4283 *) eval "$var=\$varval";;
4284 esac'
4285
4286 : define a shorthand compile call
4287 compile='
4288 mc_file=$1;
4289 shift;
4290 $cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs > /dev/null 2>&1;'
4291 : define a shorthand compile call for compilations that should be ok.
4292 compile_ok='
4293 mc_file=$1;
4294 shift;
4295 $cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs;'
4296
4297 : check for lengths of integral types
4298 echo " "
4299 case "$intsize" in
4300 '')
4301         echo "Checking to see how big your integers are..." >&4
4302         $cat >intsize.c <<'EOCP'
4303 #include <stdio.h>
4304 int main()
4305 {
4306         printf("intsize=%d;\n", (int)sizeof(int));
4307         printf("longsize=%d;\n", (int)sizeof(long));
4308         printf("shortsize=%d;\n", (int)sizeof(short));
4309         exit(0);
4310 }
4311 EOCP
4312         set intsize
4313         if eval $compile_ok && ./intsize > /dev/null; then
4314                 eval `./intsize`
4315                 echo "Your integers are $intsize bytes long."
4316                 echo "Your long integers are $longsize bytes long."
4317                 echo "Your short integers are $shortsize bytes long."
4318         else
4319                 $cat >&4 <<EOM
4320 !
4321 Help! I can't compile and run the intsize test program: please enlighten me!
4322 (This is probably a misconfiguration in your system or libraries, and
4323 you really ought to fix it.  Still, I'll try anyway.)
4324 !
4325 EOM
4326                 dflt=4
4327                 rp="What is the size of an integer (in bytes)?"
4328                 . ./myread
4329                 intsize="$ans"
4330                 dflt=$intsize
4331                 rp="What is the size of a long integer (in bytes)?"
4332                 . ./myread
4333                 longsize="$ans"
4334                 dflt=2
4335                 rp="What is the size of a short integer (in bytes)?"
4336                 . ./myread
4337                 shortsize="$ans"
4338         fi
4339         ;;
4340 esac
4341 $rm -f intsize intsize.*
4342
4343 : see what type lseek is declared as in the kernel
4344 rp="What is the type used for lseek's offset on this system?"
4345 set off_t lseektype long stdio.h sys/types.h
4346 eval $typedef_ask
4347
4348 echo " "
4349 echo "Checking to see how big your file offsets are..." >&4
4350 $cat >try.c <<EOCP
4351 #include <sys/types.h>
4352 #include <stdio.h>
4353 int main()
4354 {
4355     printf("%d\n", (int)sizeof($lseektype));
4356     return(0); 
4357 }
4358 EOCP
4359 set try
4360 if eval $compile_ok; then
4361         lseeksize=`./try`
4362         echo "Your file offsets are $lseeksize bytes long."
4363 else
4364         dflt=$longsize
4365         echo " "
4366         echo "(I can't seem to compile the test program.  Guessing...)"
4367         rp="What is the size of your file offsets (in bytes)?"
4368         . ./myread
4369         lseeksize="$ans"
4370 fi
4371 $rm -f try.c try
4372
4373 : see what type file positions are declared as in the library
4374 rp="What is the type for file position used by fsetpos()?"
4375 set fpos_t fpostype long stdio.h sys/types.h
4376 eval $typedef_ask
4377
4378 echo " "
4379 case "$fpostype" in
4380 *_t) zzz="$fpostype"    ;;
4381 *)   zzz="fpos_t"       ;;
4382 esac
4383 echo "Checking the size of $zzz..." >&4 
4384 cat > try.c <<EOCP
4385 #include <sys/types.h>
4386 #include <stdio.h>
4387 int main() {
4388     printf("%d\n", (int)sizeof($fpostype));
4389     exit(0);
4390 }
4391 EOCP
4392 set try
4393 if eval $compile_ok; then
4394         yyy=`./try`
4395         case "$yyy" in
4396         '')     fpossize=4
4397                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
4398                 ;;
4399         *)      fpossize=$yyy
4400                 echo "Your $zzz is $fpossize bytes long."
4401                 ;;
4402         esac
4403 else
4404         dflt="$longsize"
4405         echo " " >&4
4406         echo "(I can't compile the test program.  Guessing...)" >&4
4407         rp="What is the size of your file positions (in bytes)?"
4408         . ./myread
4409         fpossize="$ans"
4410 fi
4411
4412
4413
4414 # Backward compatibility (uselfs is deprecated).
4415 case "$uselfs" in
4416 "$define"|true|[yY]*)
4417         cat <<EOM >&4
4418
4419 *** Configure -Duselfs is deprecated, using -Duselargefiles instead.
4420 EOM
4421         uselargefiles="$define"
4422         ;;
4423 esac                          
4424
4425 case "$lseeksize:$fpossize" in
4426 8:8) cat <<EOM
4427
4428 You can have files larger than 2 gigabytes.
4429 EOM
4430    val="$define" ;;
4431 *)    case "$uselargefiles" in
4432    "$undef"|false|[nN]*) dflt='n' ;;
4433    *)   dflt='y' ;;
4434    esac
4435    cat <<EOM
4436
4437 Perl can be built to understand large files (files larger than 2 gigabytes)
4438 on some systems.  To do so, Configure can be run with -Duselargefiles.
4439
4440 If this doesn't make any sense to you, just accept the default '$dflt'.
4441 EOM
4442    rp='Try to understand large files, if available?'
4443    . ./myread
4444    case "$ans" in
4445    y|Y)         val="$define" ;;
4446    *)           val="$undef"  ;;
4447    esac
4448    ;;
4449 esac
4450 set uselargefiles
4451 eval $setvar
4452 case "$uselargefiles" in
4453 "$define")
4454 : Look for a hint-file generated 'call-back-unit'.  If the
4455 : user has specified that a large files perl is to be built,
4456 : we may need to set or change some other defaults.
4457         if $test -f uselargefiles.cbu; then
4458                 echo "Your platform has some specific hints for large file builds, using them..."
4459                 . ./uselargefiles.cbu
4460                 echo " "
4461                 echo "Rechecking to see how big your file offsets are..." >&4
4462                 $cat >try.c <<EOCP
4463 #include <sys/types.h>
4464 #include <stdio.h>
4465 int main()
4466 {
4467     printf("%d\n", (int)sizeof($lseektype));
4468     return(0); 
4469 }
4470 EOCP
4471                 set try
4472                 if eval $compile_ok; then
4473                         lseeksize=`./try`
4474                         $echo "Your file offsets are now $lseeksize bytes long."
4475                 else
4476                         dflt="$lseeksize"
4477                         echo " "
4478                         echo "(I can't seem to compile the test program.  Guessing...)"
4479                         rp="What is the size of your file offsets (in bytes)?"
4480                         . ./myread
4481                         lseeksize="$ans"
4482                 fi
4483                 case "$fpostype" in
4484                 *_t) zzz="$fpostype"    ;;
4485                 *)   zzz="fpos_t"       ;;
4486                 esac
4487                 $echo $n "Rechecking the size of $zzz...$c" >&4 
4488                 $cat > try.c <<EOCP
4489 #include <sys/types.h>
4490 #include <stdio.h>
4491 int main() {
4492     printf("%d\n", (int)sizeof($fpostype));
4493     exit(0);
4494 }
4495 EOCP
4496                 set try
4497                 if eval $compile_ok; then
4498                         yyy=`./try`
4499                         dflt="$lseeksize"
4500                         case "$yyy" in
4501                         '')     echo " "
4502                                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
4503                                 ;;
4504                         *)      fpossize=$yyy
4505                                 echo " $fpossize bytes." >&4
4506                                 ;;
4507                         esac
4508                 else
4509                         dflt="$fpossize"
4510                         echo " "
4511                         echo "(I can't compile the test program.  Guessing...)" >&4
4512                         rp="What is the size of your file positions (in bytes)?"
4513                         . ./myread
4514                         fpossize="$ans"
4515                 fi
4516                 $rm -f try.c try
4517         fi
4518         ;;
4519 esac
4520
4521
4522 case "$usemorebits" in
4523 "$define"|true|[yY]*)
4524         use64bitint="$define"
4525         uselongdouble="$define"
4526         usemorebits="$define"
4527         ;;
4528 *)      usemorebits="$undef"
4529         ;;
4530 esac
4531
4532
4533 case "$uselonglong" in
4534 "$define"|true|[yY]*)
4535         cat <<EOM >&4
4536
4537 *** Configure -Duselonglong is deprecated, using -Duse64bitint instead.
4538 EOM
4539         use64bitint="$define"
4540         ;;
4541 esac                          
4542 case "$use64bits" in
4543 "$define"|true|[yY]*)
4544         cat <<EOM >&4
4545
4546 *** Configure -Duse64bits is deprecated, using -Duse64bitint instead.
4547 EOM
4548         use64bitint="$define"
4549         ;;
4550 esac                          
4551 case "$use64bitints" in
4552 "$define"|true|[yY]*)
4553         cat <<EOM >&4
4554
4555 *** There is no Configure -Duse64bitints, using -Duse64bitint instead.
4556 EOM
4557         use64bitint="$define"
4558         ;;
4559 esac                          
4560 case "$use64bitsint" in
4561 "$define"|true|[yY]*)
4562         cat <<EOM >&4
4563
4564 *** There is no Configure -Duse64bitsint, using -Duse64bitint instead.
4565 EOM
4566         use64bitint="$define"
4567         ;;
4568 esac                          
4569 case "$uselonglongs" in
4570 "$define"|true|[yY]*)
4571         cat <<EOM >&4
4572
4573 *** There is no Configure -Duselonglongs, using -Duse64bitint instead.
4574 EOM
4575         use64bitint="$define"
4576         ;;
4577 esac                          
4578 case "$use64bitsall" in
4579 "$define"|true|[yY]*)
4580         cat <<EOM >&4
4581
4582 *** There is no Configure -Duse64bitsall, using -Duse64bitall instead.
4583 EOM
4584         use64bitall="$define"
4585         ;;
4586 esac                          
4587
4588 case "$ccflags" in
4589 *-DUSE_LONG_LONG*|*-DUSE_64_BIT_INT*|*-DUSE_64_BIT_ALL*) use64bitint="$define";;
4590 esac
4591 case "$use64bitall" in
4592 "$define"|true|[yY]*) use64bitint="$define" ;;
4593 esac
4594
4595 case "$longsize" in
4596 8) cat <<EOM
4597
4598 You have natively 64-bit long integers.
4599 EOM
4600    val="$define"
4601    ;;
4602 *) case "$use64bitint" in
4603    "$define"|true|[yY]*) dflt='y';;
4604    *) dflt='n';;
4605    esac
4606    cat <<EOM
4607
4608 Perl can be built to take advantage of 64-bit integer types
4609 on some systems.  To do so, Configure can be run with -Duse64bitint.
4610 Choosing this option will most probably introduce binary incompatibilities.
4611
4612 If this doesn't make any sense to you, just accept the default '$dflt'.
4613 EOM
4614    rp='Try to use 64-bit integers, if available?'
4615    . ./myread
4616    case "$ans" in
4617    [yY]*) val="$define" ;;
4618    *)     val="$undef"  ;;
4619    esac
4620    ;;
4621 esac
4622 set use64bitint
4623 eval $setvar
4624
4625 case "$use64bitall" in
4626 "$define"|true|[yY]*) dflt='y' ;;
4627 *) case "$longsize" in
4628    8) dflt='y' ;;
4629    *) dflt='n' ;;
4630    esac
4631    ;;
4632 esac    
4633 cat <<EOM
4634
4635 You may also choose to try maximal 64-bitness.  It means using as much
4636 64-bitness as possible on the platform.  This in turn means even more
4637 binary incompatibilities.  On the other hand, your platform may not
4638 have any more 64-bitness available than what you already have chosen.
4639
4640 If this doesn't make any sense to you, just accept the default '$dflt'.
4641 EOM
4642 rp='Try to use maximal 64-bit support, if available?'
4643 . ./myread
4644 case "$ans" in
4645 [yY]*) val="$define" ;;
4646 *)     val="$undef"  ;;
4647 esac
4648 set use64bitall
4649 eval $setvar
4650 case "$use64bitall" in
4651 "$define")
4652         case "$use64bitint" in
4653         "$undef")
4654                 cat <<EOM
4655
4656 Since you have chosen a maximally 64-bit build, I'm also turning on
4657 the use of 64-bit integers.
4658 EOM
4659                 use64bitint="$define" ;;
4660         esac
4661         ;;
4662 esac
4663
4664 case "$use64bitint" in
4665 "$define"|true|[yY]*)
4666 : Look for a hint-file generated 'call-back-unit'.  If the
4667 : user has specified that a 64-bit perl is to be built,
4668 : we may need to set or change some other defaults.
4669         if $test -f use64bitint.cbu; then
4670                 echo "Your platform has some specific hints for 64-bit integers, using them..."
4671                 . ./use64bitint.cbu
4672         fi
4673         case "$longsize" in
4674         4) case "$archname64" in
4675            '') archname64=64int ;;
4676            esac
4677            ;;
4678         esac
4679         ;;
4680 esac
4681
4682 case "$use64bitall" in
4683 "$define"|true|[yY]*)
4684 : Look for a hint-file generated 'call-back-unit'.  If the
4685 : user has specified that a maximally 64-bit perl is to be built,
4686 : we may need to set or change some other defaults.
4687         if $test -f use64bitall.cbu; then
4688                 echo "Your platform has some specific hints for 64-bit builds, using them..."
4689                 . ./use64bitall.cbu
4690         fi
4691         case "$longsize" in
4692         4) case "$archname64" in
4693            ''|64int) archname64=64all ;;
4694            esac
4695            ;;
4696         esac
4697         ;;
4698 esac
4699
4700 echo " "
4701 echo "Checking for GNU C Library..." >&4
4702 cat >gnulibc.c <<EOM
4703 #include <stdio.h>
4704 int main()
4705 {
4706 #ifdef __GLIBC__
4707     exit(0);
4708 #else
4709     exit(1);
4710 #endif
4711 }
4712 EOM
4713 set gnulibc
4714 if eval $compile_ok && ./gnulibc; then
4715         val="$define"
4716         echo "You are using the GNU C Library"
4717 else
4718         val="$undef"
4719         echo "You are not using the GNU C Library"
4720 fi
4721 $rm -f gnulibc*
4722 set d_gnulibc
4723 eval $setvar
4724
4725 : see if nm is to be used to determine whether a symbol is defined or not
4726 case "$usenm" in
4727 '')
4728         dflt=''
4729         case "$d_gnulibc" in
4730         "$define")
4731                 echo " "
4732                 echo "nm probably won't work on the GNU C Library." >&4
4733                 dflt=n
4734                 ;;
4735         esac
4736         case "$dflt" in
4737         '') 
4738                 if $test "$osname" = aix -a ! -f /lib/syscalls.exp; then
4739                         echo " "
4740                         echo "Whoops!  This is an AIX system without /lib/syscalls.exp!" >&4
4741                         echo "'nm' won't be sufficient on this sytem." >&4
4742                         dflt=n
4743                 fi
4744                 ;;
4745         esac
4746         case "$dflt" in
4747         '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
4748                 if $test $dflt -gt 20; then
4749                         dflt=y
4750                 else
4751                         dflt=n
4752                 fi
4753                 ;;
4754         esac
4755         ;;
4756 *)
4757         case "$usenm" in
4758         true|$define) dflt=y;;
4759         *) dflt=n;;
4760         esac
4761         ;;
4762 esac
4763 $cat <<EOM
4764
4765 I can use $nm to extract the symbols from your C libraries. This
4766 is a time consuming task which may generate huge output on the disk (up
4767 to 3 megabytes) but that should make the symbols extraction faster. The
4768 alternative is to skip the 'nm' extraction part and to compile a small
4769 test program instead to determine whether each symbol is present. If
4770 you have a fast C compiler and/or if your 'nm' output cannot be parsed,
4771 this may be the best solution.
4772
4773 You probably shouldn't let me use 'nm' if you are using the GNU C Library.
4774
4775 EOM
4776 rp="Shall I use $nm to extract C symbols from the libraries?"
4777 . ./myread
4778 case "$ans" in
4779 [Nn]*) usenm=false;;
4780 *) usenm=true;;
4781 esac
4782
4783 runnm=$usenm
4784 case "$reuseval" in
4785 true) runnm=false;;
4786 esac
4787
4788 : nm options which may be necessary
4789 case "$nm_opt" in
4790 '') if $test -f /mach_boot; then
4791                 nm_opt=''       # Mach
4792         elif $test -d /usr/ccs/lib; then
4793                 nm_opt='-p'     # Solaris (and SunOS?)
4794         elif $test -f /dgux; then
4795                 nm_opt='-p'     # DG-UX
4796         elif $test -f /lib64/rld; then
4797                 nm_opt='-p'     # 64-bit Irix
4798         else
4799                 nm_opt=''
4800         fi;;
4801 esac
4802
4803 : nm options which may be necessary for shared libraries but illegal
4804 : for archive libraries.  Thank you, Linux.
4805 case "$nm_so_opt" in
4806 '')     case "$myuname" in
4807         *linux*)
4808                 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
4809                         nm_so_opt='--dynamic'
4810                 fi
4811                 ;;
4812         esac
4813         ;;
4814 esac
4815
4816 case "$runnm" in
4817 true)
4818 : get list of predefined functions in a handy place
4819 echo " "
4820 case "$libc" in
4821 '') libc=unknown
4822         case "$libs" in
4823         *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
4824         esac
4825         ;;
4826 esac
4827 libnames='';
4828 case "$libs" in
4829 '') ;;
4830 *)  for thislib in $libs; do
4831         case "$thislib" in
4832         -lc|-lc_s)
4833                 : Handle C library specially below.
4834                 ;;
4835         -l*)
4836                 thislib=`echo $thislib | $sed -e 's/^-l//'`
4837                 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
4838                         :
4839                 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
4840                         :
4841                 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
4842                         :
4843                 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
4844                         :
4845                 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
4846                         :
4847                 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
4848                         :
4849                 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
4850                         :
4851                 else
4852                         try=''
4853                 fi
4854                 libnames="$libnames $try"
4855                 ;;
4856         *) libnames="$libnames $thislib" ;;
4857         esac
4858         done
4859         ;;
4860 esac
4861 xxx=normal
4862 case "$libc" in
4863 unknown)
4864         set /lib/libc.$so
4865         for xxx in $libpth; do
4866                 $test -r $1 || set $xxx/libc.$so
4867                 : The messy sed command sorts on library version numbers.
4868                 $test -r $1 || \
4869                         set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
4870                         tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
4871                                 h
4872                                 s/[0-9][0-9]*/0000&/g
4873                                 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
4874                                 G
4875                                 s/\n/ /' | \
4876                          $sort | $sed -e 's/^.* //'`
4877                 eval set \$$#
4878         done
4879         $test -r $1 || set /usr/ccs/lib/libc.$so
4880         $test -r $1 || set /lib/libsys_s$_a
4881         ;;
4882 *)
4883         set blurfl
4884         ;;
4885 esac
4886 if $test -r "$1"; then
4887         echo "Your (shared) C library seems to be in $1."
4888         libc="$1"
4889 elif $test -r /lib/libc && $test -r /lib/clib; then
4890         echo "Your C library seems to be in both /lib/clib and /lib/libc."
4891         xxx=apollo
4892         libc='/lib/clib /lib/libc'
4893         if $test -r /lib/syslib; then
4894                 echo "(Your math library is in /lib/syslib.)"
4895                 libc="$libc /lib/syslib"
4896         fi
4897 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
4898         echo "Your C library seems to be in $libc, as you said before."
4899 elif $test -r $incpath/usr/lib/libc$_a; then
4900         libc=$incpath/usr/lib/libc$_a;
4901         echo "Your C library seems to be in $libc.  That's fine."
4902 elif $test -r /lib/libc$_a; then
4903         libc=/lib/libc$_a;
4904         echo "Your C library seems to be in $libc.  You're normal."
4905 else
4906         if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
4907                 :
4908         elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
4909                 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
4910         elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
4911                 :
4912         elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
4913                 :
4914         elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
4915                 :
4916         else
4917                 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
4918         fi
4919         if $test -r "$tans"; then
4920                 echo "Your C library seems to be in $tans, of all places."
4921                 libc=$tans
4922         else
4923                 libc='blurfl'
4924         fi
4925 fi
4926 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
4927         dflt="$libc"
4928         cat <<EOM
4929
4930 If the guess above is wrong (which it might be if you're using a strange
4931 compiler, or your machine supports multiple models), you can override it here.
4932
4933 EOM
4934 else
4935         dflt=''
4936         echo $libpth | $tr ' ' $trnl | $sort | $uniq > libpath
4937         cat >&4 <<EOM
4938 I can't seem to find your C library.  I've looked in the following places:
4939
4940 EOM
4941         $sed 's/^/      /' libpath
4942         cat <<EOM
4943
4944 None of these seems to contain your C library. I need to get its name...
4945
4946 EOM
4947 fi
4948 fn=f
4949 rp='Where is your C library?'
4950 . ./getfile
4951 libc="$ans"
4952
4953 echo " "
4954 echo $libc $libnames | $tr ' ' $trnl | $sort | $uniq > libnames
4955 set X `cat libnames`
4956 shift
4957 xxx=files
4958 case $# in 1) xxx=file; esac
4959 echo "Extracting names from the following $xxx for later perusal:" >&4
4960 echo " "
4961 $sed 's/^/      /' libnames >&4
4962 echo " "
4963 $echo $n "This may take a while...$c" >&4
4964
4965 for file in $*; do
4966         case $file in
4967         *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
4968         *) $nm $nm_opt $file 2>/dev/null;;
4969         esac
4970 done >libc.tmp
4971
4972 $echo $n ".$c"
4973 $grep fprintf libc.tmp > libc.ptf
4974 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
4975 xrun='eval "<libc.tmp $com >libc.list"; echo "done" >&4'
4976 xxx='[ADTSIW]'
4977 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx  *_[_.]*//p' -e 's/^.* $xxx  *//p'";\
4978         eval $xscan;\
4979         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4980                 eval $xrun
4981 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
4982         eval $xscan;\
4983         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4984                 eval $xrun
4985 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
4986         eval $xscan;\
4987         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4988                 eval $xrun
4989 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
4990         eval $xscan;\
4991         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4992                 eval $xrun
4993 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
4994         eval $xscan;\
4995         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4996                 eval $xrun
4997 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
4998         eval $xscan;\
4999         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5000                 eval $xrun
5001 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
5002                                 -e '/ file/d' -e 's/^\([^       ]*\).*/\1/p'";\
5003         eval $xscan;\
5004         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5005                 eval $xrun
5006 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
5007         eval $xscan;\
5008         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5009                 eval $xrun
5010 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
5011         eval $xscan;\
5012         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5013                 eval $xrun
5014 elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
5015         eval $xscan;\
5016         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5017                 eval $xrun
5018 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
5019         eval $xscan;\
5020         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5021                 eval $xrun
5022 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
5023         eval $xscan;\
5024         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5025                 eval $xrun
5026 elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
5027         eval $xscan;\
5028         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5029                 eval $xrun
5030 elif com="sed -n -e 's/^__.*//' -e 's/[       ]*D[    ]*[0-9]*.*//p'";\
5031         eval $xscan;\
5032         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5033                 eval $xrun
5034 else
5035         $nm -p $* 2>/dev/null >libc.tmp
5036         $grep fprintf libc.tmp > libc.ptf
5037         if com="$sed -n -e 's/^.* [ADTSIW]  *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
5038                 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
5039         then
5040                 nm_opt='-p'
5041                 eval $xrun
5042         else
5043                 echo " "
5044                 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
5045                 com=''
5046                 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
5047                         for thisname in $libnames $libc; do
5048                                 $ar t $thisname >>libc.tmp
5049                         done
5050                         $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
5051                         echo "Ok." >&4
5052                 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
5053                         # Repeat libc to extract forwarders to DLL entries too
5054                         for thisname in $libnames $libc; do
5055                                 $ar tv $thisname >>libc.tmp
5056                                 # Revision 50 of EMX has bug in $ar.
5057                                 # it will not extract forwarders to DLL entries
5058                                 # Use emximp which will extract exactly them.
5059                                 emximp -o tmp.imp $thisname \
5060                                     2>/dev/null && \
5061                                     $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
5062                                     < tmp.imp >>libc.tmp
5063                                 $rm tmp.imp
5064                         done
5065                         $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
5066                         echo "Ok." >&4
5067                 else
5068                         echo "$ar didn't seem to work right." >&4
5069                         echo "Maybe this is a Cray...trying bld instead..." >&4
5070                         if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
5071                         then
5072                                 for thisname in $libnames; do
5073                                         bld t $libnames | \
5074                                         $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
5075                                         $ar t $thisname >>libc.tmp
5076                                 done
5077                                 echo "Ok." >&4
5078                         else
5079                                 echo "That didn't work either.  Giving up." >&4
5080                                 exit 1
5081                         fi
5082                 fi
5083         fi
5084 fi
5085 nm_extract="$com"
5086 if $test -f /lib/syscalls.exp; then
5087         echo " "
5088         echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
5089         $sed -n 's/^\([^        ]*\)[   ]*syscall[0-9]*$/\1/p' /lib/syscalls.exp >>libc.list
5090 fi
5091 ;;
5092 esac
5093 $rm -f libnames libpath
5094
5095 : is a C symbol defined?
5096 csym='tlook=$1;
5097 case "$3" in
5098 -v) tf=libc.tmp; tc=""; tdc="";;
5099 -a) tf=libc.tmp; tc="[0]"; tdc="[]";;
5100 *) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";;
5101 esac;
5102 tx=yes;
5103 case "$reuseval-$4" in
5104 true-) ;;
5105 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
5106 esac;
5107 case "$tx" in
5108 yes)
5109         case "$runnm" in
5110         true)
5111                 if $contains $tlook $tf >/dev/null 2>&1;
5112                 then tval=true;
5113                 else tval=false;
5114                 fi;;
5115         *)
5116                 echo "int main() { extern short $1$tdc; printf(\"%hd\", $1$tc); }" > t.c;
5117                 if $cc -o t $optimize $ccflags $ldflags t.c $libs >/dev/null 2>&1;
5118                 then tval=true;
5119                 else tval=false;
5120                 fi;
5121                 $rm -f t t.c;;
5122         esac;;
5123 *)
5124         case "$tval" in
5125         $define) tval=true;;
5126         *) tval=false;;
5127         esac;;
5128 esac;
5129 eval "$2=$tval"'
5130
5131 : define an is-in-libc? function
5132 inlibc='echo " "; td=$define; tu=$undef;
5133 sym=$1; var=$2; eval "was=\$$2";
5134 tx=yes;
5135 case "$reuseval$was" in
5136 true) ;;
5137 true*) tx=no;;
5138 esac;
5139 case "$tx" in
5140 yes)
5141         set $sym tres -f;
5142         eval $csym;
5143         case "$tres" in
5144         true)
5145                 echo "$sym() found." >&4;
5146                 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
5147         *)
5148                 echo "$sym() NOT found." >&4;
5149                 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
5150         esac;;
5151 *)
5152         case "$was" in
5153         $define) echo "$sym() found." >&4;;
5154         *) echo "$sym() NOT found." >&4;;
5155         esac;;
5156 esac'
5157
5158 : see if sqrtl exists
5159 set sqrtl d_sqrtl
5160 eval $inlibc
5161
5162 case "$ccflags" in
5163 *-DUSE_LONG_DOUBLE*|*-DUSE_MORE_BITS*) uselongdouble="$define" ;;
5164 esac
5165
5166 case "$uselongdouble" in
5167 $define|true|[yY]*)     dflt='y';;
5168 *) dflt='n';;
5169 esac
5170 cat <<EOM
5171
5172 Perl can be built to take advantage of long doubles which
5173 (if available) may give more accuracy and range for floating point numbers.
5174
5175 If this doesn't make any sense to you, just accept the default '$dflt'.
5176 EOM
5177 rp='Try to use long doubles if available?'
5178 . ./myread
5179 case "$ans" in
5180 y|Y)    val="$define"   ;;
5181 *)      val="$undef"    ;;
5182 esac
5183 set uselongdouble
5184 eval $setvar
5185
5186 case "$uselongdouble" in
5187 true|[yY]*) uselongdouble="$define" ;;
5188 esac
5189
5190 case "$uselongdouble" in
5191 $define)
5192 : Look for a hint-file generated 'call-back-unit'.  If the
5193 : user has specified that long doubles should be used,
5194 : we may need to set or change some other defaults.
5195         if $test -f uselongdouble.cbu; then
5196                 echo "Your platform has some specific hints for long doubles, using them..."
5197                 . ./uselongdouble.cbu
5198         else
5199                 $cat <<EOM
5200 (Your platform doesn't have any specific hints for long doubles.)
5201 EOM
5202         fi
5203         ;;
5204 esac
5205
5206 case "$uselongdouble:$d_sqrtl" in
5207 $define:$undef)
5208                 $cat <<EOM >&4
5209
5210 *** You requested the use of long doubles but you do not seem to have
5211 *** the mathematic functions for long doubles.  I'm disabling the use
5212 *** of long doubles.
5213
5214 EOM
5215         uselongdouble=$undef
5216         ;;
5217 esac
5218
5219 : check for length of double
5220 echo " "
5221 case "$doublesize" in
5222 '')
5223         echo "Checking to see how big your double precision numbers are..." >&4
5224         $cat >try.c <<'EOCP'
5225 #include <stdio.h>
5226 int main()
5227 {
5228     printf("%d\n", (int)sizeof(double));
5229     exit(0);
5230 }
5231 EOCP
5232         set try
5233         if eval $compile_ok; then
5234                 doublesize=`./try`
5235                 echo "Your double is $doublesize bytes long."
5236         else
5237                 dflt='8'
5238                 echo "(I can't seem to compile the test program.  Guessing...)"
5239                 rp="What is the size of a double precision number (in bytes)?"
5240                 . ./myread
5241                 doublesize="$ans"
5242         fi
5243         ;;
5244 esac
5245 $rm -f try.c try
5246
5247 : check for long doubles
5248 echo " "
5249 echo "Checking to see if you have long double..." >&4
5250 echo 'int main() { long double x = 7.0; }' > try.c
5251 set try
5252 if eval $compile; then
5253         val="$define"
5254         echo "You have long double."
5255 else
5256         val="$undef"
5257         echo "You do not have long double."
5258 fi
5259 $rm try.*
5260 set d_longdbl
5261 eval $setvar
5262
5263 : check for length of long double
5264 case "${d_longdbl}${longdblsize}" in
5265 $define)
5266         echo " "
5267         echo "Checking to see how big your long doubles are..." >&4
5268         $cat >try.c <<'EOCP'
5269 #include <stdio.h>
5270 int main()
5271 {
5272         printf("%d\n", sizeof(long double));
5273 }
5274 EOCP
5275         set try
5276         set try
5277         if eval $compile; then
5278                 longdblsize=`./try$exe_ext`
5279                 echo "Your long doubles are $longdblsize bytes long."
5280         else
5281                 dflt='8'
5282                 echo " "
5283                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
5284                 rp="What is the size of a long double (in bytes)?"
5285                 . ./myread
5286                 longdblsize="$ans"
5287         fi
5288         if $test "X$doublesize" = "X$longdblsize"; then
5289                 echo "(That isn't any different from an ordinary double.)"
5290         fi      
5291         ;;
5292 esac
5293 $rm -f try.* try
5294
5295 case "$useperlio" in
5296 $define|true|[yY]*)     dflt='y';;
5297 *) dflt='n';;
5298 esac
5299 cat <<EOM
5300
5301 Previous version of $package used the standard IO mechanisms as
5302 defined in <stdio.h>.  Versions 5.003_02 and later of perl allow
5303 alternate IO mechanisms via the PerlIO abstraction layer, but the
5304 stdio mechanism is still the default.  This abstraction layer can
5305 use AT&T's sfio (if you already have sfio installed) or regular stdio.
5306 Using PerlIO with sfio may cause problems with some extension modules.
5307
5308 If this doesn't make any sense to you, just accept the default '$dflt'.
5309 EOM
5310 rp='Use the experimental PerlIO abstraction layer?'
5311 . ./myread
5312 case "$ans" in
5313 y|Y) 
5314         val="$define"
5315         ;;     
5316 *)      
5317         echo "Ok, doing things the stdio way."
5318         val="$undef"
5319         ;;
5320 esac
5321 set useperlio
5322 eval $setvar 
5323
5324 case "$usesocks" in
5325 $define|true|[yY]*)
5326         case "$useperlio" in
5327         $define|true|[yY]*) ;;
5328         *)      cat >&4 <<EOM
5329
5330 You are using the SOCKS proxy protocol library which means that you
5331 should also use the PerlIO layer.  You may be headed for trouble.
5332
5333 EOM
5334                 ;;
5335         esac
5336         ;;
5337 esac
5338
5339         
5340 : determine the architecture name
5341 echo " "
5342 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
5343         tarch=`arch`"-$osname"
5344 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
5345         if uname -m > tmparch 2>&1 ; then
5346                 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
5347                         -e 's/$/'"-$osname/" tmparch`
5348         else
5349                 tarch="$osname"
5350         fi
5351         $rm -f tmparch
5352 else
5353         tarch="$osname"
5354 fi
5355 case "$myarchname" in
5356 ''|"$tarch") ;;
5357 *)
5358         echo "(Your architecture name used to be $myarchname.)"
5359         archname=''
5360         ;;
5361 esac
5362 myarchname="$tarch"
5363 case "$archname" in
5364 '') dflt="$tarch";;
5365 *) dflt="$archname";;
5366 esac
5367 rp='What is your architecture name'
5368 . ./myread
5369 archname="$ans"
5370 case "$usethreads" in
5371 $define)
5372         echo "Threads selected." >&4
5373         case "$archname" in
5374         *-thread*) echo "...and architecture name already has -thread." >&4
5375                 ;;
5376         *)      archname="$archname-thread"
5377                 echo "...setting architecture name to $archname." >&4
5378                 ;;
5379         esac
5380         ;;
5381 esac
5382 case "$usemultiplicity" in
5383 $define)
5384         echo "Multiplicity selected." >&4
5385         case "$archname" in
5386         *-multi*) echo "...and architecture name already has -multi." >&4
5387                 ;;
5388         *)      archname="$archname-multi"
5389                 echo "...setting architecture name to $archname." >&4
5390                 ;;
5391         esac
5392         ;;
5393 esac
5394 case "$use64bitint$use64bitall" in
5395 *"$define"*)
5396         case "$archname64" in
5397         '')
5398                 echo "This architecture is naturally 64-bit, not changing architecture name." >&4
5399                 ;;
5400         *)
5401                 case "$use64bitint" in
5402                 "$define") echo "64 bit integers selected." >&4 ;;
5403                 esac
5404                 case "$use64bitall" in
5405                 "$define") echo "Maximal 64 bitness selected." >&4 ;;
5406                 esac
5407                 case "$archname" in
5408                 *-$archname64*) echo "...and architecture name already has $archname64." >&4
5409                         ;;
5410                 *)      archname="$archname-$archname64"
5411                         echo "...setting architecture name to $archname." >&4
5412                         ;;
5413                 esac
5414                 ;;
5415         esac
5416 esac
5417 case "$uselongdouble" in
5418 $define)
5419         echo "Long doubles selected." >&4
5420         case "$longdblsize" in
5421         $doublesize)
5422                 "...but long doubles are equal to doubles, not changing architecture name." >&4
5423                 ;;
5424         *)
5425                 case "$archname" in
5426                 *-ld*) echo "...and architecture name already has -ld." >&4
5427                         ;;
5428                 *)      archname="$archname-ld"
5429                         echo "...setting architecture name to $archname." >&4
5430                         ;;
5431                 esac
5432                 ;;
5433         esac
5434         ;;
5435 esac
5436 case "$useperlio" in
5437 $define)
5438         echo "Perlio selected." >&4
5439         case "$archname" in
5440         *-perlio*) echo "...and architecture name already has -perlio." >&4
5441                 ;;
5442         *)      archname="$archname-perlio"
5443                 echo "...setting architecture name to $archname." >&4
5444                 ;;
5445         esac
5446         ;;
5447 esac
5448
5449 : determine root of directory hierarchy where package will be installed.
5450 case "$prefix" in
5451 '')
5452         dflt=`./loc . /usr/local /usr/local /local /opt /usr`
5453         ;;
5454 *)
5455         dflt="$prefix"
5456         ;;
5457 esac
5458 $cat <<EOM
5459
5460 By default, $package will be installed in $dflt/bin, manual pages
5461 under $dflt/man, etc..., i.e. with $dflt as prefix for all
5462 installation directories. Typically this is something like /usr/local.
5463 If you wish to have binaries under /usr/bin but other parts of the
5464 installation under /usr/local, that's ok: you will be prompted
5465 separately for each of the installation directories, the prefix being
5466 only used to set the defaults.
5467
5468 EOM
5469 fn=d~
5470 rp='Installation prefix to use?'
5471 . ./getfile
5472 oldprefix=''
5473 case "$prefix" in
5474 '') ;;
5475 *)
5476         case "$ans" in
5477         "$prefix") ;;
5478         *) oldprefix="$prefix";;
5479         esac
5480         ;;
5481 esac
5482 prefix="$ans"
5483 prefixexp="$ansexp"
5484
5485 : is AFS running?
5486 echo " "
5487 case "$afs" in
5488 $define|true)   afs=true ;;
5489 $undef|false)   afs=false ;;
5490 *)      if test -d /afs; then
5491                 afs=true
5492         else
5493                 afs=false
5494         fi
5495         ;;
5496 esac
5497 if $afs; then
5498         echo "AFS may be running... I'll be extra cautious then..." >&4
5499 else
5500         echo "AFS does not seem to be running..." >&4
5501 fi
5502
5503 : determine installation prefix for where package is to be installed.
5504 if $afs; then 
5505 $cat <<EOM
5506
5507 Since you are running AFS, I need to distinguish the directory in which
5508 files will reside from the directory in which they are installed (and from
5509 which they are presumably copied to the former directory by occult means).
5510
5511 EOM
5512         case "$installprefix" in
5513         '') dflt=`echo $prefix | sed 's#^/afs/#/afs/.#'`;;
5514         *) dflt="$installprefix";;
5515         esac
5516 else
5517 $cat <<EOM
5518
5519 In some special cases, particularly when building $package for distribution,
5520 it is convenient to distinguish between the directory in which files should 
5521 be installed from the directory ($prefix) in which they 
5522 will eventually reside.  For most users, these two directories are the same.
5523
5524 EOM
5525         case "$installprefix" in
5526         '') dflt=$prefix ;;
5527         *) dflt=$installprefix;;
5528         esac
5529 fi
5530 fn=d~
5531 rp='What installation prefix should I use for installing files?'
5532 . ./getfile
5533 installprefix="$ans"
5534 installprefixexp="$ansexp"
5535
5536 : set the prefixit variable, to compute a suitable default value
5537 prefixit='case "$3" in
5538 ""|none)
5539         case "$oldprefix" in
5540         "") eval "$1=\"\$$2\"";;
5541         *)
5542                 case "$3" in
5543                 "") eval "$1=";;
5544                 none)
5545                         eval "tp=\"\$$2\"";
5546                         case "$tp" in
5547                         ""|" ") eval "$1=\"\$$2\"";;
5548                         *) eval "$1=";;
5549                         esac;;
5550                 esac;;
5551         esac;;
5552 *)
5553         eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
5554         case "$tp" in
5555         --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
5556         /*-$oldprefix/*|\~*-$oldprefix/*)
5557                 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
5558         *) eval "$1=\"\$$2\"";;
5559         esac;;
5560 esac'
5561
5562
5563 : get the patchlevel
5564 echo " "
5565 echo "Getting the current patchlevel..." >&4
5566 if $test -r $rsrc/patchlevel.h;then
5567         revision=`awk '/define[         ]+PERL_REVISION/ {print $3}' $rsrc/patchlevel.h`
5568         patchlevel=`awk '/define[       ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
5569         subversion=`awk '/define[       ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
5570         api_revision=`awk '/define[     ]+PERL_API_REVISION/ {print $3}' $rsrc/patchlevel.h`
5571         api_version=`awk '/define[      ]+PERL_API_VERSION/ {print $3}' $rsrc/patchlevel.h`
5572         api_subversion=`awk '/define[   ]+PERL_API_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
5573 else
5574         revision=0
5575         patchlevel=0
5576         subversion=0
5577         api_revision=0
5578         api_version=0
5579         api_subversion=0
5580 fi
5581 $echo "(You have $package version $patchlevel subversion $subversion.)"
5582 case "$osname" in
5583 dos|vms)
5584         : XXX Should be a Configure test for double-dots in filenames.
5585         version=`echo $revision $patchlevel $subversion | \
5586                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
5587         api_versionstring=`echo $api_revision $api_version $api_subversion | \
5588                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
5589         ;;
5590 *)
5591         version=`echo $revision $patchlevel $subversion | \
5592                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
5593         api_versionstring=`echo $api_revision $api_version $api_subversion | \
5594                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
5595         ;;
5596 esac
5597 : Special case the 5.005_xx maintenance series, which used 5.005
5598 : without any subversion label as a subdirectory in $sitelib
5599 if test "${api_revision}${api_version}${api_subversion}" = "550"; then
5600         api_versionstring='5.005'
5601 fi
5602
5603 : determine installation style
5604 : For now, try to deduce it from prefix unless it is already set.
5605 : Reproduce behavior of 5.005 and earlier, maybe drop that in 5.7.
5606 case "$installstyle" in
5607 '')     case "$prefix" in
5608                 *perl*) dflt='lib';;
5609                 *) dflt='lib/perl5' ;;
5610         esac
5611         ;;
5612 *)      dflt="$installstyle" ;;
5613 esac
5614 : Probably not worth prompting for this since we prompt for all
5615 : the directories individually, and the prompt would be too long and
5616 : confusing anyway.
5617 installstyle=$dflt
5618
5619 : determine where private library files go
5620 : Usual default is /usr/local/lib/perl5/$version.
5621 : Also allow things like /opt/perl/lib/$version, since 
5622 : /opt/perl/lib/perl5... would be redundant.
5623 : The default "style" setting is made in installstyle.U
5624 case "$installstyle" in
5625 *lib/perl5*) set dflt privlib lib/$package/$version ;;
5626 *)       set dflt privlib lib/$version ;;
5627 esac
5628 eval $prefixit
5629 $cat <<EOM
5630
5631 There are some auxiliary files for $package that need to be put into a
5632 private library directory that is accessible by everyone.
5633
5634 EOM
5635 fn=d~+
5636 rp='Pathname where the private library files will reside?'
5637 . ./getfile
5638 privlib="$ans"
5639 privlibexp="$ansexp"
5640 : Change installation prefix, if necessary.
5641 if $test X"$prefix" != X"$installprefix"; then
5642         installprivlib=`echo $privlibexp | sed "s#^$prefix#$installprefix#"`
5643 else
5644         installprivlib="$privlibexp"
5645 fi
5646
5647 : set the prefixup variable, to restore leading tilda escape
5648 prefixup='case "$prefixexp" in
5649 "$prefix") ;;
5650 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
5651 esac'
5652
5653 : determine where public architecture dependent libraries go
5654 set archlib archlib
5655 eval $prefixit
5656 : privlib default is /usr/local/lib/$package/$version
5657 : archlib default is /usr/local/lib/$package/$version/$archname
5658 : privlib may have an optional trailing /share.
5659 tdflt=`echo $privlib | $sed 's,/share$,,'`
5660 tdflt=$tdflt/$archname
5661 case "$archlib" in
5662 '')     dflt=$tdflt
5663         ;;
5664 *)      dflt="$archlib"
5665     ;;
5666 esac
5667 $cat <<EOM
5668
5669 $spackage contains architecture-dependent library files.  If you are
5670 sharing libraries in a heterogeneous environment, you might store
5671 these files in a separate location.  Otherwise, you can just include
5672 them with the rest of the public library files.
5673
5674 EOM
5675 fn=d+~
5676 rp='Where do you want to put the public architecture-dependent libraries?'
5677 . ./getfile
5678 archlib="$ans"
5679 archlibexp="$ansexp"
5680 if $test X"$archlib" = X"$privlib"; then
5681         d_archlib="$undef"
5682 else
5683         d_archlib="$define"
5684 fi
5685 : Change installation prefix, if necessary.
5686 if $test X"$prefix" != X"$installprefix"; then
5687         installarchlib=`echo $archlibexp | sed "s#^$prefix#$installprefix#"`
5688 else
5689         installarchlib="$archlibexp"
5690 fi
5691
5692
5693 : Binary compatibility with 5.005 is not possible for builds
5694 : with advanced features
5695 case "$usethreads$usemultiplicity" in
5696 *define*)
5697         bincompat5005="$undef"
5698         d_bincompat5005="$undef"
5699         ;;
5700 *)      $cat <<EOM
5701
5702 This version of Perl can be compiled for binary compatibility with 5.005.
5703 If you decide to do so, you will be able to continue using most of the
5704 extensions that were compiled for Perl 5.005.
5705
5706 EOM
5707         case "$bincompat5005$d_bincompat5005" in
5708         *"$undef"*) dflt=n ;;
5709         *) dflt=y ;;
5710         esac
5711         rp='Binary compatibility with Perl 5.005?'
5712         . ./myread
5713         case "$ans" in
5714         y*) val="$define" ;;
5715         *)  val="$undef" ;;
5716         esac
5717         set d_bincompat5005
5718         eval $setvar
5719         case "$d_bincompat5005" in
5720         "$define")
5721                 bincompat5005="$define"
5722                 ;;
5723         *)      bincompat5005="$undef"
5724                 d_bincompat5005="$undef"
5725                 ;;
5726         esac
5727         ;;
5728 esac
5729
5730
5731 : see if setuid scripts can be secure
5732 $cat <<EOM
5733
5734 Some kernels have a bug that prevents setuid #! scripts from being
5735 secure.  Some sites have disabled setuid #! scripts because of this.
5736
5737 First let's decide if your kernel supports secure setuid #! scripts.
5738 (If setuid #! scripts would be secure but have been disabled anyway,
5739 don't say that they are secure if asked.)
5740
5741 EOM
5742
5743 val="$undef"
5744 if $test -d /dev/fd; then
5745         echo "#!$ls" >reflect
5746         chmod +x,u+s reflect
5747         ./reflect >flect 2>&1
5748         if $contains "/dev/fd" flect >/dev/null; then
5749                 echo "Congratulations, your kernel has secure setuid scripts!" >&4
5750                 val="$define"
5751         else
5752                 $cat <<EOM
5753 If you are not sure if they are secure, I can check but I'll need a
5754 username and password different from the one you are using right now.
5755 If you don't have such a username or don't want me to test, simply
5756 enter 'none'.
5757
5758 EOM
5759                 rp='Other username to test security of setuid scripts with?'
5760                 dflt='none'
5761                 . ./myread
5762                 case "$ans" in
5763                 n|none)
5764                         case "$d_suidsafe" in
5765                         '')     echo "I'll assume setuid scripts are *not* secure." >&4
5766                                 dflt=n;;
5767                         "$undef")
5768                                 echo "Well, the $hint value is *not* secure." >&4
5769                                 dflt=n;;
5770                         *)      echo "Well, the $hint value *is* secure." >&4
5771                                 dflt=y;;
5772                         esac
5773                         ;;
5774                 *)
5775                         $rm -f reflect flect
5776                         echo "#!$ls" >reflect
5777                         chmod +x,u+s reflect
5778                         echo >flect
5779                         chmod a+w flect
5780                         echo '"su" will (probably) prompt you for '"$ans's password."
5781                         su $ans -c './reflect >flect'
5782                         if $contains "/dev/fd" flect >/dev/null; then
5783                                 echo "Okay, it looks like setuid scripts are secure." >&4
5784                                 dflt=y
5785                         else
5786                                 echo "I don't think setuid scripts are secure." >&4
5787                                 dflt=n
5788                         fi
5789                         ;;
5790                 esac
5791                 rp='Does your kernel have *secure* setuid scripts?'
5792                 . ./myread
5793                 case "$ans" in
5794                 [yY]*)  val="$define";;
5795                 *)      val="$undef";;
5796                 esac
5797         fi
5798 else
5799         echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
5800         echo "(That's for file descriptors, not floppy disks.)"
5801         val="$undef"
5802 fi
5803 set d_suidsafe
5804 eval $setvar
5805
5806 $rm -f reflect flect
5807
5808 : now see if they want to do setuid emulation
5809 echo " "
5810 val="$undef"
5811 case "$d_suidsafe" in
5812 "$define")
5813         val="$undef"
5814         echo "No need to emulate SUID scripts since they are secure here." >& 4
5815         ;;
5816 *)
5817         $cat <<EOM
5818 Some systems have disabled setuid scripts, especially systems where
5819 setuid scripts cannot be secure.  On systems where setuid scripts have
5820 been disabled, the setuid/setgid bits on scripts are currently
5821 useless.  It is possible for $package to detect those bits and emulate
5822 setuid/setgid in a secure fashion.  This emulation will only work if
5823 setuid scripts have been disabled in your kernel.
5824
5825 EOM
5826         case "$d_dosuid" in
5827         "$define") dflt=y ;;
5828         *) dflt=n ;;
5829         esac
5830         rp="Do you want to do setuid/setgid emulation?"
5831         . ./myread
5832         case "$ans" in
5833         [yY]*)  val="$define";;
5834         *)      val="$undef";;
5835         esac
5836         ;;
5837 esac
5838 set d_dosuid
5839 eval $setvar
5840
5841 : determine filename position in cpp output
5842 echo " "
5843 echo "Computing filename position in cpp output for #include directives..." >&4
5844 echo '#include <stdio.h>' > foo.c
5845 $cat >fieldn <<EOF
5846 $startsh
5847 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
5848 $grep '^[       ]*#.*stdio\.h' | \
5849 while read cline; do
5850         pos=1
5851         set \$cline
5852         while $test \$# -gt 0; do
5853                 if $test -r \`echo \$1 | $tr -d '"'\`; then
5854                         echo "\$pos"
5855                         exit 0
5856                 fi
5857                 shift
5858                 pos=\`expr \$pos + 1\`
5859         done
5860 done
5861 EOF
5862 chmod +x fieldn
5863 fieldn=`./fieldn`
5864 $rm -f foo.c fieldn
5865 case $fieldn in
5866 '') pos='???';;
5867 1) pos=first;;
5868 2) pos=second;;
5869 3) pos=third;;
5870 *) pos="${fieldn}th";;
5871 esac
5872 echo "Your cpp writes the filename in the $pos field of the line."
5873
5874 : locate header file
5875 $cat >findhdr <<EOF
5876 $startsh
5877 wanted=\$1
5878 name=''
5879 for usrincdir in $usrinc
5880 do
5881         if test -f \$usrincdir/\$wanted; then
5882                 echo "\$usrincdir/\$wanted"
5883                 exit 0
5884         fi
5885 done
5886 awkprg='{ print \$$fieldn }'
5887 echo "#include <\$wanted>" > foo\$\$.c
5888 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
5889 $grep "^[       ]*#.*\$wanted" | \
5890 while read cline; do
5891         name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
5892         case "\$name" in
5893         *[/\\\\]\$wanted) echo "\$name"; exit 1;;
5894         *[\\\\/]\$wanted) echo "\$name"; exit 1;;
5895         *) exit 2;;
5896         esac;
5897 done;
5898 #
5899 # status = 0: grep returned 0 lines, case statement not executed
5900 # status = 1: headerfile found
5901 # status = 2: while loop executed, no headerfile found
5902 #
5903 status=\$?
5904 $rm -f foo\$\$.c;
5905 if test \$status -eq 1; then
5906         exit 0;
5907 fi
5908 exit 1
5909 EOF
5910 chmod +x findhdr
5911
5912 : define an alternate in-header-list? function
5913 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
5914 cont=true; xxf="echo \"<\$1> found.\" >&4";
5915 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
5916 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
5917 esac;
5918 case $# in 4) instead=instead;; *) instead="at last";; esac;
5919 while $test "$cont"; do
5920         xxx=`./findhdr $1`
5921         var=$2; eval "was=\$$2";
5922         if $test "$xxx" && $test -r "$xxx";
5923         then eval $xxf;
5924         eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
5925                 cont="";
5926         else eval $xxnf;
5927         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
5928         set $yyy; shift; shift; yyy=$@;
5929         case $# in 0) cont="";;
5930         2) xxf="echo \"but I found <\$1> $instead.\" >&4";
5931                 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
5932         *) xxf="echo \"but I found <\$1\> instead.\" >&4";
5933                 xxnf="echo \"there is no <\$1>, ...\" >&4";;
5934         esac;
5935 done;
5936 while $test "$yyy";
5937 do set $yyy; var=$2; eval "was=\$$2";
5938         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
5939         set $yyy; shift; shift; yyy=$@;
5940 done'
5941
5942 : see if this is a malloc.h system
5943 set malloc.h i_malloc
5944 eval $inhdr
5945
5946 : see if stdlib is available
5947 set stdlib.h i_stdlib
5948 eval $inhdr
5949
5950 : determine which malloc to compile in
5951 echo " "
5952 case "$usemymalloc" in
5953 ''|[yY]*|true|$define)  dflt='y' ;;
5954 *)      dflt='n' ;;
5955 esac
5956 rp="Do you wish to attempt to use the malloc that comes with $package?"
5957 . ./myread
5958 usemymalloc="$ans"
5959 case "$ans" in
5960 y*|true)
5961         usemymalloc='y'
5962         mallocsrc='malloc.c'
5963         mallocobj="malloc$_o"
5964         d_mymalloc="$define"
5965         case "$libs" in
5966         *-lmalloc*)
5967                 : Remove malloc from list of libraries to use
5968                 echo "Removing unneeded -lmalloc from library list" >&4
5969                 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
5970                 shift
5971                 libs="$*"
5972                 echo "libs = $libs" >&4
5973                 ;;
5974         esac
5975         ;;
5976 *)
5977         usemymalloc='n'
5978         mallocsrc=''
5979         mallocobj=''
5980         d_mymalloc="$undef"
5981         ;;
5982 esac
5983
5984 : compute the return types of malloc and free
5985 echo " "
5986 $cat >malloc.c <<END
5987 #$i_malloc I_MALLOC
5988 #$i_stdlib I_STDLIB
5989 #include <stdio.h>
5990 #include <sys/types.h>
5991 #ifdef I_MALLOC
5992 #include <malloc.h>
5993 #endif
5994 #ifdef I_STDLIB
5995 #include <stdlib.h>
5996 #endif
5997 #ifdef TRY_MALLOC
5998 void *malloc();
5999 #endif
6000 #ifdef TRY_FREE
6001 void free();
6002 #endif
6003 END
6004 case "$malloctype" in
6005 '')
6006         if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
6007                 malloctype='void *'
6008         else
6009                 malloctype='char *'
6010         fi
6011         ;;
6012 esac
6013 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
6014
6015 case "$freetype" in
6016 '')
6017         if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
6018                 freetype='void'
6019         else
6020                 freetype='int'
6021         fi
6022         ;;
6023 esac
6024 echo "Your system uses $freetype free(), it would seem." >&4
6025 $rm -f malloc.[co]
6026 $cat <<EOM
6027
6028 After $package is installed, you may wish to install various
6029 add-on modules and utilities.  Typically, these add-ons will
6030 be installed under $prefix with the rest
6031 of this package.  However, you may wish to install such add-ons
6032 elsewhere under a different prefix.
6033
6034 If you do not wish to put everything under a single prefix, that's
6035 ok.  You will be prompted for the individual locations; this siteprefix
6036 is only used to suggest the defaults.
6037
6038 The default should be fine for most people.
6039
6040 EOM
6041 fn=d~+
6042 rp='Installation prefix to use for add-on modules and utilities?'
6043 : XXX Here might be another good place for an installstyle setting.
6044 case "$siteprefix" in
6045 '') dflt=$prefix ;;
6046 *)  dflt=$siteprefix ;;
6047 esac
6048 . ./getfile
6049 : XXX Prefixit unit does not yet support siteprefix and vendorprefix
6050 oldsiteprefix=''
6051 case "$siteprefix" in
6052 '') ;;
6053 *)      case "$ans" in
6054         "$prefix") ;;
6055         *) oldsiteprefix="$prefix";;
6056         esac
6057         ;;
6058 esac
6059 siteprefix="$ans"
6060 siteprefixexp="$ansexp"
6061
6062 : determine where site specific libraries go.
6063 : Usual default is /usr/local/lib/perl5/site_perl/$version
6064 : The default "style" setting is made in installstyle.U
6065 : XXX No longer works with Prefixit stuff.
6066 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6067 case "$sitelib" in
6068 '') case "$installstyle" in
6069         *lib/perl5*) dflt=$siteprefix/lib/$package/site_$prog/$version ;;
6070         *)       dflt=$siteprefix/lib/site_$prog/$version ;;
6071         esac
6072         ;;
6073 *)      dflt="$sitelib"
6074         ;;
6075 esac
6076 $cat <<EOM
6077
6078 The installation process will create a directory for
6079 site-specific extensions and modules.  Most users find it convenient
6080 to place all site-specific files in this directory rather than in the
6081 main distribution directory.
6082
6083 EOM
6084 fn=d~+
6085 rp='Pathname for the site-specific library files?'
6086 . ./getfile
6087 sitelib="$ans"
6088 sitelibexp="$ansexp"
6089 sitelib_stem=`echo "$sitelibexp" | sed "s,/$version$,,"`
6090 : Change installation prefix, if necessary.
6091 if $test X"$prefix" != X"$installprefix"; then
6092         installsitelib=`echo $sitelibexp | $sed "s#^$prefix#$installprefix#"`
6093 else
6094         installsitelib="$sitelibexp"
6095 fi
6096
6097 : determine where site specific architecture-dependent libraries go.
6098 : sitelib  default is /usr/local/lib/perl5/site_perl/$version
6099 : sitearch default is /usr/local/lib/perl5/site_perl/$version/$archname
6100 : sitelib may have an optional trailing /share.
6101 case "$sitearch" in
6102 '')     dflt=`echo $sitelib | $sed 's,/share$,,'`
6103         dflt="$dflt/$archname"
6104         ;;
6105 *)      dflt="$sitearch"
6106         ;;
6107 esac
6108 set sitearch sitearch none
6109 eval $prefixit
6110 $cat <<EOM
6111
6112 The installation process will also create a directory for
6113 architecture-dependent site-specific extensions and modules.
6114
6115 EOM
6116 fn=d~+
6117 rp='Pathname for the site-specific architecture-dependent library files?'
6118 . ./getfile
6119 sitearch="$ans"
6120 sitearchexp="$ansexp"
6121 : Change installation prefix, if necessary.
6122 if $test X"$prefix" != X"$installprefix"; then
6123         installsitearch=`echo $sitearchexp | sed "s#^$prefix#$installprefix#"`
6124 else
6125         installsitearch="$sitearchexp"
6126 fi
6127
6128 $cat <<EOM
6129
6130 The installation process will also create a directory for
6131 vendor-supplied add-ons.  Vendors who supply perl with their system
6132 may find it convenient to place all vendor-supplied files in this
6133 directory rather than in the main distribution directory.  This will
6134 ease upgrades between binary-compatible maintenance versions of perl.
6135
6136 Of course you may also use these directories in whatever way you see
6137 fit.  For example, you might use them to access modules shared over a
6138 company-wide network.
6139
6140 The default answer should be fine for most people.
6141 This causes further questions about vendor add-ons to be skipped
6142 and no vendor-specific directories will be configured for perl.
6143
6144 EOM
6145 rp='Do you want to configure vendor-specific add-on directories?'
6146 case "$usevendorprefix" in
6147 define|true|[yY]*) dflt=y ;;
6148 *)      : User may have set vendorprefix directly on Configure command line.
6149         case "$vendorprefix" in
6150         ''|' ') dflt=n ;;
6151         *)      dflt=y ;;
6152         esac
6153         ;;
6154 esac
6155 . ./myread
6156 case "$ans" in
6157 [yY]*)  fn=d~+
6158         rp='Installation prefix to use for vendor-supplied add-ons?'
6159         case "$vendorprefix" in
6160         '') dflt='' ;;
6161         *)  dflt=$vendorprefix ;;
6162         esac
6163         . ./getfile
6164         : XXX Prefixit unit does not yet support siteprefix and vendorprefix
6165         oldvendorprefix=''
6166         case "$vendorprefix" in
6167         '') ;;
6168         *)      case "$ans" in
6169                 "$prefix") ;;
6170                 *) oldvendorprefix="$prefix";;
6171                 esac
6172                 ;;
6173         esac
6174         usevendorprefix="$define"
6175         vendorprefix="$ans"
6176         vendorprefixexp="$ansexp"
6177         ;;
6178 *)      usevendorprefix="$undef"
6179         vendorprefix=''
6180         vendorprefixexp=''
6181         ;;
6182 esac
6183
6184 case "$vendorprefix" in
6185 '')     d_vendorlib="$undef"
6186         vendorlib=''
6187         vendorlibexp=''
6188         ;;
6189 *)      d_vendorlib="$define"
6190         : determine where vendor-supplied modules go.
6191         : Usual default is /usr/local/lib/perl5/vendor_perl/$version
6192         case "$vendorlib" in
6193         '')
6194                 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6195                 case "$installstyle" in
6196                 *lib/perl5*) dflt=$vendorprefix/lib/$package/vendor_$prog/$version ;;
6197                 *)           dflt=$vendorprefix/lib/vendor_$prog/$version ;;
6198                 esac
6199                 ;;
6200         *)      dflt="$vendorlib"
6201                 ;;
6202         esac
6203         fn=d~+
6204         rp='Pathname for the vendor-supplied library files?'
6205         . ./getfile
6206         vendorlib="$ans"
6207         vendorlibexp="$ansexp"
6208         ;;
6209 esac
6210 vendorlib_stem=`echo "$vendorlibexp" | sed "s,/$version$,,"`
6211 : Change installation prefix, if necessary.
6212 if $test X"$prefix" != X"$installprefix"; then
6213         installvendorlib=`echo $vendorlibexp | $sed "s#^$prefix#$installprefix#"`
6214 else
6215         installvendorlib="$vendorlibexp"
6216 fi
6217
6218 case "$vendorprefix" in
6219 '')     d_vendorarch="$undef"
6220         vendorarch=''
6221         vendorarchexp=''
6222         ;;
6223 *)      d_vendorarch="$define"
6224         : determine where vendor-supplied architecture-dependent libraries go.
6225         : vendorlib  default is /usr/local/lib/perl5/vendor_perl/$version
6226         : vendorarch default is /usr/local/lib/perl5/vendor_perl/$version/$archname
6227         : vendorlib may have an optional trailing /share.
6228         case "$vendorarch" in
6229         '')     dflt=`echo $vendorlib | $sed 's,/share$,,'`
6230                 dflt="$dflt/$archname"
6231                 ;;
6232         *)      dflt="$vendorarch" ;;
6233         esac
6234         fn=d~+
6235         rp='Pathname for vendor-supplied architecture-dependent files?'
6236         . ./getfile
6237         vendorarch="$ans"
6238         vendorarchexp="$ansexp"
6239         ;;
6240 esac
6241 : Change installation prefix, if necessary.
6242 if $test X"$prefix" != X"$installprefix"; then
6243         installvendorarch=`echo $vendorarchexp | sed "s#^$prefix#$installprefix#"`
6244 else
6245         installvendorarch="$vendorarchexp"
6246 fi
6247
6248 : Final catch-all directories to search
6249 $cat <<EOM
6250
6251 Lastly, you can have perl look in other directories for extensions and
6252 modules in addition to those already specified.
6253 These directories will be searched after 
6254         $sitearch 
6255         $sitelib 
6256 EOM
6257 test X"$vendorlib" != "X" && echo '     ' $vendorlib
6258 test X"$vendorarch" != "X" && echo '    ' $vendorarch
6259 echo ' '
6260 case "$otherlibdirs" in
6261 ''|' ') dflt='none' ;;
6262 *)      dflt="$otherlibdirs" ;;
6263 esac
6264 $cat <<EOM
6265 Enter a colon-separated set of extra paths to include in perl's @INC
6266 search path, or enter 'none' for no extra paths.
6267
6268 EOM
6269
6270 rp='Colon-separated list of additional directories for perl to search?'
6271 . ./myread
6272 case "$ans" in
6273 ' '|''|none)    otherlibdirs=' ' ;;     
6274 *)      otherlibdirs="$ans" ;;
6275 esac
6276 case "$otherlibdirs" in
6277 ' ') val=$undef ;;
6278 *)      val=$define ;;
6279 esac
6280 set d_perl_otherlibdirs
6281 eval $setvar
6282
6283 : Cruising for prototypes
6284 echo " "
6285 echo "Checking out function prototypes..." >&4
6286 $cat >prototype.c <<'EOCP'
6287 int main(int argc, char *argv[]) {
6288         exit(0);}
6289 EOCP
6290 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
6291         echo "Your C compiler appears to support function prototypes."
6292         val="$define"
6293 else
6294         echo "Your C compiler doesn't seem to understand function prototypes."
6295         val="$undef"
6296 fi
6297 set prototype
6298 eval $setvar
6299 $rm -f prototype*
6300
6301 case "$prototype" in
6302 "$define") ;;
6303 *)      ansi2knr='ansi2knr'
6304         echo " "
6305         cat <<EOM >&4
6306
6307 $me:  FATAL ERROR:
6308 This version of $package can only be compiled by a compiler that 
6309 understands function prototypes.  Unfortunately, your C compiler 
6310         $cc $ccflags
6311 doesn't seem to understand them.  Sorry about that.
6312
6313 If GNU cc is available for your system, perhaps you could try that instead.  
6314
6315 Eventually, we hope to support building Perl with pre-ANSI compilers.
6316 If you would like to help in that effort, please contact <perlbug@perl.org>.
6317
6318 Aborting Configure now.
6319 EOM
6320         exit 2
6321         ;;
6322 esac
6323
6324 : determine where public executables go
6325 echo " "
6326 set dflt bin bin
6327 eval $prefixit
6328 fn=d~
6329 rp='Pathname where the public executables will reside?'
6330 . ./getfile
6331 if $test "X$ansexp" != "X$binexp"; then
6332         installbin=''
6333 fi
6334 bin="$ans"
6335 binexp="$ansexp"
6336 : Change installation prefix, if necessary.
6337 : XXX Bug? -- ignores Configure -Dinstallprefix setting.
6338 if $test X"$prefix" != X"$installprefix"; then
6339         installbin=`echo $binexp | sed "s#^$prefix#$installprefix#"`
6340 else
6341         installbin="$binexp"
6342 fi
6343
6344 : Find perl5.005 or later.
6345 echo "Looking for a previously installed perl5.005 or later... "
6346 case "$perl5" in
6347 '')     for tdir in `echo "$binexp:$PATH" | $sed "s/$path_sep/ /g"`; do
6348                 : Check if this perl is recent and can load a simple module
6349                 if $test -x $tdir/perl && $tdir/perl -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6350                         perl5=$tdir/perl
6351                         break;
6352                 elif $test -x $tdir/perl5 && $tdir/perl5 -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6353                         perl5=$tdir/perl
6354                         break;
6355                 fi
6356         done
6357         ;;
6358 *)      perl5="$perl5"
6359         ;;
6360 esac
6361 case "$perl5" in
6362 '')     echo "None found.  That's ok.";;
6363 *)      echo "Using $perl5." ;;
6364 esac
6365
6366 : Determine list of previous versions to include in @INC
6367 $cat > getverlist <<EOPL
6368 #!$perl5 -w
6369 use File::Basename;
6370 \$api_versionstring = "$api_versionstring";
6371 \$version = "$version";
6372 \$stem = "$sitelib_stem";
6373 \$archname = "$archname";
6374 EOPL
6375         $cat >> getverlist <<'EOPL'
6376 # Can't have leading @ because metaconfig interprets it as a command!
6377 ;@inc_version_list=();
6378 # XXX Redo to do opendir/readdir? 
6379 if (-d $stem) {
6380     chdir($stem);
6381     ;@candidates = glob("5.*");
6382 }
6383 else {
6384     ;@candidates = ();
6385 }
6386
6387 # XXX ToDo:  These comparisons must be reworked when two-digit
6388 # subversions come along, so that 5.7.10 compares as greater than
6389 # 5.7.3!  By that time, hope that 5.6.x is sufficiently
6390 # widespread that we can use the built-in version vectors rather
6391 # than reinventing them here.  For 5.6.0, however, we must
6392 # assume this script will likely be run by 5.005_0x.  --AD 1/2000.
6393 foreach $d (@candidates) {
6394     if ($d lt $version) {
6395         if ($d ge $api_versionstring) {
6396             unshift(@inc_version_list, grep { -d } "$d/$archname", $d);
6397         }
6398         elsif ($d ge "5.005") {
6399             unshift(@inc_version_list, grep { -d } $d);
6400         }
6401     }
6402     else {
6403         # Skip newer version.  I.e. don't look in
6404         # 5.7.0 if we're installing 5.6.1.
6405     }
6406 }
6407
6408 if (@inc_version_list) {
6409     print join(' ', @inc_version_list);
6410 }
6411 else {
6412     # Blank space to preserve value for next Configure run.
6413     print " ";
6414 }
6415 EOPL
6416 chmod +x getverlist
6417 case "$inc_version_list" in
6418 '')     if test -x "$perl5"; then
6419                 dflt=`$perl5 getverlist`
6420         else
6421                 dflt='none'
6422         fi
6423         ;;
6424 $undef) dflt='none' ;;
6425 *)  dflt="$inc_version_list" ;;
6426 esac
6427 case "$dflt" in
6428 ''|' ') dflt=none ;;
6429 esac
6430 case "$dflt" in
6431 5.005) case "$bincompat5005" in
6432        $define|true|[yY]*) ;;
6433        *) dflt=none ;;
6434        esac
6435        ;;
6436 esac
6437 $cat <<'EOM'
6438
6439 In order to ease the process of upgrading, this version of perl 
6440 can be configured to use modules built and installed with earlier 
6441 versions of perl that were installed under $prefix.  Specify here
6442 the list of earlier versions that this version of perl should check.
6443 If Configure detected no earlier versions of perl installed under
6444 $prefix, then the list will be empty.  Answer 'none' to tell perl
6445 to not search earlier versions.
6446
6447 The default should almost always be sensible, so if you're not sure,
6448 just accept the default.
6449 EOM
6450
6451 rp='List of earlier versions to include in @INC?'
6452 . ./myread
6453 case "$ans" in
6454 [Nn]one|''|' ') inc_version_list=' ' ;;
6455 *) inc_version_list="$ans" ;;
6456 esac
6457 case "$inc_version_list" in
6458 ''|' ') 
6459         inc_version_list_init='0';;
6460 *)      inc_version_list_init=`echo $inc_version_list |
6461                 $sed -e 's/^/"/' -e 's/ /","/g' -e 's/$/",0/'`
6462         ;;
6463 esac
6464 $rm -f getverlist
6465
6466 : determine whether to install perl also as /usr/bin/perl
6467
6468 echo " "
6469 if $test -d /usr/bin -a "X$installbin" != X/usr/bin; then
6470         $cat <<EOM
6471 Many scripts expect perl to be installed as /usr/bin/perl.
6472 I can install the perl you are about to compile also as /usr/bin/perl
6473 (in addition to $installbin/perl).
6474 EOM
6475         case "$installusrbinperl" in
6476         "$undef"|[nN]*) dflt='n';;
6477         *)              dflt='y';;
6478         esac
6479         rp="Do you want to install perl as /usr/bin/perl?"
6480         . ./myread
6481         case "$ans" in
6482         [yY]*)  val="$define";;
6483         *)      val="$undef" ;;
6484         esac
6485 else
6486         val="$undef"
6487 fi
6488 set installusrbinperl
6489 eval $setvar
6490
6491 : see if dld is available
6492 set dld.h i_dld
6493 eval $inhdr
6494
6495 : see if dlopen exists
6496 xxx_runnm="$runnm"
6497 runnm=false
6498 set dlopen d_dlopen
6499 eval $inlibc
6500 runnm="$xxx_runnm"
6501
6502 : determine which dynamic loading, if any, to compile in
6503 echo " "
6504 dldir="ext/DynaLoader"
6505 case "$usedl" in
6506 $define|y|true)
6507         dflt='y'
6508         usedl="$define"
6509         ;;
6510 $undef|n|false)
6511         dflt='n'
6512         usedl="$undef"
6513         ;;
6514 *) 
6515         dflt='n'
6516         case "$d_dlopen" in
6517             $define) dflt='y' ;;
6518         esac
6519         case "$i_dld" in
6520             $define) dflt='y' ;;
6521         esac
6522         : Does a dl_xxx.xs file exist for this operating system
6523         $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
6524         ;;
6525 esac
6526 rp="Do you wish to use dynamic loading?"
6527 . ./myread
6528 usedl="$ans"
6529 case "$ans" in
6530 y*) usedl="$define"
6531         case "$dlsrc" in
6532         '')
6533                 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
6534                         dflt="$dldir/dl_${osname}.xs"
6535                 elif $test "$d_dlopen" = "$define" ; then
6536                         dflt="$dldir/dl_dlopen.xs"
6537                 elif $test "$i_dld" = "$define" ; then
6538                         dflt="$dldir/dl_dld.xs"
6539                 else
6540                         dflt=''
6541                 fi
6542                 ;;
6543         *)      dflt="$dldir/$dlsrc"
6544                 ;;
6545         esac
6546     echo "The following dynamic loading files are available:"
6547         : Can not go over to $dldir because getfile has path hard-coded in.
6548         tdir=`pwd`; cd $rsrc; $ls -C $dldir/dl*.xs; cd $tdir
6549         rp="Source file to use for dynamic loading"
6550         fn="fne"
6551         gfpth="$src"
6552         . ./getfile
6553         usedl="$define"
6554         : emulate basename
6555         dlsrc=`echo $ans | $sed -e 's%.*/\([^/]*\)$%\1%'`
6556
6557         $cat << EOM
6558
6559 Some systems may require passing special flags to $cc -c to
6560 compile modules that will be used to create a shared library.
6561 To use no flags, say "none".
6562
6563 EOM
6564     case "$cccdlflags" in
6565     '') case "$gccversion" in
6566                 '') case "$osname" in
6567                         hpux)   dflt='+z' ;;
6568                         next)   dflt='none' ;;
6569                         irix*)  dflt='-KPIC' ;;
6570                         svr4*|esix*|solaris|nonstopux) dflt='-KPIC' ;;
6571                         sunos)  dflt='-pic' ;;
6572                         *)      dflt='none' ;;
6573                     esac
6574                         ;;
6575                 *)  case "$osname" in
6576                         svr4*|esix*|solaris|nonstopux) dflt='-fPIC' ;;
6577                         *)      dflt='-fpic' ;;
6578                     esac ;;
6579             esac ;;
6580         ' ') dflt='none' ;;
6581     *)  dflt="$cccdlflags" ;;
6582     esac
6583     rp="Any special flags to pass to $cc -c to compile shared library modules?"
6584     . ./myread
6585     case "$ans" in
6586     none) cccdlflags=' ' ;;
6587     *) cccdlflags="$ans" ;;
6588     esac
6589
6590     cat << EOM
6591
6592 Some systems use ld to create libraries that can be dynamically loaded,
6593 while other systems (such as those using ELF) use $cc.
6594
6595 EOM
6596         case "$ld" in
6597         '')     $cat >try.c <<'EOM'
6598 /* Test for whether ELF binaries are produced */
6599 #include <fcntl.h>
6600 #include <stdlib.h>
6601 int main() {
6602         char b[4];
6603         int i = open("a.out",O_RDONLY);
6604         if(i == -1) 
6605                 exit(1); /* fail */
6606         if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
6607                 exit(0); /* succeed (yes, it's ELF) */
6608         else
6609                 exit(1); /* fail */
6610 }
6611 EOM
6612                 if $cc $ccflags try.c >/dev/null 2>&1 && ./a.out; then
6613                         cat <<EOM
6614 You appear to have ELF support.  I'll use $cc to build dynamic libraries.
6615 EOM
6616                         dflt="$cc"
6617                 else
6618                         echo "I'll use ld to build dynamic libraries."
6619                         dflt='ld'
6620                 fi
6621                 rm -f try.c a.out
6622                 ;;
6623         *)      dflt="$ld"
6624                 ;;
6625         esac
6626
6627     rp="What command should be used to create dynamic libraries?"
6628     . ./myread
6629         ld="$ans"
6630
6631     cat << EOM
6632
6633 Some systems may require passing special flags to $ld to create a
6634 library that can be dynamically loaded.  If your ld flags include
6635 -L/other/path options to locate libraries outside your loader's normal
6636 search path, you may need to specify those -L options here as well.  To
6637 use no flags, say "none".
6638
6639 EOM
6640     case "$lddlflags" in
6641     '') case "$osname" in
6642                         beos) dflt='-nostart' ;;
6643                         hpux) dflt='-b';
6644                               case "$gccversion" in
6645                               '') dflt="$dflt +vnocompatwarnings" ;;
6646                               esac
6647                               ;;        
6648                         linux|irix*)    dflt='-shared' ;;
6649                         next)  dflt='none' ;;
6650                         solaris) dflt='-G' ;;
6651                         sunos) dflt='-assert nodefinitions' ;;
6652                         svr4*|esix*|nonstopux) dflt="-G $ldflags" ;;
6653                 *)     dflt='none' ;;
6654                         esac
6655                         ;;
6656     *) dflt="$lddlflags" ;;
6657     esac
6658
6659         : Try to guess additional flags to pick up local libraries.
6660         : Be careful not to append to a plain 'none'
6661         case "$dflt" in
6662         none) dflt='' ;;
6663         esac
6664         for thisflag in $ldflags; do
6665                 case "$thisflag" in
6666                 -L*|-R*)
6667                         case " $dflt " in
6668                         *" $thisflag "*) ;;
6669                         *) dflt="$dflt $thisflag" ;;
6670                         esac
6671                         ;;
6672                 esac
6673         done
6674
6675         case "$dflt" in
6676         ''|' ') dflt='none' ;;
6677         esac
6678
6679     rp="Any special flags to pass to $ld to create a dynamically loaded library?"
6680     . ./myread
6681     case "$ans" in
6682     none) lddlflags=' ' ;;
6683     *) lddlflags="$ans" ;;
6684     esac
6685
6686         cat <<EOM
6687
6688 Some systems may require passing special flags to $cc to indicate that
6689 the resulting executable will use dynamic linking.  To use no flags,
6690 say "none".
6691
6692 EOM
6693     case "$ccdlflags" in
6694     '') case "$osname" in
6695                 hpux)   dflt='-Wl,-E' ;;
6696                 linux)  dflt='-rdynamic' ;;
6697                 next)   dflt='none' ;;
6698                 sunos)  dflt='none' ;;
6699                 *)      dflt='none' ;;
6700             esac ;;
6701     ' ')  dflt='none' ;;
6702     *)  dflt="$ccdlflags" ;;
6703     esac
6704     rp="Any special flags to pass to $cc to use dynamic linking?"
6705     . ./myread
6706     case "$ans" in
6707     none) ccdlflags=' ' ;;
6708     *) ccdlflags="$ans" ;;
6709     esac
6710     ;;
6711 *)  usedl="$undef"
6712         ld='ld'
6713     dlsrc='dl_none.xs'
6714     lddlflags=''
6715     ccdlflags=''
6716     ;;
6717 esac
6718
6719 also=''
6720 case "$usedl" in
6721 $undef)
6722         # No dynamic loading being used, so don't bother even to prompt.
6723         useshrplib='false'
6724         ;;
6725 *)      case "$useshrplib" in
6726         '')     case "$osname" in
6727                 svr4*|nonstopux|dgux|dynixptx|esix|powerux|beos|cygwin*)
6728                         dflt=y
6729                         also='Building a shared libperl is required for dynamic loading to work on your system.'
6730                         ;;
6731                 next*)
6732                         case "$osvers" in
6733                         4*)     dflt=y
6734                                 also='Building a shared libperl is needed for MAB support.'
6735                                 ;;
6736                         *)      dflt=n
6737                                 ;;
6738                         esac
6739                         ;;
6740                 *)      dflt=n
6741                         ;;
6742                 esac
6743                 ;;
6744         $define|true|[Yy]*)
6745                 dflt=y
6746                 ;;
6747         *)      dflt=n
6748                 ;;
6749         esac
6750         $cat << EOM
6751
6752 The perl executable is normally obtained by linking perlmain.c with
6753 libperl${_a}, any static extensions (usually just DynaLoader), and
6754 any other libraries needed on this system (such as -lm, etc.).  Since
6755 your system supports dynamic loading, it is probably possible to build
6756 a shared libperl.$so.  If you will have more than one executable linked
6757 to libperl.$so, this will significantly reduce the size of each
6758 executable, but it may have a noticeable affect on performance.  The
6759 default is probably sensible for your system.
6760 $also
6761
6762 EOM
6763         rp="Build a shared libperl.$so (y/n)"
6764         . ./myread
6765         case "$ans" in
6766         true|$define|[Yy]*)
6767                 useshrplib='true'  ;;
6768         *)      useshrplib='false' ;;
6769         esac
6770         ;;
6771 esac
6772
6773 case "$useshrplib" in
6774 true)
6775         case "$libperl" in
6776         '')
6777                 # Figure out a good name for libperl.so.  Since it gets stored in
6778                 # a version-specific architecture-dependent library, the version
6779                 # number isn't really that important, except for making cc/ld happy.
6780                 #
6781                 # A name such as libperl.so.3.1
6782                 majmin="libperl.$so.$patchlevel.$subversion"
6783                 # A name such as libperl.so.301
6784                 majonly=`echo $patchlevel $subversion |
6785                         $awk '{printf "%d%02d", $1, $2}'`
6786                 majonly=libperl.$so.$majonly
6787                 # I'd prefer to keep the os-specific stuff here to a minimum, and
6788                 # rely on figuring it out from the naming of libc.
6789                 case "${osname}${osvers}" in
6790                 next4*)
6791                         dflt=libperl.5.$so
6792                         # XXX How handle the --version stuff for MAB?
6793                         ;;
6794                 linux*)  # ld won't link with a bare -lperl otherwise.
6795                         dflt=libperl.$so
6796                         ;;
6797                 cygwin*) # include version
6798                         dflt=`echo libperl$version | sed -e 's/\./_/g'`$lib_ext
6799                         ;;
6800                 *)      # Try to guess based on whether libc has major.minor.
6801                         case "$libc" in
6802                         *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
6803                         *libc.$so.[0-9]*) dflt=$majonly ;;
6804                         *)      dflt=libperl.$so ;;
6805                         esac
6806                         ;;
6807                 esac
6808                 ;;
6809         *)      dflt=$libperl
6810                 ;;
6811         esac
6812         cat << EOM
6813
6814 I need to select a good name for the shared libperl.  If your system uses
6815 library names with major and minor numbers, then you might want something
6816 like $majmin.  Alternatively, if your system uses a single version
6817 number for shared libraries, then you might want to use $majonly.
6818 Or, your system might be quite happy with a simple libperl.$so.
6819
6820 Since the shared libperl will get installed into a version-specific
6821 architecture-dependent directory, the version number of the shared perl
6822 library probably isn't important, so the default should be o.k.
6823
6824 EOM
6825         rp='What name do you want to give to the shared libperl?'
6826         . ./myread
6827         libperl=$ans
6828         echo "Ok, I'll use $libperl"
6829         ;;
6830 *)
6831         libperl="libperl${_a}"
6832         ;;
6833 esac
6834
6835 # Detect old use of shrpdir via undocumented Configure -Dshrpdir
6836 case "$shrpdir" in
6837 '') ;;
6838 *)      $cat >&4 <<EOM
6839 WARNING:  Use of the shrpdir variable for the installation location of
6840 the shared $libperl is not supported.  It was never documented and
6841 will not work in this version.  Let me (perlbug@perl.org)
6842 know of any problems this may cause.
6843
6844 EOM
6845         case "$shrpdir" in
6846         "$archlibexp/CORE")
6847                 $cat >&4 <<EOM
6848 But your current setting of $shrpdir is
6849 the default anyway, so it's harmless.
6850 EOM
6851                 ;;
6852         *)
6853                 $cat >&4 <<EOM
6854 Further, your current attempted setting of $shrpdir
6855 conflicts with the value of $archlibexp/CORE
6856 that installperl will use.
6857 EOM
6858                 ;;
6859         esac
6860         ;;
6861 esac
6862
6863 # How will the perl executable find the installed shared $libperl?
6864 # Add $xxx to ccdlflags.
6865 # If we can't figure out a command-line option, use $shrpenv to
6866 # set env LD_RUN_PATH.  The main perl makefile uses this.
6867 shrpdir=$archlibexp/CORE
6868 xxx=''
6869 tmp_shrpenv=''
6870 if "$useshrplib"; then
6871     case "$osname" in 
6872         aix)
6873                 # We'll set it in Makefile.SH...
6874                 ;;
6875         solaris|netbsd)
6876                 xxx="-R $shrpdir"
6877                 ;;
6878         freebsd)
6879                 xxx="-Wl,-R$shrpdir"
6880                 ;;
6881         linux|irix*|dec_osf)
6882                 xxx="-Wl,-rpath,$shrpdir"
6883                 ;;
6884         next)
6885                 # next doesn't like the default...
6886                 ;;
6887         beos)
6888                 # beos doesn't like the default, either.
6889                 ;;
6890         hpux*)
6891                 # hpux doesn't like the default, either.
6892                 tmp_shrpenv="env LDOPTS=\"+s +b${shrpdir}\""
6893                 ;;
6894         *)
6895                 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
6896                 ;;
6897         esac
6898         case "$xxx" in
6899         '') ;;
6900         *)      
6901                 # Only add $xxx if it isn't already in ccdlflags.
6902                 case " $ccdlflags " in
6903                 *" $xxx "*)     ;;
6904                 *)      ccdlflags="$ccdlflags $xxx"
6905                         cat <<EOM >&4
6906
6907 Adding $xxx to the flags
6908 passed to $ld so that the perl executable will find the 
6909 installed shared $libperl.
6910
6911 EOM
6912                         ;;
6913                 esac
6914                 ;;
6915         esac
6916 fi
6917 # Fix ccdlflags in AIX for building external extensions.
6918 # (For building Perl itself bare -bE:perl.exp is needed,
6919 #  Makefile.SH takes care of this.)
6920 case "$osname" in
6921 aix) ccdlflags="$ccdlflags -bE:$installarchlib/CORE/perl.exp" ;;
6922 esac
6923 # Respect a hint or command-line value.
6924 case "$shrpenv" in
6925 '') shrpenv="$tmp_shrpenv" ;;
6926 esac
6927 case "$ldlibpthname" in
6928 '')     ldlibpthname=LD_LIBRARY_PATH ;;
6929 none)   ldlibpthname='' ;;
6930 esac
6931
6932 : determine where manual pages are on this system
6933 echo " "
6934 case "$sysman" in
6935 '') 
6936         syspath='/usr/man/man1 /usr/man/mann /usr/man/manl /usr/man/local/man1'
6937         syspath="$syspath /usr/man/u_man/man1 /usr/share/man/man1"
6938         syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
6939         syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
6940         syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
6941         sysman=`./loc . /usr/man/man1 $syspath`
6942         ;;
6943 esac
6944 if $test -d "$sysman"; then
6945         echo "System manual is in $sysman." >&4
6946 else
6947         echo "Could not find manual pages in source form." >&4
6948 fi
6949
6950 : determine where manual pages go
6951 set man1dir man1dir none
6952 eval $prefixit
6953 $cat <<EOM
6954
6955 $spackage has manual pages available in source form.
6956 EOM
6957 case "$nroff" in
6958 nroff)
6959         echo "However, you don't have nroff, so they're probably useless to you."
6960         case "$man1dir" in
6961         '') man1dir="none";;
6962         esac;;
6963 esac
6964 echo "If you don't want the manual sources installed, answer 'none'."
6965 case "$man1dir" in
6966 ' ') dflt=none
6967         ;;
6968 '')
6969         lookpath="$prefixexp/man/man1 $prefixexp/man/l_man/man1"
6970         lookpath="$lookpath $prefixexp/man/p_man/man1"
6971         lookpath="$lookpath $prefixexp/man/u_man/man1"
6972         lookpath="$lookpath $prefixexp/man/man.1"
6973         case "$sysman" in
6974         */?_man*)       dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
6975         *)      dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
6976         esac
6977         set dflt
6978         eval $prefixup
6979         ;;
6980 *)  dflt="$man1dir"
6981         ;;
6982 esac
6983 echo " "
6984 fn=dn+~
6985 rp="Where do the main $spackage manual pages (source) go?"
6986 . ./getfile
6987 if $test "X$man1direxp" != "X$ansexp"; then
6988         installman1dir=''
6989 fi
6990 man1dir="$ans"
6991 man1direxp="$ansexp"
6992 case "$man1dir" in
6993 '')     man1dir=' '
6994         installman1dir='';;
6995 esac
6996
6997 : Change installation prefix, if necessary.
6998 if $test X"$prefix" != X"$installprefix"; then
6999         installman1dir=`echo $man1direxp | $sed "s#^$prefix#$installprefix#"`
7000 else
7001         installman1dir="$man1direxp"
7002 fi
7003
7004 : What suffix to use on installed man pages
7005
7006 case "$man1dir" in
7007 ' ')
7008         man1ext='0'
7009         ;;
7010 *)
7011         rp="What suffix should be used for the main $spackage man pages?"
7012         case "$man1ext" in
7013         '')     case "$man1dir" in
7014                 *1)  dflt=1 ;;
7015                 *1p) dflt=1p ;;
7016                 *1pm) dflt=1pm ;;
7017                 *l) dflt=l;;
7018                 *n) dflt=n;;
7019                 *o) dflt=o;;
7020                 *p) dflt=p;;
7021                 *C) dflt=C;;
7022                 *L) dflt=L;;
7023                 *L1) dflt=L1;;
7024                 *) dflt=1;;
7025                 esac
7026                 ;;
7027         *)      dflt="$man1ext";;
7028         esac
7029         . ./myread
7030         man1ext="$ans"
7031         ;;
7032 esac
7033
7034 : see if we can have long filenames
7035 echo " "
7036 first=123456789abcdef
7037 $rm -f $first
7038 if (echo hi >$first) 2>/dev/null; then
7039         if $test -f 123456789abcde; then
7040                 echo 'You cannot have filenames longer than 14 characters.  Sigh.' >&4
7041                 val="$undef"
7042         else
7043                 echo 'You can have filenames longer than 14 characters.'>&4
7044                 val="$define"
7045         fi
7046 else
7047         $cat <<'EOM'
7048 You can't have filenames longer than 14 chars.
7049 You can't even think about them!
7050 EOM
7051         val="$undef"
7052 fi 
7053 set d_flexfnam
7054 eval $setvar
7055 $rm -rf 123456789abcde*
7056
7057 : determine where library module manual pages go
7058 set man3dir man3dir none
7059 eval $prefixit
7060 $cat <<EOM
7061
7062 $spackage has manual pages for many of the library modules.
7063 EOM
7064
7065 case "$nroff" in
7066 nroff)
7067         $cat <<'EOM'
7068 However, you don't have nroff, so they're probably useless to you.
7069 EOM
7070         case "$man3dir" in
7071         '') man3dir="none";;
7072         esac;;
7073 esac
7074
7075 case "$d_flexfnam" in
7076 undef)
7077         $cat <<'EOM'
7078 However, your system can't handle the long file names like File::Basename.3. 
7079 EOM
7080         case "$man3dir" in
7081         '') man3dir="none";;
7082         esac;;
7083 esac
7084
7085 echo "If you don't want the manual sources installed, answer 'none'."
7086 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
7087 case "$man3dir" in
7088 '')     dflt=`echo "$man1dir" | $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'`
7089         if $test -d "$privlib/man/man3"; then
7090                 cat <<EOM >&4
7091
7092 WARNING:  Previous versions of perl installed man3 pages into
7093 $privlib/man/man3.  This version will suggest a 
7094 new default of $dflt.  
7095 EOM
7096                 tdflt=$dflt
7097                 dflt='n'
7098                 rp='Do you wish to preserve the old behavior?(y/n)'
7099                 . ./myread
7100                 case "$ans" in
7101                 y*) dflt="$privlib/man/man3" ;;
7102                 *)  dflt=$tdflt ;;
7103                 esac
7104     fi
7105         ;;
7106 *)      dflt="$man3dir" ;;
7107 esac
7108 case "$dflt" in
7109 ' ') dflt=none ;;
7110 esac
7111 echo " "
7112 fn=dn+~
7113 rp="Where do the $package library man pages (source) go?"
7114 . ./getfile
7115 man3dir="$ans"
7116 man3direxp="$ansexp"
7117 case "$man3dir" in
7118 '')     man3dir=' '
7119         installman3dir='';;
7120 esac
7121
7122 : Change installation prefix, if necessary.
7123 if $test X"$prefix" != X"$installprefix"; then
7124         installman3dir=`echo $man3direxp | $sed "s#^$prefix#$installprefix#"`
7125 else
7126         installman3dir="$man3direxp"
7127 fi
7128
7129 : What suffix to use on installed man pages
7130 case "$man3dir" in
7131 ' ')
7132         man3ext='0'
7133         ;;
7134 *)
7135         rp="What suffix should be used for the $package library man pages?"
7136         case "$man3ext" in
7137         '')     case "$man3dir" in
7138                 *3)  dflt=3 ;;
7139                 *3p) dflt=3p ;;
7140                 *3pm) dflt=3pm ;;
7141                 *l) dflt=l;;
7142                 *n) dflt=n;;
7143                 *o) dflt=o;;
7144                 *p) dflt=p;;
7145                 *C) dflt=C;;
7146                 *L) dflt=L;;
7147                 *L3) dflt=L3;;
7148                 *) dflt=3;;
7149                 esac
7150                 ;;
7151         *)      dflt="$man3ext";;
7152         esac
7153         . ./myread
7154         man3ext="$ans"
7155         ;;
7156 esac
7157
7158 : see if we have to deal with yellow pages, now NIS.
7159 if $test -d /usr/etc/yp || $test -d /etc/yp; then
7160         if $test -f /usr/etc/nibindd; then
7161                 echo " "
7162                 echo "I'm fairly confident you're on a NeXT."
7163                 echo " "
7164                 rp='Do you get the hosts file via NetInfo?'
7165                 dflt=y
7166                 case "$hostcat" in
7167                 nidump*) ;;
7168                 '') ;;
7169                 *) dflt=n;;
7170                 esac
7171                 . ./myread
7172                 case "$ans" in
7173                 y*) hostcat='nidump hosts .';;
7174                 *)      case "$hostcat" in
7175                         nidump*) hostcat='';;
7176                         esac
7177                         ;;
7178                 esac
7179         fi
7180         case "$hostcat" in
7181         nidump*) ;;
7182         *)
7183                 case "$hostcat" in
7184                 *ypcat*) dflt=y;;
7185                 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
7186                                 dflt=y
7187                         else
7188                                 dflt=n
7189                         fi;;
7190                 *) dflt=n;;
7191                 esac
7192                 echo " "
7193                 rp='Are you getting the hosts file via yellow pages?'
7194                 . ./myread
7195                 case "$ans" in
7196                 y*) hostcat='ypcat hosts';;
7197                 *) hostcat='cat /etc/hosts';;
7198                 esac
7199                 ;;
7200         esac
7201 fi
7202 case "$hostcat" in
7203 '') test -f /etc/hosts && hostcat='cat /etc/hosts';;
7204 esac
7205 case "$groupcat" in
7206 '') test -f /etc/group && groupcat='cat /etc/group';;
7207 esac
7208 case "$passcat" in
7209 '') test -f /etc/passwd && passcat='cat /etc/passwd';;
7210 esac
7211
7212 : now get the host name
7213 echo " "
7214 echo "Figuring out host name..." >&4
7215 case "$myhostname" in
7216 '') cont=true
7217         echo 'Maybe "hostname" will work...'
7218         if tans=`sh -c hostname 2>&1` ; then
7219                 myhostname=$tans
7220                 phostname=hostname
7221                 cont=''
7222         fi
7223         ;;
7224 *) cont='';;
7225 esac
7226 if $test "$cont"; then
7227         if ./xenix; then
7228                 echo 'Oh, dear.  Maybe "/etc/systemid" is the key...'
7229                 if tans=`cat /etc/systemid 2>&1` ; then
7230                         myhostname=$tans
7231                         phostname='cat /etc/systemid'
7232                         echo "Whadyaknow.  Xenix always was a bit strange..."
7233                         cont=''
7234                 fi
7235         elif $test -r /etc/systemid; then
7236                 echo "(What is a non-Xenix system doing with /etc/systemid?)"
7237         fi
7238 fi
7239 if $test "$cont"; then
7240         echo 'No, maybe "uuname -l" will work...'
7241         if tans=`sh -c 'uuname -l' 2>&1` ; then
7242                 myhostname=$tans
7243                 phostname='uuname -l'
7244         else
7245                 echo 'Strange.  Maybe "uname -n" will work...'
7246                 if tans=`sh -c 'uname -n' 2>&1` ; then
7247                         myhostname=$tans
7248                         phostname='uname -n'
7249                 else
7250                         echo 'Oh well, maybe I can mine it out of whoami.h...'
7251                         if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
7252                                 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
7253                                 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
7254                         else
7255                                 case "$myhostname" in
7256                                 '') echo "Does this machine have an identity crisis or something?"
7257                                         phostname='';;
7258                                 *)
7259                                         echo "Well, you said $myhostname before..."
7260                                         phostname='echo $myhostname';;
7261                                 esac
7262                         fi
7263                 fi
7264         fi
7265 fi
7266 : you do not want to know about this
7267 set $myhostname
7268 myhostname=$1
7269
7270 : verify guess
7271 if $test "$myhostname" ; then
7272         dflt=y
7273         rp='Your host name appears to be "'$myhostname'".'" Right?"
7274         . ./myread
7275         case "$ans" in
7276         y*) ;;
7277         *) myhostname='';;
7278         esac
7279 fi
7280
7281 : bad guess or no guess
7282 while $test "X$myhostname" = X ; do
7283         dflt=''
7284         rp="Please type the (one word) name of your host:"
7285         . ./myread
7286         myhostname="$ans"
7287 done
7288
7289 : translate upper to lower if necessary
7290 case "$myhostname" in
7291 *[A-Z]*)
7292         echo "(Normalizing case in your host name)"
7293         myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
7294         ;;
7295 esac
7296
7297 case "$myhostname" in
7298 *.*)
7299         dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
7300         myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
7301         echo "(Trimming domain name from host name--host name is now $myhostname)"
7302         ;;
7303 *) case "$mydomain" in
7304         '')
7305                 {
7306                         test "X$hostcat" = "Xypcat hosts" &&
7307                         ypmatch "$myhostname" hosts 2>/dev/null |\
7308                                 $sed -e 's/[     ]*#.*//; s/$/ /' > hosts && \
7309                         $test -s hosts
7310                 } || {
7311                         test "X$hostcat" != "X" &&
7312                         $hostcat | $sed -n -e "s/[       ]*#.*//; s/\$/ /
7313                                         /[       ]$myhostname[  . ]/p" > hosts
7314                 }
7315                 tmp_re="[       . ]"
7316                 if $test -f hosts; then
7317                         $test x`$awk "/[0-9].*[  ]$myhostname$tmp_re/ { sum++ }
7318                              END { print sum }" hosts` = x1 || tmp_re="[         ]"
7319                         dflt=.`$awk "/[0-9].*[   ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
7320                                 hosts | $sort | $uniq | \
7321                                 $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
7322                         case `$echo X$dflt` in
7323                         X*\ *)  echo "(Several hosts in the database matched hostname)"
7324                                 dflt=.
7325                                 ;;
7326                         X.) echo "(You do not have fully-qualified names in the hosts database)"
7327                                 ;;
7328                         esac
7329                 else
7330                         echo "(I cannot locate a hosts database anywhere)"
7331                         dflt=.
7332                 fi
7333                 case "$dflt" in
7334                 .)
7335                         tans=`./loc resolv.conf X /etc /usr/etc`
7336                         if $test -f "$tans"; then
7337                                 echo "(Attempting domain name extraction from $tans)"
7338                                 dflt=.`$sed -n -e 's/   / /g' \
7339                                   -e 's/^search  *\([^ ]*\).*/\1/p' $tans \
7340                                   | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
7341                                 case "$dflt" in
7342                                 .) dflt=.`$sed -n -e 's/        / /g' \
7343                                      -e 's/^domain  *\([^ ]*\).*/\1/p' $tans \
7344                                      | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
7345                                         ;;
7346                                 esac
7347                         fi
7348                         ;;
7349                 esac
7350                 case "$dflt" in
7351                 .) echo "(No help from resolv.conf either -- attempting clever guess)"
7352                         dflt=.`sh -c domainname 2>/dev/null`
7353                         case "$dflt" in
7354                         '') dflt='.';;
7355                         .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
7356                         esac
7357                         ;;
7358                 esac
7359                 case "$dflt" in
7360                 .) echo "(Lost all hope -- silly guess then)"
7361                         dflt='.uucp'
7362                         ;;
7363                 esac
7364                 $rm -f hosts
7365                 ;;
7366         *) dflt="$mydomain";;
7367         esac;;
7368 esac
7369 echo " "
7370 rp="What is your domain name?"
7371 . ./myread
7372 tans="$ans"
7373 case "$ans" in
7374 '') ;;
7375 .*) ;;
7376 *) tans=".$tans";;
7377 esac
7378 mydomain="$tans"
7379
7380 : translate upper to lower if necessary
7381 case "$mydomain" in
7382 *[A-Z]*)
7383         echo "(Normalizing case in your domain name)"
7384         mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
7385         ;;
7386 esac
7387
7388 : a little sanity check here
7389 case "$phostname" in
7390 '') ;;
7391 *)
7392         case `$phostname | ./tr '[A-Z]' '[a-z]'` in
7393         $myhostname$mydomain|$myhostname) ;;
7394         *)
7395                 case "$phostname" in
7396                 sed*)
7397                         echo "(That doesn't agree with your whoami.h file, by the way.)"
7398                         ;;
7399                 *)
7400                         echo "(That doesn't agree with your $phostname command, by the way.)"
7401                         ;;
7402                 esac
7403         ;;
7404         esac
7405         ;;
7406 esac
7407
7408 $cat <<EOM
7409
7410 I need to get your e-mail address in Internet format if possible, i.e.
7411 something like user@host.domain. Please answer accurately since I have
7412 no easy means to double check it. The default value provided below
7413 is most probably close to reality but may not be valid from outside
7414 your organization...
7415
7416 EOM
7417 cont=x
7418 while test "$cont"; do
7419         case "$cf_email" in
7420         '') dflt="$cf_by@$myhostname$mydomain";;
7421         *) dflt="$cf_email";;
7422         esac
7423         rp='What is your e-mail address?'
7424         . ./myread
7425         cf_email="$ans"
7426         case "$cf_email" in
7427         *@*.*) cont='' ;;
7428         *)
7429                 rp='Address does not look like an Internet one.  Use it anyway?'
7430                 case "$fastread" in
7431                 yes) dflt=y ;;
7432                 *) dflt=n ;;
7433                 esac
7434                 . ./myread
7435                 case "$ans" in
7436                 y*) cont='' ;;
7437                 *) echo " " ;;
7438                 esac
7439                 ;;
7440         esac
7441 done
7442
7443 $cat <<EOM
7444
7445 If you or somebody else will be maintaining perl at your site, please
7446 fill in the correct e-mail address here so that they may be contacted
7447 if necessary. Currently, the "perlbug" program included with perl
7448 will send mail to this address in addition to perlbug@perl.org. You may
7449 enter "none" for no administrator.
7450
7451 EOM
7452 case "$perladmin" in
7453 '') dflt="$cf_email";;
7454 *) dflt="$perladmin";;
7455 esac
7456 rp='Perl administrator e-mail address'
7457 . ./myread
7458 perladmin="$ans"
7459
7460 : determine whether to only install version-specific parts.
7461 echo " "
7462 $cat <<EOM
7463 Do you want to install only the version-specific parts of the perl
7464 distribution?  Usually you do *not* want to do this.
7465 EOM
7466 case "$versiononly" in
7467 "$define"|[Yy]*|true) dflt='y' ;;
7468 *) dflt='n';
7469 esac
7470 rp="Do you want to install only the version-specific parts of perl?"
7471 . ./myread
7472 case "$ans" in
7473 [yY]*)  val="$define";;
7474 *)      val="$undef" ;;
7475 esac
7476 set versiononly
7477 eval $setvar
7478
7479 : figure out how to guarantee perl startup
7480 case "$startperl" in
7481 '')
7482         case "$sharpbang" in
7483         *!)
7484                 $cat <<EOH
7485
7486 I can use the #! construct to start perl on your system. This will
7487 make startup of perl scripts faster, but may cause problems if you
7488 want to share those scripts and perl is not in a standard place
7489 ($binexp/perl) on all your platforms. The alternative is to force
7490 a shell by starting the script with a single ':' character.
7491
7492 EOH
7493                 case "$versiononly" in
7494                 "$define")      dflt="$binexp/perl$version";;  
7495                 *)              dflt="$binexp/perl";;
7496                 esac
7497                 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
7498                 . ./myread
7499                 case "$ans" in
7500                 none)   startperl=": # use perl";;
7501                 *)      startperl="#!$ans"
7502                         if $test 30 -lt `echo "$ans" | wc -c`; then
7503                                 $cat >&4 <<EOM
7504
7505 WARNING:  Some systems limit the #! command to 32 characters.
7506 If you experience difficulty running Perl scripts with #!, try
7507 installing Perl in a directory with a shorter pathname.
7508
7509 EOM
7510                         fi ;;
7511                 esac
7512                 ;;
7513         *) startperl=": # use perl"
7514                 ;;
7515         esac
7516         ;;
7517 esac
7518 echo "I'll use $startperl to start perl scripts."
7519
7520 : figure best path for perl in scripts
7521 case "$perlpath" in
7522 '')
7523         perlpath="$binexp/perl"
7524         case "$startperl" in
7525         *!*) ;;
7526         *)
7527                 $cat <<EOH
7528
7529 I will use the "eval 'exec'" idiom to start Perl on your system.
7530 I can use the full path of your Perl binary for this purpose, but
7531 doing so may cause problems if you want to share those scripts and
7532 Perl is not always in a standard place ($binexp/perl).
7533
7534 EOH
7535                 dflt="$binexp/perl"
7536                 rp="What path shall I use in \"eval 'exec'\"?"
7537                 . ./myread
7538                 perlpath="$ans"
7539                 ;;
7540         esac
7541         ;;
7542 esac
7543 case "$startperl" in
7544 *!*)    ;;
7545 *)      echo "I'll use $perlpath in \"eval 'exec'\"" ;;
7546 esac
7547
7548 : determine where public executable scripts go
7549 set scriptdir scriptdir
7550 eval $prefixit
7551 case "$scriptdir" in
7552 '')
7553         dflt="$bin"
7554         : guess some guesses
7555         $test -d /usr/share/scripts && dflt=/usr/share/scripts
7556         $test -d /usr/share/bin     && dflt=/usr/share/bin
7557         $test -d /usr/local/script  && dflt=/usr/local/script
7558         $test -d /usr/local/scripts && dflt=/usr/local/scripts
7559         $test -d $prefixexp/script  && dflt=$prefixexp/script
7560         set dflt
7561         eval $prefixup
7562         ;;
7563 *)  dflt="$scriptdir"
7564         ;;
7565 esac
7566 $cat <<EOM
7567  
7568 Some installations have a separate directory just for executable scripts so
7569 that they can mount it across multiple architectures but keep the scripts in
7570 one spot.  You might, for example, have a subdirectory of /usr/share for this.
7571 Or you might just lump your scripts in with all your other executables.
7572  
7573 EOM
7574 fn=d~
7575 rp='Where do you keep publicly executable scripts?'
7576 . ./getfile
7577 if $test "X$ansexp" != "X$scriptdirexp"; then
7578         installscript=''
7579 fi
7580 scriptdir="$ans"
7581 scriptdirexp="$ansexp"
7582 : Change installation prefix, if necessary.
7583 if $test X"$prefix" != X"$installprefix"; then
7584         installscript=`echo $scriptdirexp | sed "s#^$prefix#$installprefix#"`
7585 else
7586         installscript="$scriptdirexp"
7587 fi
7588
7589 : determine where add-on public executables go
7590 case "$sitebin" in
7591 '')     dflt=$siteprefix/bin ;;
7592 *)      dflt=$sitebin ;;
7593 esac
7594 fn=d~
7595 rp='Pathname where the add-on public executables should be installed?'
7596 . ./getfile
7597 sitebin="$ans"
7598 sitebinexp="$ansexp"
7599 : Change installation prefix, if necessary.
7600 if $test X"$prefix" != X"$installprefix"; then
7601         installsitebin=`echo $sitebinexp | sed "s#^$prefix#$installprefix#"`
7602 else
7603         installsitebin="$sitebinexp"
7604 fi
7605
7606 case "$vendorprefix" in
7607 '')     d_vendorbin="$undef"
7608         vendorbin=''
7609         vendorbinexp=''
7610         ;;
7611 *)      d_vendorbin="$define"
7612         : determine where vendor-supplied executables go.
7613         case "$vendorbin" in
7614         '') dflt=$vendorprefix/bin ;;
7615         *)      dflt="$vendorbin" ;;
7616         esac
7617         fn=d~+
7618         rp='Pathname for the vendor-supplied executables directory?'
7619         . ./getfile
7620         vendorbin="$ans"
7621         vendorbinexp="$ansexp"
7622         ;;
7623 esac
7624 : Change installation prefix, if necessary.
7625 if $test X"$prefix" != X"$installprefix"; then
7626         installvendorbin=`echo $vendorbinexp | $sed "s#^$prefix#$installprefix#"`
7627 else
7628         installvendorbin="$vendorbinexp"
7629 fi
7630
7631 : see if qgcvt exists
7632 set qgcvt d_qgcvt
7633 eval $inlibc
7634
7635 echo " "
7636
7637 if $test X"$d_longdbl" = X"$define"; then
7638
7639 echo "Checking how to print long doubles..." >&4
7640
7641 if $test X"$sPRIfldbl" = X -a X"$doublesize" = X"$longdblsize"; then
7642         $cat >try.c <<'EOCP'
7643 #include <sys/types.h>
7644 #include <stdio.h>
7645 int main() {
7646   double d = 123.456;
7647   printf("%.3f\n", d);
7648 }
7649 EOCP
7650         set try
7651         if eval $compile; then
7652                 yyy=`./try$exe_ext`
7653                 case "$yyy" in
7654                 123.456)
7655                         sPRIfldbl='"f"'; sPRIgldbl='"g"'; sPRIeldbl='"e"';
7656                         sPRIFUldbl='"F"'; sPRIGUldbl='"G"'; sPRIEUldbl='"E"';
7657                         echo "We will use %f."
7658                         ;;
7659                 esac
7660         fi
7661 fi
7662
7663 if $test X"$sPRIfldbl" = X; then
7664         $cat >try.c <<'EOCP'
7665 #include <sys/types.h>
7666 #include <stdio.h>
7667 int main() {
7668   long double d = 123.456;
7669   printf("%.3llf\n", d);
7670 }
7671 EOCP
7672         set try
7673         if eval $compile; then
7674                 yyy=`./try$exe_ext`
7675                 case "$yyy" in
7676                 123.456)
7677                         sPRIfldbl='"llf"'; sPRIgldbl='"llg"'; sPRIeldbl='"lle"';
7678                         sPRIFUldbl='"llF"'; sPRIGUldbl='"llG"'; sPRIEUldbl='"llE"';
7679                         echo "We will use %llf."
7680                         ;;
7681                 esac
7682         fi
7683 fi
7684
7685 if $test X"$sPRIfldbl" = X; then
7686         $cat >try.c <<'EOCP'
7687 #include <sys/types.h>
7688 #include <stdio.h>
7689 int main() {
7690   long double d = 123.456;
7691   printf("%.3Lf\n", d);
7692 }
7693 EOCP
7694         set try
7695         if eval $compile; then
7696                 yyy=`./try$exe_ext`
7697                 case "$yyy" in
7698                 123.456)
7699                         sPRIfldbl='"Lf"'; sPRIgldbl='"Lg"'; sPRIeldbl='"Le"';
7700                         sPRIFUldbl='"LF"'; sPRIGUldbl='"LG"'; sPRIEUldbl='"LE"';
7701                         echo "We will use %Lf."
7702                         ;;
7703                 esac
7704         fi
7705 fi
7706
7707 if $test X"$sPRIfldbl" = X; then
7708         $cat >try.c <<'EOCP'
7709 #include <sys/types.h>
7710 #include <stdio.h>
7711 int main() {
7712   long double d = 123.456;
7713   printf("%.3lf\n", d);
7714 }
7715 EOCP
7716         set try
7717         if eval $compile; then
7718                 yyy=`./try$exe_ext`
7719                 case "$yyy" in
7720                 123.456)
7721                         sPRIfldbl='"lf"'; sPRIgldbl='"lg"'; sPRIeldbl='"le"';
7722                         sPRIFUldbl='"lF"'; sPRIGUldbl='"lG"'; sPRIEUldbl='"lE"';
7723                         echo "We will use %lf."
7724                         ;;
7725                 esac
7726         fi
7727 fi
7728
7729 if $test X"$sPRIfldbl" = X; then
7730         echo "Cannot figure out how to print long doubles." >&4
7731 else
7732         sSCNfldbl=$sPRIfldbl    # expect consistency
7733 fi
7734
7735 $rm -f try try.*
7736
7737 fi # d_longdbl
7738
7739 case "$sPRIfldbl" in
7740 '')     d_PRIfldbl="$undef"; d_PRIgldbl="$undef"; d_PRIeldbl="$undef"; 
7741         d_PRIFUldbl="$undef"; d_PRIGUldbl="$undef"; d_PRIEUldbl="$undef"; 
7742         d_SCNfldbl="$undef";
7743         ;;
7744 *)      d_PRIfldbl="$define"; d_PRIgldbl="$define"; d_PRIeldbl="$define"; 
7745         d_PRIFUldbl="$define"; d_PRIGUldbl="$define"; d_PRIEUldbl="$define"; 
7746         d_SCNfldbl="$define";
7747         ;;
7748 esac
7749
7750 : Check how to convert floats to strings.
7751 echo " "
7752 echo "Checking for an efficient way to convert floats to strings."
7753 echo " " > try.c
7754 case "$uselongdouble" in
7755 "$define") echo "#define USE_LONG_DOUBLE" >>try.c ;;
7756 esac
7757 case "$d_longdbl" in
7758 "$define") echo "#define HAS_LONG_DOUBLE" >>try.c ;;
7759 esac
7760 case "$d_PRIgldbl" in
7761 "$define") echo "#define HAS_PRIgldbl"    >>try.c ;;
7762 esac
7763 $cat >>try.c <<EOP
7764 #ifdef TRY_gconvert
7765 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
7766 char *myname = "gconvert";
7767 #endif
7768 #ifdef TRY_gcvt
7769 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
7770 char *myname = "gcvt";
7771 #endif
7772 #ifdef TRY_qgcvt
7773 #define Gconvert(x,n,t,b) qgcvt((x),(n),(b))
7774 char *myname = "qgcvt";
7775 #define DOUBLETYPE long double
7776 #endif
7777 #ifdef TRY_sprintf
7778 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE) && defined(HAS_PRIgldbl)
7779 #define Gconvert(x,n,t,b) sprintf((b),"%.*"$sPRIgldbl,(n),(x))
7780 #else
7781 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
7782 #endif
7783 char *myname = "sprintf";
7784 #endif
7785
7786 #ifndef DOUBLETYPE
7787 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
7788 #define DOUBLETYPE long double
7789 #else
7790 #define DOUBLETYPE double
7791 #endif
7792 #endif
7793
7794 #include <stdio.h>
7795
7796 #define I_STDLIB $i_stdlib
7797 #ifdef I_STDLIB
7798 #include <stdlib.h>
7799 #endif
7800
7801 int
7802 checkit(expect, got)
7803 char *expect;
7804 char *got;
7805 {
7806     if (strcmp(expect, got)) {
7807                 printf("%s oddity:  Expected %s, got %s\n",
7808                         myname, expect, got);
7809                 exit(1);
7810         }
7811 }
7812
7813 int main()
7814
7815         char buf[64]; 
7816         buf[63] = '\0';
7817
7818         /* This must be 1st test on (which?) platform */
7819         /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
7820         Gconvert((DOUBLETYPE)0.1, 8, 0, buf);
7821         checkit("0.1", buf);
7822
7823         Gconvert((DOUBLETYPE)1.0, 8, 0, buf); 
7824         checkit("1", buf);
7825
7826         Gconvert((DOUBLETYPE)1.1, 8, 0, buf); 
7827         checkit("1.1", buf);
7828
7829         Gconvert((DOUBLETYPE)1.01, 8, 0, buf); 
7830         checkit("1.01", buf);
7831
7832         Gconvert((DOUBLETYPE)1.001, 8, 0, buf); 
7833         checkit("1.001", buf);
7834
7835         Gconvert((DOUBLETYPE)1.0001, 8, 0, buf); 
7836         checkit("1.0001", buf);
7837
7838         Gconvert((DOUBLETYPE)1.00001, 8, 0, buf); 
7839         checkit("1.00001", buf);
7840
7841         Gconvert((DOUBLETYPE)1.000001, 8, 0, buf); 
7842         checkit("1.000001", buf);
7843
7844         Gconvert((DOUBLETYPE)0.0, 8, 0, buf); 
7845         checkit("0", buf);
7846
7847         Gconvert((DOUBLETYPE)-1.0, 8, 0, buf); 
7848         checkit("-1", buf);
7849
7850         /* Some Linux gcvt's give 1.e+5 here. */
7851         Gconvert((DOUBLETYPE)100000.0, 8, 0, buf); 
7852         checkit("100000", buf);
7853         
7854         /* Some Linux gcvt's give -1.e+5 here. */
7855         Gconvert((DOUBLETYPE)-100000.0, 8, 0, buf); 
7856         checkit("-100000", buf);
7857
7858         Gconvert((DOUBLETYPE)123.456, 8, 0, buf); 
7859         checkit("123.456", buf);
7860
7861         exit(0);
7862 }
7863 EOP
7864 case "$d_Gconvert" in
7865 gconvert*) xxx_list='gconvert gcvt sprintf' ;;
7866 gcvt*) xxx_list='gcvt gconvert sprintf' ;;
7867 sprintf*) xxx_list='sprintf gconvert gcvt' ;;
7868 *) xxx_list='gconvert gcvt sprintf' ;;
7869 esac
7870
7871 case "$d_longdbl$uselongdouble$d_PRIgldbl" in
7872 "$define$define$define")
7873     # for long doubles prefer first qgcvt, then sprintf
7874     xxx_list="`echo $xxx_list|sed s/sprintf//`" 
7875     xxx_list="sprintf $xxx_list"
7876     case "$d_qgcvt" in
7877     "$define") xxx_list="qgcvt $xxx_list" ;;
7878     esac
7879     ;;
7880 esac
7881
7882 for xxx_convert in $xxx_list; do
7883         echo "Trying $xxx_convert..."
7884         $rm -f try try$_o
7885         set try -DTRY_$xxx_convert
7886         if eval $compile; then
7887                 echo "$xxx_convert() found." >&4
7888                 if ./try; then
7889                         echo "I'll use $xxx_convert to convert floats into a string." >&4
7890                         break;
7891                 else
7892                         echo "...But $xxx_convert didn't work as I expected."
7893                 fi
7894         else
7895                 echo "$xxx_convert NOT found." >&4
7896         fi
7897 done
7898         
7899 case "$xxx_convert" in
7900 gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
7901 gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
7902 qgcvt) d_Gconvert='qgcvt((x),(n),(b))' ;;
7903 *) case "$uselongdouble$d_longdbl$d_PRIgldbl" in
7904    "$define$define$define")
7905       d_Gconvert="sprintf((b),\"%.*\"$sPRIgldbl,(n),(x))" ;;
7906    *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
7907    esac
7908    ;;  
7909 esac
7910
7911 : see if _fwalk exists
7912 set fwalk d__fwalk
7913 eval $inlibc
7914
7915 : Initialize h_fcntl
7916 h_fcntl=false
7917
7918 : Initialize h_sysfile
7919 h_sysfile=false
7920
7921 : access call always available on UNIX
7922 set access d_access
7923 eval $inlibc
7924
7925 : locate the flags for 'access()'
7926 case "$d_access" in
7927 "$define")
7928         echo " "
7929         $cat >access.c <<'EOCP'
7930 #include <sys/types.h>
7931 #ifdef I_FCNTL
7932 #include <fcntl.h>
7933 #endif
7934 #ifdef I_SYS_FILE
7935 #include <sys/file.h>
7936 #endif
7937 #ifdef I_UNISTD
7938 #include <unistd.h>
7939 #endif
7940 int main() {
7941         exit(R_OK);
7942 }
7943 EOCP
7944         : check sys/file.h first, no particular reason here
7945         if $test `./findhdr sys/file.h` && \
7946                 $cc -o access $cppflags -DI_SYS_FILE access.c >/dev/null 2>&1 ; then
7947                 h_sysfile=true;
7948                 echo "<sys/file.h> defines the *_OK access constants." >&4
7949         elif $test `./findhdr fcntl.h` && \
7950                 $cc -o access $cppflags -DI_FCNTL access.c >/dev/null 2>&1 ; then
7951                 h_fcntl=true;
7952                 echo "<fcntl.h> defines the *_OK access constants." >&4
7953         elif $test `./findhdr unistd.h` && \
7954                 $cc -o access $cppflags -DI_UNISTD access.c >/dev/null 2>&1 ; then
7955                 echo "<unistd.h> defines the *_OK access constants." >&4
7956         else
7957                 echo "I can't find the four *_OK access constants--I'll use mine." >&4
7958         fi
7959         ;;
7960 esac
7961 $rm -f access*
7962
7963 : see if accessx exists
7964 set accessx d_accessx
7965 eval $inlibc
7966
7967 : see if alarm exists
7968 set alarm d_alarm
7969 eval $inlibc
7970
7971 : see if atolf exists
7972 set atolf d_atolf
7973 eval $inlibc
7974
7975 : see if atoll exists
7976 set atoll d_atoll
7977 eval $inlibc
7978
7979 : Look for GNU-cc style attribute checking
7980 echo " "
7981 echo "Checking whether your compiler can handle __attribute__ ..." >&4
7982 $cat >attrib.c <<'EOCP'
7983 #include <stdio.h>
7984 void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn));
7985 EOCP
7986 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
7987         if $contains 'warning' attrib.out >/dev/null 2>&1; then
7988                 echo "Your C compiler doesn't fully support __attribute__."
7989                 val="$undef"
7990         else
7991                 echo "Your C compiler supports __attribute__."
7992                 val="$define"
7993         fi
7994 else
7995         echo "Your C compiler doesn't seem to understand __attribute__ at all."
7996         val="$undef"
7997 fi
7998 set d_attribut
7999 eval $setvar
8000 $rm -f attrib*
8001
8002 : see if bcmp exists
8003 set bcmp d_bcmp
8004 eval $inlibc
8005
8006 : see if bcopy exists
8007 set bcopy d_bcopy
8008 eval $inlibc
8009
8010 : see if this is a unistd.h system
8011 set unistd.h i_unistd
8012 eval $inhdr
8013
8014 : see if getpgrp exists
8015 set getpgrp d_getpgrp
8016 eval $inlibc
8017
8018 case "$d_getpgrp" in
8019 "$define")
8020         echo " "
8021         echo "Checking to see which flavor of getpgrp is in use..."
8022         $cat >set.c <<EOP
8023 #$i_unistd I_UNISTD
8024 #include <sys/types.h>
8025 #ifdef I_UNISTD
8026 #  include <unistd.h>
8027 #endif
8028 int main()
8029 {
8030         if (getuid() == 0) {
8031                 printf("(I see you are running Configure as super-user...)\n");
8032                 setuid(1);
8033         }
8034 #ifdef TRY_BSD_PGRP
8035         if (getpgrp(1) == 0)
8036                 exit(0);
8037 #else
8038         if (getpgrp() > 0)
8039                 exit(0);
8040 #endif
8041         exit(1);
8042 }
8043 EOP
8044         if $cc -o set -DTRY_BSD_PGRP $ccflags $ldflags set.c $libs >/dev/null 2>&1 && ./set; then
8045                 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
8046                 val="$define"
8047         elif $cc -o set $ccflags $ldflags set.c $libs >/dev/null 2>&1 && ./set; then
8048                 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
8049                 val="$undef"
8050         else
8051                 echo "I can't seem to compile and run the test program."
8052                 if ./usg; then
8053                         xxx="a USG one, i.e. you use getpgrp()."
8054                 else
8055                         # SVR4 systems can appear rather BSD-ish.
8056                         case "$i_unistd" in
8057                         $undef)
8058                                 xxx="a BSD one, i.e. you use getpgrp(pid)."
8059                                 val="$define"
8060                                 ;;
8061                         $define)
8062                                 xxx="probably a USG one, i.e. you use getpgrp()."
8063                                 val="$undef"
8064                                 ;;
8065                         esac
8066                 fi
8067                 echo "Assuming your getpgrp is $xxx" >&4
8068         fi
8069         ;;
8070 *) val="$undef";;
8071 esac
8072 set d_bsdgetpgrp
8073 eval $setvar
8074 $rm -f set set.c
8075
8076 : see if setpgrp exists
8077 set setpgrp d_setpgrp
8078 eval $inlibc
8079
8080 case "$d_setpgrp" in
8081 "$define")
8082         echo " "
8083         echo "Checking to see which flavor of setpgrp is in use..."
8084         $cat >set.c <<EOP
8085 #$i_unistd I_UNISTD
8086 #include <sys/types.h>
8087 #ifdef I_UNISTD
8088 #  include <unistd.h>
8089 #endif
8090 int main()
8091 {
8092         if (getuid() == 0) {
8093                 printf("(I see you are running Configure as super-user...)\n");
8094                 setuid(1);
8095         }
8096 #ifdef TRY_BSD_PGRP
8097         if (-1 == setpgrp(1, 1))
8098                 exit(0);
8099 #else
8100         if (setpgrp() != -1)
8101                 exit(0);
8102 #endif
8103         exit(1);
8104 }
8105 EOP
8106         if $cc -o set -DTRY_BSD_PGRP $ccflags $ldflags set.c $libs >/dev/null 2>&1 && ./set; then
8107                 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
8108                 val="$define"
8109         elif $cc -o set $ccflags $ldflags set.c $libs >/dev/null 2>&1 && ./set; then
8110                 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
8111                 val="$undef"
8112         else
8113                 echo "(I can't seem to compile and run the test program.)"
8114                 if ./usg; then
8115                         xxx="a USG one, i.e. you use setpgrp()."
8116                 else
8117                         # SVR4 systems can appear rather BSD-ish.
8118                         case "$i_unistd" in
8119                         $undef)
8120                                 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
8121                                 val="$define"
8122                                 ;;
8123                         $define)
8124                                 xxx="probably a USG one, i.e. you use setpgrp()."
8125                                 val="$undef"
8126                                 ;;
8127                         esac
8128                 fi
8129                 echo "Assuming your setpgrp is $xxx" >&4
8130         fi
8131         ;;
8132 *) val="$undef";;
8133 esac
8134 set d_bsdsetpgrp
8135 eval $setvar
8136 $rm -f set set.c
8137 : see if bzero exists
8138 set bzero d_bzero
8139 eval $inlibc
8140
8141 : see if signal is declared as pointer to function returning int or void
8142 echo " "
8143 xxx=`./findhdr signal.h`
8144 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
8145 if $contains 'int.*\*[  ]*signal' $$.tmp >/dev/null 2>&1 ; then
8146         echo "You have int (*signal())() instead of void." >&4
8147         val="$undef"
8148 elif $contains 'void.*\*[       ]*signal' $$.tmp >/dev/null 2>&1 ; then
8149         echo "You have void (*signal())()." >&4
8150         val="$define"
8151 elif $contains 'extern[         ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
8152         echo "You have int (*signal())() instead of void." >&4
8153         val="$undef"
8154 elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
8155         echo "You have void (*signal())()." >&4
8156         val="$define"
8157 else
8158         case "$d_voidsig" in
8159         '')
8160         echo "I can't determine whether signal handler returns void or int..." >&4
8161                 dflt=void
8162                 rp="What type does your signal handler return?"
8163                 . ./myread
8164                 case "$ans" in
8165                 v*) val="$define";;
8166                 *) val="$undef";;
8167                 esac;;
8168         "$define")
8169                 echo "As you already told me, signal handler returns void." >&4
8170                 val="$define"
8171                 ;;
8172         *)      echo "As you already told me, signal handler returns int." >&4
8173                 val="$undef"
8174                 ;;
8175         esac
8176 fi
8177 set d_voidsig
8178 eval $setvar
8179 case "$d_voidsig" in
8180 "$define") signal_t="void";;
8181 *) signal_t="int";;
8182 esac
8183 $rm -f $$.tmp
8184
8185 : check for ability to cast large floats to 32-bit ints.
8186 echo " "
8187 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
8188 if $test "$intsize" -ge 4; then
8189         xxx=int
8190 else
8191         xxx=long
8192 fi
8193 $cat >try.c <<EOCP
8194 #include <stdio.h>
8195 #include <sys/types.h>
8196 #include <signal.h>
8197 $signal_t blech(s) int s; { exit(3); }
8198 int main()
8199 {
8200         $xxx i32;
8201         double f, g;
8202         int result = 0;
8203         char str[16];
8204         signal(SIGFPE, blech);
8205
8206         /* Don't let compiler optimize the test away.  Store the number 
8207            in a writable string for gcc to pass to sscanf under HP/UX.
8208         */
8209         sprintf(str, "2147483647");
8210         sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
8211         g = 10 * f;
8212         i32  = ($xxx) g;
8213
8214         /* x86 processors will probably give 0x8000 0000, which is a
8215        sign change.  We don't want that.  We want to mimic SPARC
8216            behavior here, which is to preserve the sign and give
8217            back 0x7fff ffff.
8218         */
8219         if (i32 != ($xxx) f)
8220                 result |= 1;
8221         exit(result);
8222 }
8223 EOCP
8224 set try
8225 if eval $compile_ok; then
8226         ./try
8227         yyy=$?
8228 else
8229         echo "(I can't seem to compile the test program--assuming it can't)"
8230         yyy=1
8231 fi
8232 case "$yyy" in
8233 0)      val="$define"
8234         echo "Yup, it can."
8235         ;;
8236 *)      val="$undef"
8237         echo "Nope, it can't."
8238         ;;
8239 esac
8240 set d_casti32
8241 eval $setvar
8242 $rm -f try try.*
8243
8244 : check for ability to cast negative floats to unsigned
8245 echo " "
8246 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
8247 $cat >try.c <<EOCP
8248 #include <stdio.h>
8249 #include <sys/types.h>
8250 #include <signal.h>
8251 $signal_t blech(s) int s; { exit(7); }
8252 $signal_t blech_in_list(s) int s; { exit(4); }
8253 unsigned long dummy_long(p) unsigned long p; { return p; }
8254 unsigned int dummy_int(p) unsigned int p; { return p; }
8255 unsigned short dummy_short(p) unsigned short p; { return p; }
8256 int main()
8257 {
8258         double f;
8259         unsigned long along;
8260         unsigned int aint;
8261         unsigned short ashort;
8262         int result = 0;
8263         char str[16];
8264         
8265         /* Frustrate gcc-2.7.2's optimizer which failed this test with
8266            a direct f = -123. assignment.  gcc-2.8.0 reportedly
8267            optimized the whole file away
8268         */
8269         /* Store the number in a writable string for gcc to pass to 
8270            sscanf under HP/UX.
8271         */
8272         sprintf(str, "-123");
8273         sscanf(str, "%lf", &f);  /* f = -123.; */
8274
8275         signal(SIGFPE, blech);
8276         along = (unsigned long)f;
8277         aint = (unsigned int)f;
8278         ashort = (unsigned short)f;
8279         if (along != (unsigned long)-123)
8280                 result |= 1;
8281         if (aint != (unsigned int)-123)
8282                 result |= 1;
8283         if (ashort != (unsigned short)-123)
8284                 result |= 1;
8285         sprintf(str, "1073741824.");
8286         sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
8287         f = f + f;
8288         along = 0;
8289         along = (unsigned long)f;
8290         if (along != 0x80000000)
8291                 result |= 2;
8292         f -= 1.;
8293         along = 0;
8294         along = (unsigned long)f;
8295         if (along != 0x7fffffff)
8296                 result |= 1;
8297         f += 2.;
8298         along = 0;
8299         along = (unsigned long)f;
8300         if (along != 0x80000001)
8301                 result |= 2;
8302         if (result)
8303                 exit(result);
8304         signal(SIGFPE, blech_in_list);
8305         sprintf(str, "123.");
8306         sscanf(str, "%lf", &f);  /* f = 123.; */
8307         along = dummy_long((unsigned long)f);
8308         aint = dummy_int((unsigned int)f);
8309         ashort = dummy_short((unsigned short)f);
8310         if (along != (unsigned long)123)
8311                 result |= 4;
8312         if (aint != (unsigned int)123)
8313                 result |= 4;
8314         if (ashort != (unsigned short)123)
8315                 result |= 4;
8316         exit(result);
8317
8318 }
8319 EOCP
8320 set try
8321 if eval $compile_ok; then
8322         ./try
8323         castflags=$?
8324 else
8325         echo "(I can't seem to compile the test program--assuming it can't)"
8326         castflags=7
8327 fi
8328 case "$castflags" in
8329 0)      val="$define"
8330         echo "Yup, it can."
8331         ;;
8332 *)      val="$undef"
8333         echo "Nope, it can't."
8334         ;;
8335 esac
8336 set d_castneg
8337 eval $setvar
8338 $rm -f try.*
8339
8340 : see if vprintf exists
8341 echo " "
8342 if set vprintf val -f d_vprintf; eval $csym; $val; then
8343         echo 'vprintf() found.' >&4
8344         val="$define"
8345         $cat >vprintf.c <<'EOF'
8346 #include <varargs.h>
8347
8348 int main() { xxx("foo"); }
8349
8350 xxx(va_alist)
8351 va_dcl
8352 {
8353         va_list args;
8354         char buf[10];
8355
8356         va_start(args);
8357         exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
8358 }
8359 EOF
8360         set vprintf
8361         if eval $compile && ./vprintf; then
8362                 echo "Your vsprintf() returns (int)." >&4
8363                 val2="$undef"
8364         else
8365                 echo "Your vsprintf() returns (char*)." >&4
8366                 val2="$define"
8367         fi
8368 else
8369         echo 'vprintf() NOT found.' >&4
8370                 val="$undef"
8371                 val2="$undef"
8372 fi
8373 set d_vprintf
8374 eval $setvar
8375 val=$val2
8376 set d_charvspr
8377 eval $setvar
8378
8379 : see if chown exists
8380 set chown d_chown
8381 eval $inlibc
8382
8383 : see if chroot exists
8384 set chroot d_chroot
8385 eval $inlibc
8386
8387 : see if chsize exists
8388 set chsize d_chsize
8389 eval $inlibc
8390
8391 : check for const keyword
8392 echo " "
8393 echo 'Checking to see if your C compiler knows about "const"...' >&4
8394 $cat >const.c <<'EOCP'
8395 typedef struct spug { int drokk; } spug;
8396 int main()
8397 {
8398         const char *foo;
8399         const spug y;
8400 }
8401 EOCP
8402 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
8403         val="$define"
8404         echo "Yup, it does."
8405 else
8406         val="$undef"
8407         echo "Nope, it doesn't."
8408 fi
8409 set d_const
8410 eval $setvar
8411
8412 : see if crypt exists
8413 echo " "
8414 if set crypt val -f d_crypt; eval $csym; $val; then
8415         echo 'crypt() found.' >&4
8416         val="$define"
8417         cryptlib=''
8418 else
8419         cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
8420         if $test -z "$cryptlib"; then
8421                 cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
8422         else
8423                 cryptlib=-lcrypt
8424         fi
8425         if $test -z "$cryptlib"; then
8426                 cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
8427         else
8428                 cryptlib=-lcrypt
8429         fi
8430         if $test -z "$cryptlib"; then
8431                 cryptlib=`./loc libcrypt$_a "" $libpth`
8432         else
8433                 cryptlib=-lcrypt
8434         fi
8435         if $test -z "$cryptlib"; then
8436                 echo 'crypt() NOT found.' >&4
8437                 val="$undef"
8438         else
8439                 val="$define"
8440         fi
8441 fi
8442 set d_crypt
8443 eval $setvar
8444
8445 : get csh whereabouts
8446 case "$csh" in
8447 'csh') val="$undef" ;;
8448 *) val="$define" ;;
8449 esac
8450 set d_csh
8451 eval $setvar
8452 : Respect a hint or command line value for full_csh.
8453 case "$full_csh" in
8454 '') full_csh=$csh ;;
8455 esac
8456
8457 : see if cuserid exists
8458 set cuserid d_cuserid
8459 eval $inlibc
8460
8461 : see if this is a limits.h system
8462 set limits.h i_limits
8463 eval $inhdr
8464
8465 : see if this is a float.h system
8466 set float.h i_float
8467 eval $inhdr
8468
8469 : See if number of significant digits in a double precision number is known
8470 echo " "
8471 $cat >dbl_dig.c <<EOM
8472 #$i_limits I_LIMITS
8473 #$i_float I_FLOAT
8474 #ifdef I_LIMITS
8475 #include <limits.h>
8476 #endif
8477 #ifdef I_FLOAT
8478 #include <float.h>
8479 #endif
8480 #ifdef DBL_DIG
8481 printf("Contains DBL_DIG");
8482 #endif
8483 EOM
8484 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
8485 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
8486         echo "DBL_DIG found." >&4
8487         val="$define"
8488 else
8489         echo "DBL_DIG NOT found." >&4
8490         val="$undef"
8491 fi
8492 $rm -f dbl_dig.?
8493 set d_dbl_dig
8494 eval $setvar
8495
8496 : see if difftime exists
8497 set difftime d_difftime
8498 eval $inlibc
8499
8500 : see if this is a dirent system
8501 echo " "
8502 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
8503         val="$define"
8504         echo "<dirent.h> found." >&4
8505 else
8506         val="$undef"
8507         if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
8508                 echo "<sys/dir.h> found." >&4
8509                 echo " "
8510         else
8511                 xinc=`./findhdr sys/ndir.h`
8512         fi
8513         echo "<dirent.h> NOT found." >&4
8514 fi
8515 set i_dirent
8516 eval $setvar
8517
8518 : Look for type of directory structure.
8519 echo " "
8520 $cppstdin $cppflags $cppminus < "$xinc" > try.c
8521
8522 case "$direntrytype" in
8523 ''|' ')
8524         case "$i_dirent" in
8525         $define) guess1='struct dirent' ;;
8526         *) guess1='struct direct'  ;;
8527         esac
8528         ;;
8529 *)      guess1="$direntrytype"
8530         ;;
8531 esac
8532
8533 case "$guess1" in
8534 'struct dirent') guess2='struct direct' ;;
8535 *) guess2='struct dirent' ;;
8536 esac
8537                 
8538 if $contains "$guess1" try.c >/dev/null 2>&1; then
8539         direntrytype="$guess1"
8540         echo "Your directory entries are $direntrytype." >&4
8541 elif $contains "$guess2" try.c >/dev/null 2>&1; then
8542         direntrytype="$guess2"
8543         echo "Your directory entries seem to be $direntrytype." >&4
8544 else
8545         echo "I don't recognize your system's directory entries." >&4
8546         rp="What type is used for directory entries on this system?"
8547         dflt="$guess1"
8548         . ./myread
8549         direntrytype="$ans"
8550 fi
8551 $rm -f try.c
8552
8553
8554 : see if the directory entry stores field length
8555 echo " "
8556 $cppstdin $cppflags $cppminus < "$xinc" > try.c
8557 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
8558         echo "Good, your directory entry keeps length information in d_namlen." >&4
8559         val="$define"
8560 else
8561         echo "Your directory entry does not know about the d_namlen field." >&4
8562         val="$undef"
8563 fi
8564 set d_dirnamlen
8565 eval $setvar
8566 $rm -f try.c
8567
8568 : see if dlerror exists
8569 xxx_runnm="$runnm"
8570 runnm=false
8571 set dlerror d_dlerror
8572 eval $inlibc
8573 runnm="$xxx_runnm"
8574
8575 : see if dlfcn is available
8576 set dlfcn.h i_dlfcn
8577 eval $inhdr
8578
8579 case "$usedl" in
8580 $define|y|true)
8581         $cat << EOM
8582
8583 On a few systems, the dynamically loaded modules that perl generates and uses
8584 will need a different extension than shared libs. The default will probably
8585 be appropriate.
8586
8587 EOM
8588         case "$dlext" in
8589         '')     dflt="$so" ;;
8590         *)      dflt="$dlext" ;;
8591         esac
8592         rp='What is the extension of dynamically loaded modules'
8593         . ./myread
8594         dlext="$ans"
8595         ;;
8596 *)
8597         dlext="none"
8598         ;;
8599 esac
8600
8601 : Check if dlsym need a leading underscore
8602 echo " "
8603 val="$undef"
8604
8605 case "$dlsrc" in
8606 dl_dlopen.xs)
8607         echo "Checking whether your dlsym() needs a leading underscore ..." >&4
8608         $cat >dyna.c <<'EOM'
8609 fred () { }
8610 EOM
8611
8612 $cat >fred.c<<EOM
8613
8614 #include <stdio.h>
8615 #$i_dlfcn I_DLFCN
8616 #ifdef I_DLFCN
8617 #include <dlfcn.h>      /* the dynamic linker include file for Sunos/Solaris */
8618 #else
8619 #include <sys/types.h>
8620 #include <nlist.h>
8621 #include <link.h>
8622 #endif
8623
8624 extern int fred() ;
8625
8626 int main()
8627 {
8628     void * handle ;
8629     void * symbol ;
8630 #ifndef RTLD_LAZY
8631     int mode = 1 ;
8632 #else
8633     int mode = RTLD_LAZY ;
8634 #endif
8635     handle = dlopen("./dyna.$dlext", mode) ;
8636     if (handle == NULL) {
8637         printf ("1\n") ;
8638         fflush (stdout) ;
8639         exit(0);
8640     }
8641     symbol = dlsym(handle, "fred") ;
8642     if (symbol == NULL) {
8643         /* try putting a leading underscore */
8644         symbol = dlsym(handle, "_fred") ;
8645         if (symbol == NULL) {
8646             printf ("2\n") ;
8647             fflush (stdout) ;
8648             exit(0);
8649         }
8650         printf ("3\n") ;
8651     }
8652     else
8653         printf ("4\n") ;
8654     fflush (stdout) ;
8655     exit(0);
8656 }
8657 EOM
8658         : Call the object file tmp-dyna.o in case dlext=o.
8659         if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 && 
8660                 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 && 
8661                 $ld -o dyna.$dlext $lddlflags tmp-dyna${_o} > /dev/null 2>&1 && 
8662                 $cc -o fred $ccflags $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1; then
8663                 xxx=`./fred`
8664                 case $xxx in
8665                 1)      echo "Test program failed using dlopen." >&4
8666                         echo "Perhaps you should not use dynamic loading." >&4;;
8667                 2)      echo "Test program failed using dlsym." >&4
8668                         echo "Perhaps you should not use dynamic loading." >&4;;
8669                 3)      echo "dlsym needs a leading underscore" >&4
8670                         val="$define" ;;
8671                 4)      echo "dlsym doesn't need a leading underscore." >&4;;
8672                 esac
8673         else
8674                 echo "I can't compile and run the test program." >&4
8675                 echo "I'm guessing that dlsym doesn't need a leading underscore." >&4
8676         fi
8677         ;;
8678 esac
8679                 
8680 $rm -f fred fred.? dyna.$dlext dyna.? tmp-dyna.?
8681
8682 set d_dlsymun
8683 eval $setvar
8684
8685 hasproto='varname=$1; func=$2; shift; shift;
8686 while $test $# -ge 2; do
8687         case "$1" in
8688         $define) echo "#include <$2>";;
8689         esac ;
8690     shift 2;
8691 done > try.c;
8692 $cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
8693 if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
8694         echo "$func() prototype found.";
8695         val="$define";
8696 else
8697         echo "$func() prototype NOT found.";
8698         val="$undef";
8699 fi;
8700 set $varname;
8701 eval $setvar;
8702 $rm -f try.c tryout.c'
8703
8704 : see if prototype for drand48 is available
8705 echo " "
8706 set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
8707 eval $hasproto
8708
8709 : see if dup2 exists
8710 set dup2 d_dup2
8711 eval $inlibc
8712
8713 : see if eaccess exists
8714 set eaccess d_eaccess
8715 eval $inlibc
8716
8717 : see if endgrent exists
8718 set endgrent d_endgrent
8719 eval $inlibc
8720
8721 : see if endhostent exists
8722 set endhostent d_endhent
8723 eval $inlibc
8724
8725 : see if endnetent exists
8726 set endnetent d_endnent
8727 eval $inlibc
8728
8729 : see if endprotoent exists
8730 set endprotoent d_endpent
8731 eval $inlibc
8732
8733 : see if endpwent exists
8734 set endpwent d_endpwent
8735 eval $inlibc
8736
8737 : see if endservent exists
8738 set endservent d_endsent
8739 eval $inlibc
8740
8741 : Locate the flags for 'open()'
8742 echo " "
8743 $cat >open3.c <<'EOCP'
8744 #include <sys/types.h>
8745 #ifdef I_FCNTL
8746 #include <fcntl.h>
8747 #endif
8748 #ifdef I_SYS_FILE
8749 #include <sys/file.h>
8750 #endif
8751 int main() {
8752         if(O_RDONLY);
8753 #ifdef O_TRUNC
8754         exit(0);
8755 #else
8756         exit(1);
8757 #endif
8758 }
8759 EOCP
8760 : check sys/file.h first to get FREAD on Sun
8761 if $test `./findhdr sys/file.h` && \
8762                 set open3 -DI_SYS_FILE && eval $compile; then
8763         h_sysfile=true;
8764         echo "<sys/file.h> defines the O_* constants..." >&4
8765         if ./open3; then
8766                 echo "and you have the 3 argument form of open()." >&4
8767                 val="$define"
8768         else
8769                 echo "but not the 3 argument form of open().  Oh, well." >&4
8770                 val="$undef"
8771         fi
8772 elif $test `./findhdr fcntl.h` && \
8773                 set open3 -DI_FCNTL && eval $compile; then
8774         h_fcntl=true;
8775         echo "<fcntl.h> defines the O_* constants..." >&4
8776         if ./open3; then
8777                 echo "and you have the 3 argument form of open()." >&4
8778                 val="$define"
8779         else
8780                 echo "but not the 3 argument form of open().  Oh, well." >&4
8781                 val="$undef"
8782         fi
8783 else
8784         val="$undef"
8785         echo "I can't find the O_* constant definitions!  You got problems." >&4
8786 fi
8787 set d_open3
8788 eval $setvar
8789 $rm -f open3*
8790
8791 : see which of string.h or strings.h is needed
8792 echo " "
8793 strings=`./findhdr string.h`
8794 if $test "$strings" && $test -r "$strings"; then
8795         echo "Using <string.h> instead of <strings.h>." >&4
8796         val="$define"
8797 else
8798         val="$undef"
8799         strings=`./findhdr strings.h`
8800         if $test "$strings" && $test -r "$strings"; then
8801                 echo "Using <strings.h> instead of <string.h>." >&4
8802         else
8803                 echo "No string header found -- You'll surely have problems." >&4
8804         fi
8805 fi
8806 set i_string
8807 eval $setvar
8808 case "$i_string" in
8809 "$undef") strings=`./findhdr strings.h`;;
8810 *)        strings=`./findhdr string.h`;;
8811 esac
8812
8813 : check for non-blocking I/O stuff
8814 case "$h_sysfile" in
8815 true) echo "#include <sys/file.h>" >  head.c;;
8816 esac
8817 case "$h_fcntl" in
8818 true) echo "#include <fcntl.h>"    >> head.c;;
8819 *) echo "#include <sys/fcntl.h>"   >> head.c;;
8820 esac
8821 echo " "
8822 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
8823 case "$o_nonblock" in
8824 '')
8825         $cat head.c > try.c
8826         $cat >>try.c <<'EOCP'
8827 #include <stdio.h>
8828 int main() {
8829 #ifdef O_NONBLOCK
8830         printf("O_NONBLOCK\n");
8831         exit(0);
8832 #endif
8833 #ifdef O_NDELAY
8834         printf("O_NDELAY\n");
8835         exit(0);
8836 #endif
8837 #ifdef FNDELAY
8838         printf("FNDELAY\n");
8839         exit(0);
8840 #endif
8841         exit(0);
8842 }
8843 EOCP
8844         set try
8845         if eval $compile_ok; then
8846                 o_nonblock=`./try`
8847                 case "$o_nonblock" in
8848                 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
8849                 *) echo "Seems like we can use $o_nonblock.";;
8850                 esac
8851         else
8852                 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
8853         fi
8854         ;;
8855 *) echo "Using $hint value $o_nonblock.";;
8856 esac
8857 $rm -f try try.* .out core
8858
8859 echo " "
8860 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
8861 case "$eagain" in
8862 '')
8863         $cat head.c > try.c
8864         $cat >>try.c <<EOCP
8865 #include <errno.h>
8866 #include <sys/types.h>
8867 #include <signal.h>
8868 #include <stdio.h> 
8869 #define MY_O_NONBLOCK $o_nonblock
8870 #ifndef errno  /* XXX need better Configure test */
8871 extern int errno;
8872 #endif
8873 #$i_unistd I_UNISTD
8874 #ifdef I_UNISTD
8875 #include <unistd.h>
8876 #endif
8877 #$i_string I_STRING
8878 #ifdef I_STRING
8879 #include <string.h>
8880 #else
8881 #include <strings.h>
8882 #endif
8883 $signal_t blech(x) int x; { exit(3); }
8884 EOCP
8885         $cat >> try.c <<'EOCP'
8886 int main()
8887 {
8888         int pd[2];
8889         int pu[2];
8890         char buf[1];
8891         char string[100];
8892
8893         pipe(pd);       /* Down: child -> parent */
8894         pipe(pu);       /* Up: parent -> child */
8895         if (0 != fork()) {
8896                 int ret;
8897                 close(pd[1]);   /* Parent reads from pd[0] */
8898                 close(pu[0]);   /* Parent writes (blocking) to pu[1] */
8899                 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
8900                         exit(1);
8901                 signal(SIGALRM, blech);
8902                 alarm(5);
8903                 if ((ret = read(pd[0], buf, 1)) > 0)    /* Nothing to read! */
8904                         exit(2);
8905                 sprintf(string, "%d\n", ret);
8906                 write(2, string, strlen(string));
8907                 alarm(0);
8908 #ifdef EAGAIN
8909                 if (errno == EAGAIN) {
8910                         printf("EAGAIN\n");
8911                         goto ok;
8912                 }
8913 #endif
8914 #ifdef EWOULDBLOCK
8915                 if (errno == EWOULDBLOCK)
8916                         printf("EWOULDBLOCK\n");
8917 #endif
8918         ok:
8919                 write(pu[1], buf, 1);   /* Unblocks child, tell it to close our pipe */
8920                 sleep(2);                               /* Give it time to close our pipe */
8921                 alarm(5);
8922                 ret = read(pd[0], buf, 1);      /* Should read EOF */
8923                 alarm(0);
8924                 sprintf(string, "%d\n", ret);
8925                 write(3, string, strlen(string));
8926                 exit(0);
8927         }
8928
8929         close(pd[0]);                   /* We write to pd[1] */
8930         close(pu[1]);                   /* We read from pu[0] */
8931         read(pu[0], buf, 1);    /* Wait for parent to signal us we may continue */
8932         close(pd[1]);                   /* Pipe pd is now fully closed! */
8933         exit(0);                                /* Bye bye, thank you for playing! */
8934 }
8935 EOCP
8936         set try
8937         if eval $compile_ok; then
8938                 echo "$startsh" >mtry
8939                 echo "./try >try.out 2>try.ret 3>try.err || exit 4" >>mtry
8940                 chmod +x mtry
8941                 ./mtry >/dev/null 2>&1
8942                 case $? in
8943                 0) eagain=`$cat try.out`;;
8944                 1) echo "Could not perform non-blocking setting!";;
8945                 2) echo "I did a successful read() for something that was not there!";;
8946                 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
8947                 *) echo "Something terribly wrong happened during testing.";;
8948                 esac
8949                 rd_nodata=`$cat try.ret`
8950                 echo "A read() system call with no data present returns $rd_nodata."
8951                 case "$rd_nodata" in
8952                 0|-1) ;;
8953                 *)
8954                         echo "(That's peculiar, fixing that to be -1.)"
8955                         rd_nodata=-1
8956                         ;;
8957                 esac
8958                 case "$eagain" in
8959                 '')
8960                         echo "Forcing errno EAGAIN on read() with no data available."
8961                         eagain=EAGAIN
8962                         ;;
8963                 *)
8964                         echo "Your read() sets errno to $eagain when no data is available."
8965                         ;;
8966                 esac
8967                 status=`$cat try.err`
8968                 case "$status" in
8969                 0) echo "And it correctly returns 0 to signal EOF.";;
8970                 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
8971                 *) echo "However, your read() returns '$status' on EOF??";;
8972                 esac
8973                 val="$define"
8974                 if test "$status" = "$rd_nodata"; then
8975                         echo "WARNING: you can't distinguish between EOF and no data!"
8976                         val="$undef"
8977                 fi
8978         else
8979                 echo "I can't compile the test program--assuming errno EAGAIN will do."
8980                 eagain=EAGAIN
8981         fi
8982         set d_eofnblk
8983         eval $setvar
8984         ;;
8985 *)
8986         echo "Using $hint value $eagain."
8987         echo "Your read() returns $rd_nodata when no data is present."
8988         case "$d_eofnblk" in
8989         "$define") echo "And you can see EOF because read() returns 0.";;
8990         "$undef") echo "But you can't see EOF status from read() returned value.";;
8991         *)
8992                 echo "(Assuming you can't see EOF status from read anyway.)"
8993                 d_eofnblk=$undef
8994                 ;;
8995         esac
8996         ;;
8997 esac
8998 $rm -f try try.* .out core head.c mtry
8999
9000 : see if fchmod exists
9001 set fchmod d_fchmod
9002 eval $inlibc
9003
9004 : see if fchown exists
9005 set fchown d_fchown
9006 eval $inlibc
9007
9008 : see if this is an fcntl system
9009 set fcntl d_fcntl
9010 eval $inlibc
9011
9012 echo " "
9013 : See if fcntl-based locking works.
9014 $cat >try.c <<'EOCP'
9015 #include <stdlib.h>
9016 #include <unistd.h>
9017 #include <fcntl.h>
9018 int main() {
9019 #if defined(F_SETLK) && defined(F_SETLKW)
9020      struct flock flock;
9021      int retval, fd;
9022      fd = open("try.c", O_RDONLY);
9023      flock.l_type = F_RDLCK;
9024      flock.l_whence = SEEK_SET;
9025      flock.l_start = flock.l_len = 0;
9026      retval = fcntl(fd, F_SETLK, &flock);
9027      close(fd);
9028      (retval < 0 ? exit(2) : exit(0));
9029 #else
9030      exit(2);
9031 #endif
9032 }
9033 EOCP
9034 echo "Checking if fcntl-based file locking works... "
9035 case "$d_fcntl" in
9036 "$define")
9037         set try
9038         if eval $compile_ok; then
9039                 if ./try; then
9040                         echo "Yes, it seems to work."
9041                         val="$define"
9042                 else
9043                         echo "Nope, it didn't work."
9044                         val="$undef"
9045                 fi
9046         else
9047                 echo "I'm unable to compile the test program, so I'll assume not."
9048                 val="$undef"
9049         fi
9050         ;;
9051 *) val="$undef";
9052         echo "Nope, since you don't even have fcntl()."
9053         ;;
9054 esac
9055 set d_fcntl_can_lock
9056 eval $setvar
9057 $rm -f try*
9058
9059
9060 hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
9061 while $test $# -ge 2; do
9062         case "$1" in
9063         $define) echo "#include <$2>";;
9064         esac ;
9065     shift 2;
9066 done > try.c;
9067 echo "int main () { struct $struct foo; char* bar; bar = (char*)foo.$field; }" >> try.c;
9068 set try;
9069 if eval $compile; then
9070         val="$define";
9071 else
9072         val="$undef";
9073 fi;
9074 set $varname;
9075 eval $setvar;
9076 $rm -f try.c try.o'
9077
9078 socketlib=''
9079 sockethdr=''
9080 : see whether socket exists
9081 echo " "
9082 $echo $n "Hmm... $c" >&4
9083 if set socket val -f d_socket; eval $csym; $val; then
9084         echo "Looks like you have Berkeley networking support." >&4
9085         d_socket="$define"
9086         if set setsockopt val -f; eval $csym; $val; then
9087                 d_oldsock="$undef"
9088         else
9089                 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
9090                 d_oldsock="$define"
9091         fi
9092 else
9093         if $contains socklib libc.list >/dev/null 2>&1; then
9094                 echo "Looks like you have Berkeley networking support." >&4
9095                 d_socket="$define"
9096                 : we will have to assume that it supports the 4.2 BSD interface
9097                 d_oldsock="$undef"
9098         else
9099                 echo "You don't have Berkeley networking in libc$_a..." >&4
9100                 if test "X$d_socket" = "X$define"; then
9101                    echo "...but you seem to believe that you have sockets." >&4
9102                 else
9103                         for net in net socket
9104                         do
9105                                 if test -f /usr/lib/lib$net$_a; then
9106                                         ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) ||  \
9107                                         $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
9108                                         if $contains socket libc.list >/dev/null 2>&1; then
9109                                                 d_socket="$define"
9110                                                 socketlib="-l$net"
9111                                                 case "$net" in
9112                                                 net)
9113                                                         echo "...but the Wollongong group seems to have hacked it in." >&4
9114                                                         sockethdr="-I/usr/netinclude"
9115                                                         ;;
9116                                                 esac
9117                                                 echo "Found Berkeley sockets interface in lib$net." >& 4 
9118                                                 if $contains setsockopt libc.list >/dev/null 2>&1; then
9119                                                         d_oldsock="$undef"
9120                                                 else
9121                                                         echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
9122                                                         d_oldsock="$define"
9123                                                 fi
9124                                                 break
9125                                         fi
9126                                 fi
9127                         done
9128                         if test "X$d_socket" != "X$define"; then
9129                            echo "or anywhere else I see." >&4
9130                            d_socket="$undef"
9131                            d_oldsock="$undef"
9132                         fi
9133                 fi
9134         fi
9135 fi
9136
9137 : see if socketpair exists
9138 set socketpair d_sockpair
9139 eval $inlibc
9140
9141
9142 echo " "
9143 echo "Checking the availability of certain socket constants..." >& 4
9144 for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
9145         enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
9146         $cat >try.c <<EOF
9147 #include <sys/types.h>
9148 #include <sys/socket.h>
9149 int main() {
9150     int i = $ENUM;
9151 }
9152 EOF
9153         val="$undef"
9154         set try; if eval $compile; then
9155                 val="$define"
9156         fi
9157         set d_${enum}; eval $setvar
9158         $rm -f try.c try
9159 done
9160
9161 : see if sys/select.h has to be included
9162 set sys/select.h i_sysselct
9163 eval $inhdr
9164
9165 : see if we should include time.h, sys/time.h, or both
9166 echo " "
9167 if test "X$timeincl" = X; then
9168         echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
9169         $echo $n "I'm now running the test program...$c"
9170         $cat >try.c <<'EOCP'
9171 #include <sys/types.h>
9172 #ifdef I_TIME
9173 #include <time.h>
9174 #endif
9175 #ifdef I_SYSTIME
9176 #ifdef SYSTIMEKERNEL
9177 #define KERNEL
9178 #endif
9179 #include <sys/time.h>
9180 #endif
9181 #ifdef I_SYSSELECT
9182 #include <sys/select.h>
9183 #endif
9184 int main()
9185 {
9186         struct tm foo;
9187 #ifdef S_TIMEVAL
9188         struct timeval bar;
9189 #endif
9190 #ifdef S_TIMEZONE
9191         struct timezone tzp;
9192 #endif
9193         if (foo.tm_sec == foo.tm_sec)
9194                 exit(0);
9195 #ifdef S_TIMEVAL
9196         if (bar.tv_sec == bar.tv_sec)
9197                 exit(0);
9198 #endif
9199         exit(1);
9200 }
9201 EOCP
9202         flags=''
9203         for s_timezone in '-DS_TIMEZONE' ''; do
9204         sysselect=''
9205         for s_timeval in '-DS_TIMEVAL' ''; do
9206         for i_systimek in '' '-DSYSTIMEKERNEL'; do
9207         for i_time in '' '-DI_TIME'; do
9208         for i_systime in '-DI_SYSTIME' ''; do
9209                 case "$flags" in
9210                 '') $echo $n ".$c"
9211                         set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
9212                         if eval $compile; then
9213                                 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
9214                                 shift
9215                                 flags="$*"
9216                                 echo " "
9217                                 $echo $n "Succeeded with $flags$c"
9218                         fi
9219                         ;;
9220                 esac
9221         done
9222         done
9223         done
9224         done
9225         done
9226         timeincl=''
9227         echo " "
9228         case "$flags" in
9229         *SYSTIMEKERNEL*) i_systimek="$define"
9230                 timeincl=`./findhdr sys/time.h`
9231                 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
9232         *) i_systimek="$undef";;
9233         esac
9234         case "$flags" in
9235         *I_TIME*) i_time="$define"
9236                 timeincl=`./findhdr time.h`" $timeincl"
9237                 echo "We'll include <time.h>." >&4;;
9238         *) i_time="$undef";;
9239         esac
9240         case "$flags" in
9241         *I_SYSTIME*) i_systime="$define"
9242                 timeincl=`./findhdr sys/time.h`" $timeincl"
9243                 echo "We'll include <sys/time.h>." >&4;;
9244         *) i_systime="$undef";;
9245         esac
9246         $rm -f try.c try
9247 fi
9248
9249 : check for fd_set items
9250 $cat <<EOM
9251
9252 Checking to see how well your C compiler handles fd_set and friends ...
9253 EOM
9254 $cat >fd_set.c <<EOCP
9255 #$i_systime I_SYS_TIME
9256 #$i_sysselct I_SYS_SELECT
9257 #$d_socket HAS_SOCKET
9258 #include <sys/types.h>
9259 #ifdef HAS_SOCKET
9260 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
9261 #endif
9262 #ifdef I_SYS_TIME
9263 #include <sys/time.h>
9264 #endif
9265 #ifdef I_SYS_SELECT
9266 #include <sys/select.h>
9267 #endif
9268 int main() {
9269         fd_set fds;
9270
9271 #ifdef TRYBITS
9272         if(fds.fds_bits);
9273 #endif
9274
9275 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
9276         exit(0);
9277 #else
9278         exit(1);
9279 #endif
9280 }
9281 EOCP
9282 set fd_set -DTRYBITS
9283 if eval $compile; then
9284         d_fds_bits="$define"
9285         d_fd_set="$define"
9286         echo "Well, your system knows about the normal fd_set typedef..." >&4
9287         if ./fd_set; then
9288                 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
9289                 d_fd_macros="$define"
9290         else
9291                 $cat >&4 <<'EOM'
9292 but not the normal fd_set macros!  Gaaack!  I'll have to cover for you.
9293 EOM
9294                 d_fd_macros="$undef"
9295         fi
9296 else
9297         $cat <<'EOM'
9298 Hmm, your compiler has some difficulty with fd_set.  Checking further...
9299 EOM
9300         set fd_set
9301         if eval $compile; then
9302                 d_fds_bits="$undef"
9303                 d_fd_set="$define"
9304                 echo "Well, your system has some sort of fd_set available..." >&4
9305                 if ./fd_set; then
9306                         echo "and you have the normal fd_set macros." >&4
9307                         d_fd_macros="$define"
9308                 else
9309                         $cat <<'EOM'
9310 but not the normal fd_set macros!  Gross!  More work for me...
9311 EOM
9312                         d_fd_macros="$undef"
9313                 fi
9314         else
9315         echo "Well, you got zip.  That's OK, I can roll my own fd_set stuff." >&4
9316                 d_fd_set="$undef"
9317                 d_fds_bits="$undef"
9318                 d_fd_macros="$undef"
9319         fi
9320 fi
9321 $rm -f fd_set*
9322
9323 : see if fgetpos exists
9324 set fgetpos d_fgetpos
9325 eval $inlibc
9326
9327 : see if flock exists
9328 set flock d_flock
9329 eval $inlibc
9330
9331 : see if fork exists
9332 set fork d_fork
9333 eval $inlibc
9334
9335 : see if pathconf exists
9336 set pathconf d_pathconf
9337 eval $inlibc
9338
9339 : see if fpathconf exists
9340 set fpathconf d_fpathconf
9341 eval $inlibc
9342
9343
9344 : check for fpos64_t
9345 echo " "
9346 echo "Checking to see if you have fpos64_t..." >&4
9347 $cat >try.c <<EOCP
9348 #include <stdio.h>
9349 int main() { fpos64_t x = 7; }
9350 EOCP
9351 set try
9352 if eval $compile; then
9353         val="$define"
9354         echo "You have fpos64_t."
9355 else
9356         val="$undef"
9357         echo "You do not have fpos64_t."
9358         case "$fpossize" in
9359         8) echo "(Your fpos_t is 64 bits, so you could use that.)" ;;
9360         esac
9361 fi
9362 $rm -f try.* try
9363 set d_fpos64_t
9364 eval $setvar
9365
9366 : see if frexpl exists
9367 set frexpl d_frexpl
9368 eval $inlibc
9369
9370 hasstruct='varname=$1; struct=$2; shift; shift;
9371 while $test $# -ge 2; do
9372         case "$1" in
9373         $define) echo "#include <$2>";;
9374         esac ;
9375     shift 2;
9376 done > try.c;
9377 echo "int main () { struct $struct foo; }" >> try.c;
9378 set try;
9379 if eval $compile; then
9380         val="$define";
9381 else
9382         val="$undef";
9383 fi;
9384 set $varname;
9385 eval $setvar;
9386 $rm -f try.c try.o'
9387
9388 : see if this is a sys/param system
9389 set sys/param.h i_sysparam
9390 eval $inhdr
9391
9392 : see if this is a sys/mount.h system
9393 set sys/mount.h i_sysmount
9394 eval $inhdr
9395
9396 : see if sys/types.h has to be included
9397 set sys/types.h i_systypes
9398 eval $inhdr
9399
9400
9401 echo " "
9402 echo "Checking to see if your system supports struct fs_data..." >&4
9403 set d_fs_data_s fs_data $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h
9404 eval $hasstruct
9405 case "$d_fs_data_s" in
9406 "$define")      echo "Yes, it does."   ;;
9407 *)              echo "No, it doesn't." ;;
9408 esac
9409
9410 : see if fseeko exists
9411 set fseeko d_fseeko
9412 eval $inlibc
9413 case "$longsize" in
9414 8) echo "(Your long is 64 bits, so you could use fseek.)" ;;
9415 esac
9416
9417 : see if fsetpos exists
9418 set fsetpos d_fsetpos
9419 eval $inlibc
9420
9421
9422 : see if fstatfs exists
9423 set fstatfs d_fstatfs
9424 eval $inlibc
9425
9426
9427 : see if statvfs exists
9428 set statvfs d_statvfs
9429 eval $inlibc
9430
9431 : see if fstatvfs exists
9432 set fstatvfs d_fstatvfs
9433 eval $inlibc
9434
9435
9436 : see if fsync exists
9437 set fsync d_fsync
9438 eval $inlibc
9439
9440 : see if ftello exists
9441 set ftello d_ftello
9442 eval $inlibc
9443 case "$longsize" in
9444 8) echo "(Your long is 64 bits, so you could use ftell.)" ;;
9445 esac
9446
9447 : see if getcwd exists
9448 set getcwd d_getcwd
9449 eval $inlibc
9450
9451 : see if getespwnam exists
9452 set getespwnam d_getespwnam
9453 eval $inlibc
9454
9455
9456 : see if getfsstat exists
9457 set getfsstat d_getfsstat
9458 eval $inlibc
9459
9460 : see if getgrent exists
9461 set getgrent d_getgrent
9462 eval $inlibc
9463
9464 : see if gethostbyaddr exists
9465 set gethostbyaddr d_gethbyaddr
9466 eval $inlibc
9467
9468 : see if gethostbyname exists
9469 set gethostbyname d_gethbyname
9470 eval $inlibc
9471
9472 : see if gethostent exists
9473 set gethostent d_gethent
9474 eval $inlibc
9475
9476 : see how we will look up host name
9477 echo " "
9478 call=''
9479 if set gethostname val -f d_gethname; eval $csym; $val; then
9480         echo 'gethostname() found.' >&4
9481         d_gethname="$define"
9482         call=gethostname
9483 fi
9484 if set uname val -f d_uname; eval $csym; $val; then
9485         if ./xenix; then
9486                 $cat <<'EOM'
9487 uname() was found, but you're running xenix, and older versions of xenix
9488 have a broken uname(). If you don't really know whether your xenix is old
9489 enough to have a broken system call, use the default answer.
9490
9491 EOM
9492                 dflt=y
9493                 case "$d_uname" in
9494                 "$define") dflt=n;;
9495                 esac
9496                 rp='Is your uname() broken?'
9497                 . ./myread
9498                 case "$ans" in
9499                 n*) d_uname="$define"; call=uname;;
9500                 esac
9501         else
9502                 echo 'uname() found.' >&4
9503                 d_uname="$define"
9504                 case "$call" in
9505                 '') call=uname ;;
9506                 esac
9507         fi
9508 fi
9509 case "$d_gethname" in
9510 '') d_gethname="$undef";;
9511 esac
9512 case "$d_uname" in
9513 '') d_uname="$undef";;
9514 esac
9515 case "$d_uname$d_gethname" in
9516 *define*)
9517         dflt=n
9518         cat <<EOM
9519  
9520 Every now and then someone has a $call() that lies about the hostname
9521 but can't be fixed for political or economic reasons.  If you wish, I can
9522 pretend $call() isn't there and maybe compute hostname at run-time
9523 thanks to the '$phostname' command.
9524
9525 EOM
9526         rp="Shall I ignore $call() from now on?"
9527         . ./myread
9528         case "$ans" in
9529         y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
9530         esac;;
9531 esac
9532 case "$phostname" in
9533 '') aphostname='';;
9534 *) case "$aphostname" in
9535         /*) ;;
9536         *) set X $phostname
9537                 shift
9538                 file=$1
9539                 shift
9540                 file=`./loc $file $file $pth`
9541                 aphostname=`echo $file $*`
9542                 ;;
9543         esac
9544         ;;
9545 esac
9546 case "$d_uname$d_gethname" in
9547 *define*) ;;
9548 *)
9549         case "$phostname" in
9550         '')
9551                 echo "There will be no way for $package to get your hostname." >&4;;
9552         *)
9553         echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
9554                 ;;
9555         esac;;
9556 esac
9557 case "$d_phostname" in
9558 '') d_phostname="$undef";;
9559 esac
9560
9561 : see if this is a netdb.h system
9562 set netdb.h i_netdb
9563 eval $inhdr
9564
9565 : see if prototypes for various gethostxxx netdb.h functions are available
9566 echo " "
9567 set d_gethostprotos gethostent $i_netdb netdb.h
9568 eval $hasproto
9569
9570 : see if getlogin exists
9571 set getlogin d_getlogin
9572 eval $inlibc
9573
9574 : see if getmnt exists
9575 set getmnt d_getmnt
9576 eval $inlibc
9577
9578 : see if getmntent exists
9579 set getmntent d_getmntent
9580 eval $inlibc
9581
9582 : see if getnetbyaddr exists
9583 set getnetbyaddr d_getnbyaddr
9584 eval $inlibc
9585
9586 : see if getnetbyname exists
9587 set getnetbyname d_getnbyname
9588 eval $inlibc
9589
9590 : see if getnetent exists
9591 set getnetent d_getnent
9592 eval $inlibc
9593
9594 : see if prototypes for various getnetxxx netdb.h functions are available
9595 echo " "
9596 set d_getnetprotos getnetent $i_netdb netdb.h
9597 eval $hasproto
9598
9599 : see if getpagesize exists
9600 set getpagesize d_getpagsz
9601 eval $inlibc
9602
9603
9604 : see if getprotobyname exists
9605 set getprotobyname d_getpbyname
9606 eval $inlibc
9607
9608 : see if getprotobynumber exists
9609 set getprotobynumber d_getpbynumber
9610 eval $inlibc
9611
9612 : see if getprotoent exists
9613 set getprotoent d_getpent
9614 eval $inlibc
9615
9616 : see if getpgid exists
9617 set getpgid d_getpgid
9618 eval $inlibc
9619
9620 : see if getpgrp2 exists
9621 set getpgrp2 d_getpgrp2
9622 eval $inlibc
9623
9624 : see if getppid exists
9625 set getppid d_getppid
9626 eval $inlibc
9627
9628 : see if getpriority exists
9629 set getpriority d_getprior
9630 eval $inlibc
9631
9632 : see if prototypes for various getprotoxxx netdb.h functions are available
9633 echo " "
9634 set d_getprotoprotos getprotoent $i_netdb netdb.h
9635 eval $hasproto
9636
9637 : see if getprpwnam exists
9638 set getprpwnam d_getprpwnam
9639 eval $inlibc
9640
9641 : see if getpwent exists
9642 set getpwent d_getpwent
9643 eval $inlibc
9644
9645
9646 : see if getservbyname exists
9647 set getservbyname d_getsbyname
9648 eval $inlibc
9649
9650 : see if getservbyport exists
9651 set getservbyport d_getsbyport
9652 eval $inlibc
9653
9654 : see if getservent exists
9655 set getservent d_getsent
9656 eval $inlibc
9657
9658 : see if prototypes for various getservxxx netdb.h functions are available
9659 echo " "
9660 set d_getservprotos getservent $i_netdb netdb.h
9661 eval $hasproto
9662
9663 : see if getspnam exists
9664 set getspnam d_getspnam
9665 eval $inlibc
9666
9667 : see if gettimeofday or ftime exists
9668 set gettimeofday d_gettimeod
9669 eval $inlibc
9670 case "$d_gettimeod" in
9671 "$undef")
9672         set ftime d_ftime 
9673         eval $inlibc
9674         ;;
9675 *)
9676         val="$undef"; set d_ftime; eval $setvar
9677         ;;
9678 esac
9679 case "$d_gettimeod$d_ftime" in
9680 "$undef$undef")
9681         echo " "
9682         echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
9683         ;;
9684 esac
9685
9686 : see if this is an grp system
9687 set grp.h i_grp
9688 eval $inhdr
9689
9690 case "$i_grp" in
9691 $define)
9692         xxx=`./findhdr grp.h`
9693         $cppstdin $cppflags $cppminus < $xxx >$$.h
9694
9695         if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
9696                 val="$define"
9697         else
9698                 val="$undef"
9699         fi
9700         set d_grpasswd
9701         eval $setvar
9702
9703         $rm -f $$.h
9704         ;;
9705 *)
9706         val="$undef";
9707         set d_grpasswd; eval $setvar
9708         ;;
9709 esac
9710
9711 : see if hasmntopt exists
9712 set hasmntopt d_hasmntopt
9713 eval $inlibc
9714
9715 : see if this is a netinet/in.h or sys/in.h system
9716 set netinet/in.h i_niin sys/in.h i_sysin
9717 eval $inhdr
9718
9719 : see if arpa/inet.h has to be included
9720 set arpa/inet.h i_arpainet
9721 eval $inhdr
9722
9723 : see if htonl --and friends-- exists
9724 val=''
9725 set htonl val
9726 eval $inlibc
9727
9728 : Maybe they are macros.
9729 case "$val" in
9730 $undef)
9731         $cat >htonl.c <<EOM
9732 #include <stdio.h>
9733 #include <sys/types.h>
9734 #$i_niin I_NETINET_IN
9735 #$i_sysin I_SYS_IN
9736 #$i_arpainet I_ARPA_INET
9737 #ifdef I_NETINET_IN
9738 #include <netinet/in.h>
9739 #endif
9740 #ifdef I_SYS_IN
9741 #include <sys/in.h>
9742 #endif
9743 #ifdef I_ARPA_INET
9744 #include <arpa/inet.h>
9745 #endif
9746 #ifdef htonl
9747 printf("Defined as a macro.");
9748 #endif
9749 EOM
9750         $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
9751         if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
9752                 val="$define"
9753                 echo "But it seems to be defined as a macro." >&4
9754         fi
9755         $rm -f htonl.?
9756         ;;
9757 esac
9758 set d_htonl
9759 eval $setvar
9760
9761 : see if iconv exists
9762 set iconv d_iconv
9763 eval $inlibc
9764
9765 : index or strchr
9766 echo " "
9767 if set index val -f; eval $csym; $val; then
9768         if set strchr val -f d_strchr; eval $csym; $val; then
9769                 if $contains strchr "$strings" >/dev/null 2>&1 ; then
9770                         val="$define"
9771                         vali="$undef"
9772                         echo "strchr() found." >&4
9773                 else
9774                         val="$undef"
9775                         vali="$define"
9776                         echo "index() found." >&4
9777                 fi
9778         else
9779                 val="$undef"
9780                 vali="$define"
9781                 echo "index() found." >&4
9782         fi
9783 else
9784         if set strchr val -f d_strchr; eval $csym; $val; then
9785                 val="$define"
9786                 vali="$undef"
9787                 echo "strchr() found." >&4
9788         else
9789                 echo "No index() or strchr() found!" >&4
9790                 val="$undef"
9791                 vali="$undef"
9792         fi
9793 fi
9794 set d_strchr; eval $setvar
9795 val="$vali"
9796 set d_index; eval $setvar
9797
9798 : check whether inet_aton exists
9799 set inet_aton d_inetaton
9800 eval $inlibc
9801
9802 : see if inttypes.h is available
9803 : we want a real compile instead of Inhdr because some systems
9804 : have an inttypes.h which includes non-existent headers
9805 echo " "
9806 $cat >try.c <<EOCP
9807 #include <inttypes.h>
9808 int main() {
9809         static int32_t foo32 = 0x12345678;
9810 }
9811 EOCP
9812 set try
9813 if eval $compile; then
9814         echo "<inttypes.h> found." >&4
9815         val="$define"
9816 else
9817         echo "<inttypes.h> NOT found." >&4
9818         val="$undef"
9819 fi
9820 $rm -f try.c try
9821 set i_inttypes
9822 eval $setvar
9823
9824 : check for int64_t
9825 echo " "
9826 echo "Checking to see if you have int64_t..." >&4
9827 $cat >try.c <<EOCP
9828 #include <sys/types.h>
9829 #$i_inttypes I_INTTYPES
9830 #ifdef I_INTTYPES
9831 #include <inttypes.h>
9832 #endif
9833 int main() { int64_t x = 7; }
9834 EOCP
9835 set try
9836 if eval $compile; then
9837         val="$define"
9838         echo "You have int64_t."
9839 else
9840         val="$undef"
9841         echo "You do not have int64_t."
9842 fi
9843 $rm -f try try.*
9844 set d_int64_t
9845 eval $setvar
9846
9847 : Look for isascii
9848 echo " "
9849 $cat >isascii.c <<'EOCP'
9850 #include <stdio.h>
9851 #include <ctype.h>
9852 int main() {
9853         int c = 'A';
9854         if (isascii(c))
9855                 exit(0);
9856         else
9857                 exit(1);
9858 }
9859 EOCP
9860 set isascii
9861 if eval $compile; then
9862         echo "isascii() found." >&4
9863         val="$define"
9864 else
9865         echo "isascii() NOT found." >&4
9866         val="$undef"
9867 fi
9868 set d_isascii
9869 eval $setvar
9870 $rm -f isascii*
9871
9872 : see if isnan exists
9873 set isnan d_isnan
9874 eval $inlibc
9875
9876 : see if isnanl exists
9877 set isnanl d_isnanl
9878 eval $inlibc
9879
9880 : see if killpg exists
9881 set killpg d_killpg
9882 eval $inlibc
9883
9884 : see if lchown exists
9885 echo " "
9886 $cat > try.c <<'EOCP'
9887 /* System header to define __stub macros and hopefully few prototypes,
9888     which can conflict with char lchown(); below.  */
9889 #include <assert.h>
9890 /* Override any gcc2 internal prototype to avoid an error.  */
9891 /* We use char because int might match the return type of a gcc2
9892    builtin and then its argument prototype would still apply.  */
9893 char lchown();
9894 int main() {
9895     /*  The GNU C library defines this for functions which it implements
9896         to always fail with ENOSYS.  Some functions are actually named
9897         something starting with __ and the normal name is an alias.  */
9898 #if defined (__stub_lchown) || defined (__stub___lchown)
9899 choke me
9900 #else
9901 lchown();
9902 #endif
9903 ; return 0; }
9904 EOCP
9905 set try
9906 if eval $compile; then
9907     $echo "lchown() found." >&4
9908     val="$define"
9909 else
9910     $echo "lchown() NOT found." >&4
9911     val="$undef"
9912 fi
9913 set d_lchown
9914 eval $setvar
9915
9916 : See if number of significant digits in a double precision number is known
9917 echo " "
9918 $cat >ldbl_dig.c <<EOM
9919 #$i_limits I_LIMITS
9920 #$i_float I_FLOAT
9921 #ifdef I_LIMITS
9922 #include <limits.h>
9923 #endif
9924 #ifdef I_FLOAT
9925 #include <float.h>
9926 #endif
9927 #ifdef LDBL_DIG
9928 printf("Contains LDBL_DIG");
9929 #endif
9930 EOM
9931 $cppstdin $cppflags $cppminus < ldbl_dig.c >ldbl_dig.E 2>/dev/null
9932 if $contains 'LDBL_DIG' ldbl_dig.E >/dev/null 2>&1; then
9933         echo "LDBL_DIG found." >&4
9934         val="$define"
9935 else
9936         echo "LDBL_DIG NOT found." >&4
9937         val="$undef"
9938 fi
9939 $rm -f ldbl_dig.?
9940 set d_ldbl_dig
9941 eval $setvar
9942
9943 : see if link exists
9944 set link d_link
9945 eval $inlibc
9946
9947 : see if localeconv exists
9948 set localeconv d_locconv
9949 eval $inlibc
9950
9951 : see if lockf exists
9952 set lockf d_lockf
9953 eval $inlibc
9954
9955 : check for long long
9956 echo " "
9957 echo "Checking to see if you have long long..." >&4
9958 echo 'int main() { long long x = 7; return 0; }' > try.c
9959 set try
9960 if eval $compile; then
9961         val="$define"
9962         echo "You have long long."
9963 else
9964         val="$undef"
9965         echo "You do not have long long."
9966 fi
9967 $rm try.*
9968 set d_longlong
9969 eval $setvar
9970
9971 : check for length of long long
9972 case "${d_longlong}${longlongsize}" in
9973 $define)
9974         echo " "
9975         echo "Checking to see how big your long longs are..." >&4
9976         $cat >try.c <<'EOCP'
9977 #include <stdio.h>
9978 int main()
9979 {
9980     printf("%d\n", (int)sizeof(long long));
9981     return(0);
9982 }
9983 EOCP
9984         set try
9985         if eval $compile_ok; then
9986                 longlongsize=`./try$exe_ext`
9987                 echo "Your long longs are $longlongsize bytes long."
9988         else
9989                 dflt='8'
9990                 echo " "
9991                 echo "(I can't seem to compile the test program.  Guessing...)"
9992                 rp="What is the size of a long long (in bytes)?"
9993                 . ./myread
9994                 longlongsize="$ans"
9995         fi
9996         if $test "X$longsize" = "X$longlongsize"; then
9997                 echo "(That isn't any different from an ordinary long.)"
9998         fi      
9999         ;;
10000 esac
10001 $rm -f try.* try
10002
10003 : see if prototype for lseek is available
10004 echo " "
10005 set d_lseekproto lseek $i_systypes sys/types.h $i_unistd unistd.h
10006 eval $hasproto
10007
10008 : see if lstat exists
10009 set lstat d_lstat
10010 eval $inlibc
10011
10012 : see if madvise exists
10013 set madvise d_madvise
10014 eval $inlibc
10015
10016 : see if mblen exists
10017 set mblen d_mblen
10018 eval $inlibc
10019
10020 : see if mbstowcs exists
10021 set mbstowcs d_mbstowcs
10022 eval $inlibc
10023
10024 : see if mbtowc exists
10025 set mbtowc d_mbtowc
10026 eval $inlibc
10027
10028 : see if memchr exists
10029 set memchr d_memchr
10030 eval $inlibc
10031
10032 : see if memcmp exists
10033 set memcmp d_memcmp
10034 eval $inlibc
10035
10036 : see if memcpy exists
10037 set memcpy d_memcpy
10038 eval $inlibc
10039
10040 : see if memmove exists
10041 set memmove d_memmove
10042 eval $inlibc
10043
10044 : see if memset exists
10045 set memset d_memset
10046 eval $inlibc
10047
10048 : see if mkdir exists
10049 set mkdir d_mkdir
10050 eval $inlibc
10051
10052 : see if mkdtemp exists
10053 set mkdtemp d_mkdtemp
10054 eval $inlibc
10055
10056 : see if mkfifo exists
10057 set mkfifo d_mkfifo
10058 eval $inlibc
10059
10060 : see if mkstemp exists
10061 set mkstemp d_mkstemp
10062 eval $inlibc
10063
10064 : see if mkstemps exists
10065 set mkstemps d_mkstemps
10066 eval $inlibc
10067
10068 : see if mktime exists
10069 set mktime d_mktime
10070 eval $inlibc
10071
10072 : see if this is a sys/mman.h system
10073 set sys/mman.h i_sysmman
10074 eval $inhdr
10075
10076 : see if mmap exists
10077 set mmap d_mmap
10078 eval $inlibc
10079 : see what shmat returns
10080 : default to something harmless
10081 mmaptype='void *'
10082 case "$i_sysmman$d_mmap" in
10083 "$define$define")
10084         $cat >mmap.c <<'END'
10085 #include <sys/mman.h>
10086 void *mmap();
10087 END
10088         if $cc $ccflags -c mmap.c >/dev/null 2>&1; then
10089                 mmaptype='void *'
10090         else
10091                 mmaptype='caddr_t'
10092         fi
10093         echo "and it returns ($mmaptype)." >&4
10094         ;;
10095 esac
10096
10097
10098
10099 : see if modfl exists
10100 set modfl d_modfl
10101 eval $inlibc
10102
10103 : see if mprotect exists
10104 set mprotect d_mprotect
10105 eval $inlibc
10106
10107 : see if msgctl exists
10108 set msgctl d_msgctl
10109 eval $inlibc
10110
10111 : see if msgget exists
10112 set msgget d_msgget
10113 eval $inlibc
10114
10115 : see if msgsnd exists
10116 set msgsnd d_msgsnd
10117 eval $inlibc
10118
10119 : see if msgrcv exists
10120 set msgrcv d_msgrcv
10121 eval $inlibc
10122
10123 : see how much of the 'msg*(2)' library is present.
10124 h_msg=true
10125 echo " "
10126 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
10127 *"$undef"*) h_msg=false;;
10128 esac
10129 case "$osname" in
10130 freebsd)
10131     case "`ipcs 2>&1`" in
10132     "SVID messages"*"not configured"*)
10133         echo "Your $osname does not have the msg*(2) configured." >&4
10134         h_msg=false
10135         val="$undef"
10136         set msgctl d_msgctl
10137         eval $setvar
10138         set msgget d_msgget
10139         eval $setvar
10140         set msgsnd d_msgsnd
10141         eval $setvar
10142         set msgrcv d_msgrcv
10143         eval $setvar
10144         ;;
10145     esac
10146     ;;
10147 esac
10148 : we could also check for sys/ipc.h ...
10149 if $h_msg && $test `./findhdr sys/msg.h`; then
10150         echo "You have the full msg*(2) library." >&4
10151         val="$define"
10152 else
10153         echo "You don't have the full msg*(2) library." >&4
10154         val="$undef"
10155 fi
10156 set d_msg
10157 eval $setvar
10158
10159 : see if msync exists
10160 set msync d_msync
10161 eval $inlibc
10162
10163 : see if munmap exists
10164 set munmap d_munmap
10165 eval $inlibc
10166
10167 : see if nice exists
10168 set nice d_nice
10169 eval $inlibc
10170
10171
10172 echo " "
10173 echo "Checking which 64-bit integer type we could use..." >&4
10174
10175 case "$intsize" in
10176 8) val=int
10177    set quadtype
10178    eval $setvar
10179    val='"unsigned int"'
10180    set uquadtype
10181    eval $setvar
10182    quadkind=1
10183    ;;
10184 *) case "$longsize" in
10185    8) val=long
10186       set quadtype
10187       eval $setvar
10188       val='"unsigned long"'
10189       set uquadtype
10190       eval $setvar
10191       quadkind=2
10192       ;;
10193    *) case "$d_longlong:$longlongsize" in
10194       define:8)
10195         val='"long long"'
10196         set quadtype
10197         eval $setvar
10198         val='"unsigned long long"'
10199         set uquadtype
10200         eval $setvar
10201         quadkind=3
10202         ;;
10203       *) case "$d_int64_t" in
10204          define)
10205            val=int64_t
10206            set quadtype
10207            eval $setvar
10208            val=uint64_t
10209            set uquadtype
10210            eval $setvar
10211            quadkind=4
10212            ;;
10213          esac
10214          ;;
10215       esac
10216       ;;
10217    esac
10218    ;;
10219 esac
10220
10221 case "$quadtype" in
10222 '')     echo "Alas, no 64-bit integer types in sight." >&4
10223         d_quad="$undef"
10224         ;;
10225 *)      if test X"$use64bitint" = Xdefine -o X"$longsize" = X8; then
10226             verb="will"
10227         else
10228             verb="could"
10229         fi
10230         echo "We $verb use '$quadtype' for 64-bit integers." >&4
10231         d_quad="$define"
10232         ;;
10233 esac
10234
10235 : check for length of character
10236 echo " "
10237 case "$charsize" in
10238 '')
10239         echo "Checking to see how big your characters are (hey, you never know)..." >&4
10240         $cat >try.c <<'EOCP'
10241 #include <stdio.h>
10242 int main()
10243 {
10244     printf("%d\n", (int)sizeof(char));
10245     exit(0);
10246 }
10247 EOCP
10248         set try
10249         if eval $compile_ok; then
10250                 dflt=`./try`
10251         else
10252                 dflt='1'
10253                 echo "(I can't seem to compile the test program.  Guessing...)"
10254         fi
10255         ;;
10256 *)
10257         dflt="$charsize"
10258         ;;
10259 esac
10260 rp="What is the size of a character (in bytes)?"
10261 . ./myread
10262 charsize="$ans"
10263 $rm -f try.c try
10264
10265 : check for volatile keyword
10266 echo " "
10267 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
10268 $cat >try.c <<'EOCP'
10269 int main()
10270 {
10271         typedef struct _goo_struct goo_struct;
10272         goo_struct * volatile goo = ((goo_struct *)0);
10273         struct _goo_struct {
10274                 long long_int;
10275                 int reg_int;
10276                 char char_var;
10277         };
10278         typedef unsigned short foo_t;
10279         char *volatile foo;
10280         volatile int bar;
10281         volatile foo_t blech;
10282         foo = foo;
10283 }
10284 EOCP
10285 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
10286         val="$define"
10287         echo "Yup, it does."
10288 else
10289         val="$undef"
10290         echo "Nope, it doesn't."
10291 fi
10292 set d_volatile
10293 eval $setvar
10294 $rm -f try.*
10295
10296
10297 echo " "
10298 $echo "Choosing the C types to be used for Perl's internal types..." >&4
10299
10300 case "$use64bitint:$d_quad:$quadtype" in
10301 define:define:?*)
10302         ivtype="$quadtype"
10303         uvtype="$uquadtype"
10304         ivsize=8
10305         uvsize=8
10306         ;;
10307 *)      ivtype="long"
10308         uvtype="unsigned long"
10309         ivsize=$longsize
10310         uvsize=$longsize
10311         ;;
10312 esac
10313
10314 case "$uselongdouble:$d_longdbl" in
10315 define:define)
10316         nvtype="long double"
10317         nvsize=$longdblsize
10318         ;;
10319 *)      nvtype=double
10320         nvsize=$doublesize
10321         ;;
10322 esac
10323
10324 $echo "(IV will be "$ivtype", $ivsize bytes)"
10325 $echo "(UV will be "$uvtype", $uvsize bytes)"
10326 $echo "(NV will be "$nvtype", $nvsize bytes)"
10327
10328 $cat >try.c <<EOCP
10329 #$i_inttypes I_INTTYPES
10330 #ifdef I_INTTYPES
10331 #include <inttypes.h>
10332 #endif
10333 #include <stdio.h>
10334 int main() {
10335 #ifdef INT8
10336    int8_t i =  INT8_MAX;
10337   uint8_t u = UINT8_MAX;
10338   printf("int8_t\n");
10339 #endif
10340 #ifdef INT16
10341    int16_t i =  INT16_MAX;
10342   uint16_t i = UINT16_MAX;
10343   printf("int16_t\n");
10344 #endif
10345 #ifdef INT32
10346    int32_t i =  INT32_MAX;
10347   uint32_t u = UINT32_MAX;
10348   printf("int32_t\n");
10349 #endif
10350 }
10351 EOCP
10352
10353 case "$i8type" in
10354 '')     case "$charsize" in
10355         1)      i8type=char
10356                 u8type="unsigned char"
10357                 i8size=$charsize
10358                 u8size=$charsize
10359                 ;;
10360         esac
10361         ;;
10362 esac
10363 case "$i8type" in
10364 '')     set try -DINT8
10365         if eval $compile; then
10366                 case "`./try$exe_ext`" in
10367                 int8_t) i8type=int8_t
10368                         u8type=uint8_t
10369                         i8size=1
10370                         u8size=1
10371                         ;;
10372                 esac
10373         fi
10374         ;;
10375 esac
10376 case "$i8type" in
10377 '')     if $test $charsize -ge 1; then
10378                 i8type=char
10379                 u8type="unsigned char"
10380                 i8size=$charsize
10381                 u8size=$charsize
10382         fi
10383         ;;
10384 esac
10385
10386 case "$i16type" in
10387 '')     case "$shortsize" in
10388         2)      i16type=short
10389                 u16type="unsigned short"
10390                 i16size=$shortsize
10391                 u16size=$shortsize
10392                 ;;
10393         esac
10394         ;;
10395 esac
10396 case "$i16type" in
10397 '')     set try -DINT16
10398         if eval $compile; then
10399                 case "`./try$exe_ext`" in
10400                 int16_t)
10401                         i16type=int16_t
10402                         u16type=uint16_t
10403                         i16size=2
10404                         u16size=2
10405                         ;;
10406                 esac
10407         fi
10408         ;;
10409 esac
10410 case "$i16type" in
10411 '')     if $test $shortsize -ge 2; then
10412                 i16type=short
10413                 u16type="unsigned short"
10414                 i16size=$shortsize
10415                 u16size=$shortsize
10416         fi
10417         ;;
10418 esac
10419
10420 case "$i32type" in
10421 '')     case "$longsize" in
10422         4)      i32type=long
10423                 u32type="unsigned long"
10424                 i32size=$longsize
10425                 u32size=$longsize
10426                 ;;
10427         *)      case "$intsize" in
10428                 4)      i32type=int
10429                         u32type="unsigned int"
10430                         i32size=$intsize
10431                         u32size=$intsize
10432                         ;;
10433                 esac
10434                 ;;
10435         esac
10436         ;;
10437 esac
10438 case "$i32type" in
10439 '')     set try -DINT32
10440         if eval $compile; then
10441                 case "`./try$exe_ext`" in
10442                 int32_t)
10443                         i32type=int32_t
10444                         u32type=uint32_t
10445                         i32size=4
10446                         u32size=4
10447                         ;;
10448                 esac
10449         fi
10450         ;;
10451 esac
10452 case "$i32type" in
10453 '')     if $test $intsize -ge 4; then
10454                 i32type=int
10455                 u32type="unsigned int"
10456                 i32size=$intsize
10457                 u32size=$intsize
10458         fi
10459         ;;
10460 esac
10461
10462 case "$i64type" in
10463 '')     case "$d_quad:$quadtype" in
10464         define:?*)
10465                 i64type="$quadtype"
10466                 u64type="$uquadtype"
10467                 i64size=8
10468                 u64size=8
10469                 ;;
10470         esac
10471         ;;
10472 esac
10473
10474 $echo "Checking how many bits of your UVs your NVs can preserve..." >&4
10475 : volatile so that the compiler has to store it out to memory.
10476 if test X"$d_volatile" = X"$define"; then
10477         volatile=volatile
10478 fi
10479 $cat <<EOP >try.c
10480 #include <stdio.h>
10481 #include <sys/types.h>
10482 #include <signal.h>
10483 #ifdef SIGFPE
10484 $volatile int bletched = 0;
10485 $signal_t blech(s) int s; { bletched = 1; }
10486 #endif
10487 int main() {
10488     $uvtype u = 0;
10489     $nvtype d;
10490     int     n = 8 * $uvsize;
10491     int     i;
10492 #ifdef SIGFPE
10493     signal(SIGFPE, blech);
10494 #endif
10495
10496     for (i = 0; i < n; i++) {
10497       u = u << 1 | ($uvtype)1;
10498       d = ($nvtype)u;
10499       if (($uvtype)d != u)
10500         break;
10501       if (d <= 0)
10502         break;
10503       d = ($nvtype)(u - 1);
10504       if (($uvtype)d != (u - 1))
10505         break;
10506 #ifdef SIGFPE
10507       if (bletched) {
10508         break;
10509 #endif
10510       } 
10511     }
10512     printf("%d\n", ((i == n) ? -n : i));
10513     exit(0);
10514 }
10515 EOP
10516 set try
10517
10518 d_nv_preserves_uv="$undef"
10519 if eval $compile; then
10520         d_nv_preserves_uv_bits="`./try$exe_ext`"
10521 fi
10522 case "$d_nv_preserves_uv_bits" in
10523 \-[1-9]*)       
10524         d_nv_preserves_uv_bits=`expr 0 - $d_nv_preserves_uv_bits`
10525         $echo "Your NVs can preserve all $d_nv_preserves_uv_bits bits of your UVs."  2>&1
10526         d_nv_preserves_uv="$define"
10527         ;;
10528 [1-9]*) $echo "Your NVs can preserve only $d_nv_preserves_uv_bits bits of your UVs."  2>&1
10529         d_nv_preserves_uv="$undef" ;;
10530 *)      $echo "Can't figure out how many bits your NVs preserve." 2>&1
10531         d_nv_preserves_uv_bits="$undef" ;;
10532 esac
10533
10534 $rm -f try.* try
10535
10536
10537 : check for off64_t
10538 echo " "
10539 echo "Checking to see if you have off64_t..." >&4
10540 $cat >try.c <<EOCP
10541 #include <sys/types.h>
10542 #include <unistd.h>
10543 int main() { off64_t x = 7; }
10544 EOCP
10545 set try
10546 if eval $compile; then
10547         val="$define"
10548         echo "You have off64_t."
10549 else
10550         val="$undef"
10551         echo "You do not have off64_t."
10552         case "$lseeksize" in
10553         8) echo "(Your off_t is 64 bits, so you could use that.)" ;;
10554         esac
10555 fi
10556 $rm -f try.* try
10557 set d_off64_t
10558 eval $setvar
10559
10560 : see if POSIX threads are available
10561 set pthread.h i_pthread
10562 eval $inhdr
10563
10564
10565
10566
10567 : how to create joinable pthreads
10568 if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
10569         echo " "
10570         echo "Checking what constant to use for creating joinable pthreads..." >&4 
10571         $cat >try.c <<'EOCP'
10572 #include <pthread.h>
10573 int main() {
10574     int detachstate = JOINABLE;
10575 }
10576 EOCP
10577         set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
10578         if eval $compile; then
10579                 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
10580                 val="$undef" # Yes, undef.
10581                 set d_old_pthread_create_joinable
10582                 eval $setvar
10583                 val=""
10584                 set old_pthread_create_joinable
10585                 eval $setvar
10586         else
10587                 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
10588                 if eval $compile; then
10589                         echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
10590                         val="$define"
10591                         set d_old_pthread_create_joinable
10592                         eval $setvar
10593                         val=PTHREAD_CREATE_UNDETACHED
10594                         set old_pthread_create_joinable
10595                         eval $setvar
10596                 else            
10597                         set try -DJOINABLE=__UNDETACHED
10598                         if eval $compile; then
10599                                 echo "You seem to use __UNDETACHED." >&4
10600                                 val="$define"
10601                                 set d_old_pthread_create_joinable
10602                                 eval $setvar
10603                                 val=__UNDETACHED
10604                                 set old_pthread_create_joinable
10605                                 eval $setvar
10606                         else
10607                                 echo "Egads, nothing obvious found.  Guessing that you use 0." >&4
10608                                 val="$define"
10609                                 set d_old_pthread_create_joinable
10610                                 eval $setvar
10611                                 val=0
10612                                 set old_pthread_create_joinable
10613                                 eval $setvar
10614                         fi
10615                 fi
10616         fi
10617         $rm -f try try.*
10618 else
10619     d_old_pthread_create_joinable="$undef"
10620     old_pthread_create_joinable=""
10621 fi
10622
10623 : see if pause exists
10624 set pause d_pause
10625 eval $inlibc
10626
10627 : see if pipe exists
10628 set pipe d_pipe
10629 eval $inlibc
10630
10631 : see if poll exists
10632 set poll d_poll
10633 eval $inlibc
10634
10635
10636 : see whether the various POSIXish _yields exist
10637 $cat >try.c <<EOP
10638 #include <pthread.h>
10639 #include <stdio.h>
10640 int main() {
10641 #ifdef SCHED_YIELD
10642         sched_yield();
10643 #else
10644 #ifdef PTHREAD_YIELD
10645         pthread_yield();
10646 #else
10647 #ifdef PTHREAD_YIELD_NULL
10648         pthread_yield(NULL);
10649 #endif
10650 #endif
10651 #endif
10652 }
10653 EOP
10654 : see if sched_yield exists
10655 set try -DSCHED_YIELD
10656 if eval $compile; then
10657     val="$define"
10658     sched_yield='sched_yield()'
10659 else
10660     val="$undef"
10661 fi
10662 case "$usethreads" in
10663 $define)
10664         case "$val" in
10665         $define) echo 'sched_yield() found.' >&4        ;;
10666         *)       echo 'sched_yield() NOT found.' >&4    ;;
10667         esac
10668 esac
10669 set d_sched_yield
10670 eval $setvar
10671
10672 : see if pthread_yield exists
10673 set try -DPTHREAD_YIELD
10674 if eval $compile; then
10675     val="$define"
10676     case "$sched_yield" in
10677     '') sched_yield='pthread_yield()' ;;
10678     esac
10679 else
10680     set try -DPTHREAD_YIELD_NULL
10681     if eval $compile; then
10682         val="$define"
10683         case "$sched_yield" in
10684         '') sched_yield='pthread_yield(NULL)' ;;
10685         esac
10686     else
10687         val="$undef"
10688     fi
10689 fi
10690 case "$usethreads" in
10691 $define)
10692         case "$val" in
10693         $define) echo 'pthread_yield() found.' >&4      ;;
10694         *)       echo 'pthread_yield() NOT found.' >&4  ;;
10695         esac
10696         ;;
10697 esac
10698 set d_pthread_yield
10699 eval $setvar
10700
10701 case "$sched_yield" in
10702 '') sched_yield=undef ;;
10703 esac
10704
10705 $rm -f try try.*
10706
10707 : see if this is a pwd.h system
10708 set pwd.h i_pwd
10709 eval $inhdr
10710
10711 case "$i_pwd" in
10712 $define)
10713         xxx=`./findhdr pwd.h`
10714         $cppstdin $cppflags $cppminus < $xxx >$$.h
10715
10716         if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
10717                 val="$define"
10718         else
10719                 val="$undef"
10720         fi
10721         set d_pwquota
10722         eval $setvar
10723
10724         if $contains 'pw_age' $$.h >/dev/null 2>&1; then
10725                 val="$define"
10726         else
10727                 val="$undef"
10728         fi
10729         set d_pwage
10730         eval $setvar
10731
10732         if $contains 'pw_change' $$.h >/dev/null 2>&1; then
10733                 val="$define"
10734         else
10735                 val="$undef"
10736         fi
10737         set d_pwchange
10738         eval $setvar
10739
10740         if $contains 'pw_class' $$.h >/dev/null 2>&1; then
10741                 val="$define"
10742         else
10743                 val="$undef"
10744         fi
10745         set d_pwclass
10746         eval $setvar
10747
10748         if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
10749                 val="$define"
10750         else
10751                 val="$undef"
10752         fi
10753         set d_pwexpire
10754         eval $setvar
10755
10756         if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
10757                 val="$define"
10758         else
10759                 val="$undef"
10760         fi
10761         set d_pwcomment
10762         eval $setvar
10763
10764         if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
10765                 val="$define"
10766         else
10767                 val="$undef"
10768         fi
10769         set d_pwgecos
10770         eval $setvar
10771
10772         if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
10773                 val="$define"
10774         else
10775                 val="$undef"
10776         fi
10777         set d_pwpasswd
10778         eval $setvar
10779
10780         $rm -f $$.h
10781         ;;
10782 *)
10783         val="$undef"; 
10784         set d_pwquota; eval $setvar
10785         set d_pwage; eval $setvar
10786         set d_pwchange; eval $setvar
10787         set d_pwclass; eval $setvar
10788         set d_pwexpire; eval $setvar
10789         set d_pwcomment; eval $setvar
10790         set d_pwgecos; eval $setvar
10791         set d_pwpasswd; eval $setvar
10792         ;;
10793 esac
10794
10795 : see if readdir and friends exist
10796 set readdir d_readdir
10797 eval $inlibc
10798 set seekdir d_seekdir
10799 eval $inlibc
10800 set telldir d_telldir
10801 eval $inlibc
10802 set rewinddir d_rewinddir
10803 eval $inlibc
10804
10805 : see if readlink exists
10806 set readlink d_readlink
10807 eval $inlibc
10808
10809 : see if rename exists
10810 set rename d_rename
10811 eval $inlibc
10812
10813 : see if rmdir exists
10814 set rmdir d_rmdir
10815 eval $inlibc
10816
10817 : see if memory.h is available.
10818 val=''
10819 set memory.h val
10820 eval $inhdr
10821
10822 : See if it conflicts with string.h
10823 case "$val" in
10824 $define)
10825         case "$strings" in
10826         '') ;;
10827         *)
10828                 $cppstdin $cppflags $cppminus < $strings > mem.h
10829                 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
10830                         echo " "
10831                         echo "We won't be including <memory.h>."
10832                         val="$undef"
10833                 fi
10834                 $rm -f mem.h
10835                 ;;
10836         esac
10837 esac
10838 set i_memory
10839 eval $setvar
10840
10841 : can bcopy handle overlapping blocks?
10842 val="$undef"
10843 case "$d_bcopy" in
10844 "$define")
10845         echo " "
10846         echo "Checking to see if your bcopy() can do overlapping copies..." >&4
10847         $cat >try.c <<EOCP
10848 #$i_memory I_MEMORY
10849 #$i_stdlib I_STDLIB
10850 #$i_string I_STRING
10851 #$i_unistd I_UNISTD
10852 EOCP
10853         $cat >>try.c <<'EOCP'
10854 #include <stdio.h>
10855 #ifdef I_MEMORY
10856 #  include <memory.h>
10857 #endif
10858 #ifdef I_STDLIB
10859 #  include <stdlib.h>
10860 #endif
10861 #ifdef I_STRING
10862 #  include <string.h>
10863 #else
10864 #  include <strings.h>
10865 #endif
10866 #ifdef I_UNISTD
10867 #  include <unistd.h>  /* Needed for NetBSD */
10868 #endif
10869 int main()
10870 {
10871 char buf[128], abc[128];
10872 char *b;
10873 int len;
10874 int off;
10875 int align;
10876
10877 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
10878
10879 for (align = 7; align >= 0; align--) {
10880         for (len = 36; len; len--) {
10881                 b = buf+align;
10882                 bcopy(abc, b, len);
10883                 for (off = 1; off <= len; off++) {
10884                         bcopy(b, b+off, len);
10885                         bcopy(b+off, b, len);
10886                         if (bcmp(b, abc, len))
10887                                 exit(1);
10888                 }
10889         }
10890 }
10891 exit(0);
10892 }
10893 EOCP
10894         set try
10895         if eval $compile_ok; then
10896                 if ./try 2>/dev/null; then
10897                         echo "Yes, it can."
10898                         val="$define"
10899                 else
10900                         echo "It can't, sorry."
10901                         case "$d_memmove" in
10902                         "$define") echo "But that's Ok since you have memmove()." ;;
10903                         esac
10904                 fi
10905         else
10906                 echo "(I can't compile the test program, so we'll assume not...)"
10907                 case "$d_memmove" in
10908                 "$define") echo "But that's Ok since you have memmove()." ;;
10909                 esac
10910         fi
10911         ;;
10912 esac
10913 $rm -f try.* try core
10914 set d_safebcpy
10915 eval $setvar
10916
10917 : can memcpy handle overlapping blocks?
10918 val="$undef"
10919 case "$d_memcpy" in
10920 "$define")
10921         echo " "
10922         echo "Checking to see if your memcpy() can do overlapping copies..." >&4
10923         $cat >try.c <<EOCP
10924 #$i_memory I_MEMORY
10925 #$i_stdlib I_STDLIB
10926 #$i_string I_STRING
10927 #$i_unistd I_UNISTD
10928 EOCP
10929         $cat >>try.c <<'EOCP'
10930 #include <stdio.h>
10931 #ifdef I_MEMORY
10932 #  include <memory.h>
10933 #endif
10934 #ifdef I_STDLIB
10935 #  include <stdlib.h>
10936 #endif
10937 #ifdef I_STRING
10938 #  include <string.h>
10939 #else
10940 #  include <strings.h>
10941 #endif
10942 #ifdef I_UNISTD
10943 #  include <unistd.h>  /* Needed for NetBSD */
10944 #endif
10945 int main()
10946 {
10947 char buf[128], abc[128];
10948 char *b;
10949 int len;
10950 int off;
10951 int align;
10952
10953 /* Copy "abcde..." string to char abc[] so that gcc doesn't
10954    try to store the string in read-only memory. */
10955 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
10956
10957 for (align = 7; align >= 0; align--) {
10958         for (len = 36; len; len--) {
10959                 b = buf+align;
10960                 memcpy(b, abc, len);
10961                 for (off = 1; off <= len; off++) {
10962                         memcpy(b+off, b, len);
10963                         memcpy(b, b+off, len);
10964                         if (memcmp(b, abc, len))
10965                                 exit(1);
10966                 }
10967         }
10968 }
10969 exit(0);
10970 }
10971 EOCP
10972         set try
10973         if eval $compile_ok; then
10974                 if ./try 2>/dev/null; then
10975                         echo "Yes, it can."
10976                         val="$define"
10977                 else
10978                         echo "It can't, sorry."
10979                         case "$d_memmove" in
10980                         "$define") echo "But that's Ok since you have memmove()." ;;
10981                         esac
10982                 fi
10983         else
10984                 echo "(I can't compile the test program, so we'll assume not...)"
10985                 case "$d_memmove" in
10986                 "$define") echo "But that's Ok since you have memmove()." ;;
10987                 esac
10988         fi
10989         ;;
10990 esac
10991 $rm -f try.* try core
10992 set d_safemcpy
10993 eval $setvar
10994
10995 : can memcmp be trusted to compare relative magnitude?
10996 val="$undef"
10997 case "$d_memcmp" in
10998 "$define")
10999         echo " "
11000         echo "Checking if your memcmp() can compare relative magnitude..." >&4
11001         $cat >try.c <<EOCP
11002 #$i_memory I_MEMORY
11003 #$i_stdlib I_STDLIB
11004 #$i_string I_STRING
11005 #$i_unistd I_UNISTD
11006 EOCP
11007         $cat >>try.c <<'EOCP'
11008 #include <stdio.h>
11009 #ifdef I_MEMORY
11010 #  include <memory.h>
11011 #endif
11012 #ifdef I_STDLIB
11013 #  include <stdlib.h>
11014 #endif
11015 #ifdef I_STRING
11016 #  include <string.h>
11017 #else
11018 #  include <strings.h>
11019 #endif
11020 #ifdef I_UNISTD
11021 #  include <unistd.h>  /* Needed for NetBSD */
11022 #endif
11023 int main()
11024 {
11025 char a = -1;
11026 char b = 0;
11027 if ((a < b) && memcmp(&a, &b, 1) < 0)
11028         exit(1);
11029 exit(0);
11030 }
11031 EOCP
11032         set try
11033         if eval $compile_ok; then
11034                 if ./try 2>/dev/null; then
11035                         echo "Yes, it can."
11036                         val="$define"
11037                 else
11038                         echo "No, it can't (it uses signed chars)."
11039                 fi
11040         else
11041                 echo "(I can't compile the test program, so we'll assume not...)"
11042         fi
11043         ;;
11044 esac
11045 $rm -f try.* try core
11046 set d_sanemcmp
11047 eval $setvar
11048
11049 : see if prototype for sbrk is available
11050 echo " "
11051 set d_sbrkproto sbrk $i_unistd unistd.h
11052 eval $hasproto
11053
11054 : see if select exists
11055 set select d_select
11056 eval $inlibc
11057
11058 : see if semctl exists
11059 set semctl d_semctl
11060 eval $inlibc
11061
11062 : see if semget exists
11063 set semget d_semget
11064 eval $inlibc
11065
11066 : see if semop exists
11067 set semop d_semop
11068 eval $inlibc
11069
11070 : see how much of the 'sem*(2)' library is present.
11071 h_sem=true
11072 echo " "
11073 case "$d_semctl$d_semget$d_semop" in
11074 *"$undef"*) h_sem=false;;
11075 esac
11076 case "$osname" in
11077 freebsd)
11078     case "`ipcs 2>&1`" in
11079     "SVID messages"*"not configured"*)
11080         echo "Your $osname does not have the sem*(2) configured." >&4
11081         h_sem=false
11082         val="$undef"
11083         set semctl d_semctl
11084         eval $setvar
11085         set semget d_semget
11086         eval $setvar
11087         set semop d_semop
11088         eval $setvar
11089         ;;
11090     esac
11091     ;;
11092 esac
11093 : we could also check for sys/ipc.h ...
11094 if $h_sem && $test `./findhdr sys/sem.h`; then
11095         echo "You have the full sem*(2) library." >&4
11096         val="$define"
11097 else
11098         echo "You don't have the full sem*(2) library." >&4
11099         val="$undef"
11100 fi
11101 set d_sem
11102 eval $setvar
11103
11104 : see whether sys/sem.h defines union semun
11105 echo " "
11106 $cat > try.c <<'END'
11107 #include <sys/types.h>
11108 #include <sys/ipc.h>
11109 #include <sys/sem.h>
11110 int main () { union semun semun; semun.buf = 0; }
11111 END
11112 set try
11113 if eval $compile; then
11114     echo "You have union semun in <sys/sem.h>." >&4
11115     val="$define"
11116 else
11117     echo "You do not have union semun in <sys/sem.h>." >&4
11118     val="$undef"
11119 fi
11120 $rm -f try try.c try.h
11121 set d_union_semun
11122 eval $setvar
11123
11124 : see how to do semctl IPC_STAT
11125 case "$d_sem" in
11126 $define)
11127     : see whether semctl IPC_STAT can use union semun
11128     echo " "
11129     $cat > try.h <<END
11130 #ifndef S_IRUSR
11131 #   ifdef S_IREAD
11132 #       define S_IRUSR S_IREAD
11133 #       define S_IWUSR S_IWRITE
11134 #       define S_IXUSR S_IEXEC
11135 #   else
11136 #       define S_IRUSR 0400
11137 #       define S_IWUSR 0200
11138 #       define S_IXUSR 0100
11139 #   endif
11140 #   define S_IRGRP (S_IRUSR>>3)
11141 #   define S_IWGRP (S_IWUSR>>3)
11142 #   define S_IXGRP (S_IXUSR>>3)
11143 #   define S_IROTH (S_IRUSR>>6)
11144 #   define S_IWOTH (S_IWUSR>>6)
11145 #   define S_IXOTH (S_IXUSR>>6)
11146 #endif
11147 #ifndef S_IRWXU
11148 #   define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
11149 #   define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
11150 #   define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
11151 #endif
11152 END
11153
11154     $cat > try.c <<END
11155 #include <sys/types.h>
11156 #include <sys/ipc.h>
11157 #include <sys/sem.h>
11158 #include <sys/stat.h>
11159 #include <stdio.h>
11160 #include <errno.h>
11161 #include "try.h"
11162 #ifndef errno
11163 extern int errno;
11164 #endif
11165 #$d_union_semun HAS_UNION_SEMUN
11166 int main() {
11167     union semun
11168 #ifndef HAS_UNION_SEMUN
11169     {
11170         int val;
11171         struct semid_ds *buf;
11172         unsigned short *array;
11173     }
11174 #endif
11175     arg;
11176     int sem, st;
11177
11178 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
11179     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
11180     if (sem > -1) {
11181         struct semid_ds argbuf;
11182         arg.buf = &argbuf;
11183 #       ifdef IPC_STAT
11184         st = semctl(sem, 0, IPC_STAT, arg);
11185         if (st == 0)
11186             printf("semun\n");
11187         else
11188 #       endif /* IPC_STAT */
11189             printf("semctl IPC_STAT failed: errno = %d\n", errno);
11190 #       ifdef IPC_RMID
11191         if (semctl(sem, 0, IPC_RMID, arg) != 0)
11192 #       endif /* IPC_RMID */
11193             printf("semctl IPC_RMID failed: errno = %d\n", errno);
11194     } else
11195 #endif /* IPC_PRIVATE && ... */
11196         printf("semget failed: errno = %d\n", errno);
11197   return 0;
11198 }
11199 END
11200     val="$undef"
11201     set try
11202     if eval $compile; then
11203         xxx=`./try`
11204         case "$xxx" in
11205         semun) val="$define" ;;
11206         esac
11207     fi
11208     $rm -f try try.c
11209     set d_semctl_semun
11210     eval $setvar
11211     case "$d_semctl_semun" in
11212     $define)
11213         echo "You can use union semun for semctl IPC_STAT." >&4
11214         also='also'
11215         ;;
11216     *)  echo "You cannot use union semun for semctl IPC_STAT." >&4
11217         also=''
11218         ;;
11219     esac
11220
11221     : see whether semctl IPC_STAT can use struct semid_ds pointer
11222     $cat > try.c <<'END'
11223 #include <sys/types.h>
11224 #include <sys/ipc.h>
11225 #include <sys/sem.h>
11226 #include <sys/stat.h>
11227 #include "try.h"
11228 #include <stdio.h>
11229 #include <errno.h>
11230 #ifndef errno
11231 extern int errno;
11232 #endif
11233 int main() {
11234     struct semid_ds arg;
11235     int sem, st;
11236
11237 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) &&  defined(S_IRWXO) && defined(IPC_CREAT)
11238     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
11239     if (sem > -1) {
11240 #       ifdef IPC_STAT
11241         st = semctl(sem, 0, IPC_STAT, &arg);
11242         if (st == 0)
11243             printf("semid_ds\n");
11244         else
11245 #       endif /* IPC_STAT */
11246             printf("semctl IPC_STAT failed: errno = %d\n", errno);
11247 #       ifdef IPC_RMID
11248         if (semctl(sem, 0, IPC_RMID, &arg) != 0)
11249 #       endif /* IPC_RMID */
11250             printf("semctl IPC_RMID failed: errno = %d\n", errno);
11251     } else
11252 #endif /* IPC_PRIVATE && ... */
11253         printf("semget failed: errno = %d\n", errno);
11254
11255     return 0;
11256 }
11257 END
11258     val="$undef"
11259     set try
11260     if eval $compile; then
11261         xxx=`./try`
11262         case "$xxx" in
11263         semid_ds) val="$define" ;;
11264         esac
11265     fi
11266     $rm -f try try.c
11267     set d_semctl_semid_ds
11268     eval $setvar
11269     case "$d_semctl_semid_ds" in
11270     $define)
11271         echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
11272         ;;
11273     *)  echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
11274         ;;
11275     esac
11276     $rm -f try.h
11277     ;;
11278 *)  val="$undef"
11279
11280     # We do not have the full sem*(2) library, so assume we can not
11281     # use either.
11282
11283     set d_semctl_semun
11284     eval $setvar
11285
11286     set d_semctl_semid_ds
11287     eval $setvar
11288     ;;
11289 esac
11290
11291 : see if setegid exists
11292 set setegid d_setegid
11293 eval $inlibc
11294
11295 : see if seteuid exists
11296 set seteuid d_seteuid
11297 eval $inlibc
11298
11299 : see if setgrent exists
11300 set setgrent d_setgrent
11301 eval $inlibc
11302
11303 : see if sethostent exists
11304 set sethostent d_sethent
11305 eval $inlibc
11306
11307 : see if setlinebuf exists
11308 set setlinebuf d_setlinebuf
11309 eval $inlibc
11310
11311 : see if setlocale exists
11312 set setlocale d_setlocale
11313 eval $inlibc
11314
11315 : see if setnetent exists
11316 set setnetent d_setnent
11317 eval $inlibc
11318
11319 : see if setprotoent exists
11320 set setprotoent d_setpent
11321 eval $inlibc
11322
11323 : see if setpgid exists
11324 set setpgid d_setpgid
11325 eval $inlibc
11326
11327 : see if setpgrp2 exists
11328 set setpgrp2 d_setpgrp2
11329 eval $inlibc
11330
11331 : see if setpriority exists
11332 set setpriority d_setprior
11333 eval $inlibc
11334
11335 : see if setproctitle exists
11336 set setproctitle d_setproctitle
11337 eval $inlibc
11338
11339 : see if setpwent exists
11340 set setpwent d_setpwent
11341 eval $inlibc
11342
11343 : see if setregid exists
11344 set setregid d_setregid
11345 eval $inlibc
11346 set setresgid d_setresgid
11347 eval $inlibc
11348
11349 : see if setreuid exists
11350 set setreuid d_setreuid
11351 eval $inlibc
11352 set setresuid d_setresuid
11353 eval $inlibc
11354
11355 : see if setrgid exists
11356 set setrgid d_setrgid
11357 eval $inlibc
11358
11359 : see if setruid exists
11360 set setruid d_setruid
11361 eval $inlibc
11362
11363 : see if setservent exists
11364 set setservent d_setsent
11365 eval $inlibc
11366
11367 : see if setsid exists
11368 set setsid d_setsid
11369 eval $inlibc
11370
11371 : see if setvbuf exists
11372 set setvbuf d_setvbuf
11373 eval $inlibc
11374
11375 : see if sfio.h is available
11376 set sfio.h i_sfio
11377 eval $inhdr
11378
11379
11380 : see if sfio library is available
11381 case "$i_sfio" in
11382 $define)
11383         val=''
11384         set sfreserve val
11385         eval $inlibc
11386         ;;
11387 *)
11388         val="$undef"
11389         ;;
11390 esac
11391 : Ok, but do we want to use it.
11392 case "$val" in
11393 $define)
11394         case "$usesfio" in
11395         true|$define|[yY]*) dflt='y';;
11396         *) dflt='n';;
11397         esac
11398         echo "$package can use the sfio library, but it is experimental."
11399         case "$useperlio" in
11400         "$undef")
11401             echo "For sfio also the PerlIO abstraction layer is needed."
11402             echo "Earlier you said you wouldn't want that."
11403             ;;
11404         esac
11405         rp="You seem to have sfio available, do you want to try using it?"
11406         . ./myread
11407         case "$ans" in
11408         y|Y)    echo "Ok, turning on both sfio and PerlIO, then."
11409                 useperlio="$define"
11410                 val="$define"
11411                 ;;
11412         *)      echo "Ok, avoiding sfio this time.  I'll use stdio instead."
11413                 val="$undef"
11414                 ;;
11415         esac
11416         ;;
11417 *)      case "$usesfio" in
11418         true|$define|[yY]*)
11419                 echo "Sorry, cannot find sfio on this machine." >&4
11420                 echo "Ignoring your setting of usesfio=$usesfio." >&4
11421                 val="$undef"
11422                 ;;
11423         esac
11424         ;;
11425 esac
11426 set d_sfio
11427 eval $setvar
11428 case "$d_sfio" in
11429 $define) usesfio='true';;
11430 *) usesfio='false';;
11431 esac
11432 case "$d_sfio" in
11433 $define) ;;
11434 *)      : Remove sfio from list of libraries to use
11435         set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
11436         shift
11437         libs="$*"
11438         echo "libs = $libs" >&4
11439 ;;
11440 esac
11441
11442
11443 : see if shmctl exists
11444 set shmctl d_shmctl
11445 eval $inlibc
11446
11447 : see if shmget exists
11448 set shmget d_shmget
11449 eval $inlibc
11450
11451 : see if shmat exists
11452 set shmat d_shmat
11453 eval $inlibc
11454 : see what shmat returns
11455 case "$d_shmat" in
11456 "$define")
11457         $cat >shmat.c <<'END'
11458 #include <sys/shm.h>
11459 void *shmat();
11460 END
11461         if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
11462                 shmattype='void *'
11463         else
11464                 shmattype='char *'
11465         fi
11466         echo "and it returns ($shmattype)." >&4
11467         : see if a prototype for shmat is available
11468         xxx=`./findhdr sys/shm.h`
11469         $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
11470         if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
11471                 val="$define"
11472         else
11473                 val="$undef"
11474         fi
11475         $rm -f shmat.[co]
11476         ;;
11477 *)
11478         val="$undef"
11479         ;;
11480 esac
11481 set d_shmatprototype
11482 eval $setvar
11483
11484 : see if shmdt exists
11485 set shmdt d_shmdt
11486 eval $inlibc
11487
11488 : see how much of the 'shm*(2)' library is present.
11489 h_shm=true
11490 echo " "
11491 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
11492 *"$undef"*) h_shm=false;;
11493 esac
11494 case "$osname" in
11495 freebsd)
11496     case "`ipcs 2>&1`" in
11497     "SVID shared memory"*"not configured"*)
11498         echo "Your $osname does not have the shm*(2) configured." >&4
11499         h_shm=false
11500         val="$undef"
11501         set shmctl d_shmctl
11502         evat $setvar
11503         set shmget d_shmget
11504         evat $setvar
11505         set shmat d_shmat
11506         evat $setvar
11507         set shmdt d_shmdt
11508         evat $setvar
11509         ;;
11510     esac
11511     ;;
11512 esac
11513 : we could also check for sys/ipc.h ...
11514 if $h_shm && $test `./findhdr sys/shm.h`; then
11515         echo "You have the full shm*(2) library." >&4
11516         val="$define"
11517 else
11518         echo "You don't have the full shm*(2) library." >&4
11519         val="$undef"
11520 fi
11521 set d_shm
11522 eval $setvar
11523
11524 echo " "
11525 : see if we have sigaction
11526 if set sigaction val -f d_sigaction; eval $csym; $val; then
11527         echo 'sigaction() found.' >&4
11528         $cat > try.c <<'EOP'
11529 #include <stdio.h>
11530 #include <sys/types.h>
11531 #include <signal.h>
11532 int main()
11533 {
11534     struct sigaction act, oact;
11535     act.sa_flags = 0;
11536     oact.sa_handler = 0;
11537     /* so that act and oact are used */
11538     exit(act.sa_flags == 0 &&  oact.sa_handler == 0);
11539 }
11540 EOP
11541         set try
11542         if eval $compile_ok; then
11543                 val="$define"
11544         else
11545                 echo "But you don't seem to have a useable struct sigaction." >&4
11546                 val="$undef"
11547         fi
11548 else
11549         echo 'sigaction NOT found.' >&4
11550         val="$undef"
11551 fi
11552 set d_sigaction; eval $setvar
11553 $rm -f try try$_o try.c
11554
11555 : see if sigprocmask exists
11556 set sigprocmask d_sigprocmask
11557 eval $inlibc
11558
11559 : see if sigsetjmp exists
11560 echo " "
11561 case "$d_sigsetjmp" in
11562 '')
11563         $cat >try.c <<'EOP'
11564 #include <setjmp.h>
11565 sigjmp_buf env;
11566 int set = 1;
11567 int main()
11568 {
11569         if (sigsetjmp(env,1))
11570                 exit(set);
11571         set = 0;
11572         siglongjmp(env, 1);
11573         exit(1);
11574 }
11575 EOP
11576         set try
11577         if eval $compile; then
11578                 if ./try >/dev/null 2>&1; then
11579                         echo "POSIX sigsetjmp found." >&4
11580                         val="$define"
11581                 else
11582                         $cat >&4 <<EOM
11583 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
11584 I'll ignore them.
11585 EOM
11586                         val="$undef"
11587                 fi
11588         else
11589                 echo "sigsetjmp not found." >&4
11590                 val="$undef"
11591         fi
11592         ;;
11593 *) val="$d_sigsetjmp"
11594         case "$d_sigsetjmp" in
11595         $define) echo "POSIX sigsetjmp found." >&4;;
11596         $undef) echo "sigsetjmp not found." >&4;;
11597         esac
11598         ;;
11599 esac
11600 set d_sigsetjmp
11601 eval $setvar
11602 $rm -f try.c try
11603
11604 : see if socks5_init exists
11605 set socks5_init d_socks5_init
11606 eval $inlibc
11607
11608 : see if sys/stat.h is available
11609 set sys/stat.h i_sysstat
11610 eval $inhdr
11611
11612
11613 : see if stat knows about block sizes
11614 echo " "
11615 echo "Checking to see if your struct stat has st_blocks field..." >&4
11616 set d_statblks stat st_blocks $i_sysstat sys/stat.h
11617 eval $hasfield
11618
11619
11620 : see if this is a sys/vfs.h system
11621 set sys/vfs.h i_sysvfs
11622 eval $inhdr
11623
11624
11625 : see if this is a sys/statfs.h system
11626 set sys/statfs.h i_sysstatfs
11627 eval $inhdr
11628
11629
11630 echo " "
11631 echo "Checking to see if your system supports struct statfs..." >&4
11632 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
11633 eval $hasstruct
11634 case "$d_statfs_s" in
11635 "$define")      echo "Yes, it does."   ;;
11636 *)              echo "No, it doesn't." ;;
11637 esac
11638
11639
11640
11641 : see if struct statfs knows about f_flags
11642 case "$d_statfs_s" in
11643 define) 
11644         echo " "
11645         echo "Checking to see if your struct statfs has f_flags field..." >&4
11646         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
11647         eval $hasfield
11648         ;;
11649 *)      val="$undef"
11650         set d_statfs_f_flags
11651         eval $setvar
11652         ;;
11653 esac
11654 case "$d_statfs_f_flags" in
11655 "$define")      echo "Yes, it does."   ;;
11656 *)              echo "No, it doesn't." ;;
11657 esac
11658
11659 : see if _ptr and _cnt from stdio act std
11660 echo " "
11661
11662 if $contains '_lbfsize' `./findhdr stdio.h` >/dev/null 2>&1 ; then
11663         echo "(Looks like you have stdio.h from BSD.)"
11664         case "$stdio_ptr" in
11665         '') stdio_ptr='((fp)->_p)'
11666                 ptr_lval=$define
11667                 ;;
11668         *)      ptr_lval=$d_stdio_ptr_lval;;
11669         esac
11670         case "$stdio_cnt" in
11671         '') stdio_cnt='((fp)->_r)'
11672                 cnt_lval=$define
11673                 ;;
11674         *)      cnt_lval=$d_stdio_cnt_lval;;
11675         esac
11676         case "$stdio_base" in
11677         '') stdio_base='((fp)->_ub._base ? (fp)->_ub._base : (fp)->_bf._base)';;
11678         esac
11679         case "$stdio_bufsiz" in
11680         '') stdio_bufsiz='((fp)->_ub._base ? (fp)->_ub._size : (fp)->_bf._size)';;
11681         esac
11682 elif $contains '_IO_fpos_t' `./findhdr stdio.h` `./findhdr libio.h` >/dev/null 2>&1 ; then
11683         echo "(Looks like you have stdio.h from Linux.)"
11684         case "$stdio_ptr" in
11685         '') stdio_ptr='((fp)->_IO_read_ptr)'
11686                 ptr_lval=$define
11687                 ;;
11688         *)      ptr_lval=$d_stdio_ptr_lval;;
11689         esac
11690         case "$stdio_cnt" in
11691         '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
11692                 cnt_lval=$undef
11693                 ;;
11694         *)      cnt_lval=$d_stdio_cnt_lval;;
11695         esac
11696         case "$stdio_base" in
11697         '') stdio_base='((fp)->_IO_read_base)';;
11698         esac
11699         case "$stdio_bufsiz" in
11700         '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
11701         esac
11702 else
11703         case "$stdio_ptr" in
11704         '') stdio_ptr='((fp)->_ptr)'
11705                 ptr_lval=$define
11706                 ;;
11707         *)      ptr_lval=$d_stdio_ptr_lval;;
11708         esac
11709         case "$stdio_cnt" in
11710         '') stdio_cnt='((fp)->_cnt)'
11711                 cnt_lval=$define
11712                 ;;
11713         *)      cnt_lval=$d_stdio_cnt_lval;;
11714         esac
11715         case "$stdio_base" in
11716         '') stdio_base='((fp)->_base)';;
11717         esac
11718         case "$stdio_bufsiz" in
11719         '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
11720         esac
11721 fi
11722
11723 : test whether _ptr and _cnt really work
11724 echo "Checking how std your stdio is..." >&4
11725 $cat >try.c <<EOP
11726 #include <stdio.h>
11727 #define FILE_ptr(fp)    $stdio_ptr
11728 #define FILE_cnt(fp)    $stdio_cnt
11729 int main() {
11730         FILE *fp = fopen("try.c", "r");
11731         char c = getc(fp);
11732         if (
11733                 18 <= FILE_cnt(fp) &&
11734                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
11735         )
11736                 exit(0);
11737         exit(1);
11738 }
11739 EOP
11740 val="$undef"
11741 set try
11742 if eval $compile; then
11743         if ./try; then
11744                 echo "Your stdio acts pretty std."
11745                 val="$define"
11746         else
11747                 echo "Your stdio isn't very std."
11748         fi
11749 else
11750         echo "Your stdio doesn't appear very std."
11751 fi
11752 $rm -f try.c try
11753 set d_stdstdio
11754 eval $setvar
11755
11756 : Can _ptr be used as an lvalue?
11757 case "$d_stdstdio$ptr_lval" in
11758 $define$define) val=$define ;;
11759 *) val=$undef ;;
11760 esac
11761 set d_stdio_ptr_lval
11762 eval $setvar
11763
11764 : Can _cnt be used as an lvalue?
11765 case "$d_stdstdio$cnt_lval" in
11766 $define$define) val=$define ;;
11767 *) val=$undef ;;
11768 esac
11769 set d_stdio_cnt_lval
11770 eval $setvar
11771
11772
11773 : test whether setting _ptr sets _cnt as a side effect
11774 d_stdio_ptr_lval_sets_cnt="$undef"
11775 d_stdio_ptr_lval_nochange_cnt="$undef"
11776 case "$d_stdio_ptr_lval$d_stdstdio" in
11777 $define$define)
11778         echo "Checking to see what happens if we set the stdio ptr..." >&4
11779 $cat >try.c <<EOP
11780 #include <stdio.h>
11781 /* Can we scream? */
11782 /* Eat dust sed :-) */
11783 /* In the buffer space, no one can hear you scream. */
11784 #define FILE_ptr(fp)    $stdio_ptr
11785 #define FILE_cnt(fp)    $stdio_cnt
11786 #include <sys/types.h>
11787 int main() {
11788         FILE *fp = fopen("try.c", "r");
11789         int c;
11790         char *ptr;
11791         size_t cnt;
11792         if (!fp) {
11793             puts("Fail even to read");
11794             exit(1);
11795         }
11796         c = getc(fp); /* Read away the first # */
11797         if (c == EOF) {
11798             puts("Fail even to read");
11799             exit(1);
11800         }
11801         if (!(
11802                 18 <= FILE_cnt(fp) &&
11803                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
11804         )) {
11805                 puts("Fail even to read");
11806                 exit (1);
11807         }
11808         ptr = (char*) FILE_ptr(fp);
11809         cnt = (size_t)FILE_cnt(fp);
11810
11811         FILE_ptr(fp) += 42;
11812
11813         if ((char*)FILE_ptr(fp) != (ptr + 42)) {
11814                 printf("Fail ptr check %p != %p", FILE_ptr(fp), (ptr + 42));
11815                 exit (1);
11816         }
11817         if (FILE_cnt(fp) <= 20) {
11818                 printf ("Fail (<20 chars to test)");
11819                 exit (1);
11820         }
11821         if (strncmp(FILE_ptr(fp), "Eat dust sed :-) */\n", 20) != 0) {
11822                 puts("Fail compare");
11823                 exit (1);
11824         }
11825         if (cnt == FILE_cnt(fp)) {
11826                 puts("Pass_unchanged");
11827                 exit (0);
11828         }       
11829         if (FILE_cnt(fp) == (cnt - 42)) {
11830                 puts("Pass_changed");
11831                 exit (0);
11832         }
11833         printf("Fail count was %d now %d\n", cnt, FILE_cnt(fp));
11834         return 1;
11835
11836 }
11837 EOP
11838         set try
11839         if eval $compile; then
11840                 case `./try$exe_ext` in
11841                 Pass_changed)
11842                         echo "Increasing ptr in your stdio decreases cnt by the same amount.  Good." >&4
11843                         d_stdio_ptr_lval_sets_cnt="$define" ;;
11844                 Pass_unchanged)
11845                         echo "Increasing ptr in your stdio leaves cnt unchanged.  Good." >&4
11846                         d_stdio_ptr_lval_nochange_cnt="$define" ;;
11847                 Fail*)
11848                         echo "Increasing ptr in your stdio didn't do exactly what I expected.  We'll not be doing that then." >&4 ;;
11849                 *)
11850                         echo "It appears attempting to set ptr in your stdio is a bad plan." >&4 ;;
11851         esac
11852         else
11853                 echo "It seems we can't set ptr in your stdio.  Nevermind." >&4
11854         fi
11855         $rm -f try.c try
11856         ;;
11857 esac
11858
11859 : see if _base is also standard
11860 val="$undef"
11861 case "$d_stdstdio" in
11862 $define)
11863         $cat >try.c <<EOP
11864 #include <stdio.h>
11865 #define FILE_base(fp)   $stdio_base
11866 #define FILE_bufsiz(fp) $stdio_bufsiz
11867 int main() {
11868         FILE *fp = fopen("try.c", "r");
11869         char c = getc(fp);
11870         if (
11871                 19 <= FILE_bufsiz(fp) &&
11872                 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
11873         )
11874                 exit(0);
11875         exit(1);
11876 }
11877 EOP
11878         set try
11879         if eval $compile; then
11880                 if ./try; then
11881                         echo "And its _base field acts std."
11882                         val="$define"
11883                 else
11884                         echo "But its _base field isn't std."
11885                 fi
11886         else
11887                 echo "However, it seems to be lacking the _base field."
11888         fi
11889         $rm -f try.c try
11890         ;;
11891 esac
11892 set d_stdiobase
11893 eval $setvar
11894
11895 $cat >&4 <<EOM
11896 Checking how to access stdio streams by file descriptor number...
11897 EOM
11898 case "$stdio_stream_array" in
11899 '')     $cat >try.c <<EOCP
11900 #include <stdio.h>
11901 int main() {
11902   if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
11903     printf("yes\n");
11904 }
11905 EOCP
11906         for s in _iob __iob __sF
11907         do
11908                 set try -DSTDIO_STREAM_ARRAY=$s
11909                 if eval $compile; then
11910                         case "`./try$exe_ext`" in
11911                         yes)    stdio_stream_array=$s; break ;;
11912                         esac
11913                 fi
11914         done
11915         $rm -f try.* try$exe_ext
11916 esac
11917 case "$stdio_stream_array" in
11918 '')     $cat >&4 <<EOM
11919 I can't figure out how to access stdio streams by file descriptor number.
11920 EOM
11921         d_stdio_stream_array="$undef"
11922         ;;
11923 *)      $cat >&4 <<EOM
11924 You can access stdio streams by file descriptor number by the $stdio_stream_array array.
11925 EOM
11926         d_stdio_stream_array="$define"
11927         ;;
11928 esac
11929
11930 : see if strcoll exists
11931 set strcoll d_strcoll
11932 eval $inlibc
11933
11934 : check for structure copying
11935 echo " "
11936 echo "Checking to see if your C compiler can copy structs..." >&4
11937 $cat >try.c <<'EOCP'
11938 int main()
11939 {
11940         struct blurfl {
11941                 int dyick;
11942         } foo, bar;
11943
11944         foo = bar;
11945 }
11946 EOCP
11947 if $cc -c try.c >/dev/null 2>&1 ; then
11948         val="$define"
11949         echo "Yup, it can."
11950 else
11951         val="$undef"
11952         echo "Nope, it can't."
11953 fi
11954 set d_strctcpy
11955 eval $setvar
11956 $rm -f try.*
11957
11958 : see if strerror and/or sys_errlist[] exist
11959 echo " "
11960 if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
11961     if set strerror val -f d_strerror; eval $csym; $val; then
11962                 echo 'strerror() found.' >&4
11963                 d_strerror="$define"
11964                 d_strerrm='strerror(e)'
11965                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
11966                         echo "(You also have sys_errlist[], so we could roll our own strerror.)" 
11967                         d_syserrlst="$define"
11968                 else
11969                         echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
11970                         d_syserrlst="$undef"
11971                 fi
11972     elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
11973                         $contains '#[   ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
11974                 echo 'strerror() found in string header.' >&4
11975                 d_strerror="$define"
11976                 d_strerrm='strerror(e)'
11977                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
11978                         echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
11979                                 d_syserrlst="$define"
11980                 else
11981                         echo "(You don't appear to have any sys_errlist[], how can this be?)"
11982                         d_syserrlst="$undef"
11983                 fi
11984     elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
11985                 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
11986                 d_strerror="$undef"
11987                 d_syserrlst="$define"
11988                 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
11989     else
11990                 echo 'strerror() and sys_errlist[] NOT found.' >&4
11991                 d_strerror="$undef"
11992                 d_syserrlst="$undef"
11993                 d_strerrm='"unknown"'
11994     fi
11995 fi
11996
11997 : see if strtod exists
11998 set strtod d_strtod
11999 eval $inlibc
12000
12001 : see if strtol exists
12002 set strtol d_strtol
12003 eval $inlibc
12004
12005 : see if strtold exists
12006 set strtold d_strtold
12007 eval $inlibc
12008
12009 : see if strtoll exists
12010 set strtoll d_strtoll
12011 eval $inlibc
12012
12013 case "$d_longlong-$d_strtoll" in
12014 "$define-$define")
12015         $cat <<EOM
12016 Checking whether your strtoll() works okay...
12017 EOM
12018         $cat >try.c <<'EOCP'
12019 #include <errno.h>
12020 #ifdef __hpux
12021 #define strtoll __strtoll
12022 #endif
12023 #ifdef __EMX__
12024 #define strtoll _strtoll
12025 #endif
12026 #include <stdio.h>
12027 extern long long int strtoll(char *s, char **, int); 
12028 static int bad = 0;
12029 int check(char *s, long long ell, int een) {
12030         long long gll;
12031         errno = 0;
12032         gll = strtoll(s, 0, 10);
12033         if (!((gll == ell) && (errno == een)))
12034                 bad++;
12035 }
12036 int main() {
12037         check(" 1",                                      1LL, 0);
12038         check(" 0",                                      0LL, 0);
12039         check("-1",                                     -1LL, 0);
12040         check("-9223372036854775808", -9223372036854775808LL, 0);
12041         check("-9223372036854775808", -9223372036854775808LL, 0);
12042         check(" 9223372036854775807",  9223372036854775807LL, 0);
12043         check("-9223372036854775808", -9223372036854775808LL, 0);
12044         check(" 9223372036854775808",  9223372036854775807LL, ERANGE);
12045         check("-9223372036854775809", -9223372036854775808LL, ERANGE);
12046         if (!bad)
12047                 printf("ok\n");
12048 }
12049 EOCP
12050         set try
12051         if eval $compile; then
12052                 yyy=`./try`
12053                 case "$yyy" in
12054                 ok) echo "Your strtoll() seems to be working okay." ;;
12055                 *) cat <<EOM >&4
12056 Your strtoll() doesn't seem to be working okay.
12057 EOM
12058                    d_strtoll="$undef"
12059                    ;;
12060                 esac
12061         else
12062                 echo "(I can't seem to compile the test program--assuming it doesn't)"
12063                 d_strtoll="$undef"
12064         fi
12065         ;;
12066 esac
12067
12068 : see if strtoq exists
12069 set strtoq d_strtoq
12070 eval $inlibc
12071
12072 : see if strtoul exists
12073 set strtoul d_strtoul
12074 eval $inlibc
12075
12076 case "$d_strtoul" in
12077 "$define")
12078         $cat <<EOM
12079 Checking whether your strtoul() works okay...
12080 EOM
12081         $cat >try.c <<'EOCP'
12082 #include <errno.h>
12083 #include <stdio.h>
12084 extern unsigned long int strtoul(char *s, char **, int); 
12085 static int bad = 0;
12086 void check(char *s, unsigned long eul, int een) {
12087         unsigned long gul;
12088         errno = 0;
12089         gul = strtoul(s, 0, 10);
12090         if (!((gul == eul) && (errno == een)))
12091                 bad++;
12092 }
12093 int main() {
12094         check(" 1", 1L, 0);
12095         check(" 0", 0L, 0);
12096 EOCP
12097         case "$longsize" in
12098         8)
12099             $cat >>try.c <<'EOCP'
12100         check("18446744073709551615", 18446744073709551615UL, 0);
12101         check("18446744073709551616", 18446744073709551615UL, ERANGE);
12102 #if 0 /* strtoul() for /^-/ strings is undefined. */
12103         check("-1", 18446744073709551615UL, 0);
12104         check("-18446744073709551614", 2, 0);
12105         check("-18446744073709551615", 1, 0);
12106         check("-18446744073709551616", 18446744073709551615UL, ERANGE);
12107         check("-18446744073709551617", 18446744073709551615UL, ERANGE);
12108 #endif
12109 EOCP
12110                 ;;
12111         4)
12112                     $cat >>try.c <<'EOCP'
12113         check("4294967295", 4294967295UL, 0);
12114         check("4294967296", 4294967295UL, ERANGE);
12115 #if 0 /* strtoul() for /^-/ strings is undefined. */
12116         check("-1", 4294967295UL, 0);
12117         check("-4294967294", 2, 0);
12118         check("-4294967295", 1, 0);
12119         check("-4294967296", 4294967295UL, ERANGE);
12120         check("-4294967297", 4294967295UL, ERANGE);
12121 #endif
12122 EOCP
12123                 ;;
12124         *)
12125 : Should we write these tests to be more portable by sprintf-ing
12126 : ~0 and then manipulating that char string as input for strtol?
12127                 ;;
12128         esac
12129         $cat >>try.c <<'EOCP'
12130         if (!bad)
12131                 printf("ok\n");
12132         return 0;
12133 }
12134 EOCP
12135         set try
12136         if eval $compile; then
12137                 case "`./try`" in
12138                 ok) echo "Your strtoul() seems to be working okay." ;;
12139                 *) cat <<EOM >&4
12140 Your strtoul() doesn't seem to be working okay.
12141 EOM
12142                    d_strtoul="$undef"
12143                    ;;
12144                 esac
12145         fi
12146         ;;
12147 esac
12148
12149 : see if strtoull exists
12150 set strtoull d_strtoull
12151 eval $inlibc
12152
12153 case "$d_longlong-$d_strtoull" in
12154 "$define-$define")
12155         $cat <<EOM
12156 Checking whether your strtoull() works okay...
12157 EOM
12158         $cat >try.c <<'EOCP'
12159 #include <errno.h>
12160 #ifdef __hpux
12161 #define strtoull __strtoull
12162 #endif
12163 #include <stdio.h>
12164 extern unsigned long long int strtoull(char *s, char **, int); 
12165 static int bad = 0;
12166 int check(char *s, long long eull, int een) {
12167         long long gull;
12168         errno = 0;
12169         gull = strtoull(s, 0, 10);
12170         if (!((gull == eull) && (errno == een)))
12171                 bad++;
12172 }
12173 int main() {
12174         check(" 1",                                        1LL, 0);
12175         check(" 0",                                        0LL, 0);
12176         check("18446744073709551615",  18446744073709551615ULL, 0);
12177         check("18446744073709551616",  18446744073709551615ULL, ERANGE);
12178 #if 0 /* strtoull() for /^-/ strings is undefined. */
12179         check("-1",                    18446744073709551615ULL, 0);
12180         check("-18446744073709551614",                     2LL, 0);
12181         check("-18446744073709551615",                     1LL, 0);
12182         check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
12183         check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
12184 #endif
12185         if (!bad)
12186                 printf("ok\n");
12187 }
12188 EOCP
12189         set try
12190         if eval $compile; then
12191                 case "`./try`" in
12192                 ok) echo "Your strtoull() seems to be working okay." ;;
12193                 *) cat <<EOM >&4
12194 Your strtoull() doesn't seem to be working okay.
12195 EOM
12196                    d_strtoull="$undef"
12197                    ;;
12198                 esac
12199         fi
12200         ;;
12201 esac
12202
12203 : see if strtouq exists
12204 set strtouq d_strtouq
12205 eval $inlibc
12206
12207 case "$d_strtouq" in
12208 "$define")
12209         $cat <<EOM
12210 Checking whether your strtouq() works okay...
12211 EOM
12212         $cat >try.c <<'EOCP'
12213 #include <errno.h>
12214 #include <stdio.h>
12215 extern unsigned long long int strtouq(char *s, char **, int); 
12216 static int bad = 0;
12217 void check(char *s, unsigned long long eull, int een) {
12218         unsigned long long gull;
12219         errno = 0;
12220         gull = strtouq(s, 0, 10);
12221         if (!((gull == eull) && (errno == een)))
12222                 bad++;
12223 }
12224 int main() {
12225         check(" 1",                                        1LL, 0);
12226         check(" 0",                                        0LL, 0);
12227         check("18446744073709551615",  18446744073709551615ULL, 0);
12228         check("18446744073709551616",  18446744073709551615ULL, ERANGE);
12229 #if 0 /* strtouq() for /^-/ strings is undefined. */
12230         check("-1",                    18446744073709551615ULL, 0);
12231         check("-18446744073709551614",                     2LL, 0);
12232         check("-18446744073709551615",                     1LL, 0);
12233         check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
12234         check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
12235 #endif
12236         if (!bad)
12237                 printf("ok\n");
12238         return 0;
12239 }
12240 EOCP
12241         set try
12242         if eval $compile; then
12243                 case "`./try`" in
12244                 ok) echo "Your strtouq() seems to be working okay." ;;
12245                 *) cat <<EOM >&4
12246 Your strtouq() doesn't seem to be working okay.
12247 EOM
12248                    d_strtouq="$undef"
12249                    ;;
12250                 esac
12251         fi
12252         ;;
12253 esac
12254
12255 : see if strxfrm exists
12256 set strxfrm d_strxfrm
12257 eval $inlibc
12258
12259 : see if symlink exists
12260 set symlink d_symlink
12261 eval $inlibc
12262
12263 : see if syscall exists
12264 set syscall d_syscall
12265 eval $inlibc
12266
12267 : see if sysconf exists
12268 set sysconf d_sysconf
12269 eval $inlibc
12270
12271 : see if system exists
12272 set system d_system
12273 eval $inlibc
12274
12275 : see if tcgetpgrp exists
12276 set tcgetpgrp d_tcgetpgrp
12277 eval $inlibc
12278
12279 : see if tcsetpgrp exists
12280 set tcsetpgrp d_tcsetpgrp
12281 eval $inlibc
12282
12283 : see if prototype for telldir is available
12284 echo " "
12285 set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
12286 eval $hasproto
12287
12288 : see if this is a sys/times.h system
12289 set sys/times.h i_systimes
12290 eval $inhdr
12291
12292 : see if times exists
12293 echo " "
12294 if set times val -f d_times; eval $csym; $val; then
12295         echo 'times() found.' >&4
12296         d_times="$define"
12297         inc=''
12298         case "$i_systimes" in
12299         "$define") inc='sys/times.h';;
12300         esac
12301         rp="What is the type returned by times() on this system?"
12302         set clock_t clocktype long stdio.h sys/types.h $inc
12303         eval $typedef_ask
12304 else
12305         echo 'times() NOT found, hope that will do.' >&4
12306         d_times="$undef"
12307         clocktype='int'
12308 fi
12309
12310 : see if truncate exists
12311 set truncate d_truncate
12312 eval $inlibc
12313
12314 : see if tzname[] exists
12315 echo " "
12316 if set tzname val -a d_tzname; eval $csym; $val; then
12317         val="$define"
12318         echo 'tzname[] found.' >&4
12319 else
12320         val="$undef"
12321         echo 'tzname[] NOT found.' >&4
12322 fi
12323 set d_tzname
12324 eval $setvar
12325
12326 : see if umask exists
12327 set umask d_umask
12328 eval $inlibc
12329
12330 : see if ustat exists
12331 set ustat d_ustat
12332 eval $inlibc
12333
12334 : backward compatibility for d_hvfork
12335 if test X$d_hvfork != X; then
12336         d_vfork="$d_hvfork"
12337         d_hvfork=''
12338 fi
12339 : see if there is a vfork
12340 val=''
12341 set vfork val
12342 eval $inlibc
12343
12344 : Ok, but do we want to use it. vfork is reportedly unreliable in 
12345 : perl on Solaris 2.x, and probably elsewhere.
12346 case "$val" in
12347 $define)
12348         echo " "
12349         case "$usevfork" in
12350         false) dflt='n';;
12351         *) dflt='y';;
12352         esac
12353         cat <<'EOM'
12354  
12355 Perl can only use a vfork() that doesn't suffer from strict
12356 restrictions on calling functions or modifying global data in
12357 the child.  For example, glibc-2.1 contains such a vfork()
12358 that is unsuitable.  If your system provides a proper fork()
12359 call, chances are that you do NOT want perl to use vfork().
12360
12361 EOM
12362         rp="Do you still want to use vfork()?"
12363         . ./myread
12364         case "$ans" in
12365         y|Y) ;;
12366         *)
12367                 echo "Ok, we won't use vfork()."
12368                 val="$undef"
12369                 ;;
12370         esac
12371         ;;
12372 esac
12373 set d_vfork
12374 eval $setvar
12375 case "$d_vfork" in
12376 $define) usevfork='true';;
12377 *) usevfork='false';;
12378 esac
12379
12380 : see if this is an sysdir system
12381 set sys/dir.h i_sysdir
12382 eval $inhdr
12383
12384 : see if this is an sysndir system
12385 set sys/ndir.h i_sysndir
12386 eval $inhdr
12387
12388 : see if closedir exists
12389 set closedir d_closedir
12390 eval $inlibc
12391
12392 case "$d_closedir" in
12393 "$define")
12394         echo " "
12395         echo "Checking whether closedir() returns a status..." >&4
12396         cat > closedir.c <<EOM
12397 #$i_dirent I_DIRENT             /**/
12398 #$i_sysdir I_SYS_DIR            /**/
12399 #$i_sysndir I_SYS_NDIR          /**/
12400 #$i_systypes I_SYS_TYPES        /**/
12401
12402 #if defined(I_SYS_TYPES)
12403 #include <sys/types.h>
12404 #endif
12405 #if defined(I_DIRENT)
12406 #include <dirent.h>
12407 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
12408 #include <sys/dir.h>
12409 #endif
12410 #else
12411 #ifdef I_SYS_NDIR
12412 #include <sys/ndir.h>
12413 #else
12414 #ifdef I_SYS_DIR
12415 #ifdef hp9000s500
12416 #include <ndir.h>       /* may be wrong in the future */
12417 #else
12418 #include <sys/dir.h>
12419 #endif
12420 #endif
12421 #endif
12422 #endif 
12423 int main() { return closedir(opendir(".")); }
12424 EOM
12425         set closedir
12426         if eval $compile_ok; then
12427                 if ./closedir > /dev/null 2>&1 ; then
12428                         echo "Yes, it does."
12429                         val="$undef"
12430                 else
12431                         echo "No, it doesn't."
12432                         val="$define"
12433                 fi
12434         else
12435                 echo "(I can't seem to compile the test program--assuming it doesn't)"
12436                 val="$define"
12437         fi
12438         ;;
12439 *)
12440         val="$undef";
12441         ;;
12442 esac
12443 set d_void_closedir
12444 eval $setvar
12445 $rm -f closedir*
12446 : see if there is a wait4
12447 set wait4 d_wait4
12448 eval $inlibc
12449
12450 : see if waitpid exists
12451 set waitpid d_waitpid
12452 eval $inlibc
12453
12454 : see if wcstombs exists
12455 set wcstombs d_wcstombs
12456 eval $inlibc
12457
12458 : see if wctomb exists
12459 set wctomb d_wctomb
12460 eval $inlibc
12461
12462 : preserve RCS keywords in files with variable substitution, grrr
12463 Date='$Date'
12464 Id='$Id'
12465 Log='$Log'
12466 RCSfile='$RCSfile'
12467 Revision='$Revision'
12468
12469 case "$crosscompile" in
12470 ''|[nN]*) crosscompile="$undef" ;;
12471 esac
12472
12473 case "$osname" in
12474 next|rhapsody|darwin) multiarch="$define" ;;
12475 esac
12476 case "$multiarch" in
12477 ''|[nN]*) multiarch="$undef" ;;
12478 esac
12479
12480 : check for alignment requirements
12481 echo " "
12482 case "$crosscompile$multiarch" in
12483 *$define*)
12484         $cat <<EOM
12485 You seem to be either cross-compiling or doing a multiarchitecture build,
12486 skipping the memory alignment check.
12487
12488 EOM
12489         case "$alignbytes" in
12490         '') alignbytes=8 ;;
12491         esac
12492         ;;
12493 *)
12494         case "$alignbytes" in
12495         '') echo "Checking alignment constraints..." >&4
12496                 if $test "X$uselongdouble" = Xdefine -a "X$d_longdbl" = Xdefine; then
12497                         $cat >try.c <<'EOCP'
12498 typedef long double NV;
12499 EOCP
12500                 else
12501                         $cat >try.c <<'EOCP'
12502 typedef double NV;
12503 EOCP
12504                 fi
12505                 $cat >>try.c <<'EOCP'
12506 #include <stdio.h>
12507 struct foobar {
12508         char foo;
12509         NV bar;
12510 } try_algn;
12511 int main()
12512 {
12513     printf("%d\n", (int)((char *)&try_algn.bar - (char *)&try_algn.foo));
12514     return(0);
12515 }
12516 EOCP
12517                 set try
12518                 if eval $compile_ok; then
12519                         dflt=`./try`
12520                 else
12521                         dflt='8'
12522                         echo "(I can't seem to compile the test program...)"
12523                 fi
12524                 ;;
12525         *) dflt="$alignbytes"
12526                 ;;
12527         esac
12528         rp="Doubles must be aligned on a how-many-byte boundary?"
12529         . ./myread
12530         alignbytes="$ans"
12531         $rm -f try.c try
12532         ;;
12533 esac
12534
12535
12536 : set the base revision
12537 baserev=5.0
12538
12539 : check for ordering of bytes in a long
12540 echo " "
12541 case "$crosscompile$multiarch" in
12542 *$define*)
12543         $cat <<EOM
12544 You seem to be either cross-compiling or doing a multiarchitecture build,
12545 skipping the byteorder check.
12546
12547 EOM
12548         byteorder='0xffff'
12549         ;;
12550 *)
12551         case "$byteorder" in
12552         '')
12553                 $cat <<'EOM'
12554 In the following, larger digits indicate more significance.  A big-endian
12555 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
12556 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
12557 machines may have weird orders like 3412.  A Cray will report 87654321,
12558 an Alpha will report 12345678. If the test program works the default is
12559 probably right.
12560 I'm now running the test program...
12561 EOM
12562                 $cat >try.c <<'EOCP'
12563 #include <stdio.h>
12564 int main()
12565 {
12566         int i;
12567         union {
12568                 unsigned long l;
12569                 char c[sizeof(long)];
12570         } u;
12571
12572         if (sizeof(long) > 4)
12573                 u.l = (0x08070605L << 32) | 0x04030201L;
12574         else
12575                 u.l = 0x04030201L;
12576         for (i = 0; i < sizeof(long); i++)
12577                 printf("%c", u.c[i]+'0');
12578         printf("\n");
12579         exit(0);
12580 }
12581 EOCP
12582                 xxx_prompt=y
12583                 set try
12584                 if eval $compile && ./try > /dev/null; then
12585                         dflt=`./try`
12586                         case "$dflt" in
12587                         [1-4][1-4][1-4][1-4]|12345678|87654321)
12588                                 echo "(The test program ran ok.)"
12589                                 echo "byteorder=$dflt"
12590                                 xxx_prompt=n
12591                         ;;
12592                         ????|????????) echo "(The test program ran ok.)" ;;
12593                         *) echo "(The test program didn't run right for some reason.)" ;;
12594                         esac
12595                 else
12596                         dflt='4321'
12597                         cat <<'EOM'
12598 (I can't seem to compile the test program.  Guessing big-endian...)
12599 EOM
12600                 fi
12601                 case "$xxx_prompt" in
12602                 y)
12603                         rp="What is the order of bytes in a long?"
12604                         . ./myread
12605                         byteorder="$ans"
12606                         ;;
12607                 *)      byteorder=$dflt
12608                         ;;
12609                 esac
12610                 ;;
12611         esac
12612         $rm -f try.c try
12613         ;;
12614 esac
12615
12616
12617 : how do we catenate cpp tokens here?
12618 echo " "
12619 echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
12620 $cat >cpp_stuff.c <<'EOCP'
12621 #define RCAT(a,b)a/**/b
12622 #define ACAT(a,b)a ## b
12623 RCAT(Rei,ser)
12624 ACAT(Cir,cus)
12625 EOCP
12626 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
12627 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
12628         echo "Oh!  Smells like ANSI's been here." >&4
12629         echo "We can catify or stringify, separately or together!"
12630         cpp_stuff=42
12631 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
12632         echo "Ah, yes!  The good old days!" >&4
12633         echo "However, in the good old days we don't know how to stringify and"
12634         echo "catify at the same time."
12635         cpp_stuff=1
12636 else
12637         $cat >&4 <<EOM
12638 Hmm, I don't seem to be able to catenate tokens with your cpp.  You're going
12639 to have to edit the values of CAT[2-5] in config.h...
12640 EOM
12641         cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
12642 fi
12643 $rm -f cpp_stuff.*
12644
12645 : see if this is a db.h system
12646 set db.h i_db
12647 eval $inhdr
12648
12649 case "$i_db" in
12650 $define)
12651         : Check db version.
12652         echo " "
12653         echo "Checking Berkeley DB version ..." >&4
12654         $cat >try.c <<EOCP
12655 #$d_const HASCONST
12656 #ifndef HASCONST
12657 #define const
12658 #endif
12659 #include <sys/types.h>
12660 #include <stdio.h>
12661 #include <db.h>
12662 int main()
12663 {
12664 #ifdef DB_VERSION_MAJOR /* DB version >= 2 */
12665     int Major, Minor, Patch ;
12666     unsigned long Version ;
12667     (void)db_version(&Major, &Minor, &Patch) ;
12668     printf("You have Berkeley DB Version 2 or greater\n");
12669
12670     printf("db.h is from Berkeley DB Version %d.%d.%d\n",
12671                 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
12672     printf("libdb is from Berkeley DB Version %d.%d.%d\n",
12673                 Major, Minor, Patch) ;
12674
12675     /* check that db.h & libdb are compatible */
12676     if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
12677         printf("db.h and libdb are incompatible\n") ;
12678         exit(3);        
12679     }
12680
12681     printf("db.h and libdb are compatible\n") ;
12682
12683     Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
12684                 + DB_VERSION_PATCH ;
12685
12686     /* needs to be >= 2.3.4 */
12687     if (Version < 2003004) {
12688     /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
12689         printf("but Perl needs Berkeley DB 2.3.4 or greater\n") ;
12690         exit(2);        
12691     }
12692
12693     exit(0);
12694 #else
12695 #if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
12696     printf("You have Berkeley DB Version 1\n");
12697     exit(0);    /* DB version < 2: the coast is clear. */
12698 #else
12699     exit(1);    /* <db.h> not Berkeley DB? */
12700 #endif
12701 #endif
12702 }
12703 EOCP
12704         set try
12705         if eval $compile_ok && ./try; then
12706                 echo 'Looks OK.' >&4
12707         else
12708                 echo "I can't use Berkeley DB with your <db.h>.  I'll disable Berkeley DB." >&4
12709                 i_db=$undef
12710                 case " $libs " in
12711                 *"-ldb "*)
12712                         : Remove db from list of libraries to use
12713                         echo "Removing unusable -ldb from library list" >&4
12714                         set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
12715                         shift
12716                         libs="$*"
12717                         echo "libs = $libs" >&4
12718                         ;;
12719                 esac
12720         fi
12721         $rm -f try.*
12722         ;;
12723 esac
12724
12725 case "$i_db" in
12726 define)
12727         : Check the return type needed for hash 
12728         echo " "
12729         echo "Checking return type needed for hash for Berkeley DB ..." >&4
12730         $cat >try.c <<EOCP
12731 #$d_const HASCONST
12732 #ifndef HASCONST
12733 #define const
12734 #endif
12735 #include <sys/types.h>
12736 #include <db.h>
12737
12738 #ifndef DB_VERSION_MAJOR
12739 u_int32_t hash_cb (ptr, size)
12740 const void *ptr;
12741 size_t size;
12742 {
12743 }
12744 HASHINFO info;
12745 int main()
12746 {
12747         info.hash = hash_cb;
12748 }
12749 #endif
12750 EOCP
12751         if $cc $ccflags -c try.c >try.out 2>&1 ; then
12752                 if $contains warning try.out >>/dev/null 2>&1 ; then
12753                         db_hashtype='int'
12754                 else
12755                         db_hashtype='u_int32_t'
12756                 fi
12757         else
12758                 : XXX Maybe we should just give up here.
12759                 db_hashtype=u_int32_t
12760                 $cat try.out >&4
12761                 echo "Help:  I can't seem to compile the db test program." >&4
12762                 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
12763         fi
12764         $rm -f try.*
12765         echo "Your version of Berkeley DB uses $db_hashtype for hash."
12766         ;;
12767 *)      db_hashtype=u_int32_t
12768         ;;
12769 esac
12770 case "$i_db" in
12771 define)
12772         : Check the return type needed for prefix 
12773         echo " "
12774         echo "Checking return type needed for prefix for Berkeley DB ..." >&4
12775         cat >try.c <<EOCP
12776 #$d_const HASCONST
12777 #ifndef HASCONST
12778 #define const
12779 #endif
12780 #include <sys/types.h>
12781 #include <db.h>
12782
12783 #ifndef DB_VERSION_MAJOR
12784 size_t prefix_cb (key1, key2)
12785 const DBT *key1;
12786 const DBT *key2;
12787 {
12788 }
12789 BTREEINFO info;
12790 int main()
12791 {
12792         info.prefix = prefix_cb;
12793 }
12794 #endif
12795 EOCP
12796         if $cc $ccflags -c try.c  >try.out 2>&1 ; then
12797                 if $contains warning try.out >>/dev/null 2>&1 ; then
12798                         db_prefixtype='int'
12799                 else
12800                         db_prefixtype='size_t'
12801                 fi
12802         else
12803                 db_prefixtype='size_t'
12804                 : XXX Maybe we should just give up here.
12805                 $cat try.out >&4
12806                 echo "Help:  I can't seem to compile the db test program." >&4
12807                 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
12808         fi
12809         $rm -f try.*
12810         echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
12811         ;;
12812 *)      db_prefixtype='size_t'
12813         ;;
12814 esac
12815
12816 : check for void type
12817 echo " "
12818 echo "Checking to see how well your C compiler groks the void type..." >&4
12819 case "$voidflags" in
12820 '')
12821         $cat >try.c <<'EOCP'
12822 #if TRY & 1
12823 void sub() {
12824 #else
12825 sub() {
12826 #endif
12827         extern void moo();      /* function returning void */
12828         void (*goo)();          /* ptr to func returning void */
12829 #if TRY & 8
12830         void *hue;              /* generic ptr */
12831 #endif
12832 #if TRY & 2
12833         void (*foo[10])();
12834 #endif
12835
12836 #if TRY & 4
12837         if(goo == moo) {
12838                 exit(0);
12839         }
12840 #endif
12841         exit(0);
12842 }
12843 int main() { sub(); }
12844 EOCP
12845         if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
12846                 voidflags=$defvoidused
12847         echo "Good.  It appears to support void to the level $package wants.">&4
12848                 if $contains warning .out >/dev/null 2>&1; then
12849                         echo "However, you might get some warnings that look like this:"
12850                         $cat .out
12851                 fi
12852         else
12853 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
12854                 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
12855                         echo "It supports 1..."
12856                         if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
12857                                 echo "It also supports 2..."
12858                                 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
12859                                         voidflags=7
12860                                         echo "And it supports 4 but not 8 definitely."
12861                                 else
12862                                         echo "It doesn't support 4..."
12863                                         if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
12864                                                 voidflags=11
12865                                                 echo "But it supports 8."
12866                                         else
12867                                                 voidflags=3
12868                                                 echo "Neither does it support 8."
12869                                         fi
12870                                 fi
12871                         else
12872                                 echo "It does not support 2..."
12873                                 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
12874                                         voidflags=13
12875                                         echo "But it supports 4 and 8."
12876                                 else
12877                                         if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
12878                                                 voidflags=5
12879                                                 echo "And it supports 4 but has not heard about 8."
12880                                         else
12881                                                 echo "However it supports 8 but not 4."
12882                                         fi
12883                                 fi
12884                         fi
12885                 else
12886                         echo "There is no support at all for void."
12887                         voidflags=0
12888                 fi
12889         fi
12890 esac
12891 case "$voidflags" in
12892 "$defvoidused") ;;
12893 *)      $cat >&4 <<'EOM'
12894   Support flag bits are:
12895     1: basic void declarations.
12896     2: arrays of pointers to functions returning void.
12897     4: operations between pointers to and addresses of void functions.
12898     8: generic void pointers.
12899 EOM
12900         dflt="$voidflags";
12901         rp="Your void support flags add up to what?"
12902         . ./myread
12903         voidflags="$ans"
12904         ;;
12905 esac
12906 $rm -f try.* .out
12907
12908
12909 : How can we generate normalized random numbers ?
12910 echo " "
12911 echo "Looking for a random number function..." >&4
12912 case "$randfunc" in
12913 '')
12914         if set drand48 val -f; eval $csym; $val; then
12915                 dflt="drand48"
12916                 echo "Good, found drand48()." >&4
12917         elif set random val -f; eval $csym; $val; then
12918                 dflt="random"
12919                 echo "OK, found random()." >&4
12920         else
12921                 dflt="rand"
12922                 echo "Yick, looks like I have to use rand()." >&4
12923         fi
12924         echo " "
12925         ;;
12926 *)
12927         dflt="$randfunc"
12928         ;;
12929 esac
12930 cont=true
12931
12932 case "$ccflags" in
12933 *-Dmy_rand=*|*-Dmy_srand=*)
12934         echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
12935         ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
12936         ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
12937         ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
12938         ;;
12939 esac
12940
12941 while $test "$cont"; do
12942         rp="Use which function to generate random numbers?"
12943         . ./myread
12944         if $test "$ans" = "$dflt"; then
12945                 : null
12946         else
12947                 randbits=''
12948         fi
12949         randfunc="$ans"
12950         if set $ans val -f; eval $csym; $val; then
12951                 cont=''
12952         else
12953                 dflt=y
12954                 rp="I cannot find function $ans. Use that name anyway?"
12955                 . ./myread
12956                 dflt=rand
12957                 case "$ans" in
12958                         [yY]*) cont='';;
12959                 esac
12960         fi
12961         case "$cont" in
12962         '')
12963                 case "$randfunc" in
12964                 drand48)
12965                         drand01="drand48()"
12966                         seedfunc="srand48"
12967                         randbits=48
12968                         randseedtype=long
12969                         ;;
12970                 rand|random)
12971                         case "$randbits" in
12972                         '')
12973 echo "Checking to see how many bits your $randfunc() function produces..." >&4
12974                                 $cat >try.c <<EOCP
12975 #$i_unistd I_UNISTD
12976 #$i_stdlib I_STDLIB
12977 #include <stdio.h>
12978 #ifdef I_UNISTD
12979 #  include <unistd.h>
12980 #endif
12981 #ifdef I_STDLIB
12982 #  include <stdlib.h>
12983 #endif
12984 int main()
12985 {
12986         register int i;
12987         register unsigned long tmp;
12988         register unsigned long max = 0L;
12989
12990         for (i = 1000; i; i--) {
12991                 tmp = (unsigned long) $randfunc();
12992                 if (tmp > max) max = tmp;
12993         }
12994         for (i = 0; max; i++)
12995                 max /= 2;
12996         printf("%d\n",i);
12997 }
12998 EOCP
12999                                 set try
13000                                 if eval $compile_ok; then
13001                                         dflt=`try`
13002                                 else
13003                                         dflt='?'
13004                                         echo "(I can't seem to compile the test program...)"
13005                                 fi
13006                                 ;;
13007                         *)
13008                                 dflt="$randbits"
13009                                 ;;
13010                         esac
13011                         rp="How many bits does your $randfunc() function produce?"
13012                         . ./myread
13013                         randbits="$ans"
13014                         $rm -f try.c try
13015                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
13016                         seedfunc="s$randfunc"
13017                         randseedtype=unsigned
13018                         ;;
13019                 *)
13020                         dflt="31"
13021                         rp="How many bits does your $randfunc() function produce?"
13022                         . ./myread
13023                         randbits="$ans"
13024                         seedfunc="s$randfunc"
13025                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
13026                         if set $seedfunc val -f; eval $csym; $val; then
13027                                 echo "(Using $seedfunc() to seed random generator)"
13028                         else
13029                                 echo "(Warning: no $seedfunc() to seed random generator)"
13030                                 seedfunc=rand
13031                         fi
13032                         randseedtype=unsigned
13033                         ;;
13034                 esac
13035                 ;;
13036         esac
13037 done
13038
13039 echo " "
13040 echo "Determining whether or not we are on an EBCDIC system..." >&4
13041 $cat >tebcdic.c <<'EOM'
13042 int main()
13043 {
13044   if ('M'==0xd4) return 0;
13045   return 1;
13046 }
13047 EOM
13048
13049 val=$undef
13050 set tebcdic
13051 if eval $compile_ok; then
13052         if ./tebcdic; then
13053                 echo "You seem to speak EBCDIC." >&4
13054                 val="$define"
13055         else
13056                 echo "Nope, no EBCDIC, probably ASCII or some ISO Latin. Or UTF8." >&4
13057         fi
13058 else
13059         echo "I'm unable to compile the test program." >&4
13060         echo "I'll assume ASCII or some ISO Latin. Or UTF8." >&4
13061 fi
13062 $rm -f tebcdic.c tebcdic
13063 set ebcdic
13064 eval $setvar
13065
13066 echo " "
13067 $cat >&4 <<EOM
13068 Checking how to flush all pending stdio output...
13069 EOM
13070 # I only know how to find the first 32 possibly open files on SunOS.
13071 # See also hints/sunos_4_1.sh and util.c  --AD
13072 case "$osname" in
13073 sunos) $echo '#define PERL_FFLUSH_ALL_FOPEN_MAX 32' > try.c ;;
13074 esac
13075 $cat >>try.c <<EOCP
13076 #include <stdio.h>
13077 #$i_unistd I_UNISTD
13078 #ifdef I_UNISTD
13079 # include <unistd.h>
13080 #endif
13081 #$d_sysconf HAS_SYSCONF
13082 #$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY
13083 #ifdef HAS_STDIO_STREAM_ARRAY
13084 # define STDIO_STREAM_ARRAY $stdio_stream_array
13085 #endif
13086 int main() {
13087   FILE* p = fopen("try.out", "w");
13088 #ifdef TRY_FPUTC
13089   fputc('x', p);
13090 #else
13091 # ifdef TRY_FPRINTF
13092   fprintf(p, "x");
13093 # endif
13094 #endif
13095 #ifdef TRY_FFLUSH_NULL
13096   fflush(NULL);
13097 #endif
13098 #ifdef TRY_FFLUSH_ALL
13099   {
13100     long open_max = -1;
13101 # ifdef PERL_FFLUSH_ALL_FOPEN_MAX
13102     open_max = PERL_FFLUSH_ALL_FOPEN_MAX;
13103 # else
13104 #  if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
13105     open_max = sysconf(_SC_OPEN_MAX);
13106 #  else
13107 #   ifdef FOPEN_MAX
13108     open_max = FOPEN_MAX;
13109 #   else
13110 #    ifdef OPEN_MAX
13111     open_max = OPEN_MAX;
13112 #    else
13113 #     ifdef _NFILE
13114     open_max = _NFILE;
13115 #     endif
13116 #    endif
13117 #   endif
13118 #  endif
13119 # endif 
13120 # ifdef HAS_STDIO_STREAM_ARRAY
13121     if (open_max > 0) {
13122       long i;
13123       for (i = 0; i < open_max; i++)
13124             if (STDIO_STREAM_ARRAY[i]._file >= 0 &&
13125                 STDIO_STREAM_ARRAY[i]._file < open_max &&
13126                 STDIO_STREAM_ARRAY[i]._flag)
13127                 fflush(&STDIO_STREAM_ARRAY[i]);
13128     }   
13129   }
13130 # endif
13131 #endif
13132   _exit(42);
13133 }
13134 EOCP
13135 : first we have to find out how _not_ to flush
13136 if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
13137     output=''
13138     set try -DTRY_FPUTC
13139     if eval $compile; then
13140             $rm -f try.out
13141             ./try$exe_ext 2>/dev/null
13142             if $test ! -s try.out -a "X$?" = X42; then
13143                 output=-DTRY_FPUTC
13144             fi
13145     fi
13146     case "$output" in
13147     '')
13148             set try -DTRY_FPRINTF
13149             $rm -f try.out
13150             if eval $compile; then
13151                     $rm -f try.out
13152                     ./try$exe_ext 2>/dev/null
13153                     if $test ! -s try.out -a "X$?" = X42; then
13154                         output=-DTRY_FPRINTF
13155                     fi
13156             fi
13157         ;;
13158     esac
13159 fi
13160 : check for fflush NULL behaviour
13161 case "$fflushNULL" in
13162 '')     set try -DTRY_FFLUSH_NULL $output
13163         if eval $compile; then
13164                 $rm -f try.out
13165                 ./try$exe_ext 2>/dev/null
13166                 code="$?"
13167                 if $test -s try.out -a "X$code" = X42; then
13168                         fflushNULL="`$cat try.out`"
13169                 else
13170                         if $test "X$code" != X42; then
13171                                 $cat >&4 <<EOM
13172 (If this test failed, don't worry, we'll try another method shortly.)
13173 EOM
13174                         fi
13175                 fi
13176         fi
13177         $rm -f core try.core core.try.*
13178         case "$fflushNULL" in
13179         x)      $cat >&4 <<EOM
13180 Your fflush(NULL) works okay for output streams.
13181 Let's see if it clobbers input pipes...
13182 EOM
13183 # As of mid-March 2000 all versions of Solaris appear to have a stdio
13184 # bug that improperly flushes the input end of pipes.  So we avoid the
13185 # autoflush on fork/system/exec support for now. :-(
13186 $cat >tryp.c <<EOCP
13187 #include <stdio.h>
13188 int
13189 main(int argc, char **argv)
13190 {
13191     char buf[1024];
13192     int i;
13193     char *bp = buf;
13194     while (1) {
13195         while ((i = getc(stdin)) != -1
13196                && (*bp++ = i) != '\n'
13197                && bp < &buf[1024])
13198         /* DO NOTHING */ ;
13199         *bp = '\0';
13200         fprintf(stdout, "%s", buf);
13201         fflush(NULL);
13202         if (i == -1)
13203             return 0;
13204         bp = buf;
13205     }
13206 }
13207 EOCP
13208                 fflushNULL="$define"
13209                 set tryp
13210                 if eval $compile; then
13211                     $rm -f tryp.out
13212                     $cat tryp.c | ./tryp$exe_ext 2>/dev/null > tryp.out
13213                     if cmp tryp.c tryp.out >/dev/null 2>&1; then
13214                        $cat >&4 <<EOM
13215 fflush(NULL) seems to behave okay with input streams.
13216 EOM
13217                         fflushNULL="$define"
13218                     else
13219                         $cat >&4 <<EOM
13220 Ouch, fflush(NULL) clobbers input pipes!  We will not use it.
13221 EOM
13222                         fflushNULL="$undef"
13223                     fi
13224                 fi
13225                 $rm -f core tryp.c tryp.core core.tryp.*
13226                 ;;
13227         '')     $cat >&4 <<EOM
13228 Your fflush(NULL) isn't working (contrary to ANSI C).
13229 EOM
13230                 fflushNULL="$undef"
13231                 ;;
13232         *)      $cat >&4 <<EOM
13233 Cannot figure out whether your fflush(NULL) works or not.
13234 I'm assuming it doesn't (contrary to ANSI C).
13235 EOM
13236                 fflushNULL="$undef"
13237                 ;;
13238         esac
13239         ;;
13240 $define|true|[yY]*)
13241         fflushNULL="$define"
13242         ;;
13243 *)
13244         fflushNULL="$undef"
13245         ;;
13246 esac
13247 : check explicit looping only if NULL did not work, and if the pipe
13248 : bug does not show up on an explicit flush too
13249 case "$fflushNULL" in
13250 "$undef")
13251         $cat >tryp.c <<EOCP
13252 #include <stdio.h>
13253 int
13254 main(int argc, char **argv)
13255 {
13256     char buf[1024];
13257     int i;
13258     char *bp = buf;
13259     while (1) {
13260         while ((i = getc(stdin)) != -1
13261                && (*bp++ = i) != '\n'
13262                && bp < &buf[1024])
13263         /* DO NOTHING */ ;
13264         *bp = '\0';
13265         fprintf(stdout, "%s", buf);
13266         fflush(stdin);
13267         if (i == -1)
13268             return 0;
13269         bp = buf;
13270     }
13271 }
13272 EOCP
13273         set tryp
13274         if eval $compile; then
13275             $rm -f tryp.out
13276             $cat tryp.c | ./tryp$exe_ext 2>/dev/null > tryp.out
13277             if cmp tryp.c tryp.out >/dev/null 2>&1; then
13278                $cat >&4 <<EOM
13279 Good, at least fflush(stdin) seems to behave okay when stdin is a pipe.
13280 EOM
13281                 : now check for fflushall behaviour
13282                 case "$fflushall" in
13283                 '')     set try -DTRY_FFLUSH_ALL $output
13284                         if eval $compile; then
13285                                 $cat >&4 <<EOM
13286 (Now testing the other method--but note that this also may fail.)
13287 EOM
13288                                 $rm -f try.out
13289                                 ./try$exe_ext 2>/dev/null
13290                                 if $test -s try.out -a "X$?" = X42; then
13291                                         fflushall="`$cat try.out`"
13292                                 fi
13293                         fi
13294                         $rm -f core try.core core.try.*
13295                         case "$fflushall" in
13296                         x)      $cat >&4 <<EOM
13297 Whew. Flushing explicitly all the stdio streams works.
13298 EOM
13299                                 fflushall="$define"
13300                                 ;;
13301                         '')     $cat >&4 <<EOM
13302 Sigh. Flushing explicitly all the stdio streams doesn't work.
13303 EOM
13304                                 fflushall="$undef"
13305                                 ;;
13306                         *)      $cat >&4 <<EOM
13307 Cannot figure out whether flushing stdio streams explicitly works or not.
13308 I'm assuming it doesn't.
13309 EOM
13310                                 fflushall="$undef"
13311                                 ;;
13312                         esac
13313                         ;;
13314                 "$define"|true|[yY]*)
13315                         fflushall="$define"
13316                         ;;
13317                 *)
13318                         fflushall="$undef"
13319                         ;;
13320                 esac
13321             else
13322                 $cat >&4 <<EOM
13323 All is futile.  Even fflush(stdin) clobbers input pipes!
13324 EOM
13325                 fflushall="$undef"
13326             fi
13327         else
13328             fflushall="$undef"
13329         fi
13330         $rm -f core tryp.c tryp.core core.tryp.*
13331         ;;
13332 *)      fflushall="$undef"
13333         ;;
13334 esac
13335
13336 case "$fflushNULL$fflushall" in
13337 undefundef)
13338         $cat <<EOM
13339 OK, I give up.  I cannot figure out how to flush pending stdio output.
13340 We won't be flushing handles at all before fork/exec/popen.
13341 EOM
13342         ;;
13343 esac
13344 $rm -f try.* try$exe_ext
13345
13346 : Store the full pathname to the ar program for use in the C program
13347 : Respect a hint or command line value for full_ar.
13348 case "$full_ar" in
13349 '') full_ar=$ar ;;
13350 esac
13351
13352 : Store the full pathname to the sed program for use in the C program
13353 full_sed=$sed
13354
13355 : see what type gids are declared as in the kernel
13356 echo " "
13357 echo "Looking for the type for group ids returned by getgid()."
13358 set gid_t gidtype xxx stdio.h sys/types.h
13359 eval $typedef
13360 case "$gidtype" in
13361 xxx)
13362         xxx=`./findhdr sys/user.h`
13363         set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
13364         case $1 in
13365         unsigned) dflt="$1 $2" ;;
13366         *) dflt="$1" ;;
13367         esac
13368         ;;
13369 *) dflt="$gidtype";;
13370 esac
13371 case "$gidtype" in
13372 gid_t) echo "gid_t found." ;;
13373 *)      rp="What is the type for group ids returned by getgid()?"
13374         . ./myread
13375         gidtype="$ans"
13376         ;;
13377 esac
13378
13379 echo " "
13380 case "$gidtype" in
13381 *_t) zzz="$gidtype"     ;;
13382 *)   zzz="gid"          ;;
13383 esac
13384 echo "Checking the size of $zzz..." >&4 
13385 cat > try.c <<EOCP
13386 #include <sys/types.h>
13387 #include <stdio.h>
13388 int main() {
13389     printf("%d\n", (int)sizeof($gidtype));
13390     exit(0);
13391 }
13392 EOCP
13393 set try
13394 if eval $compile_ok; then
13395         yyy=`./try`
13396         case "$yyy" in
13397         '')     gidsize=4
13398                 echo "(I can't execute the test program--guessing $gidsize.)" >&4
13399                 ;;
13400         *)      gidsize=$yyy
13401                 echo "Your $zzz is $gidsize bytes long."
13402                 ;;
13403         esac
13404 else
13405         gidsize=4
13406         echo "(I can't compile the test program--guessing $gidsize.)" >&4
13407 fi
13408
13409
13410 echo " "
13411 case "$gidtype" in
13412 *_t) zzz="$gidtype"     ;;
13413 *)   zzz="gid"          ;;
13414 esac
13415 echo "Checking the sign of $zzz..." >&4 
13416 cat > try.c <<EOCP
13417 #include <sys/types.h>
13418 #include <stdio.h>
13419 int main() {
13420         $gidtype foo = -1;
13421         if (foo < 0)
13422                 printf("-1\n");
13423         else
13424                 printf("1\n");
13425 }
13426 EOCP
13427 set try
13428 if eval $compile; then
13429         yyy=`./try`
13430         case "$yyy" in
13431         '')     gidsign=1
13432                 echo "(I can't execute the test program--guessing unsigned.)" >&4
13433                 ;;
13434         *)      gidsign=$yyy
13435                 case "$gidsign" in
13436                  1) echo "Your $zzz is unsigned." ;;
13437                 -1) echo "Your $zzz is signed."   ;;
13438                 esac
13439                 ;;
13440         esac
13441 else
13442         gidsign=1
13443         echo "(I can't compile the test program--guessing unsigned.)" >&4
13444 fi
13445
13446
13447 echo " "
13448
13449 if $test X"$quadtype" != X; then
13450
13451 echo "Checking how to print 64-bit integers..." >&4
13452
13453 if $test X"$sPRId64" = X -a X"$quadtype" = Xint; then
13454         $cat >try.c <<'EOCP'
13455 #include <sys/types.h>
13456 #include <stdio.h>
13457 int main() {
13458   int q = 12345678901;
13459   printf("%ld\n", q);
13460 }
13461 EOCP
13462         set try
13463         if eval $compile; then
13464                 yyy=`./try$exe_ext`
13465                 case "$yyy" in
13466                 12345678901)
13467                         sPRId64='"d"'; sPRIi64='"i"'; sPRIu64='"u"';
13468                         sPRIo64='"o"'; sPRIx64='"x"'; sPRIXU64='"X"';
13469                         echo "We will use %d."
13470                         ;;
13471                 esac
13472         fi
13473 fi
13474
13475 if $test X"$sPRId64" = X -a X"$quadtype" = Xlong; then
13476         $cat >try.c <<'EOCP'
13477 #include <sys/types.h>
13478 #include <stdio.h>
13479 int main() {
13480   long q = 12345678901;
13481   printf("%ld\n", q);
13482 }
13483 EOCP
13484         set try
13485         if eval $compile; then
13486                 yyy=`./try$exe_ext`
13487                 case "$yyy" in
13488                 12345678901)
13489                         sPRId64='"ld"'; sPRIi64='"li"'; sPRIu64='"lu"';
13490                         sPRIo64='"lo"'; sPRIx64='"lx"'; sPRIXU64='"lX"';
13491                         echo "We will use %ld."
13492                         ;;
13493                 esac
13494         fi
13495 fi
13496
13497 if $test X"$sPRId64" = X -a X"$i_inttypes" = X"$define" -a X"$quadtype" = Xint64_t; then
13498         $cat >try.c <<'EOCP'
13499 #include <sys/types.h>
13500 #include <inttypes.h>
13501 #include <stdio.h>
13502 int main() {
13503   int64_t q = 12345678901;
13504   printf("%" PRId64 "\n", q);
13505 }
13506 EOCP
13507         set try
13508         if eval $compile; then
13509                 yyy=`./try$exe_ext`
13510                 case "$yyy" in
13511                 12345678901)
13512                         sPRId64=PRId64; sPRIi64=PRIi64; sPRIu64=PRIu64;
13513                         sPRIo64=PRIo64; sPRIx64=PRIx64; sPRIXU64=PRIXU64;
13514                         echo "We will use the C9X style."
13515                         ;;
13516                 esac
13517         fi
13518 fi
13519
13520 if $test X"$sPRId64" = X -a X"$quadtype" = X"long long"; then
13521         $cat >try.c <<'EOCP'
13522 #include <sys/types.h>
13523 #include <stdio.h>
13524 int main() {
13525   long long q = 12345678901LL; /* AIX cc requires the LL suffix. */
13526   printf("%lld\n", q);
13527 }
13528 EOCP
13529         set try
13530         if eval $compile; then
13531                 yyy=`./try$exe_ext`
13532                 case "$yyy" in
13533                 12345678901)
13534                         sPRId64='"lld"'; sPRIi64='"lli"'; sPRIu64='"llu"';
13535                         sPRIo64='"llo"'; sPRIx64='"llx"'; sPRIXU64='"llX"';
13536                         echo "We will use the %lld style."
13537                         ;;
13538                 esac
13539         fi
13540 fi
13541
13542 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
13543         $cat >try.c <<EOCP
13544 #include <sys/types.h>
13545 #include <stdio.h>
13546 int main() {
13547   $quadtype q = 12345678901;
13548   printf("%Ld\n", q);
13549 }
13550 EOCP
13551         set try
13552         if eval $compile; then
13553                 yyy=`./try$exe_ext`
13554                 case "$yyy" in
13555                 12345678901)
13556                         sPRId64='"Ld"'; sPRIi64='"Li"'; sPRIu64='"Lu"';
13557                         sPRIo64='"Lo"'; sPRIx64='"Lx"'; sPRIXU64='"LX"';
13558                         echo "We will use %Ld."
13559                         ;;
13560                 esac
13561         fi
13562 fi
13563
13564 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
13565         $cat >try.c <<EOCP
13566 #include <sys/types.h>
13567 #include <stdio.h>
13568 int main() {
13569   $quadtype q = 12345678901;
13570   printf("%qd\n", q);
13571 }
13572 EOCP
13573         set try
13574         if eval $compile; then
13575                 yyy=`./try$exe_ext`
13576                 case "$yyy" in
13577                 12345678901)
13578                         sPRId64='"qd"'; sPRIi64='"qi"'; sPRIu64='"qu"';
13579                         sPRIo64='"qo"'; sPRIx64='"qx"'; sPRIXU64='"qX"';
13580                         echo "We will use %qd."
13581                         ;;
13582                 esac
13583         fi
13584 fi
13585
13586 if $test X"$sPRId64" = X; then
13587         echo "Cannot figure out how to print 64-bit integers." >&4
13588 fi
13589
13590 $rm -f try try.*
13591
13592 fi
13593
13594 case "$sPRId64" in
13595 '')     d_PRId64="$undef"; d_PRIi64="$undef"; d_PRIu64="$undef"; 
13596         d_PRIo64="$undef"; d_PRIx64="$undef"; d_PRIXU64="$undef"; 
13597         ;;
13598 *)      d_PRId64="$define"; d_PRIi64="$define"; d_PRIu64="$define"; 
13599         d_PRIo64="$define"; d_PRIx64="$define"; d_PRIXU64="$define"; 
13600         ;;
13601 esac
13602
13603
13604 echo " "
13605 $echo "Checking the format strings to be used for Perl's internal types..." >&4
13606
13607 if $test X"$ivsize" = X8; then
13608         ivdformat="$sPRId64"
13609         uvuformat="$sPRIu64"
13610         uvoformat="$sPRIo64"
13611         uvxformat="$sPRIx64"
13612         uvXUformat="$sPRIXU64"
13613 else
13614         if $test X"$ivsize" = X"$longsize"; then
13615                 ivdformat='"ld"'
13616                 uvuformat='"lu"'
13617                 uvoformat='"lo"'
13618                 uvxformat='"lx"'
13619                 uvXUformat='"lX"'
13620         else
13621                 if $test X"$ivsize" = X"$intsize"; then
13622                         ivdformat='"d"'
13623                         uvuformat='"u"'
13624                         uvoformat='"o"'
13625                         uvxformat='"x"'
13626                         uvXUformat='"X"'
13627                 else
13628                         : far out
13629                         if $test X"$ivsize" = X"$shortsize"; then
13630                                 ivdformat='"hd"'
13631                                 uvuformat='"hu"'
13632                                 uvoformat='"ho"'
13633                                 uvxformat='"hx"'
13634                                 uvXUformat='"hX"'
13635                         fi
13636                 fi
13637         fi
13638 fi
13639
13640 if $test X"$uselongdouble" = X"$define" -a X"$d_longdbl" = X"$define" -a X"$d_PRIgldbl" = X"$define"; then
13641         nveformat="$sPRIeldbl"
13642         nvfformat="$sPRIfldbl"
13643         nvgformat="$sPRIgldbl"
13644         nvEUformat="$sPRIEUldbl"
13645         nvFUformat="$sPRIFUldbl"
13646         nvGUformat="$sPRIGUldbl"
13647 else
13648         nveformat='"e"'
13649         nvfformat='"f"'
13650         nvgformat='"g"'
13651         nvEUformat='"E"'
13652         nvFUformat='"F"'
13653         nvGUformat='"G"'
13654 fi
13655
13656 case "$ivdformat" in
13657 '') echo "$0: Fatal: failed to find format strings, cannot continue." >& 4
13658     exit 1
13659     ;;
13660 esac
13661
13662
13663 echo " "
13664 $echo "Checking the format string to be used for gids..." >&4
13665
13666 case "$gidsign" in
13667 -1)     if $test X"$gidsize" = X"$ivsize"; then
13668                 gidformat="$ivdformat"
13669         else
13670                 if $test X"$gidsize" = X"$longsize"; then
13671                         gidformat='"ld"'
13672                 else
13673                         if $test X"$gidsize" = X"$intsize"; then
13674                                 gidformat='"d"'
13675                         else
13676                                 if $test X"$gidsize" = X"$shortsize"; then
13677                                         gidformat='"hd"'
13678                                 fi
13679                         fi
13680                 fi
13681         fi
13682         ;;
13683 *)      if $test X"$gidsize" = X"$uvsize"; then
13684                 gidformat="$uvuformat"
13685         else
13686                 if $test X"$gidsize" = X"$longsize"; then
13687                         gidformat='"lu"'
13688                 else
13689                         if $test X"$gidsize" = X"$intsize"; then
13690                                 gidformat='"u"'
13691                         else
13692                                 if $test X"$gidsize" = X"$shortsize"; then
13693                                         gidformat='"hu"'
13694                                 fi
13695                         fi
13696                 fi
13697         fi
13698         ;;
13699 esac
13700
13701 : see if getgroups exists
13702 set getgroups d_getgrps
13703 eval $inlibc
13704
13705 : see if setgroups exists
13706 set setgroups d_setgrps
13707 eval $inlibc
13708
13709
13710 : Find type of 2nd arg to 'getgroups()' and 'setgroups()'
13711 echo " "
13712 case "$d_getgrps$d_setgrps" in
13713 *define*)
13714         case "$groupstype" in
13715         '') dflt="$gidtype" ;;
13716         *)  dflt="$groupstype" ;;
13717         esac
13718         $cat <<EOM
13719 What type of pointer is the second argument to getgroups() and setgroups()?
13720 Usually this is the same as group ids, $gidtype, but not always.
13721
13722 EOM
13723         rp='What type pointer is the second argument to getgroups() and setgroups()?'
13724         . ./myread
13725         groupstype="$ans"
13726         ;;
13727 *)  groupstype="$gidtype";;
13728 esac
13729
13730 echo " "
13731 echo "Checking if your $make program sets \$(MAKE)..." >&4
13732 case "$make_set_make" in
13733 '')
13734         $sed 's/^X //' > testmake.mak << 'EOF'
13735 Xall:
13736 X       @echo 'maketemp="$(MAKE)"'
13737 EOF
13738         case "`$make -f testmake.mak 2>/dev/null`" in
13739         *maketemp=*) make_set_make='#' ;;
13740         *)      make_set_make="MAKE=$make" ;;
13741         esac
13742         $rm -f testmake.mak
13743         ;;
13744 esac
13745 case "$make_set_make" in
13746 '#') echo "Yup, it does.";;
13747 *) echo "Nope, it doesn't.";;
13748 esac
13749
13750 : see what type is used for mode_t
13751 rp="What is the type used for file modes for system calls (e.g. fchmod())?"
13752 set mode_t modetype int stdio.h sys/types.h
13753 eval $typedef_ask
13754
13755 : see if stdarg is available
13756 echo " "
13757 if $test `./findhdr stdarg.h`; then
13758         echo "<stdarg.h> found." >&4
13759         valstd="$define"
13760 else
13761         echo "<stdarg.h> NOT found." >&4
13762         valstd="$undef"
13763 fi
13764
13765 : see if varags is available
13766 echo " "
13767 if $test `./findhdr varargs.h`; then
13768         echo "<varargs.h> found." >&4
13769 else
13770         echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
13771 fi
13772
13773 : set up the varargs testing programs
13774 $cat > varargs.c <<EOP
13775 #ifdef I_STDARG
13776 #include <stdarg.h>
13777 #endif
13778 #ifdef I_VARARGS
13779 #include <varargs.h>
13780 #endif
13781
13782 #ifdef I_STDARG
13783 int f(char *p, ...)
13784 #else
13785 int f(va_alist)
13786 va_dcl
13787 #endif
13788 {
13789         va_list ap;
13790 #ifndef I_STDARG
13791         char *p;
13792 #endif
13793 #ifdef I_STDARG
13794         va_start(ap,p);
13795 #else
13796         va_start(ap);
13797         p = va_arg(ap, char *);
13798 #endif
13799         va_end(ap);
13800 }
13801 EOP
13802 $cat > varargs <<EOP
13803 $startsh
13804 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
13805         echo "true"
13806 else
13807         echo "false"
13808 fi
13809 $rm -f varargs$_o
13810 EOP
13811 chmod +x varargs
13812
13813 : now check which varargs header should be included
13814 echo " "
13815 i_varhdr=''
13816 case "$valstd" in
13817 "$define")
13818         if `./varargs I_STDARG`; then
13819                 val='stdarg.h'
13820         elif `./varargs I_VARARGS`; then
13821                 val='varargs.h'
13822         fi
13823         ;;
13824 *)
13825         if `./varargs I_VARARGS`; then
13826                 val='varargs.h'
13827         fi
13828         ;;
13829 esac
13830 case "$val" in
13831 '')
13832 echo "I could not find the definition for va_dcl... You have problems..." >&4
13833         val="$undef"; set i_stdarg; eval $setvar
13834         val="$undef"; set i_varargs; eval $setvar
13835         ;;
13836 *) 
13837         set i_varhdr
13838         eval $setvar
13839         case "$i_varhdr" in
13840         stdarg.h)
13841                 val="$define"; set i_stdarg; eval $setvar
13842                 val="$undef"; set i_varargs; eval $setvar
13843                 ;;
13844         varargs.h)
13845                 val="$undef"; set i_stdarg; eval $setvar
13846                 val="$define"; set i_varargs; eval $setvar
13847                 ;;
13848         esac
13849         echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
13850 esac
13851 $rm -f varargs*
13852
13853 : see if we need va_copy
13854 echo " "
13855 case "$i_stdarg" in
13856 "$define")
13857         $cat >try.c <<EOCP
13858 #include <stdarg.h>
13859 #include <stdio.h>
13860 #$i_stdlib I_STDLIB
13861 #ifdef I_STDLIB
13862 #include <stdlib.h>
13863 #endif
13864 #include <signal.h>
13865
13866 int
13867 ivfprintf(FILE *f, const char *fmt, va_list *valp)
13868 {
13869   return vfprintf(f, fmt, *valp);
13870 }
13871  
13872 int    
13873 myvfprintf(FILE *f, const  char *fmt, va_list val)
13874 {
13875   return ivfprintf(f, fmt, &val);
13876 }
13877       
13878 int
13879 myprintf(char *fmt, ...) 
13880 {
13881   va_list val;
13882   va_start(val, fmt);
13883   return myvfprintf(stdout, fmt, val); 
13884 }         
13885
13886 int
13887 main(int ac, char **av)
13888 {
13889   signal(SIGSEGV, exit);
13890
13891   myprintf("%s%cs all right, then\n", "that", '\'');                            
13892   exit(0);      
13893 }
13894 EOCP
13895         set try
13896         if eval $compile && ./try 2>&1 >/dev/null; then
13897                 case "`./try`" in
13898                 "that's all right, then")
13899                         okay=yes
13900                         ;;
13901                 esac
13902         fi
13903         case "$okay" in
13904         yes)    echo "It seems that you don't need va_copy()." >&4
13905                 need_va_copy="$undef"
13906                 ;;
13907         *)      echo "It seems that va_copy() or similar will be needed." >&4
13908                 need_va_copy="$define"
13909                 ;;
13910         esac
13911         $rm -f try.* core core.* *.core *.core.*
13912         ;;
13913 *)      echo "You don't have <stdarg.h>, not checking for va_copy()." >&4
13914         ;;
13915 esac
13916
13917 : define a fucntion to check prototypes
13918 $cat > protochk <<EOSH
13919 $startsh
13920 cc="$cc"
13921 optimize="$optimize"
13922 ccflags="$ccflags"
13923 prototype="$prototype"
13924 define="$define"
13925 rm=$rm
13926 EOSH
13927
13928 $cat >> protochk <<'EOSH'
13929
13930 $rm -f try.c
13931 foo="$1"
13932 shift
13933 while test $# -ge 2; do
13934         case "$1" in
13935                 $define) echo "#include <$2>" >> try.c ;;
13936                 literal) echo "$2" >> try.c ;;
13937         esac
13938     shift 2
13939 done
13940 test "$prototype" = "$define"  && echo '#define CAN_PROTOTYPE' >> try.c
13941 cat >> try.c <<'EOCP'
13942 #ifdef CAN_PROTOTYPE
13943 #define _(args) args
13944 #else
13945 #define _(args) ()
13946 #endif
13947 EOCP
13948 echo "$foo" >> try.c
13949 echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
13950 $cc $optimize $ccflags -c try.c > /dev/null 2>&1
13951 status=$?
13952 $rm -f try.[co]
13953 exit $status
13954 EOSH
13955 chmod +x protochk
13956 $eunicefix protochk
13957
13958 : see what type is used for size_t
13959 rp="What is the type used for the length parameter for string functions?"
13960 set size_t sizetype 'unsigned int' stdio.h sys/types.h
13961 eval $typedef_ask
13962
13963 : check for type of arguments to gethostbyaddr. 
13964 if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
13965         case "$d_gethbyaddr" in
13966         $define)
13967                 $cat <<EOM
13968
13969 Checking to see what type of arguments are accepted by gethostbyaddr().
13970 EOM
13971                 hdrs="$define sys/types.h
13972                         $d_socket sys/socket.h 
13973                         $i_niin netinet/in.h 
13974                         $i_netdb netdb.h
13975                         $i_unistd unistd.h"
13976                 : The first arg can 'char *' or 'void *'
13977                 : The second arg is some of integral type
13978                 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
13979                         for yyy in size_t long int; do
13980                                 case "$netdb_host_type" in
13981                                 '')     try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
13982                                         if ./protochk "$try" $hdrs; then
13983                                                 echo "Your system accepts $xxx for the first arg."
13984                                                 echo "...and $yyy for the second arg."
13985                                                 netdb_host_type="$xxx"
13986                                                 netdb_hlen_type="$yyy"
13987                                         fi
13988                                         ;;
13989                                 esac
13990                         done
13991                 done
13992                 : In case none of those worked, prompt the user.
13993                 case "$netdb_host_type" in
13994                 '')     rp='What is the type for the 1st argument to gethostbyaddr?'
13995                         dflt='char *'
13996                         . ./myread
13997                         netdb_host_type=$ans
13998                         rp='What is the type for the 2nd argument to gethostbyaddr?'
13999                         dflt="$sizetype"
14000                         . ./myread
14001                         netdb_hlen_type=$ans
14002                         ;;
14003                 esac
14004                 ;;
14005         *)      : no gethostbyaddr, so pick harmless defaults
14006                 netdb_host_type='char *'
14007                 netdb_hlen_type="$sizetype"
14008                 ;;
14009         esac
14010         # Remove the "const" if needed. -- but then we'll have a 
14011         # prototype clash!
14012         # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
14013 fi
14014
14015 : check for type of argument to gethostbyname. 
14016 if test "X$netdb_name_type" = X ; then
14017         case "$d_gethbyname" in
14018         $define)
14019                 $cat <<EOM
14020
14021 Checking to see what type of argument is accepted by gethostbyname().
14022 EOM
14023                 hdrs="$define sys/types.h
14024                         $d_socket sys/socket.h 
14025                         $i_niin netinet/in.h 
14026                         $i_netdb netdb.h
14027                         $i_unistd unistd.h"
14028                 for xxx in "const char *" "char *"; do
14029                         case "$netdb_name_type" in
14030                         '')     try="extern struct hostent *gethostbyname($xxx);"
14031                                 if ./protochk "$try" $hdrs; then
14032                                         echo "Your system accepts $xxx."
14033                                         netdb_name_type="$xxx"
14034                                 fi
14035                                 ;;
14036                         esac
14037                 done
14038                 : In case none of those worked, prompt the user.
14039                 case "$netdb_name_type" in
14040                 '')     rp='What is the type for the 1st argument to gethostbyname?'
14041                         dflt='char *'
14042                         . ./myread
14043                         netdb_name_type=$ans
14044                         ;;
14045                 esac
14046                 ;;
14047         *)      : no gethostbyname, so pick harmless default
14048                 netdb_name_type='char *'
14049                 ;;
14050         esac
14051 fi
14052
14053 : check for type of 1st argument to getnetbyaddr. 
14054 if test "X$netdb_net_type" = X ; then
14055         case "$d_getnbyaddr" in
14056         $define)
14057                 $cat <<EOM
14058
14059 Checking to see what type of 1st argument is accepted by getnetbyaddr().
14060 EOM
14061                 hdrs="$define sys/types.h
14062                         $d_socket sys/socket.h 
14063                         $i_niin netinet/in.h 
14064                         $i_netdb netdb.h
14065                         $i_unistd unistd.h"
14066                 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
14067                         case "$netdb_net_type" in
14068                         '')     try="extern struct netent *getnetbyaddr($xxx, int);"
14069                                 if ./protochk "$try" $hdrs; then
14070                                         echo "Your system accepts $xxx."
14071                                         netdb_net_type="$xxx"
14072                                 fi
14073                                 ;;
14074                         esac
14075                 done
14076                 : In case none of those worked, prompt the user.
14077                 case "$netdb_net_type" in
14078                 '')     rp='What is the type for the 1st argument to getnetbyaddr?'
14079                         dflt='long'
14080                         . ./myread
14081                         netdb_net_type=$ans
14082                         ;;
14083                 esac
14084                 ;;
14085         *)      : no getnetbyaddr, so pick harmless default
14086                 netdb_net_type='long'
14087                 ;;
14088         esac
14089 fi
14090 : locate the preferred pager for this system
14091 case "$pager" in
14092 '')
14093         dflt=''
14094         case "$pg" in
14095         /*) dflt=$pg;;
14096         [a-zA-Z]:/*) dflt=$pg;;
14097         esac
14098         case "$more" in
14099         /*) dflt=$more;;
14100         [a-zA-Z]:/*) dflt=$more;;
14101         esac
14102         case "$less" in
14103         /*) dflt=$less;;
14104         [a-zA-Z]:/*) dflt=$less;;
14105         esac
14106         case "$dflt" in
14107         '') dflt=/usr/ucb/more;;
14108         esac
14109         ;;
14110 *) dflt="$pager";;
14111 esac
14112 echo " "
14113 fn=f/
14114 rp='What pager is used on your system?'
14115 . ./getfile
14116 pager="$ans"
14117
14118 : see what type pids are declared as in the kernel
14119 rp="What is the type of process ids on this system?"
14120 set pid_t pidtype int stdio.h sys/types.h
14121 eval $typedef_ask
14122
14123 : Find earliest binary compatible site_perl subdirectory perl can use.
14124 case "$bincompat5005" in
14125 "$define") xs_apiversion='5.005' ;;
14126 *) xs_apiversion=$version ;;   # The current site_perl version.
14127 esac
14128 : Find earliest pure perl site_perl subdirectory perl can use.
14129 : The versioned directories started at 5.005.
14130 pm_apiversion='5.005'
14131
14132 : check for length of pointer
14133 echo " "
14134 case "$ptrsize" in
14135 '')
14136         echo "Checking to see how big your pointers are..." >&4
14137         if test "$voidflags" -gt 7; then
14138                 echo '#define VOID_PTR char *' > try.c
14139         else
14140                 echo '#define VOID_PTR void *' > try.c
14141         fi
14142         $cat >>try.c <<'EOCP'
14143 #include <stdio.h>
14144 int main()
14145 {
14146     printf("%d\n", (int)sizeof(VOID_PTR));
14147     exit(0);
14148 }
14149 EOCP
14150         set try
14151         if eval $compile_ok; then
14152                 ptrsize=`./try`
14153                 echo "Your pointers are $ptrsize bytes long."
14154         else
14155                 dflt='4'
14156                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
14157                 rp="What is the size of a pointer (in bytes)?"
14158                 . ./myread
14159                 ptrsize="$ans"
14160         fi
14161         ;;
14162 esac
14163 $rm -f try.c try
14164
14165 : see if ar generates random libraries by itself
14166 echo " "
14167 echo "Checking how to generate random libraries on your machine..." >&4
14168 echo 'int bar1() { return bar2(); }' > bar1.c
14169 echo 'int bar2() { return 2; }' > bar2.c
14170 $cat > foo.c <<'EOP'
14171 int main() { printf("%d\n", bar1()); exit(0); }
14172 EOP
14173 $cc $ccflags -c bar1.c >/dev/null 2>&1
14174 $cc $ccflags -c bar2.c >/dev/null 2>&1
14175 $cc $ccflags -c foo.c >/dev/null 2>&1
14176 $ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
14177 if $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
14178         ./foobar >/dev/null 2>&1; then
14179         echo "$ar appears to generate random libraries itself."
14180         orderlib=false
14181         ranlib=":"
14182 elif $ar ts bar$_a >/dev/null 2>&1 &&
14183         $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
14184         ./foobar >/dev/null 2>&1; then
14185                 echo "a table of contents needs to be added with '$ar ts'."
14186                 orderlib=false
14187                 ranlib="$ar ts"
14188 else
14189         case "$ranlib" in
14190         :) ranlib='';;
14191         '')
14192                 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
14193                 $test -f $ranlib || ranlib=''
14194                 ;;
14195         esac
14196         if $test -n "$ranlib"; then
14197                 echo "your system has '$ranlib'; we'll use that."
14198                 orderlib=false
14199         else
14200                 echo "your system doesn't seem to support random libraries"
14201                 echo "so we'll use lorder and tsort to order the libraries."
14202                 orderlib=true
14203                 ranlib=":"
14204         fi
14205 fi
14206 $rm -f foo* bar* 
14207
14208 : check for type of arguments to select. 
14209 case "$selecttype" in
14210 '') case "$d_select" in
14211         $define)
14212                 echo " "
14213                 $cat <<EOM
14214 Checking to see what type of arguments are accepted by select().
14215 EOM
14216                 hdrs="$define sys/types.h
14217                         $i_systime sys/time.h 
14218                         $i_sysselct sys/select.h
14219                         $d_socket sys/socket.h"
14220                 : The first arg can be int, unsigned, or size_t
14221                 : The last arg may or may not be 'const'
14222                 val=''
14223                 : void pointer has been seen but using that
14224                 : breaks the selectminbits test
14225                 for xxx in 'fd_set *' 'int *'; do
14226                         for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
14227                                 for tmo in 'struct timeval *' 'const struct timeval *'; do
14228                                         case "$val" in
14229                                         '')     try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
14230                                                 if ./protochk "$try" $hdrs; then
14231                                                         echo "Your system accepts $xxx."
14232                                                         val="$xxx"
14233                                                 fi
14234                                                 ;;
14235                                         esac
14236                                 done
14237                         done
14238                 done
14239                 case "$val" in
14240                 '')     rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
14241                         case "$d_fd_set" in
14242                                 $define) dflt="fd_set *" ;;
14243                                 *)              dflt="int *" ;;
14244                         esac
14245                         . ./myread
14246                         val=$ans
14247                         ;;
14248                 esac
14249                 selecttype="$val"
14250                 ;;
14251         *)      : no select, so pick a harmless default
14252                 selecttype='int *'
14253                 ;;
14254         esac
14255         ;;
14256 esac
14257
14258 : check for the select 'width'
14259 case "$selectminbits" in
14260 '') case "$d_select" in
14261         $define)
14262                 $cat <<EOM
14263
14264 Checking to see on how many bits at a time your select() operates...
14265 EOM
14266                 $cat >try.c <<EOCP
14267 #include <sys/types.h>
14268 #$i_time I_TIME
14269 #$i_systime I_SYS_TIME
14270 #$i_systimek I_SYS_TIME_KERNEL
14271 #ifdef I_TIME
14272 #   include <time.h>
14273 #endif
14274 #ifdef I_SYS_TIME
14275 #   ifdef I_SYS_TIME_KERNEL
14276 #       define KERNEL
14277 #   endif
14278 #   include <sys/time.h>
14279 #   ifdef I_SYS_TIME_KERNEL
14280 #       undef KERNEL
14281 #   endif
14282 #endif
14283 #$i_sysselct I_SYS_SELECT
14284 #ifdef I_SYS_SELECT
14285 #include <sys/select.h>
14286 #endif
14287 #$d_socket HAS_SOCKET
14288 #ifdef HAS_SOCKET
14289 #   include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
14290 #endif
14291 #include <stdio.h>
14292 $selecttype b;
14293 #define S sizeof(*(b))
14294 #define MINBITS 64
14295 #define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
14296 #define NBITS  (NBYTES * 8)
14297 int main() {
14298     char s[NBYTES];
14299     struct timeval t;
14300     int i;
14301     FILE* fp;
14302     int fd;
14303
14304     fclose(stdin);
14305     fp = fopen("try.c", "r");
14306     if (fp == 0)
14307       exit(1);
14308     fd = fileno(fp);
14309     if (fd < 0)
14310       exit(2);
14311     b = ($selecttype)s;
14312     for (i = 0; i < NBITS; i++)
14313         FD_SET(i, b);
14314     t.tv_sec  = 0;
14315     t.tv_usec = 0;
14316     select(fd + 1, b, 0, 0, &t);
14317     for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
14318     printf("%d\n", i + 1);
14319     return 0;
14320 }
14321 EOCP
14322                 set try
14323                 if eval $compile_ok; then
14324                         selectminbits=`./try`
14325                         case "$selectminbits" in
14326                         '')     cat >&4 <<EOM
14327 Cannot figure out on how many bits at a time your select() operates.
14328 I'll play safe and guess it is 32 bits.
14329 EOM
14330                                 selectminbits=32
14331                                 bits="32 bits"
14332                                 ;;
14333                         1)      bits="1 bit" ;;
14334                         *)      bits="$selectminbits bits" ;;
14335                         esac
14336                         echo "Your select() operates on $bits at a time." >&4
14337                 else
14338                         rp='What is the minimum number of bits your select() operates on?'
14339                         case "$byteorder" in
14340                         1234|12345678)  dflt=32 ;;
14341                         *)              dflt=1  ;;
14342                         esac
14343                         . ./myread
14344                         val=$ans
14345                         selectminbits="$val"
14346                 fi
14347                 $rm -f try.* try
14348                 ;;
14349         *)      : no select, so pick a harmless default
14350                 selectminbits='32'
14351                 ;;
14352         esac
14353         ;;
14354 esac
14355
14356 : Trace out the files included by signal.h, then look for SIGxxx names.
14357 : Remove SIGARRAYSIZE used by HPUX.
14358 : Remove SIGSTKSIZE used by Linux.
14359 : Remove SIGSTKSZ used by Posix.
14360 : Remove SIGTYP void lines used by OS2.
14361 : Some cpps, like os390, dont give the file name anywhere
14362 if [ "X$fieldn" = X ]; then
14363         : Just make some guesses.  We check them later.
14364         xxx='/usr/include/signal.h /usr/include/sys/signal.h'
14365 else
14366         xxx=`echo '#include <signal.h>' |
14367         $cppstdin $cppminus $cppflags 2>/dev/null |
14368         $grep '^[       ]*#.*include' | 
14369         $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sort | $uniq`
14370 fi
14371 : Check this list of files to be sure we have parsed the cpp output ok.
14372 : This will also avoid potentially non-existent files, such 
14373 : as ../foo/bar.h
14374 xxxfiles=''
14375 for xx in $xxx /dev/null ; do
14376         $test -f "$xx" && xxxfiles="$xxxfiles $xx"
14377 done
14378 : If we have found no files, at least try signal.h
14379 case "$xxxfiles" in
14380 '')     xxxfiles=`./findhdr signal.h` ;;
14381 esac
14382 xxx=`awk '
14383 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
14384         print substr($2, 4, 20)
14385 }
14386 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
14387         print substr($3, 4, 20)
14388 }' $xxxfiles`
14389 : Append some common names just in case the awk scan failed.
14390 xxx="$xxx ABRT ALRM BUS CANCEL CHLD CLD CONT DIL EMT FPE"
14391 xxx="$xxx FREEZE HUP ILL INT IO IOT KILL LOST LWP PHONE"
14392 xxx="$xxx PIPE POLL PROF PWR QUIT RTMAX RTMIN SEGV STKFLT STOP"
14393 xxx="$xxx SYS TERM THAW TRAP TSTP TTIN TTOU URG USR1 USR2"
14394 xxx="$xxx USR3 USR4 VTALRM WAITING WINCH WIND WINDOW XCPU XFSZ"
14395
14396 : generate a few handy files for later
14397 $cat > signal.c <<'EOCP'
14398 #include <sys/types.h>
14399 #include <signal.h>
14400 #include <stdio.h>
14401 int main() {
14402
14403 /* Strange style to avoid deeply-nested #if/#else/#endif */
14404 #ifndef NSIG
14405 #  ifdef _NSIG
14406 #    define NSIG (_NSIG)
14407 #  endif
14408 #endif
14409
14410 #ifndef NSIG
14411 #  ifdef SIGMAX
14412 #    define NSIG (SIGMAX+1)
14413 #  endif
14414 #endif
14415
14416 #ifndef NSIG
14417 #  ifdef SIG_MAX
14418 #    define NSIG (SIG_MAX+1)
14419 #  endif
14420 #endif
14421
14422 #ifndef NSIG
14423 #  ifdef MAXSIG
14424 #    define NSIG (MAXSIG+1)
14425 #  endif
14426 #endif
14427
14428 #ifndef NSIG
14429 #  ifdef MAX_SIG
14430 #    define NSIG (MAX_SIG+1)
14431 #  endif
14432 #endif
14433
14434 #ifndef NSIG
14435 #  ifdef SIGARRAYSIZE
14436 #    define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
14437 #  endif
14438 #endif
14439
14440 #ifndef NSIG
14441 #  ifdef _sys_nsig
14442 #    define NSIG (_sys_nsig) /* Solaris 2.5 */
14443 #  endif
14444 #endif
14445
14446 /* Default to some arbitrary number that's big enough to get most
14447    of the common signals.
14448 */
14449 #ifndef NSIG
14450 #    define NSIG 50
14451 #endif
14452
14453 printf("NSIG %d\n", NSIG);
14454
14455 #ifndef JUST_NSIG
14456
14457 EOCP
14458
14459 echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
14460 {
14461         printf "#ifdef SIG"; printf $1; printf "\n"
14462         printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
14463         printf $1; printf ");\n"
14464         printf "#endif\n"
14465 }
14466 END {
14467         printf "#endif /* JUST_NSIG */\n";
14468         printf "exit(0);\n}\n";
14469 }
14470 ' >>signal.c
14471 $cat >signal.awk <<'EOP'
14472 BEGIN { ndups = 0 }
14473 $1 ~ /^NSIG$/ { nsig = $2 }
14474 ($1 !~ /^NSIG$/) && (NF == 2) {
14475     if ($2 > maxsig) { maxsig = $2 }
14476     if (sig_name[$2]) {
14477         dup_name[ndups] = $1
14478         dup_num[ndups] = $2
14479         ndups++ 
14480     }
14481     else {
14482         sig_name[$2] = $1
14483         sig_num[$2] = $2
14484     }
14485 }
14486 END { 
14487     if (nsig == 0) {
14488         nsig = maxsig + 1
14489     }
14490     printf("NSIG %d\n", nsig);
14491     for (n = 1; n < nsig; n++) {
14492         if (sig_name[n]) {
14493             printf("%s %d\n", sig_name[n], sig_num[n])
14494         }
14495         else {
14496             printf("NUM%d %d\n", n, n) 
14497         }
14498     }
14499     for (n = 0; n < ndups; n++) {
14500         printf("%s %d\n", dup_name[n], dup_num[n])
14501     }
14502 }
14503 EOP
14504 $cat >signal_cmd <<EOS
14505 $startsh
14506 if $test -s signal.lst; then
14507     echo "Using your existing signal.lst file"
14508         exit 0
14509 fi
14510 xxx="$xxx"
14511 EOS
14512 $cat >>signal_cmd <<'EOS'
14513
14514 set signal
14515 if eval $compile_ok; then
14516         ./signal$_exe | $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
14517 else
14518         echo "(I can't seem be able to compile the whole test program)" >&4
14519         echo "(I'll try it in little pieces.)" >&4
14520         set signal -DJUST_NSIG
14521         if eval $compile_ok; then
14522                 ./signal$_exe > signal.nsg
14523                 $cat signal.nsg
14524         else
14525                 echo "I can't seem to figure out how many signals you have." >&4
14526                 echo "Guessing 50." >&4
14527                 echo 'NSIG 50' > signal.nsg
14528         fi
14529         : Now look at all the signal names, one at a time.
14530         for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
14531                 $cat > signal.c <<EOCP
14532 #include <sys/types.h>
14533 #include <signal.h>
14534 #include <stdio.h>
14535 int main() {
14536 printf("$xx %d\n", SIG${xx});
14537 return 0;
14538 }
14539 EOCP
14540                 set signal
14541                 if eval $compile; then
14542                         echo "SIG${xx} found."
14543                         ./signal$_exe  >> signal.ls1
14544                 else
14545                         echo "SIG${xx} NOT found."
14546                 fi
14547         done
14548         if $test -s signal.ls1; then
14549                 $cat signal.nsg signal.ls1 |
14550                         $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
14551         fi
14552
14553 fi
14554 if $test -s signal.lst; then
14555         :
14556 else
14557         echo "(AAK! I can't compile the test programs -- Guessing)" >&4
14558         echo 'kill -l' >signal
14559         set X `csh -f <signal`
14560         $rm -f signal
14561         shift
14562         case $# in
14563         0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
14564         esac
14565         echo $@ | $tr ' ' $trnl | \
14566             $awk '{ printf "%s %d\n", $1, ++s; }
14567                   END { printf "NSIG %d\n", ++s }' >signal.lst
14568 fi
14569 $rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
14570 EOS
14571 chmod a+x signal_cmd
14572 $eunicefix signal_cmd
14573
14574 : generate list of signal names
14575 echo " "
14576 case "$sig_name_init" in
14577 '') doinit=yes ;;
14578 *)  case "$sig_num_init" in
14579     ''|*,*) doinit=yes ;;
14580     esac ;;
14581 esac
14582 case "$doinit" in
14583 yes)
14584         echo "Generating a list of signal names and numbers..." >&4
14585         . ./signal_cmd
14586         sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
14587         sig_name=`$awk 'BEGIN { printf "ZERO " }
14588                         !/^NSIG/ { printf "%s ", $1 }' signal.lst`
14589         sig_num=`$awk  'BEGIN { printf "0 " }
14590                         !/^NSIG/ { printf "%d ", $2 }' signal.lst`
14591         sig_name_init=`$awk 'BEGIN      { printf "\"ZERO\", " }
14592                              !/^NSIG/   { printf "\"%s\", ", $1 }
14593                              END        { printf "0\n" }' signal.lst`
14594         sig_num_init=`$awk  'BEGIN      { printf "0, " }
14595                              !/^NSIG/   { printf "%d, ", $2}
14596                              END        { printf "0\n"}' signal.lst`
14597         ;;
14598 esac
14599 echo "The following $sig_count signals are available:"
14600 echo " "
14601 echo $sig_name | $awk \
14602 'BEGIN { linelen = 0 }
14603 {
14604         for (i = 1; i <= NF; i++) {
14605                 name = "SIG" $i " "
14606                 linelen = linelen + length(name)
14607                 if (linelen > 70) {
14608                         printf "\n"
14609                         linelen = length(name)
14610                 }
14611                 printf "%s", name
14612         }
14613         printf "\n"
14614 }'
14615 sig_size=`echo $sig_name | awk '{print NF}'`
14616 $rm -f signal signal.c signal.awk signal.lst signal_cmd 
14617
14618 echo " "
14619 case "$sizetype" in
14620 *_t) zzz="$sizetype"    ;;
14621 *)   zzz="filesize"     ;;
14622 esac
14623 echo "Checking the size of $zzz..." >&4 
14624 cat > try.c <<EOCP
14625 #include <sys/types.h>
14626 #include <stdio.h>
14627 int main() {
14628     printf("%d\n", (int)sizeof($sizetype));
14629     exit(0);
14630 }
14631 EOCP
14632 set try
14633 if eval $compile_ok; then
14634         yyy=`./try`
14635         case "$yyy" in
14636         '')     sizesize=4
14637                 echo "(I can't execute the test program--guessing $sizesize.)" >&4
14638                 ;;
14639         *)      sizesize=$yyy
14640                 echo "Your $zzz size is $sizesize bytes."
14641                 ;;
14642         esac
14643 else
14644         sizesize=4
14645         echo "(I can't compile the test program--guessing $sizesize.)" >&4
14646 fi
14647
14648
14649 : check for socklen_t
14650 echo " "
14651 echo "Checking to see if you have socklen_t..." >&4
14652 $cat >try.c <<EOCP
14653 #include <sys/types.h>
14654 #$d_socket HAS_SOCKET
14655 #ifdef HAS_SOCKET
14656 #include <sys/socket.h>
14657 #endif
14658 int main() { socklen_t x = 16; }
14659 EOCP
14660 set try
14661 if eval $compile; then
14662         val="$define"
14663         echo "You have socklen_t."
14664 else
14665         val="$undef"
14666         echo "You do not have socklen_t."
14667         case "$sizetype" in
14668         size_t) echo "(You do have size_t, that might work. Some people are happy with just an int.)" ;;
14669         esac
14670 fi
14671 $rm -f try try.*
14672 set d_socklen_t
14673 eval $setvar
14674
14675 : see if this is a socks.h system
14676 set socks.h i_socks
14677 eval $inhdr
14678
14679 : check for type of the size argument to socket calls
14680 case "$d_socket" in
14681 "$define")
14682         $cat <<EOM
14683
14684 Checking to see what type is the last argument of accept().
14685 EOM
14686         yyy=''
14687         case "$d_socklen_t" in
14688         "$define") yyy="$yyy socklen_t"
14689         esac
14690         yyy="$yyy $sizetype int long unsigned"
14691         for xxx in $yyy; do
14692                 case "$socksizetype" in
14693                 '')     try="extern int accept(int, struct sockaddr *, $xxx *);"
14694                         case "$usesocks" in
14695                         "$define")
14696                                 if ./protochk "$try" $i_systypes sys/types.h $d_socket sys/socket.h literal '#define INCLUDE_PROTOTYPES' $i_socks socks.h.; then
14697                                         echo "Your system accepts '$xxx *' for the last argument of accept()."
14698                                         socksizetype="$xxx"
14699                                 fi
14700                                 ;;
14701                         *)      if ./protochk "$try"  $i_systypes sys/types.h $d_socket sys/socket.h; then
14702                                         echo "Your system accepts '$xxx *' for the last argument of accept()."
14703                                         socksizetype="$xxx"
14704                                 fi
14705                                 ;;
14706                         esac
14707                         ;;
14708                 esac
14709         done
14710 : In case none of those worked, prompt the user.
14711         case "$socksizetype" in
14712         '')     rp='What is the type for socket address structure sizes?'
14713                 dflt='int'
14714                 . ./myread
14715                 socksizetype=$ans
14716                 ;;
14717         esac
14718         ;;
14719 *)      : no sockets, so pick relatively harmless default
14720         socksizetype='int'
14721         ;;
14722 esac
14723
14724 : see what type is used for signed size_t
14725 set ssize_t ssizetype int stdio.h sys/types.h
14726 eval $typedef
14727 dflt="$ssizetype"
14728 $cat > ssize.c <<EOM
14729 #include <stdio.h>
14730 #include <sys/types.h>
14731 #define Size_t $sizetype
14732 #define SSize_t $dflt
14733 int main()
14734 {
14735         if (sizeof(Size_t) == sizeof(SSize_t))
14736                 printf("$dflt\n");
14737         else if (sizeof(Size_t) == sizeof(int))
14738                 printf("int\n");
14739         else 
14740                 printf("long\n");
14741         exit(0);
14742 }
14743 EOM
14744 echo " "
14745 set ssize
14746 if eval $compile_ok && ./ssize > /dev/null; then
14747         ssizetype=`./ssize`
14748         echo "I'll be using $ssizetype for functions returning a byte count." >&4
14749 else
14750         $cat >&4 <<EOM
14751 Help! I can't compile and run the ssize_t test program: please enlighten me!
14752 (This is probably a misconfiguration in your system or libraries, and
14753 you really ought to fix it.  Still, I'll try anyway.)
14754
14755 I need a type that is the same size as $sizetype, but is guaranteed to
14756 be signed.  Common values are ssize_t, int and long.
14757
14758 EOM
14759         rp="What signed type is the same size as $sizetype?"
14760         . ./myread
14761         ssizetype="$ans"
14762 fi
14763 $rm -f ssize ssize.*
14764
14765 : see what type of char stdio uses.
14766 echo " "
14767 echo '#include <stdio.h>' | $cppstdin $cppminus > stdioh
14768 if $contains 'unsigned.*char.*_ptr;' stdioh >/dev/null 2>&1 ; then
14769         echo "Your stdio uses unsigned chars." >&4
14770         stdchar="unsigned char"
14771 else
14772         echo "Your stdio uses signed chars." >&4
14773         stdchar="char"
14774 fi
14775 $rm -f stdioh
14776
14777
14778
14779 : see if time exists
14780 echo " "
14781 if test "X$d_time" = X -o X"$timetype" = X; then
14782     if set time val -f d_time; eval $csym; $val; then
14783                 echo 'time() found.' >&4
14784                 val="$define"
14785                 rp="What is the type returned by time() on this system?"
14786                 set time_t timetype long stdio.h sys/types.h
14787                 eval $typedef_ask
14788     else
14789                 echo 'time() not found, hope that will do.' >&4
14790                 val="$undef"
14791                 timetype='int';
14792     fi
14793     set d_time
14794     eval $setvar
14795 fi
14796
14797 : see what type uids are declared as in the kernel
14798 echo " "
14799 echo "Looking for the type for user ids returned by getuid()."
14800 set uid_t uidtype xxx stdio.h sys/types.h
14801 eval $typedef
14802 case "$uidtype" in
14803 xxx)
14804         xxx=`./findhdr sys/user.h`
14805         set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
14806         case $1 in
14807         unsigned) dflt="$1 $2" ;;
14808         *) dflt="$1" ;;
14809         esac
14810         ;;
14811 *) dflt="$uidtype";;
14812 esac
14813 case "$uidtype" in
14814 uid_t)  echo "uid_t found." ;;
14815 *)      rp="What is the type for user ids returned by getuid()?"
14816         . ./myread
14817         uidtype="$ans"
14818         ;;
14819 esac
14820
14821 echo " "
14822 case "$uidtype" in
14823 *_t) zzz="$uidtype"     ;;
14824 *)   zzz="uid"          ;;
14825 esac
14826 echo "Checking the size of $zzz..." >&4 
14827 cat > try.c <<EOCP
14828 #include <sys/types.h>
14829 #include <stdio.h>
14830 int main() {
14831     printf("%d\n", (int)sizeof($uidtype));
14832     exit(0);
14833 }
14834 EOCP
14835 set try
14836 if eval $compile_ok; then
14837         yyy=`./try`
14838         case "$yyy" in
14839         '')     uidsize=4
14840                 echo "(I can't execute the test program--guessing $uidsize.)" >&4
14841                 ;;
14842         *)      uidsize=$yyy
14843                 echo "Your $zzz is $uidsize bytes long."
14844                 ;;
14845         esac
14846 else
14847         uidsize=4
14848         echo "(I can't compile the test program--guessing $uidsize.)" >&4
14849 fi
14850
14851 echo " "
14852 case "$uidtype" in
14853 *_t) zzz="$uidtype"     ;;
14854 *)   zzz="uid"          ;;
14855 esac
14856 echo "Checking the sign of $zzz..." >&4
14857 cat > try.c <<EOCP
14858 #include <sys/types.h>
14859 #include <stdio.h>
14860 int main() {
14861         $uidtype foo = -1;
14862         if (foo < 0)
14863                 printf("-1\n");
14864         else
14865                 printf("1\n");
14866 }
14867 EOCP
14868 set try
14869 if eval $compile; then
14870         yyy=`./try`
14871         case "$yyy" in
14872         '')     uidsign=1
14873                 echo "(I can't execute the test program--guessing unsigned.)" >&4
14874                 ;;
14875         *)      uidsign=$yyy
14876                 case "$uidsign" in
14877                  1) echo "Your $zzz is unsigned." ;;
14878                 -1) echo "Your $zzz is signed."   ;;
14879                 esac
14880                 ;;
14881         esac
14882 else
14883         uidsign=1
14884         echo "(I can't compile the test program--guessing unsigned.)" >&4
14885 fi
14886
14887
14888
14889 echo " "
14890 $echo "Checking the format string to be used for uids..." >&4
14891
14892 case "$uidsign" in
14893 -1)     if $test X"$uidsize" = X"$ivsize"; then
14894                 uidformat="$ivdformat"
14895         else
14896                 if $test X"$uidsize" = X"$longsize"; then
14897                         uidformat='"ld"'
14898                 else
14899                         if $test X"$uidsize" = X"$intsize"; then
14900                                 uidformat='"d"'
14901                         else
14902                                 if $test X"$uidsize" = X"$shortsize"; then
14903                                         uidformat='"hd"'
14904                                 fi
14905                         fi
14906                 fi
14907         fi
14908         ;;
14909 *)      if $test X"$uidsize" = X"$uvsize"; then
14910                 uidformat="$uvuformat"
14911         else
14912                 if $test X"$uidsize" = X"$longsize"; then
14913                         uidformat='"lu"'
14914                 else
14915                         if $test X"$uidsize" = X"$intsize"; then
14916                                 uidformat='"u"'
14917                         else
14918                                 if $test X"$uidsize" = X"$shortsize"; then
14919                                         uidformat='"hu"'
14920                                 fi
14921                         fi
14922                 fi
14923         fi
14924         ;;
14925 esac
14926
14927 : determine compiler compiler
14928 case "$yacc" in
14929 '')
14930         dflt=yacc;;
14931 *)
14932         dflt="$yacc";;
14933 esac
14934 echo " "
14935 comp='yacc'
14936 if $test -f "$byacc"; then
14937         dflt="$byacc"
14938         comp="byacc or $comp"
14939 fi
14940 if $test -f "$bison"; then
14941         comp="$comp or bison -y"
14942 fi
14943 rp="Which compiler compiler ($comp) shall I use?"
14944 . ./myread
14945 yacc="$ans"
14946 case "$yacc" in
14947 *bis*)
14948         case "$yacc" in
14949         *-y*) ;;
14950         *)
14951                 yacc="$yacc -y"
14952                 echo "(Adding -y option to bison to get yacc-compatible behaviour.)"
14953                 ;;
14954         esac
14955         ;;
14956 esac
14957
14958 : see if dbm.h is available
14959 : see if dbmclose exists
14960 set dbmclose d_dbmclose
14961 eval $inlibc
14962
14963 case "$d_dbmclose" in
14964 $define)
14965         set dbm.h i_dbm
14966         eval $inhdr
14967         case "$i_dbm" in
14968         $define)
14969                 val="$undef"
14970                 set i_rpcsvcdbm
14971                 eval $setvar
14972                 ;;
14973         *)      set rpcsvc/dbm.h i_rpcsvcdbm
14974                 eval $inhdr
14975                 ;;
14976         esac
14977         ;;
14978 *)      echo "We won't be including <dbm.h>"
14979         val="$undef"
14980         set i_dbm
14981         eval $setvar
14982         val="$undef"
14983         set i_rpcsvcdbm
14984         eval $setvar
14985         ;;
14986 esac
14987
14988 : see if this is a sys/file.h system
14989 val=''
14990 set sys/file.h val
14991 eval $inhdr
14992
14993 : do we need to include sys/file.h ?
14994 case "$val" in
14995 "$define")
14996         echo " "
14997         if $h_sysfile; then
14998                 val="$define"
14999                 echo "We'll be including <sys/file.h>." >&4
15000         else
15001                 val="$undef"
15002                 echo "We won't be including <sys/file.h>." >&4
15003         fi
15004         ;;
15005 *)
15006         h_sysfile=false
15007         ;;
15008 esac
15009 set i_sysfile
15010 eval $setvar
15011
15012 : see if fcntl.h is there
15013 val=''
15014 set fcntl.h val
15015 eval $inhdr
15016
15017 : see if we can include fcntl.h
15018 case "$val" in
15019 "$define")
15020         echo " "
15021         if $h_fcntl; then
15022                 val="$define"
15023                 echo "We'll be including <fcntl.h>." >&4
15024         else
15025                 val="$undef"
15026                 if $h_sysfile; then
15027         echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
15028                 else
15029                         echo "We won't be including <fcntl.h>." >&4
15030                 fi
15031         fi
15032         ;;
15033 *)
15034         h_fcntl=false
15035         val="$undef"
15036         ;;
15037 esac
15038 set i_fcntl
15039 eval $setvar
15040
15041 : see if this is a iconv.h system
15042 set iconv.h i_iconv
15043 eval $inhdr
15044
15045 : see if this is a ieeefp.h system
15046 set ieeefp.h i_ieeefp
15047 eval $inhdr
15048
15049 : see if this is a libutil.h system
15050 set libutil.h i_libutil
15051 eval $inhdr
15052
15053 : see if locale.h is available
15054 set locale.h i_locale
15055 eval $inhdr
15056
15057 : see if mach cthreads are available
15058 if test "X$usethreads" = "X$define"; then
15059         set mach/cthreads.h i_machcthr
15060         eval $inhdr
15061 else
15062         i_machcthr="$undef"
15063 fi
15064
15065
15066
15067 : see if this is a math.h system
15068 set math.h i_math
15069 eval $inhdr
15070
15071 : see if this is a mntent.h system
15072 set mntent.h i_mntent
15073 eval $inhdr
15074
15075 : see if ndbm.h is available
15076 set ndbm.h t_ndbm
15077 eval $inhdr
15078 case "$t_ndbm" in
15079 $define)
15080         : see if dbm_open exists
15081         set dbm_open d_dbm_open
15082         eval $inlibc
15083         case "$d_dbm_open" in
15084         $undef)
15085                 t_ndbm="$undef"
15086                 echo "We won't be including <ndbm.h>"
15087                 ;;
15088         esac
15089         ;;
15090 esac
15091 val="$t_ndbm"
15092 set i_ndbm
15093 eval $setvar
15094
15095 : see if net/errno.h is available
15096 val=''
15097 set net/errno.h val
15098 eval $inhdr
15099
15100 : Unfortunately, it causes problems on some systems.  Arrgh.
15101 case "$val" in
15102 $define)
15103         cat > try.c <<'EOM'
15104 #include <stdio.h>
15105 #include <errno.h>
15106 #include <net/errno.h>
15107 int func()
15108 {
15109         return ENOTSOCK;
15110 }
15111 EOM
15112         if $cc $ccflags -c try.c >/dev/null 2>&1; then
15113                 echo "We'll be including <net/errno.h>." >&4
15114         else
15115                 echo "We won't be including <net/errno.h>." >&4
15116                 val="$undef"
15117         fi
15118         $rm -f try.* try
15119         ;;
15120 esac
15121 set i_neterrno
15122 eval $setvar
15123
15124 : see if netinet/tcp.h is available
15125 set netinet/tcp.h i_netinettcp
15126 eval $inhdr
15127
15128 : see if this is a poll.h system
15129 set poll.h i_poll
15130 eval $inhdr
15131
15132 : see if this is a prot.h system
15133 set prot.h i_prot
15134 eval $inhdr
15135
15136 echo " "
15137 $echo "Guessing which symbols your C compiler and preprocessor define..." >&4 
15138 $cat <<'EOSH' > Cppsym.know
15139 a29k ABI64 aegis AES_SOURCE AIX AIX32 AIX370
15140 AIX41 AIX42 AIX43 AIX_SOURCE aixpc ALL_SOURCE
15141 alliant alpha am29000 AM29000 amiga AMIGAOS AMIX
15142 ansi ANSI_C_SOURCE apollo ardent atarist att386 att3b BeOS
15143 BIG_ENDIAN BIT_MSF bsd BSD bsd43 bsd4_2 bsd4_3 BSD4_3 bsd4_4
15144 BSD_4_3 BSD_4_4 BSD_NET2 BSD_TIME BSD_TYPES BSDCOMPAT bsdi
15145 bull c cadmus clipper CMU COFF COMPILER_VERSION
15146 concurrent convex cpu cray CRAY CRAYMPP ctix CX_UX
15147 CYGWIN DGUX DGUX_SOURCE DJGPP dmert DOLPHIN DPX2 DSO
15148 Dynix DynixPTX ELF encore EPI EXTENSIONS FILE_OFFSET_BITS
15149 FreeBSD GCC_NEW_VARARGS gcos gcx gimpel
15150 GNU_SOURCE GNUC GNUC_MINOR GO32 gould GOULD_PN
15151 H3050R H3050RX hbullx20 hcx host_mips
15152 hp200 hp300 hp700 HP700 hp800 hp9000
15153 hp9000s200 hp9000s300 hp9000s400 hp9000s500
15154 hp9000s700 hp9000s800 hp9k8 hp_osf hppa hpux HPUX_SOURCE
15155 i186 i286 i386 i486 i586 i686 i8086 i80960 i860 I960
15156 iAPX286 ibm ibm032 ibmesa IBMR2 ibmrt ILP32 ILP64
15157 INLINE_INTRINSICS INTRINSICS INT64 interdata is68k ksr1
15158 LANGUAGE_C LARGE_FILE_API LARGEFILE64_SOURCE
15159 LARGEFILE_SOURCE LFS64_LARGEFILE LFS_LARGEFILE
15160 Linux LITTLE_ENDIAN LONG64 LONG_DOUBLE LONG_LONG
15161 LONGDOUBLE LONGLONG LP64 luna luna88k Lynx
15162 M68000 m68k m88100 m88k M88KBCS_TARGET M_COFF
15163 M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM M_SYS3
15164 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX MACH machine MachTen
15165 MATH_HAS_NO_SIDE_EFFECTS
15166 mc300 mc500 mc68000 mc68010 mc68020 mc68030 mc68040
15167 mc68060 mc68k mc68k32 mc700 mc88000 mc88100 merlin
15168 mert MiNT mips MIPS_FPSET MIPS_ISA MIPS_SIM MIPS_SZINT
15169 MIPS_SZLONG MIPS_SZPTR MIPSEB MIPSEL MODERN_C motorola
15170 mpeix MSDOS MTXINU MULTIMAX mvs MVS n16 ncl_el ncl_mr
15171 NetBSD news1500 news1700 news1800 news1900 news3700
15172 news700 news800 news900 NeXT NLS nonstopux ns16000 ns32000
15173 ns32016 ns32332 ns32k nsc32000
15174 OCS88 OEMVS OpenBSD os OS2 OS390 osf OSF1 OSF_SOURCE
15175 pa_risc PA_RISC1_1 PA_RISC2_0 PARAGON parisc
15176 pc532 pdp11 PGC PIC plexus PORTAR posix
15177 POSIX1B_SOURCE POSIX2_SOURCE POSIX4_SOURCE
15178 POSIX_C_SOURCE POSIX_SOURCE POWER
15179 PROTOTYPES PWB pyr QNX R3000 REENTRANT RES Rhapsody RISC6000
15180 riscix riscos RT scs SCO sequent sgi SGI_SOURCE sinix
15181 SIZE_INT SIZE_LONG SIZE_PTR SOCKET_SOURCE SOCKETS_SOURCE
15182 sony sony_news sonyrisc sparc sparclite spectrum
15183 stardent stdc STDC_EXT stratos sun sun3 sun386
15184 Sun386i svr3 svr4 SVR4_2 SVR4_SOURCE svr5
15185 SX system SYSTYPE_BSD SYSTYPE_BSD43 SYSTYPE_BSD44
15186 SYSTYPE_SVR4 SYSTYPE_SVR5 SYSTYPE_SYSV SYSV SYSV3 SYSV4 SYSV5
15187 sysV68 sysV88 Tek4132 Tek4300 titan
15188 tower tower32 tower32_200 tower32_600 tower32_700
15189 tower32_800 tower32_850 tss
15190 u370 u3b u3b2 u3b20 u3b200 u3b20d u3b5
15191 ultrix UMAXV UnicomPBB UnicomPBD UNICOS UNICOSMK
15192 unix UNIX95 UNIX99 unixpc unos USGr4 USGr4_2
15193 Utek UTek UTS UWIN uxpm uxps vax venix VMESA vms xenix Xenix286
15194 XOPEN_SOURCE XOPEN_SOURCE_EXTENDED XPG2 XPG2_EXTENDED
15195 XPG3 XPG3_EXTENDED XPG4 XPG4_EXTENDED
15196 z8000
15197 EOSH
15198 # Maybe put other stuff here too.
15199 cat <<EOSH >>Cppsym.know
15200 $osname
15201 EOSH
15202 ./tr '[a-z]' '[A-Z]' < Cppsym.know > Cppsym.a
15203 ./tr '[A-Z]' '[a-z]' < Cppsym.know > Cppsym.b
15204 $cat Cppsym.know > Cppsym.c
15205 $cat Cppsym.a Cppsym.b Cppsym.c | $tr ' ' $trnl | $sort | $uniq > Cppsym.know
15206 $rm -f Cppsym.a Cppsym.b Cppsym.c
15207 cat <<EOSH > Cppsym
15208 $startsh
15209 if $test \$# -gt 0; then
15210     echo \$* | $tr " " "$trnl" | ./Cppsym.try > Cppsym.got
15211     if $test -s Cppsym.got; then
15212         $rm -f Cppsym.got
15213         exit 0
15214     fi
15215     $rm -f Cppsym.got
15216     exit 1
15217 else
15218     $tr " " "$trnl" | ./Cppsym.try
15219     exit 0
15220 fi
15221 EOSH
15222 chmod +x Cppsym
15223 $eunicefix Cppsym
15224 cat <<EOSH > Cppsym.try
15225 $startsh
15226 cat <<'EOCP' > try.c
15227 #include <stdio.h>
15228 int main() {
15229 EOCP
15230 $awk \\
15231 EOSH
15232 cat <<'EOSH' >> Cppsym.try
15233 'length($1) > 0 {
15234     printf "#ifdef %s\n#if %s+0\nprintf(\"%s=%%ld\\n\", %s);\n#else\nprintf(\"%s\\n\");\n#endif\n#endif\n", $1, $1, $1, $1, $1
15235     printf "#ifdef _%s\n#if _%s+0\nprintf(\"_%s=%%ld\\n\", _%s);\n#else\nprintf(\"_%s\\n\");\n#endif\n#endif\n", $1, $1, $1, $1, $1
15236     printf "#ifdef __%s\n#if __%s+0\nprintf(\"__%s=%%ld\\n\", __%s);\n#else\nprintf(\"__%s\\n\");\n#endif\n#endif\n", $1, $1, $1, $1, $1
15237     printf "#ifdef __%s__\n#if __%s__+0\nprintf(\"__%s__=%%ld\\n\", __%s__);\n#else\nprintf(\"__%s__\\n\");\n#endif\n#endif\n", $1, $1, $1, $1, $1
15238 }'       >> try.c
15239 echo '}' >> try.c
15240 EOSH
15241 cat <<EOSH >> Cppsym.try
15242 ccflags="$ccflags"
15243 case "$osname-$gccversion" in
15244 irix-) ccflags="\$ccflags -woff 1178" ;;
15245 os2-*) ccflags="\$ccflags -Zlinker /PM:VIO" ;;
15246 esac
15247 $cc -o try $optimize \$ccflags $ldflags try.c $libs && ./try$exe_ext
15248 EOSH
15249 chmod +x Cppsym.try
15250 $eunicefix Cppsym.try
15251 ./Cppsym < Cppsym.know > Cppsym.true
15252 : now check the C compiler for additional symbols
15253 postprocess_cc_v=''
15254 case "$osname" in
15255 aix) postprocess_cc_v="|$tr , ' '" ;;
15256 esac
15257 $cat >ccsym <<EOS
15258 $startsh
15259 $cat >tmp.c <<EOF
15260 extern int foo;
15261 EOF
15262 for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
15263 do
15264         case "\$i" in
15265         -D*) echo "\$i" | $sed 's/^-D//';;
15266         -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A\(.*\)(\(.*\))/\1=\2/';;
15267         esac
15268 done
15269 $rm -f try.c
15270 EOS
15271 postprocess_cc_v=''
15272 chmod +x ccsym
15273 $eunicefix ccsym
15274 ./ccsym > ccsym1.raw
15275 if $test -s ccsym1.raw; then
15276        $sort ccsym1.raw | $uniq >ccsym.raw
15277 else
15278        mv ccsym1.raw ccsym.raw
15279 fi
15280
15281 $awk '/\=/ { print $0; next }
15282         { print $0"=1" }' ccsym.raw >ccsym.list
15283 $awk '/\=/ { print $0; next }
15284         { print $0"=1" }' Cppsym.true >ccsym.true
15285 $comm -13 ccsym.true ccsym.list >ccsym.own
15286 $comm -12 ccsym.true ccsym.list >ccsym.com
15287 $comm -23 ccsym.true ccsym.list >ccsym.cpp
15288 also=''
15289 if $test -z ccsym.raw; then
15290         echo "Your C compiler doesn't seem to define any symbols!" >&4
15291         echo " "
15292         echo "However, your C preprocessor defines the following symbols:"
15293         $cat Cppsym.true
15294         ccsymbols=''
15295         cppsymbols=`$cat Cppsym.true`
15296         cppsymbols=`echo $cppsymbols`
15297         cppccsymbols="$cppsymbols"
15298 else
15299         if $test -s ccsym.com; then
15300                 echo "Your C compiler and pre-processor define these symbols:"
15301                 $sed -e 's/\(..*\)=.*/\1/' ccsym.com
15302                 also='also '
15303                 symbols='ones'
15304                 cppccsymbols=`$cat ccsym.com`
15305                 cppccsymbols=`echo $cppccsymbols`
15306                 $test "$silent" || sleep 1
15307         fi
15308         if $test -s ccsym.cpp; then
15309                 $test "$also" && echo " "
15310                 echo "Your C pre-processor ${also}defines the following symbols:"
15311                 $sed -e 's/\(..*\)=.*/\1/' ccsym.cpp
15312                 also='further '
15313                 cppsymbols=`$cat ccsym.cpp`
15314                 cppsymbols=`echo $cppsymbols`
15315                 $test "$silent" || sleep 1
15316         fi
15317         if $test -s ccsym.own; then
15318                 $test "$also" && echo " "
15319                 echo "Your C compiler ${also}defines the following cpp symbols:"
15320                 $sed -e 's/\(..*\)=1/\1/' ccsym.own
15321                 $sed -e 's/\(..*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
15322                 ccsymbols=`$cat ccsym.own`
15323                 ccsymbols=`echo $ccsymbols`
15324                 $test "$silent" || sleep 1
15325         fi
15326 fi
15327 $rm -f ccsym* Cppsym.*
15328
15329 : see if this is a termio system
15330 val="$undef"
15331 val2="$undef"
15332 val3="$undef"
15333 if $test `./findhdr termios.h`; then
15334         set tcsetattr i_termios
15335         eval $inlibc
15336         val3="$i_termios"
15337 fi
15338 echo " "
15339 case "$val3" in
15340 "$define") echo "You have POSIX termios.h... good!" >&4;;
15341 *) if ./Cppsym pyr; then
15342                 case "`/bin/universe`" in
15343                 ucb) if $test `./findhdr sgtty.h`; then
15344                                 val2="$define"
15345                                 echo "<sgtty.h> found." >&4
15346                         else
15347                                 echo "System is pyramid with BSD universe."
15348                                 echo "<sgtty.h> not found--you could have problems." >&4
15349                         fi;;
15350                 *) if $test `./findhdr termio.h`; then
15351                                 val="$define"
15352                                 echo "<termio.h> found." >&4
15353                         else
15354                                 echo "System is pyramid with USG universe."
15355                                 echo "<termio.h> not found--you could have problems." >&4
15356                         fi;;
15357                 esac
15358         elif ./usg; then
15359                 if $test `./findhdr termio.h`; then
15360                         echo "<termio.h> found." >&4
15361                         val="$define"
15362                 elif $test `./findhdr sgtty.h`; then
15363                         echo "<sgtty.h> found." >&4
15364                         val2="$define"
15365                 else
15366 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
15367                 fi
15368         else
15369                 if $test `./findhdr sgtty.h`; then
15370                         echo "<sgtty.h> found." >&4
15371                         val2="$define"
15372                 elif $test `./findhdr termio.h`; then
15373                         echo "<termio.h> found." >&4
15374                         val="$define"
15375                 else
15376 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
15377                 fi
15378         fi;;
15379 esac
15380 set i_termio; eval $setvar
15381 val=$val2; set i_sgtty; eval $setvar
15382 val=$val3; set i_termios; eval $setvar
15383
15384 : see if this is a shadow.h system
15385 set shadow.h i_shadow
15386 eval $inhdr
15387
15388 : see if stddef is available
15389 set stddef.h i_stddef
15390 eval $inhdr
15391
15392 : see if this is a sunmath.h system
15393 set sunmath.h i_sunmath
15394 eval $inhdr
15395
15396 : see if sys/access.h is available
15397 set sys/access.h i_sysaccess
15398 eval $inhdr
15399
15400 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
15401 set sys/filio.h i_sysfilio
15402 eval $inhdr
15403 echo " "
15404 if $test `./findhdr sys/ioctl.h`; then
15405         val="$define"
15406         echo '<sys/ioctl.h> found.' >&4
15407 else
15408         val="$undef"
15409         if $test $i_sysfilio = "$define"; then
15410             echo '<sys/ioctl.h> NOT found.' >&4
15411         else
15412                 $test $i_sgtty = "$define" && xxx="sgtty.h"
15413                 $test $i_termio = "$define" && xxx="termio.h"
15414                 $test $i_termios = "$define" && xxx="termios.h"
15415 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
15416         fi
15417 fi
15418 set i_sysioctl
15419 eval $setvar
15420
15421
15422 : see if this is a syslog.h system
15423 set syslog.h i_syslog
15424 eval $inhdr
15425
15426
15427 : see if this is a sys/mode.h system
15428 set sys/mode.h i_sysmode
15429 eval $inhdr
15430
15431 : see if sys/resource.h has to be included
15432 set sys/resource.h i_sysresrc
15433 eval $inhdr
15434
15435 : see if sys/security.h is available
15436 set sys/security.h i_syssecrt
15437 eval $inhdr
15438
15439 : see if this is a sys/statvfs.h system
15440 set sys/statvfs.h i_sysstatvfs
15441 eval $inhdr
15442
15443 : see if this is a sys/uio.h system
15444 set sys/uio.h i_sysuio
15445 eval $inhdr
15446
15447 : see if this is a sys/un.h system
15448 set sys/un.h i_sysun
15449 eval $inhdr
15450
15451
15452 : see if this is a sys/utsname.h system
15453 set sys/utsname.h i_sysutsname
15454 eval $inhdr
15455
15456 : see if this is a syswait system
15457 set sys/wait.h i_syswait
15458 eval $inhdr
15459
15460 : see if this is a ustat.h system
15461 set ustat.h i_ustat
15462 eval $inhdr
15463
15464 : see if this is an utime system
15465 set utime.h i_utime
15466 eval $inhdr
15467
15468 : see if this is a values.h system
15469 set values.h i_values
15470 eval $inhdr
15471
15472 : see if this is a vfork system
15473 case "$d_vfork" in
15474 "$define")
15475         set vfork.h i_vfork
15476         eval $inhdr
15477         ;;
15478 *)
15479         i_vfork="$undef"
15480         ;;
15481 esac
15482
15483 : see if gdbm.h is available
15484 set gdbm.h t_gdbm
15485 eval $inhdr
15486 case "$t_gdbm" in
15487 $define)
15488         : see if gdbm_open exists
15489         set gdbm_open d_gdbm_open
15490         eval $inlibc
15491         case "$d_gdbm_open" in
15492         $undef)
15493                 t_gdbm="$undef"
15494                 echo "We won't be including <gdbm.h>"
15495                 ;;
15496         esac
15497         ;;
15498 esac
15499 val="$t_gdbm"
15500 set i_gdbm
15501 eval $setvar
15502
15503 echo " "
15504 echo "Looking for extensions..." >&4
15505 : If we are using the old config.sh, known_extensions may contain
15506 : old or inaccurate or duplicate values.
15507 known_extensions=''
15508 nonxs_extensions=''
15509 : We do not use find because it might not be available.
15510 : We do not just use MANIFEST because the user may have dropped
15511 : some additional extensions into the source tree and expect them
15512 : to be built.
15513
15514 : Function to recursively find available extensions, ignoring DynaLoader
15515 : NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
15516 find_extensions='
15517     for xxx in *; do
15518        case "$xxx" in
15519            DynaLoader|dynaload) ;;
15520            *)
15521            if $test -f $xxx/$xxx.xs; then
15522                known_extensions="$known_extensions $1$xxx";
15523            elif $test -f $xxx/Makefile.PL; then
15524                nonxs_extensions="$nonxs_extensions $1$xxx";
15525            else
15526                if $test -d $xxx -a $# -lt 10; then
15527                    set $1$xxx/ $*;
15528                    cd $xxx;
15529                    eval $find_extensions;
15530                    cd ..;
15531                    shift;
15532                fi;
15533            fi
15534            ;;
15535        esac;
15536     done'
15537 tdir=`pwd`
15538 cd $rsrc/ext
15539 set X
15540 shift
15541 eval $find_extensions
15542 set X $nonxs_extensions
15543 shift
15544 nonxs_extensions="$*"
15545 set X $known_extensions
15546 shift
15547 known_extensions="$*"
15548 cd $tdir
15549
15550 : Now see which are supported on this system.
15551 avail_ext=''
15552 for xxx in $known_extensions ; do
15553         case "$xxx" in
15554         DB_File|db_file)
15555                 case "$i_db" in
15556                 $define) avail_ext="$avail_ext $xxx" ;;
15557                 esac
15558                 ;;
15559         GDBM_File|gdbm_fil)
15560                 case "$i_gdbm" in 
15561                 $define) avail_ext="$avail_ext $xxx" ;;
15562                 esac
15563                 ;;
15564         NDBM_File|ndbm_fil)
15565                 case "$i_ndbm" in
15566                 $define)
15567                     case "$osname-$use64bitint" in
15568                     hpux-define)
15569                         case "$libs" in
15570                         *-lndbm*) avail_ext="$avail_ext $xxx" ;;
15571                         esac
15572                         ;;
15573                     *) avail_ext="$avail_ext $xxx" ;;
15574                     esac
15575                     ;;
15576                 esac
15577                 ;;
15578         ODBM_File|odbm_fil) 
15579                 case "${i_dbm}${i_rpcsvcdbm}" in
15580                 *"${define}"*)
15581                     case "$osname-$use64bitint" in
15582                     hpux-define)
15583                         case "$libs" in
15584                         *-ldbm*) avail_ext="$avail_ext $xxx" ;;
15585                         esac
15586                         ;;
15587                     *) avail_ext="$avail_ext $xxx" ;;
15588                     esac
15589                     ;;
15590                 esac
15591                 ;;
15592         POSIX|posix)
15593                 case "$useposix" in
15594                 true|define|y) avail_ext="$avail_ext $xxx" ;;
15595                 esac
15596                 ;;
15597         Opcode|opcode)
15598                 case "$useopcode" in
15599                 true|define|y) avail_ext="$avail_ext $xxx" ;;
15600                 esac
15601                 ;;
15602         Socket|socket)
15603                 case "$d_socket" in 
15604                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
15605                 esac
15606                 ;;
15607         Sys/Syslog|sys/syslog)
15608                 : XXX syslog requires socket
15609                 case "$d_socket" in 
15610                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
15611                 esac
15612                 ;;
15613         Thread|thread)
15614                 case "$usethreads" in 
15615                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
15616                 esac
15617                 ;;
15618         IPC/SysV|ipc/sysv)
15619                 : XXX Do we need a useipcsysv variable here
15620                 case "${d_msg}${d_sem}${d_shm}" in 
15621                 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
15622                 esac
15623                 ;;
15624         *)      avail_ext="$avail_ext $xxx"
15625                 ;;
15626         esac
15627 done
15628
15629 set X $avail_ext
15630 shift
15631 avail_ext="$*"
15632
15633 : Now see which nonxs extensions are supported on this system.
15634 : For now assume all are.
15635 nonxs_ext=''
15636 for xxx in $nonxs_extensions ; do
15637         case "$xxx" in
15638         *)      nonxs_ext="$nonxs_ext $xxx"
15639                 ;;
15640         esac
15641 done
15642
15643 set X $nonxs_ext
15644 shift
15645 nonxs_ext="$*"
15646
15647 case $usedl in
15648 $define)
15649         $cat <<EOM
15650 A number of extensions are supplied with $package.  You may choose to
15651 compile these extensions for dynamic loading (the default), compile
15652 them into the $package executable (static loading), or not include
15653 them at all.  Answer "none" to include no extensions.
15654 Note that DynaLoader is always built and need not be mentioned here.
15655
15656 EOM
15657         case "$dynamic_ext" in
15658         '') dflt="$avail_ext" ;;
15659         *)      dflt="$dynamic_ext"
15660                 # Perhaps we are reusing an old out-of-date config.sh.
15661                 case "$hint" in
15662                 previous)
15663                         if test X"$dynamic_ext" != X"$avail_ext"; then
15664                                 $cat <<EOM
15665 NOTICE:  Your previous config.sh list may be incorrect. 
15666 The extensions now available to you are 
15667         ${avail_ext}
15668 but the default list from your previous config.sh is
15669         ${dynamic_ext} 
15670
15671 EOM
15672                         fi
15673                         ;;
15674                 esac
15675                 ;;
15676         esac
15677         case "$dflt" in
15678         '')     dflt=none;;
15679         esac
15680         rp="What extensions do you wish to load dynamically?"
15681         . ./myread
15682         case "$ans" in
15683         none) dynamic_ext=' ' ;;
15684         *) dynamic_ext="$ans" ;;
15685         esac
15686
15687         case "$static_ext" in
15688         '')
15689                 : Exclude those already listed in dynamic linking
15690                 dflt=''
15691                 for xxx in $avail_ext; do
15692                         case " $dynamic_ext " in
15693                         *" $xxx "*) ;;
15694                         *) dflt="$dflt $xxx" ;;
15695                         esac
15696                 done
15697                 set X $dflt
15698                 shift
15699                 dflt="$*"
15700                 ;;
15701         *)  dflt="$static_ext" 
15702                 ;;
15703         esac
15704
15705         case "$dflt" in
15706         '')     dflt=none;;
15707         esac
15708         rp="What extensions do you wish to load statically?"
15709         . ./myread
15710         case "$ans" in
15711         none) static_ext=' ' ;;
15712         *) static_ext="$ans" ;;
15713         esac
15714         ;;
15715 *)
15716         $cat <<EOM
15717 A number of extensions are supplied with $package.  Answer "none" 
15718 to include no extensions. 
15719 Note that DynaLoader is always built and need not be mentioned here.
15720
15721 EOM
15722         case "$static_ext" in
15723         '') dflt="$avail_ext" ;;
15724         *)      dflt="$static_ext"
15725                 # Perhaps we are reusing an old out-of-date config.sh.
15726                 case "$hint" in
15727                 previous)
15728                         if test X"$static_ext" != X"$avail_ext"; then
15729                                 $cat <<EOM
15730 NOTICE:  Your previous config.sh list may be incorrect. 
15731 The extensions now available to you are 
15732         ${avail_ext}
15733 but the default list from your previous config.sh is
15734         ${static_ext} 
15735
15736 EOM
15737                         fi
15738                         ;;
15739                 esac
15740                 ;;
15741         esac
15742         : Exclude those that are not xs extensions
15743         case "$dflt" in
15744         '')     dflt=none;;
15745         esac
15746         rp="What extensions do you wish to include?"
15747         . ./myread
15748         case "$ans" in
15749         none) static_ext=' ' ;;
15750         *) static_ext="$ans" ;;
15751         esac
15752         ;;
15753 esac
15754
15755 set X $dynamic_ext $static_ext $nonxs_ext
15756 shift
15757 extensions="$*"
15758
15759 : Remove libraries needed only for extensions
15760 : The appropriate ext/Foo/Makefile.PL will add them back in, if necessary.
15761 : The exception is SunOS 4.x, which needs them.
15762 case "${osname}X${osvers}" in
15763 sunos*X4*)
15764     perllibs="$libs"
15765     ;;
15766 *) case "$usedl" in
15767     $define|true|[yY]*)
15768             set X `echo " $libs " | sed -e 's@ -lndbm @ @' -e 's@ -lgdbm @ @' -e 's@ -ldbm @ @' -e 's@ -ldb @ @'` 
15769             shift
15770             perllibs="$*"
15771             ;;
15772     *)  perllibs="$libs"
15773             ;;
15774     esac
15775     ;;
15776 esac
15777
15778 : Remove build directory name from cppstdin so it can be used from
15779 : either the present location or the final installed location.
15780 echo " "
15781 : Get out of the UU directory to get correct path name.
15782 cd ..
15783 case "$cppstdin" in
15784 `pwd`/cppstdin)
15785         echo "Stripping down cppstdin path name"
15786         cppstdin=cppstdin
15787         ;;
15788 esac
15789 cd UU
15790
15791 : end of configuration questions
15792 echo " "
15793 echo "End of configuration questions."
15794 echo " "
15795
15796 : back to where it started
15797 if test -d ../UU; then
15798         cd ..
15799 fi
15800
15801 : configuration may be patched via a 'config.over' file
15802 if $test -f config.over; then
15803         echo " "
15804         dflt=y
15805         rp='I see a config.over file.  Do you wish to load it?'
15806         . UU/myread
15807         case "$ans" in
15808         n*) echo "OK, I'll ignore it.";;
15809         *)      . ./config.over
15810                 echo "Configuration override changes have been loaded."
15811                 ;;
15812         esac
15813 fi
15814
15815 : in case they want portability, strip down executable paths
15816 case "$d_portable" in
15817 "$define")
15818         echo " "
15819         echo "Stripping down executable paths..." >&4
15820         for file in $loclist $trylist; do
15821                 eval temp=\$$file
15822                 eval $file=`basename $temp`
15823         done
15824         ;;
15825 esac
15826
15827 : create config.sh file
15828 echo " "
15829 echo "Creating config.sh..." >&4
15830 $spitshell <<EOT >config.sh
15831 $startsh
15832 #
15833 # This file was produced by running the Configure script. It holds all the
15834 # definitions figured out by Configure. Should you modify one of these values,
15835 # do not forget to propagate your changes by running "Configure -der". You may
15836 # instead choose to run each of the .SH files by yourself, or "Configure -S".
15837 #
15838
15839 # Package name      : $package
15840 # Source directory  : $src
15841 # Configuration time: $cf_time
15842 # Configured by     : $cf_by
15843 # Target system     : $myuname
15844
15845 Author='$Author'
15846 Date='$Date'
15847 Header='$Header'
15848 Id='$Id'
15849 Locker='$Locker'
15850 Log='$Log'
15851 Mcc='$Mcc'
15852 RCSfile='$RCSfile'
15853 Revision='$Revision'
15854 Source='$Source'
15855 State='$State'
15856 _a='$_a'
15857 _exe='$_exe'
15858 _o='$_o'
15859 afs='$afs'
15860 alignbytes='$alignbytes'
15861 ansi2knr='$ansi2knr'
15862 aphostname='$aphostname'
15863 api_revision='$api_revision'
15864 api_subversion='$api_subversion'
15865 api_version='$api_version'
15866 api_versionstring='$api_versionstring'
15867 ar='$ar'
15868 archlib='$archlib'
15869 archlibexp='$archlibexp'
15870 archname64='$archname64'
15871 archname='$archname'
15872 archobjs='$archobjs'
15873 awk='$awk'
15874 baserev='$baserev'
15875 bash='$bash'
15876 bin='$bin'
15877 bincompat5005='$bincompat5005'
15878 binexp='$binexp'
15879 bison='$bison'
15880 byacc='$byacc'
15881 byteorder='$byteorder'
15882 c='$c'
15883 castflags='$castflags'
15884 cat='$cat'
15885 cc='$cc'
15886 cccdlflags='$cccdlflags'
15887 ccdlflags='$ccdlflags'
15888 ccflags='$ccflags'
15889 ccflags_uselargefiles='$ccflags_uselargefiles'
15890 ccname='$ccname'
15891 ccsymbols='$ccsymbols'
15892 ccversion='$ccversion'
15893 cf_by='$cf_by'
15894 cf_email='$cf_email'
15895 cf_time='$cf_time'
15896 charsize='$charsize'
15897 chgrp='$chgrp'
15898 chmod='$chmod'
15899 chown='$chown'
15900 clocktype='$clocktype'
15901 comm='$comm'
15902 compress='$compress'
15903 contains='$contains'
15904 cp='$cp'
15905 cpio='$cpio'
15906 cpp='$cpp'
15907 cpp_stuff='$cpp_stuff'
15908 cppccsymbols='$cppccsymbols'
15909 cppflags='$cppflags'
15910 cpplast='$cpplast'
15911 cppminus='$cppminus'
15912 cpprun='$cpprun'
15913 cppstdin='$cppstdin'
15914 cppsymbols='$cppsymbols'
15915 crosscompile='$crosscompile'
15916 cryptlib='$cryptlib'
15917 csh='$csh'
15918 d_Gconvert='$d_Gconvert'
15919 d_PRIEUldbl='$d_PRIEUldbl'
15920 d_PRIFUldbl='$d_PRIFUldbl'
15921 d_PRIGUldbl='$d_PRIGUldbl'
15922 d_PRIXU64='$d_PRIXU64'
15923 d_PRId64='$d_PRId64'
15924 d_PRIeldbl='$d_PRIeldbl'
15925 d_PRIfldbl='$d_PRIfldbl'
15926 d_PRIgldbl='$d_PRIgldbl'
15927 d_PRIi64='$d_PRIi64'
15928 d_PRIo64='$d_PRIo64'
15929 d_PRIu64='$d_PRIu64'
15930 d_PRIx64='$d_PRIx64'
15931 d_SCNfldbl='$d_SCNfldbl'
15932 d__fwalk='$d__fwalk'
15933 d_access='$d_access'
15934 d_accessx='$d_accessx'
15935 d_alarm='$d_alarm'
15936 d_archlib='$d_archlib'
15937 d_atolf='$d_atolf'
15938 d_atoll='$d_atoll'
15939 d_attribut='$d_attribut'
15940 d_bcmp='$d_bcmp'
15941 d_bcopy='$d_bcopy'
15942 d_bincompat5005='$d_bincompat5005'
15943 d_bsd='$d_bsd'
15944 d_bsdgetpgrp='$d_bsdgetpgrp'
15945 d_bsdsetpgrp='$d_bsdsetpgrp'
15946 d_bzero='$d_bzero'
15947 d_casti32='$d_casti32'
15948 d_castneg='$d_castneg'
15949 d_charvspr='$d_charvspr'
15950 d_chown='$d_chown'
15951 d_chroot='$d_chroot'
15952 d_chsize='$d_chsize'
15953 d_closedir='$d_closedir'
15954 d_const='$d_const'
15955 d_crypt='$d_crypt'
15956 d_csh='$d_csh'
15957 d_cuserid='$d_cuserid'
15958 d_dbl_dig='$d_dbl_dig'
15959 d_difftime='$d_difftime'
15960 d_dirnamlen='$d_dirnamlen'
15961 d_dlerror='$d_dlerror'
15962 d_dlopen='$d_dlopen'
15963 d_dlsymun='$d_dlsymun'
15964 d_dosuid='$d_dosuid'
15965 d_drand48proto='$d_drand48proto'
15966 d_dup2='$d_dup2'
15967 d_eaccess='$d_eaccess'
15968 d_endgrent='$d_endgrent'
15969 d_endhent='$d_endhent'
15970 d_endnent='$d_endnent'
15971 d_endpent='$d_endpent'
15972 d_endpwent='$d_endpwent'
15973 d_endsent='$d_endsent'
15974 d_eofnblk='$d_eofnblk'
15975 d_eunice='$d_eunice'
15976 d_fchmod='$d_fchmod'
15977 d_fchown='$d_fchown'
15978 d_fcntl='$d_fcntl'
15979 d_fcntl_can_lock='$d_fcntl_can_lock'
15980 d_fd_macros='$d_fd_macros'
15981 d_fd_set='$d_fd_set'
15982 d_fds_bits='$d_fds_bits'
15983 d_fgetpos='$d_fgetpos'
15984 d_flexfnam='$d_flexfnam'
15985 d_flock='$d_flock'
15986 d_fork='$d_fork'
15987 d_fpathconf='$d_fpathconf'
15988 d_fpos64_t='$d_fpos64_t'
15989 d_frexpl='$d_frexpl'
15990 d_fs_data_s='$d_fs_data_s'
15991 d_fseeko='$d_fseeko'
15992 d_fsetpos='$d_fsetpos'
15993 d_fstatfs='$d_fstatfs'
15994 d_fstatvfs='$d_fstatvfs'
15995 d_fsync='$d_fsync'
15996 d_ftello='$d_ftello'
15997 d_ftime='$d_ftime'
15998 d_getcwd='$d_getcwd'
15999 d_getespwnam='$d_getespwnam'
16000 d_getfsstat='$d_getfsstat'
16001 d_getgrent='$d_getgrent'
16002 d_getgrps='$d_getgrps'
16003 d_gethbyaddr='$d_gethbyaddr'
16004 d_gethbyname='$d_gethbyname'
16005 d_gethent='$d_gethent'
16006 d_gethname='$d_gethname'
16007 d_gethostprotos='$d_gethostprotos'
16008 d_getlogin='$d_getlogin'
16009 d_getmnt='$d_getmnt'
16010 d_getmntent='$d_getmntent'
16011 d_getnbyaddr='$d_getnbyaddr'
16012 d_getnbyname='$d_getnbyname'
16013 d_getnent='$d_getnent'
16014 d_getnetprotos='$d_getnetprotos'
16015 d_getpagsz='$d_getpagsz'
16016 d_getpbyname='$d_getpbyname'
16017 d_getpbynumber='$d_getpbynumber'
16018 d_getpent='$d_getpent'
16019 d_getpgid='$d_getpgid'
16020 d_getpgrp2='$d_getpgrp2'
16021 d_getpgrp='$d_getpgrp'
16022 d_getppid='$d_getppid'
16023 d_getprior='$d_getprior'
16024 d_getprotoprotos='$d_getprotoprotos'
16025 d_getprpwnam='$d_getprpwnam'
16026 d_getpwent='$d_getpwent'
16027 d_getsbyname='$d_getsbyname'
16028 d_getsbyport='$d_getsbyport'
16029 d_getsent='$d_getsent'
16030 d_getservprotos='$d_getservprotos'
16031 d_getspnam='$d_getspnam'
16032 d_gettimeod='$d_gettimeod'
16033 d_gnulibc='$d_gnulibc'
16034 d_grpasswd='$d_grpasswd'
16035 d_hasmntopt='$d_hasmntopt'
16036 d_htonl='$d_htonl'
16037 d_iconv='$d_iconv'
16038 d_index='$d_index'
16039 d_inetaton='$d_inetaton'
16040 d_int64_t='$d_int64_t'
16041 d_isascii='$d_isascii'
16042 d_isnan='$d_isnan'
16043 d_isnanl='$d_isnanl'
16044 d_killpg='$d_killpg'
16045 d_lchown='$d_lchown'
16046 d_ldbl_dig='$d_ldbl_dig'
16047 d_link='$d_link'
16048 d_locconv='$d_locconv'
16049 d_lockf='$d_lockf'
16050 d_longdbl='$d_longdbl'
16051 d_longlong='$d_longlong'
16052 d_lseekproto='$d_lseekproto'
16053 d_lstat='$d_lstat'
16054 d_madvise='$d_madvise'
16055 d_mblen='$d_mblen'
16056 d_mbstowcs='$d_mbstowcs'
16057 d_mbtowc='$d_mbtowc'
16058 d_memchr='$d_memchr'
16059 d_memcmp='$d_memcmp'
16060 d_memcpy='$d_memcpy'
16061 d_memmove='$d_memmove'
16062 d_memset='$d_memset'
16063 d_mkdir='$d_mkdir'
16064 d_mkdtemp='$d_mkdtemp'
16065 d_mkfifo='$d_mkfifo'
16066 d_mkstemp='$d_mkstemp'
16067 d_mkstemps='$d_mkstemps'
16068 d_mktime='$d_mktime'
16069 d_mmap='$d_mmap'
16070 d_modfl='$d_modfl'
16071 d_mprotect='$d_mprotect'
16072 d_msg='$d_msg'
16073 d_msg_ctrunc='$d_msg_ctrunc'
16074 d_msg_dontroute='$d_msg_dontroute'
16075 d_msg_oob='$d_msg_oob'
16076 d_msg_peek='$d_msg_peek'
16077 d_msg_proxy='$d_msg_proxy'
16078 d_msgctl='$d_msgctl'
16079 d_msgget='$d_msgget'
16080 d_msgrcv='$d_msgrcv'
16081 d_msgsnd='$d_msgsnd'
16082 d_msync='$d_msync'
16083 d_munmap='$d_munmap'
16084 d_mymalloc='$d_mymalloc'
16085 d_nice='$d_nice'
16086 d_nv_preserves_uv='$d_nv_preserves_uv'
16087 d_nv_preserves_uv_bits='$d_nv_preserves_uv_bits'
16088 d_off64_t='$d_off64_t'
16089 d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
16090 d_oldpthreads='$d_oldpthreads'
16091 d_oldsock='$d_oldsock'
16092 d_open3='$d_open3'
16093 d_pathconf='$d_pathconf'
16094 d_pause='$d_pause'
16095 d_perl_otherlibdirs='$d_perl_otherlibdirs'
16096 d_phostname='$d_phostname'
16097 d_pipe='$d_pipe'
16098 d_poll='$d_poll'
16099 d_portable='$d_portable'
16100 d_pthread_yield='$d_pthread_yield'
16101 d_pwage='$d_pwage'
16102 d_pwchange='$d_pwchange'
16103 d_pwclass='$d_pwclass'
16104 d_pwcomment='$d_pwcomment'
16105 d_pwexpire='$d_pwexpire'
16106 d_pwgecos='$d_pwgecos'
16107 d_pwpasswd='$d_pwpasswd'
16108 d_pwquota='$d_pwquota'
16109 d_qgcvt='$d_qgcvt'
16110 d_quad='$d_quad'
16111 d_readdir='$d_readdir'
16112 d_readlink='$d_readlink'
16113 d_rename='$d_rename'
16114 d_rewinddir='$d_rewinddir'
16115 d_rmdir='$d_rmdir'
16116 d_safebcpy='$d_safebcpy'
16117 d_safemcpy='$d_safemcpy'
16118 d_sanemcmp='$d_sanemcmp'
16119 d_sbrkproto='$d_sbrkproto'
16120 d_sched_yield='$d_sched_yield'
16121 d_scm_rights='$d_scm_rights'
16122 d_seekdir='$d_seekdir'
16123 d_select='$d_select'
16124 d_sem='$d_sem'
16125 d_semctl='$d_semctl'
16126 d_semctl_semid_ds='$d_semctl_semid_ds'
16127 d_semctl_semun='$d_semctl_semun'
16128 d_semget='$d_semget'
16129 d_semop='$d_semop'
16130 d_setegid='$d_setegid'
16131 d_seteuid='$d_seteuid'
16132 d_setgrent='$d_setgrent'
16133 d_setgrps='$d_setgrps'
16134 d_sethent='$d_sethent'
16135 d_setlinebuf='$d_setlinebuf'
16136 d_setlocale='$d_setlocale'
16137 d_setnent='$d_setnent'
16138 d_setpent='$d_setpent'
16139 d_setpgid='$d_setpgid'
16140 d_setpgrp2='$d_setpgrp2'
16141 d_setpgrp='$d_setpgrp'
16142 d_setprior='$d_setprior'
16143 d_setproctitle='$d_setproctitle'
16144 d_setpwent='$d_setpwent'
16145 d_setregid='$d_setregid'
16146 d_setresgid='$d_setresgid'
16147 d_setresuid='$d_setresuid'
16148 d_setreuid='$d_setreuid'
16149 d_setrgid='$d_setrgid'
16150 d_setruid='$d_setruid'
16151 d_setsent='$d_setsent'
16152 d_setsid='$d_setsid'
16153 d_setvbuf='$d_setvbuf'
16154 d_sfio='$d_sfio'
16155 d_shm='$d_shm'
16156 d_shmat='$d_shmat'
16157 d_shmatprototype='$d_shmatprototype'
16158 d_shmctl='$d_shmctl'
16159 d_shmdt='$d_shmdt'
16160 d_shmget='$d_shmget'
16161 d_sigaction='$d_sigaction'
16162 d_sigprocmask='$d_sigprocmask'
16163 d_sigsetjmp='$d_sigsetjmp'
16164 d_socket='$d_socket'
16165 d_socklen_t='$d_socklen_t'
16166 d_sockpair='$d_sockpair'
16167 d_socks5_init='$d_socks5_init'
16168 d_sqrtl='$d_sqrtl'
16169 d_statblks='$d_statblks'
16170 d_statfs_f_flags='$d_statfs_f_flags'
16171 d_statfs_s='$d_statfs_s'
16172 d_statvfs='$d_statvfs'
16173 d_stdio_cnt_lval='$d_stdio_cnt_lval'
16174 d_stdio_ptr_lval='$d_stdio_ptr_lval'
16175 d_stdio_ptr_lval_nochange_cnt='$d_stdio_ptr_lval_nochange_cnt'
16176 d_stdio_ptr_lval_sets_cnt='$d_stdio_ptr_lval_sets_cnt'
16177 d_stdio_stream_array='$d_stdio_stream_array'
16178 d_stdiobase='$d_stdiobase'
16179 d_stdstdio='$d_stdstdio'
16180 d_strchr='$d_strchr'
16181 d_strcoll='$d_strcoll'
16182 d_strctcpy='$d_strctcpy'
16183 d_strerrm='$d_strerrm'
16184 d_strerror='$d_strerror'
16185 d_strtod='$d_strtod'
16186 d_strtol='$d_strtol'
16187 d_strtold='$d_strtold'
16188 d_strtoll='$d_strtoll'
16189 d_strtoq='$d_strtoq'
16190 d_strtoul='$d_strtoul'
16191 d_strtoull='$d_strtoull'
16192 d_strtouq='$d_strtouq'
16193 d_strxfrm='$d_strxfrm'
16194 d_suidsafe='$d_suidsafe'
16195 d_symlink='$d_symlink'
16196 d_syscall='$d_syscall'
16197 d_sysconf='$d_sysconf'
16198 d_sysernlst='$d_sysernlst'
16199 d_syserrlst='$d_syserrlst'
16200 d_system='$d_system'
16201 d_tcgetpgrp='$d_tcgetpgrp'
16202 d_tcsetpgrp='$d_tcsetpgrp'
16203 d_telldir='$d_telldir'
16204 d_telldirproto='$d_telldirproto'
16205 d_time='$d_time'
16206 d_times='$d_times'
16207 d_truncate='$d_truncate'
16208 d_tzname='$d_tzname'
16209 d_umask='$d_umask'
16210 d_uname='$d_uname'
16211 d_union_semun='$d_union_semun'
16212 d_ustat='$d_ustat'
16213 d_vendorarch='$d_vendorarch'
16214 d_vendorbin='$d_vendorbin'
16215 d_vendorlib='$d_vendorlib'
16216 d_vfork='$d_vfork'
16217 d_void_closedir='$d_void_closedir'
16218 d_voidsig='$d_voidsig'
16219 d_voidtty='$d_voidtty'
16220 d_volatile='$d_volatile'
16221 d_vprintf='$d_vprintf'
16222 d_wait4='$d_wait4'
16223 d_waitpid='$d_waitpid'
16224 d_wcstombs='$d_wcstombs'
16225 d_wctomb='$d_wctomb'
16226 d_xenix='$d_xenix'
16227 date='$date'
16228 db_hashtype='$db_hashtype'
16229 db_prefixtype='$db_prefixtype'
16230 defvoidused='$defvoidused'
16231 direntrytype='$direntrytype'
16232 dlext='$dlext'
16233 dlsrc='$dlsrc'
16234 doublesize='$doublesize'
16235 drand01='$drand01'
16236 dynamic_ext='$dynamic_ext'
16237 eagain='$eagain'
16238 ebcdic='$ebcdic'
16239 echo='$echo'
16240 egrep='$egrep'
16241 emacs='$emacs'
16242 eunicefix='$eunicefix'
16243 exe_ext='$exe_ext'
16244 expr='$expr'
16245 extensions='$extensions'
16246 fflushNULL='$fflushNULL'
16247 fflushall='$fflushall'
16248 find='$find'
16249 firstmakefile='$firstmakefile'
16250 flex='$flex'
16251 fpossize='$fpossize'
16252 fpostype='$fpostype'
16253 freetype='$freetype'
16254 full_ar='$full_ar'
16255 full_csh='$full_csh'
16256 full_sed='$full_sed'
16257 gccosandvers='$gccosandvers'
16258 gccversion='$gccversion'
16259 gidformat='$gidformat'
16260 gidsign='$gidsign'
16261 gidsize='$gidsize'
16262 gidtype='$gidtype'
16263 glibpth='$glibpth'
16264 grep='$grep'
16265 groupcat='$groupcat'
16266 groupstype='$groupstype'
16267 gzip='$gzip'
16268 h_fcntl='$h_fcntl'
16269 h_sysfile='$h_sysfile'
16270 hint='$hint'
16271 hostcat='$hostcat'
16272 i16size='$i16size'
16273 i16type='$i16type'
16274 i32size='$i32size'
16275 i32type='$i32type'
16276 i64size='$i64size'
16277 i64type='$i64type'
16278 i8size='$i8size'
16279 i8type='$i8type'
16280 i_arpainet='$i_arpainet'
16281 i_bsdioctl='$i_bsdioctl'
16282 i_db='$i_db'
16283 i_dbm='$i_dbm'
16284 i_dirent='$i_dirent'
16285 i_dld='$i_dld'
16286 i_dlfcn='$i_dlfcn'
16287 i_fcntl='$i_fcntl'
16288 i_float='$i_float'
16289 i_gdbm='$i_gdbm'
16290 i_grp='$i_grp'
16291 i_iconv='$i_iconv'
16292 i_ieeefp='$i_ieeefp'
16293 i_inttypes='$i_inttypes'
16294 i_libutil='$i_libutil'
16295 i_limits='$i_limits'
16296 i_locale='$i_locale'
16297 i_machcthr='$i_machcthr'
16298 i_malloc='$i_malloc'
16299 i_math='$i_math'
16300 i_memory='$i_memory'
16301 i_mntent='$i_mntent'
16302 i_ndbm='$i_ndbm'
16303 i_netdb='$i_netdb'
16304 i_neterrno='$i_neterrno'
16305 i_netinettcp='$i_netinettcp'
16306 i_niin='$i_niin'
16307 i_poll='$i_poll'
16308 i_prot='$i_prot'
16309 i_pthread='$i_pthread'
16310 i_pwd='$i_pwd'
16311 i_rpcsvcdbm='$i_rpcsvcdbm'
16312 i_sfio='$i_sfio'
16313 i_sgtty='$i_sgtty'
16314 i_shadow='$i_shadow'
16315 i_socks='$i_socks'
16316 i_stdarg='$i_stdarg'
16317 i_stddef='$i_stddef'
16318 i_stdlib='$i_stdlib'
16319 i_string='$i_string'
16320 i_sunmath='$i_sunmath'
16321 i_sysaccess='$i_sysaccess'
16322 i_sysdir='$i_sysdir'
16323 i_sysfile='$i_sysfile'
16324 i_sysfilio='$i_sysfilio'
16325 i_sysin='$i_sysin'
16326 i_sysioctl='$i_sysioctl'
16327 i_syslog='$i_syslog'
16328 i_sysmman='$i_sysmman'
16329 i_sysmode='$i_sysmode'
16330 i_sysmount='$i_sysmount'
16331 i_sysndir='$i_sysndir'
16332 i_sysparam='$i_sysparam'
16333 i_sysresrc='$i_sysresrc'
16334 i_syssecrt='$i_syssecrt'
16335 i_sysselct='$i_sysselct'
16336 i_syssockio='$i_syssockio'
16337 i_sysstat='$i_sysstat'
16338 i_sysstatfs='$i_sysstatfs'
16339 i_sysstatvfs='$i_sysstatvfs'
16340 i_systime='$i_systime'
16341 i_systimek='$i_systimek'
16342 i_systimes='$i_systimes'
16343 i_systypes='$i_systypes'
16344 i_sysuio='$i_sysuio'
16345 i_sysun='$i_sysun'
16346 i_sysutsname='$i_sysutsname'
16347 i_sysvfs='$i_sysvfs'
16348 i_syswait='$i_syswait'
16349 i_termio='$i_termio'
16350 i_termios='$i_termios'
16351 i_time='$i_time'
16352 i_unistd='$i_unistd'
16353 i_ustat='$i_ustat'
16354 i_utime='$i_utime'
16355 i_values='$i_values'
16356 i_varargs='$i_varargs'
16357 i_varhdr='$i_varhdr'
16358 i_vfork='$i_vfork'
16359 ignore_versioned_solibs='$ignore_versioned_solibs'
16360 inc_version_list='$inc_version_list'
16361 inc_version_list_init='$inc_version_list_init'
16362 incpath='$incpath'
16363 inews='$inews'
16364 installarchlib='$installarchlib'
16365 installbin='$installbin'
16366 installman1dir='$installman1dir'
16367 installman3dir='$installman3dir'
16368 installprefix='$installprefix'
16369 installprefixexp='$installprefixexp'
16370 installprivlib='$installprivlib'
16371 installscript='$installscript'
16372 installsitearch='$installsitearch'
16373 installsitebin='$installsitebin'
16374 installsitelib='$installsitelib'
16375 installstyle='$installstyle'
16376 installusrbinperl='$installusrbinperl'
16377 installvendorarch='$installvendorarch'
16378 installvendorbin='$installvendorbin'
16379 installvendorlib='$installvendorlib'
16380 intsize='$intsize'
16381 issymlink='$issymlink'
16382 ivdformat='$ivdformat'
16383 ivsize='$ivsize'
16384 ivtype='$ivtype'
16385 known_extensions='$known_extensions'
16386 ksh='$ksh'
16387 ld='$ld'
16388 lddlflags='$lddlflags'
16389 ldflags='$ldflags'
16390 ldflags_uselargefiles='$ldflags_uselargefiles'
16391 ldlibpthname='$ldlibpthname'
16392 less='$less'
16393 lib_ext='$lib_ext'
16394 libc='$libc'
16395 libperl='$libperl'
16396 libpth='$libpth'
16397 libs='$libs'
16398 libsdirs='$libsdirs'
16399 libsfiles='$libsfiles'
16400 libsfound='$libsfound'
16401 libspath='$libspath'
16402 libswanted='$libswanted'
16403 libswanted_uselargefiles='$libswanted_uselargefiles'
16404 line='$line'
16405 lint='$lint'
16406 lkflags='$lkflags'
16407 ln='$ln'
16408 lns='$lns'
16409 locincpth='$locincpth'
16410 loclibpth='$loclibpth'
16411 longdblsize='$longdblsize'
16412 longlongsize='$longlongsize'
16413 longsize='$longsize'
16414 lp='$lp'
16415 lpr='$lpr'
16416 ls='$ls'
16417 lseeksize='$lseeksize'
16418 lseektype='$lseektype'
16419 mail='$mail'
16420 mailx='$mailx'
16421 make='$make'
16422 make_set_make='$make_set_make'
16423 mallocobj='$mallocobj'
16424 mallocsrc='$mallocsrc'
16425 malloctype='$malloctype'
16426 man1dir='$man1dir'
16427 man1direxp='$man1direxp'
16428 man1ext='$man1ext'
16429 man3dir='$man3dir'
16430 man3direxp='$man3direxp'
16431 man3ext='$man3ext'
16432 mips_type='$mips_type'
16433 mkdir='$mkdir'
16434 mmaptype='$mmaptype'
16435 modetype='$modetype'
16436 more='$more'
16437 multiarch='$multiarch'
16438 mv='$mv'
16439 myarchname='$myarchname'
16440 mydomain='$mydomain'
16441 myhostname='$myhostname'
16442 myuname='$myuname'
16443 n='$n'
16444 need_va_copy='$need_va_copy'
16445 netdb_hlen_type='$netdb_hlen_type'
16446 netdb_host_type='$netdb_host_type'
16447 netdb_name_type='$netdb_name_type'
16448 netdb_net_type='$netdb_net_type'
16449 nm='$nm'
16450 nm_opt='$nm_opt'
16451 nm_so_opt='$nm_so_opt'
16452 nonxs_ext='$nonxs_ext'
16453 nroff='$nroff'
16454 nvEUformat='$nvEUformat'
16455 nvFUformat='$nvFUformat'
16456 nvGUformat='$nvGUformat'
16457 nveformat='$nveformat'
16458 nvfformat='$nvfformat'
16459 nvgformat='$nvgformat'
16460 nvsize='$nvsize'
16461 nvtype='$nvtype'
16462 o_nonblock='$o_nonblock'
16463 obj_ext='$obj_ext'
16464 old_pthread_create_joinable='$old_pthread_create_joinable'
16465 optimize='$optimize'
16466 orderlib='$orderlib'
16467 osname='$osname'
16468 osvers='$osvers'
16469 otherlibdirs='$otherlibdirs'
16470 package='$package'
16471 pager='$pager'
16472 passcat='$passcat'
16473 patchlevel='$patchlevel'
16474 path_sep='$path_sep'
16475 perl5='$perl5'
16476 perl='$perl'
16477 perladmin='$perladmin'
16478 perllibs='$perllibs'
16479 perlpath='$perlpath'
16480 pg='$pg'
16481 phostname='$phostname'
16482 pidtype='$pidtype'
16483 plibpth='$plibpth'
16484 pm_apiversion='$pm_apiversion'
16485 pmake='$pmake'
16486 pr='$pr'
16487 prefix='$prefix'
16488 prefixexp='$prefixexp'
16489 privlib='$privlib'
16490 privlibexp='$privlibexp'
16491 prototype='$prototype'
16492 ptrsize='$ptrsize'
16493 quadkind='$quadkind'
16494 quadtype='$quadtype'
16495 randbits='$randbits'
16496 randfunc='$randfunc'
16497 randseedtype='$randseedtype'
16498 ranlib='$ranlib'
16499 rd_nodata='$rd_nodata'
16500 revision='$revision'
16501 rm='$rm'
16502 rmail='$rmail'
16503 runnm='$runnm'
16504 sPRIEUldbl='$sPRIEUldbl'
16505 sPRIFUldbl='$sPRIFUldbl'
16506 sPRIGUldbl='$sPRIGUldbl'
16507 sPRIXU64='$sPRIXU64'
16508 sPRId64='$sPRId64'
16509 sPRIeldbl='$sPRIeldbl'
16510 sPRIfldbl='$sPRIfldbl'
16511 sPRIgldbl='$sPRIgldbl'
16512 sPRIi64='$sPRIi64'
16513 sPRIo64='$sPRIo64'
16514 sPRIu64='$sPRIu64'
16515 sPRIx64='$sPRIx64'
16516 sSCNfldbl='$sSCNfldbl'
16517 sched_yield='$sched_yield'
16518 scriptdir='$scriptdir'
16519 scriptdirexp='$scriptdirexp'
16520 sed='$sed'
16521 seedfunc='$seedfunc'
16522 selectminbits='$selectminbits'
16523 selecttype='$selecttype'
16524 sendmail='$sendmail'
16525 sh='$sh'
16526 shar='$shar'
16527 sharpbang='$sharpbang'
16528 shmattype='$shmattype'
16529 shortsize='$shortsize'
16530 shrpenv='$shrpenv'
16531 shsharp='$shsharp'
16532 sig_count='$sig_count'
16533 sig_name='$sig_name'
16534 sig_name_init='$sig_name_init'
16535 sig_num='$sig_num'
16536 sig_num_init='$sig_num_init'
16537 sig_size='$sig_size'
16538 signal_t='$signal_t'
16539 sitearch='$sitearch'
16540 sitearchexp='$sitearchexp'
16541 sitebin='$sitebin'
16542 sitebinexp='$sitebinexp'
16543 sitelib='$sitelib'
16544 sitelib_stem='$sitelib_stem'
16545 sitelibexp='$sitelibexp'
16546 siteprefix='$siteprefix'
16547 siteprefixexp='$siteprefixexp'
16548 sizesize='$sizesize'
16549 sizetype='$sizetype'
16550 sleep='$sleep'
16551 smail='$smail'
16552 so='$so'
16553 sockethdr='$sockethdr'
16554 socketlib='$socketlib'
16555 socksizetype='$socksizetype'
16556 sort='$sort'
16557 spackage='$spackage'
16558 spitshell='$spitshell'
16559 src='$src'
16560 ssizetype='$ssizetype'
16561 startperl='$startperl'
16562 startsh='$startsh'
16563 static_ext='$static_ext'
16564 stdchar='$stdchar'
16565 stdio_base='$stdio_base'
16566 stdio_bufsiz='$stdio_bufsiz'
16567 stdio_cnt='$stdio_cnt'
16568 stdio_filbuf='$stdio_filbuf'
16569 stdio_ptr='$stdio_ptr'
16570 stdio_stream_array='$stdio_stream_array'
16571 strings='$strings'
16572 submit='$submit'
16573 subversion='$subversion'
16574 sysman='$sysman'
16575 tail='$tail'
16576 tar='$tar'
16577 tbl='$tbl'
16578 tee='$tee'
16579 test='$test'
16580 timeincl='$timeincl'
16581 timetype='$timetype'
16582 touch='$touch'
16583 tr='$tr'
16584 trnl='$trnl'
16585 troff='$troff'
16586 u16size='$u16size'
16587 u16type='$u16type'
16588 u32size='$u32size'
16589 u32type='$u32type'
16590 u64size='$u64size'
16591 u64type='$u64type'
16592 u8size='$u8size'
16593 u8type='$u8type'
16594 uidformat='$uidformat'
16595 uidsign='$uidsign'
16596 uidsize='$uidsize'
16597 uidtype='$uidtype'
16598 uname='$uname'
16599 uniq='$uniq'
16600 uquadtype='$uquadtype'
16601 use5005threads='$use5005threads'
16602 use64bitall='$use64bitall'
16603 use64bitint='$use64bitint'
16604 usedl='$usedl'
16605 useithreads='$useithreads'
16606 uselargefiles='$uselargefiles'
16607 uselongdouble='$uselongdouble'
16608 usemorebits='$usemorebits'
16609 usemultiplicity='$usemultiplicity'
16610 usemymalloc='$usemymalloc'
16611 usenm='$usenm'
16612 useopcode='$useopcode'
16613 useperlio='$useperlio'
16614 useposix='$useposix'
16615 usesfio='$usesfio'
16616 useshrplib='$useshrplib'
16617 usesocks='$usesocks'
16618 usethreads='$usethreads'
16619 usevendorprefix='$usevendorprefix'
16620 usevfork='$usevfork'
16621 usrinc='$usrinc'
16622 uuname='$uuname'
16623 uvXUformat='$uvXUformat'
16624 uvoformat='$uvoformat'
16625 uvsize='$uvsize'
16626 uvtype='$uvtype'
16627 uvuformat='$uvuformat'
16628 uvxformat='$uvxformat'
16629 vendorarch='$vendorarch'
16630 vendorarchexp='$vendorarchexp'
16631 vendorbin='$vendorbin'
16632 vendorbinexp='$vendorbinexp'
16633 vendorlib='$vendorlib'
16634 vendorlib_stem='$vendorlib_stem'
16635 vendorlibexp='$vendorlibexp'
16636 vendorprefix='$vendorprefix'
16637 vendorprefixexp='$vendorprefixexp'
16638 version='$version'
16639 versiononly='$versiononly'
16640 vi='$vi'
16641 voidflags='$voidflags'
16642 xlibpth='$xlibpth'
16643 xs_apiversion='$xs_apiversion'
16644 yacc='$yacc'
16645 yaccflags='$yaccflags'
16646 zcat='$zcat'
16647 zip='$zip'
16648 EOT
16649
16650 : Add in command line options if available
16651 $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
16652
16653 : add special variables
16654 $test -f $src/patchlevel.h && \
16655 awk '/^#define[         ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
16656 echo "CONFIGDOTSH=true" >>config.sh
16657
16658 : propagate old symbols
16659 if $test -f UU/config.sh; then
16660         <UU/config.sh $sort | $uniq >UU/oldconfig.sh
16661         sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
16662         $sort | $uniq -u >UU/oldsyms
16663         set X `cat UU/oldsyms`
16664         shift
16665         case $# in
16666         0) ;;
16667         *)
16668                 cat <<EOM
16669 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
16670 EOM
16671                 echo "# Variables propagated from previous config.sh file." >>config.sh
16672                 for sym in `cat UU/oldsyms`; do
16673                         echo "    Propagating $hint variable "'$'"$sym..."
16674                         eval 'tmp="$'"${sym}"'"'
16675                         echo "$tmp" | \
16676                                 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
16677                 done
16678                 ;;
16679         esac
16680 fi
16681
16682 : Finish up by extracting the .SH files
16683 case "$alldone" in
16684 exit)
16685         $rm -rf UU
16686         echo "Done."
16687         exit 0
16688         ;;
16689 cont)
16690         ;;
16691 '')
16692         dflt=''
16693         nostick=true
16694         $cat <<EOM
16695
16696 If you'd like to make any changes to the config.sh file before I begin
16697 to configure things, do it as a shell escape now (e.g. !vi config.sh).
16698
16699 EOM
16700         rp="Press return or use a shell escape to edit config.sh:"
16701         . UU/myread
16702         nostick=''
16703         case "$ans" in
16704         '') ;;
16705         *) : in case they cannot read
16706                 sh 1>&4 -c "$ans";;
16707         esac
16708         ;;
16709 esac
16710
16711 : if this fails, just run all the .SH files by hand
16712 . ./config.sh
16713
16714 echo " "
16715 exec 1>&4
16716 . ./UU/extract
16717
16718 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
16719         dflt=y
16720         case "$silent" in
16721         true) ;;
16722         *)
16723                 $cat <<EOM
16724
16725 Now you need to generate make dependencies by running "$make depend".
16726 You might prefer to run it in background: "$make depend > makedepend.out &"
16727 It can take a while, so you might not want to run it right now.
16728
16729 EOM
16730                 ;;
16731         esac
16732         rp="Run $make depend now?"
16733         . UU/myread
16734         case "$ans" in
16735         y*)
16736                 $make depend && echo "Now you must run '$make'."
16737                 ;;
16738         *)
16739                 echo "You must run '$make depend' then '$make'."
16740                 ;;
16741         esac
16742 elif test -f [Mm]akefile; then
16743         echo " "
16744         echo "Now you must run a $make."
16745 else
16746         echo "Done."
16747 fi
16748
16749 if $test -f Policy.sh; then
16750     $cat <<EOM
16751
16752 If you compile $package on a different machine or from a different object
16753 directory, copy the Policy.sh file from this object directory to the
16754 new one before you run Configure -- this will help you with most of
16755 the policy defaults.
16756
16757 EOM
16758 fi
16759 if $test -f config.msg; then
16760     echo "Hmm.  I also noted the following information while running:"
16761     echo " "
16762     $cat config.msg >&4
16763     $rm -f config.msg
16764 fi
16765 $rm -f kit*isdone ark*isdone
16766 $rm -rf UU
16767
16768 : End of Configure
16769