Add -stdio to the archname if no perlio selected,
[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 Thu Feb 22 15:19:20 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 $package allow
5303 alternate IO mechanisms via the PerlIO abstraction layer, but the
5304 stdio mechanism is still available if needed.  The abstraction layer
5305 can 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 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         ;;
5440 *)
5441         echo "Perlio not selected, using stdio." >&4
5442         case "$archname" in
5443         *-stdio*) echo "...and architecture name already has -stdio." >&4
5444                 ;;
5445         *)      archname="$archname-stdio"
5446                 echo "...setting architecture name to $archname." >&4
5447                 ;;
5448         esac
5449         ;;
5450 esac
5451
5452 : determine root of directory hierarchy where package will be installed.
5453 case "$prefix" in
5454 '')
5455         dflt=`./loc . /usr/local /usr/local /local /opt /usr`
5456         ;;
5457 *)
5458         dflt="$prefix"
5459         ;;
5460 esac
5461 $cat <<EOM
5462
5463 By default, $package will be installed in $dflt/bin, manual pages
5464 under $dflt/man, etc..., i.e. with $dflt as prefix for all
5465 installation directories. Typically this is something like /usr/local.
5466 If you wish to have binaries under /usr/bin but other parts of the
5467 installation under /usr/local, that's ok: you will be prompted
5468 separately for each of the installation directories, the prefix being
5469 only used to set the defaults.
5470
5471 EOM
5472 fn=d~
5473 rp='Installation prefix to use?'
5474 . ./getfile
5475 oldprefix=''
5476 case "$prefix" in
5477 '') ;;
5478 *)
5479         case "$ans" in
5480         "$prefix") ;;
5481         *) oldprefix="$prefix";;
5482         esac
5483         ;;
5484 esac
5485 prefix="$ans"
5486 prefixexp="$ansexp"
5487
5488 : is AFS running?
5489 echo " "
5490 case "$afs" in
5491 $define|true)   afs=true ;;
5492 $undef|false)   afs=false ;;
5493 *)      if test -d /afs; then
5494                 afs=true
5495         else
5496                 afs=false
5497         fi
5498         ;;
5499 esac
5500 if $afs; then
5501         echo "AFS may be running... I'll be extra cautious then..." >&4
5502 else
5503         echo "AFS does not seem to be running..." >&4
5504 fi
5505
5506 : determine installation prefix for where package is to be installed.
5507 if $afs; then 
5508 $cat <<EOM
5509
5510 Since you are running AFS, I need to distinguish the directory in which
5511 files will reside from the directory in which they are installed (and from
5512 which they are presumably copied to the former directory by occult means).
5513
5514 EOM
5515         case "$installprefix" in
5516         '') dflt=`echo $prefix | sed 's#^/afs/#/afs/.#'`;;
5517         *) dflt="$installprefix";;
5518         esac
5519 else
5520 $cat <<EOM
5521
5522 In some special cases, particularly when building $package for distribution,
5523 it is convenient to distinguish between the directory in which files should 
5524 be installed from the directory ($prefix) in which they 
5525 will eventually reside.  For most users, these two directories are the same.
5526
5527 EOM
5528         case "$installprefix" in
5529         '') dflt=$prefix ;;
5530         *) dflt=$installprefix;;
5531         esac
5532 fi
5533 fn=d~
5534 rp='What installation prefix should I use for installing files?'
5535 . ./getfile
5536 installprefix="$ans"
5537 installprefixexp="$ansexp"
5538
5539 : set the prefixit variable, to compute a suitable default value
5540 prefixit='case "$3" in
5541 ""|none)
5542         case "$oldprefix" in
5543         "") eval "$1=\"\$$2\"";;
5544         *)
5545                 case "$3" in
5546                 "") eval "$1=";;
5547                 none)
5548                         eval "tp=\"\$$2\"";
5549                         case "$tp" in
5550                         ""|" ") eval "$1=\"\$$2\"";;
5551                         *) eval "$1=";;
5552                         esac;;
5553                 esac;;
5554         esac;;
5555 *)
5556         eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
5557         case "$tp" in
5558         --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
5559         /*-$oldprefix/*|\~*-$oldprefix/*)
5560                 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
5561         *) eval "$1=\"\$$2\"";;
5562         esac;;
5563 esac'
5564
5565
5566 : get the patchlevel
5567 echo " "
5568 echo "Getting the current patchlevel..." >&4
5569 if $test -r $rsrc/patchlevel.h;then
5570         revision=`awk '/define[         ]+PERL_REVISION/ {print $3}' $rsrc/patchlevel.h`
5571         patchlevel=`awk '/define[       ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
5572         subversion=`awk '/define[       ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
5573         api_revision=`awk '/define[     ]+PERL_API_REVISION/ {print $3}' $rsrc/patchlevel.h`
5574         api_version=`awk '/define[      ]+PERL_API_VERSION/ {print $3}' $rsrc/patchlevel.h`
5575         api_subversion=`awk '/define[   ]+PERL_API_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
5576 else
5577         revision=0
5578         patchlevel=0
5579         subversion=0
5580         api_revision=0
5581         api_version=0
5582         api_subversion=0
5583 fi
5584 $echo "(You have $package version $patchlevel subversion $subversion.)"
5585 case "$osname" in
5586 dos|vms)
5587         : XXX Should be a Configure test for double-dots in filenames.
5588         version=`echo $revision $patchlevel $subversion | \
5589                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
5590         api_versionstring=`echo $api_revision $api_version $api_subversion | \
5591                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
5592         ;;
5593 *)
5594         version=`echo $revision $patchlevel $subversion | \
5595                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
5596         api_versionstring=`echo $api_revision $api_version $api_subversion | \
5597                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
5598         ;;
5599 esac
5600 : Special case the 5.005_xx maintenance series, which used 5.005
5601 : without any subversion label as a subdirectory in $sitelib
5602 if test "${api_revision}${api_version}${api_subversion}" = "550"; then
5603         api_versionstring='5.005'
5604 fi
5605
5606 : determine installation style
5607 : For now, try to deduce it from prefix unless it is already set.
5608 : Reproduce behavior of 5.005 and earlier, maybe drop that in 5.7.
5609 case "$installstyle" in
5610 '')     case "$prefix" in
5611                 *perl*) dflt='lib';;
5612                 *) dflt='lib/perl5' ;;
5613         esac
5614         ;;
5615 *)      dflt="$installstyle" ;;
5616 esac
5617 : Probably not worth prompting for this since we prompt for all
5618 : the directories individually, and the prompt would be too long and
5619 : confusing anyway.
5620 installstyle=$dflt
5621
5622 : determine where private library files go
5623 : Usual default is /usr/local/lib/perl5/$version.
5624 : Also allow things like /opt/perl/lib/$version, since 
5625 : /opt/perl/lib/perl5... would be redundant.
5626 : The default "style" setting is made in installstyle.U
5627 case "$installstyle" in
5628 *lib/perl5*) set dflt privlib lib/$package/$version ;;
5629 *)       set dflt privlib lib/$version ;;
5630 esac
5631 eval $prefixit
5632 $cat <<EOM
5633
5634 There are some auxiliary files for $package that need to be put into a
5635 private library directory that is accessible by everyone.
5636
5637 EOM
5638 fn=d~+
5639 rp='Pathname where the private library files will reside?'
5640 . ./getfile
5641 privlib="$ans"
5642 privlibexp="$ansexp"
5643 : Change installation prefix, if necessary.
5644 if $test X"$prefix" != X"$installprefix"; then
5645         installprivlib=`echo $privlibexp | sed "s#^$prefix#$installprefix#"`
5646 else
5647         installprivlib="$privlibexp"
5648 fi
5649
5650 : set the prefixup variable, to restore leading tilda escape
5651 prefixup='case "$prefixexp" in
5652 "$prefix") ;;
5653 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
5654 esac'
5655
5656 : determine where public architecture dependent libraries go
5657 set archlib archlib
5658 eval $prefixit
5659 : privlib default is /usr/local/lib/$package/$version
5660 : archlib default is /usr/local/lib/$package/$version/$archname
5661 : privlib may have an optional trailing /share.
5662 tdflt=`echo $privlib | $sed 's,/share$,,'`
5663 tdflt=$tdflt/$archname
5664 case "$archlib" in
5665 '')     dflt=$tdflt
5666         ;;
5667 *)      dflt="$archlib"
5668     ;;
5669 esac
5670 $cat <<EOM
5671
5672 $spackage contains architecture-dependent library files.  If you are
5673 sharing libraries in a heterogeneous environment, you might store
5674 these files in a separate location.  Otherwise, you can just include
5675 them with the rest of the public library files.
5676
5677 EOM
5678 fn=d+~
5679 rp='Where do you want to put the public architecture-dependent libraries?'
5680 . ./getfile
5681 archlib="$ans"
5682 archlibexp="$ansexp"
5683 if $test X"$archlib" = X"$privlib"; then
5684         d_archlib="$undef"
5685 else
5686         d_archlib="$define"
5687 fi
5688 : Change installation prefix, if necessary.
5689 if $test X"$prefix" != X"$installprefix"; then
5690         installarchlib=`echo $archlibexp | sed "s#^$prefix#$installprefix#"`
5691 else
5692         installarchlib="$archlibexp"
5693 fi
5694
5695
5696 : Binary compatibility with 5.005 is not possible for builds
5697 : with advanced features
5698 case "$usethreads$usemultiplicity" in
5699 *define*)
5700         bincompat5005="$undef"
5701         d_bincompat5005="$undef"
5702         ;;
5703 *)      $cat <<EOM
5704
5705 This version of Perl can be compiled for binary compatibility with 5.005.
5706 If you decide to do so, you will be able to continue using most of the
5707 extensions that were compiled for Perl 5.005.
5708
5709 EOM
5710         case "$bincompat5005$d_bincompat5005" in
5711         *"$undef"*) dflt=n ;;
5712         *) dflt=y ;;
5713         esac
5714         rp='Binary compatibility with Perl 5.005?'
5715         . ./myread
5716         case "$ans" in
5717         y*) val="$define" ;;
5718         *)  val="$undef" ;;
5719         esac
5720         set d_bincompat5005
5721         eval $setvar
5722         case "$d_bincompat5005" in
5723         "$define")
5724                 bincompat5005="$define"
5725                 ;;
5726         *)      bincompat5005="$undef"
5727                 d_bincompat5005="$undef"
5728                 ;;
5729         esac
5730         ;;
5731 esac
5732
5733
5734 : see if setuid scripts can be secure
5735 $cat <<EOM
5736
5737 Some kernels have a bug that prevents setuid #! scripts from being
5738 secure.  Some sites have disabled setuid #! scripts because of this.
5739
5740 First let's decide if your kernel supports secure setuid #! scripts.
5741 (If setuid #! scripts would be secure but have been disabled anyway,
5742 don't say that they are secure if asked.)
5743
5744 EOM
5745
5746 val="$undef"
5747 if $test -d /dev/fd; then
5748         echo "#!$ls" >reflect
5749         chmod +x,u+s reflect
5750         ./reflect >flect 2>&1
5751         if $contains "/dev/fd" flect >/dev/null; then
5752                 echo "Congratulations, your kernel has secure setuid scripts!" >&4
5753                 val="$define"
5754         else
5755                 $cat <<EOM
5756 If you are not sure if they are secure, I can check but I'll need a
5757 username and password different from the one you are using right now.
5758 If you don't have such a username or don't want me to test, simply
5759 enter 'none'.
5760
5761 EOM
5762                 rp='Other username to test security of setuid scripts with?'
5763                 dflt='none'
5764                 . ./myread
5765                 case "$ans" in
5766                 n|none)
5767                         case "$d_suidsafe" in
5768                         '')     echo "I'll assume setuid scripts are *not* secure." >&4
5769                                 dflt=n;;
5770                         "$undef")
5771                                 echo "Well, the $hint value is *not* secure." >&4
5772                                 dflt=n;;
5773                         *)      echo "Well, the $hint value *is* secure." >&4
5774                                 dflt=y;;
5775                         esac
5776                         ;;
5777                 *)
5778                         $rm -f reflect flect
5779                         echo "#!$ls" >reflect
5780                         chmod +x,u+s reflect
5781                         echo >flect
5782                         chmod a+w flect
5783                         echo '"su" will (probably) prompt you for '"$ans's password."
5784                         su $ans -c './reflect >flect'
5785                         if $contains "/dev/fd" flect >/dev/null; then
5786                                 echo "Okay, it looks like setuid scripts are secure." >&4
5787                                 dflt=y
5788                         else
5789                                 echo "I don't think setuid scripts are secure." >&4
5790                                 dflt=n
5791                         fi
5792                         ;;
5793                 esac
5794                 rp='Does your kernel have *secure* setuid scripts?'
5795                 . ./myread
5796                 case "$ans" in
5797                 [yY]*)  val="$define";;
5798                 *)      val="$undef";;
5799                 esac
5800         fi
5801 else
5802         echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
5803         echo "(That's for file descriptors, not floppy disks.)"
5804         val="$undef"
5805 fi
5806 set d_suidsafe
5807 eval $setvar
5808
5809 $rm -f reflect flect
5810
5811 : now see if they want to do setuid emulation
5812 echo " "
5813 val="$undef"
5814 case "$d_suidsafe" in
5815 "$define")
5816         val="$undef"
5817         echo "No need to emulate SUID scripts since they are secure here." >& 4
5818         ;;
5819 *)
5820         $cat <<EOM
5821 Some systems have disabled setuid scripts, especially systems where
5822 setuid scripts cannot be secure.  On systems where setuid scripts have
5823 been disabled, the setuid/setgid bits on scripts are currently
5824 useless.  It is possible for $package to detect those bits and emulate
5825 setuid/setgid in a secure fashion.  This emulation will only work if
5826 setuid scripts have been disabled in your kernel.
5827
5828 EOM
5829         case "$d_dosuid" in
5830         "$define") dflt=y ;;
5831         *) dflt=n ;;
5832         esac
5833         rp="Do you want to do setuid/setgid emulation?"
5834         . ./myread
5835         case "$ans" in
5836         [yY]*)  val="$define";;
5837         *)      val="$undef";;
5838         esac
5839         ;;
5840 esac
5841 set d_dosuid
5842 eval $setvar
5843
5844 : determine filename position in cpp output
5845 echo " "
5846 echo "Computing filename position in cpp output for #include directives..." >&4
5847 echo '#include <stdio.h>' > foo.c
5848 $cat >fieldn <<EOF
5849 $startsh
5850 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
5851 $grep '^[       ]*#.*stdio\.h' | \
5852 while read cline; do
5853         pos=1
5854         set \$cline
5855         while $test \$# -gt 0; do
5856                 if $test -r \`echo \$1 | $tr -d '"'\`; then
5857                         echo "\$pos"
5858                         exit 0
5859                 fi
5860                 shift
5861                 pos=\`expr \$pos + 1\`
5862         done
5863 done
5864 EOF
5865 chmod +x fieldn
5866 fieldn=`./fieldn`
5867 $rm -f foo.c fieldn
5868 case $fieldn in
5869 '') pos='???';;
5870 1) pos=first;;
5871 2) pos=second;;
5872 3) pos=third;;
5873 *) pos="${fieldn}th";;
5874 esac
5875 echo "Your cpp writes the filename in the $pos field of the line."
5876
5877 : locate header file
5878 $cat >findhdr <<EOF
5879 $startsh
5880 wanted=\$1
5881 name=''
5882 for usrincdir in $usrinc
5883 do
5884         if test -f \$usrincdir/\$wanted; then
5885                 echo "\$usrincdir/\$wanted"
5886                 exit 0
5887         fi
5888 done
5889 awkprg='{ print \$$fieldn }'
5890 echo "#include <\$wanted>" > foo\$\$.c
5891 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
5892 $grep "^[       ]*#.*\$wanted" | \
5893 while read cline; do
5894         name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
5895         case "\$name" in
5896         *[/\\\\]\$wanted) echo "\$name"; exit 1;;
5897         *[\\\\/]\$wanted) echo "\$name"; exit 1;;
5898         *) exit 2;;
5899         esac;
5900 done;
5901 #
5902 # status = 0: grep returned 0 lines, case statement not executed
5903 # status = 1: headerfile found
5904 # status = 2: while loop executed, no headerfile found
5905 #
5906 status=\$?
5907 $rm -f foo\$\$.c;
5908 if test \$status -eq 1; then
5909         exit 0;
5910 fi
5911 exit 1
5912 EOF
5913 chmod +x findhdr
5914
5915 : define an alternate in-header-list? function
5916 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
5917 cont=true; xxf="echo \"<\$1> found.\" >&4";
5918 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
5919 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
5920 esac;
5921 case $# in 4) instead=instead;; *) instead="at last";; esac;
5922 while $test "$cont"; do
5923         xxx=`./findhdr $1`
5924         var=$2; eval "was=\$$2";
5925         if $test "$xxx" && $test -r "$xxx";
5926         then eval $xxf;
5927         eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
5928                 cont="";
5929         else eval $xxnf;
5930         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
5931         set $yyy; shift; shift; yyy=$@;
5932         case $# in 0) cont="";;
5933         2) xxf="echo \"but I found <\$1> $instead.\" >&4";
5934                 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
5935         *) xxf="echo \"but I found <\$1\> instead.\" >&4";
5936                 xxnf="echo \"there is no <\$1>, ...\" >&4";;
5937         esac;
5938 done;
5939 while $test "$yyy";
5940 do set $yyy; var=$2; eval "was=\$$2";
5941         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
5942         set $yyy; shift; shift; yyy=$@;
5943 done'
5944
5945 : see if this is a malloc.h system
5946 set malloc.h i_malloc
5947 eval $inhdr
5948
5949 : see if stdlib is available
5950 set stdlib.h i_stdlib
5951 eval $inhdr
5952
5953 : determine which malloc to compile in
5954 echo " "
5955 case "$usemymalloc" in
5956 ''|[yY]*|true|$define)  dflt='y' ;;
5957 *)      dflt='n' ;;
5958 esac
5959 rp="Do you wish to attempt to use the malloc that comes with $package?"
5960 . ./myread
5961 usemymalloc="$ans"
5962 case "$ans" in
5963 y*|true)
5964         usemymalloc='y'
5965         mallocsrc='malloc.c'
5966         mallocobj="malloc$_o"
5967         d_mymalloc="$define"
5968         case "$libs" in
5969         *-lmalloc*)
5970                 : Remove malloc from list of libraries to use
5971                 echo "Removing unneeded -lmalloc from library list" >&4
5972                 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
5973                 shift
5974                 libs="$*"
5975                 echo "libs = $libs" >&4
5976                 ;;
5977         esac
5978         ;;
5979 *)
5980         usemymalloc='n'
5981         mallocsrc=''
5982         mallocobj=''
5983         d_mymalloc="$undef"
5984         ;;
5985 esac
5986
5987 : compute the return types of malloc and free
5988 echo " "
5989 $cat >malloc.c <<END
5990 #$i_malloc I_MALLOC
5991 #$i_stdlib I_STDLIB
5992 #include <stdio.h>
5993 #include <sys/types.h>
5994 #ifdef I_MALLOC
5995 #include <malloc.h>
5996 #endif
5997 #ifdef I_STDLIB
5998 #include <stdlib.h>
5999 #endif
6000 #ifdef TRY_MALLOC
6001 void *malloc();
6002 #endif
6003 #ifdef TRY_FREE
6004 void free();
6005 #endif
6006 END
6007 case "$malloctype" in
6008 '')
6009         if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
6010                 malloctype='void *'
6011         else
6012                 malloctype='char *'
6013         fi
6014         ;;
6015 esac
6016 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
6017
6018 case "$freetype" in
6019 '')
6020         if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
6021                 freetype='void'
6022         else
6023                 freetype='int'
6024         fi
6025         ;;
6026 esac
6027 echo "Your system uses $freetype free(), it would seem." >&4
6028 $rm -f malloc.[co]
6029 $cat <<EOM
6030
6031 After $package is installed, you may wish to install various
6032 add-on modules and utilities.  Typically, these add-ons will
6033 be installed under $prefix with the rest
6034 of this package.  However, you may wish to install such add-ons
6035 elsewhere under a different prefix.
6036
6037 If you do not wish to put everything under a single prefix, that's
6038 ok.  You will be prompted for the individual locations; this siteprefix
6039 is only used to suggest the defaults.
6040
6041 The default should be fine for most people.
6042
6043 EOM
6044 fn=d~+
6045 rp='Installation prefix to use for add-on modules and utilities?'
6046 : XXX Here might be another good place for an installstyle setting.
6047 case "$siteprefix" in
6048 '') dflt=$prefix ;;
6049 *)  dflt=$siteprefix ;;
6050 esac
6051 . ./getfile
6052 : XXX Prefixit unit does not yet support siteprefix and vendorprefix
6053 oldsiteprefix=''
6054 case "$siteprefix" in
6055 '') ;;
6056 *)      case "$ans" in
6057         "$prefix") ;;
6058         *) oldsiteprefix="$prefix";;
6059         esac
6060         ;;
6061 esac
6062 siteprefix="$ans"
6063 siteprefixexp="$ansexp"
6064
6065 : determine where site specific libraries go.
6066 : Usual default is /usr/local/lib/perl5/site_perl/$version
6067 : The default "style" setting is made in installstyle.U
6068 : XXX No longer works with Prefixit stuff.
6069 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6070 case "$sitelib" in
6071 '') case "$installstyle" in
6072         *lib/perl5*) dflt=$siteprefix/lib/$package/site_$prog/$version ;;
6073         *)       dflt=$siteprefix/lib/site_$prog/$version ;;
6074         esac
6075         ;;
6076 *)      dflt="$sitelib"
6077         ;;
6078 esac
6079 $cat <<EOM
6080
6081 The installation process will create a directory for
6082 site-specific extensions and modules.  Most users find it convenient
6083 to place all site-specific files in this directory rather than in the
6084 main distribution directory.
6085
6086 EOM
6087 fn=d~+
6088 rp='Pathname for the site-specific library files?'
6089 . ./getfile
6090 sitelib="$ans"
6091 sitelibexp="$ansexp"
6092 sitelib_stem=`echo "$sitelibexp" | sed "s,/$version$,,"`
6093 : Change installation prefix, if necessary.
6094 if $test X"$prefix" != X"$installprefix"; then
6095         installsitelib=`echo $sitelibexp | $sed "s#^$prefix#$installprefix#"`
6096 else
6097         installsitelib="$sitelibexp"
6098 fi
6099
6100 : determine where site specific architecture-dependent libraries go.
6101 : sitelib  default is /usr/local/lib/perl5/site_perl/$version
6102 : sitearch default is /usr/local/lib/perl5/site_perl/$version/$archname
6103 : sitelib may have an optional trailing /share.
6104 case "$sitearch" in
6105 '')     dflt=`echo $sitelib | $sed 's,/share$,,'`
6106         dflt="$dflt/$archname"
6107         ;;
6108 *)      dflt="$sitearch"
6109         ;;
6110 esac
6111 set sitearch sitearch none
6112 eval $prefixit
6113 $cat <<EOM
6114
6115 The installation process will also create a directory for
6116 architecture-dependent site-specific extensions and modules.
6117
6118 EOM
6119 fn=d~+
6120 rp='Pathname for the site-specific architecture-dependent library files?'
6121 . ./getfile
6122 sitearch="$ans"
6123 sitearchexp="$ansexp"
6124 : Change installation prefix, if necessary.
6125 if $test X"$prefix" != X"$installprefix"; then
6126         installsitearch=`echo $sitearchexp | sed "s#^$prefix#$installprefix#"`
6127 else
6128         installsitearch="$sitearchexp"
6129 fi
6130
6131 $cat <<EOM
6132
6133 The installation process will also create a directory for
6134 vendor-supplied add-ons.  Vendors who supply perl with their system
6135 may find it convenient to place all vendor-supplied files in this
6136 directory rather than in the main distribution directory.  This will
6137 ease upgrades between binary-compatible maintenance versions of perl.
6138
6139 Of course you may also use these directories in whatever way you see
6140 fit.  For example, you might use them to access modules shared over a
6141 company-wide network.
6142
6143 The default answer should be fine for most people.
6144 This causes further questions about vendor add-ons to be skipped
6145 and no vendor-specific directories will be configured for perl.
6146
6147 EOM
6148 rp='Do you want to configure vendor-specific add-on directories?'
6149 case "$usevendorprefix" in
6150 define|true|[yY]*) dflt=y ;;
6151 *)      : User may have set vendorprefix directly on Configure command line.
6152         case "$vendorprefix" in
6153         ''|' ') dflt=n ;;
6154         *)      dflt=y ;;
6155         esac
6156         ;;
6157 esac
6158 . ./myread
6159 case "$ans" in
6160 [yY]*)  fn=d~+
6161         rp='Installation prefix to use for vendor-supplied add-ons?'
6162         case "$vendorprefix" in
6163         '') dflt='' ;;
6164         *)  dflt=$vendorprefix ;;
6165         esac
6166         . ./getfile
6167         : XXX Prefixit unit does not yet support siteprefix and vendorprefix
6168         oldvendorprefix=''
6169         case "$vendorprefix" in
6170         '') ;;
6171         *)      case "$ans" in
6172                 "$prefix") ;;
6173                 *) oldvendorprefix="$prefix";;
6174                 esac
6175                 ;;
6176         esac
6177         usevendorprefix="$define"
6178         vendorprefix="$ans"
6179         vendorprefixexp="$ansexp"
6180         ;;
6181 *)      usevendorprefix="$undef"
6182         vendorprefix=''
6183         vendorprefixexp=''
6184         ;;
6185 esac
6186
6187 case "$vendorprefix" in
6188 '')     d_vendorlib="$undef"
6189         vendorlib=''
6190         vendorlibexp=''
6191         ;;
6192 *)      d_vendorlib="$define"
6193         : determine where vendor-supplied modules go.
6194         : Usual default is /usr/local/lib/perl5/vendor_perl/$version
6195         case "$vendorlib" in
6196         '')
6197                 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6198                 case "$installstyle" in
6199                 *lib/perl5*) dflt=$vendorprefix/lib/$package/vendor_$prog/$version ;;
6200                 *)           dflt=$vendorprefix/lib/vendor_$prog/$version ;;
6201                 esac
6202                 ;;
6203         *)      dflt="$vendorlib"
6204                 ;;
6205         esac
6206         fn=d~+
6207         rp='Pathname for the vendor-supplied library files?'
6208         . ./getfile
6209         vendorlib="$ans"
6210         vendorlibexp="$ansexp"
6211         ;;
6212 esac
6213 vendorlib_stem=`echo "$vendorlibexp" | sed "s,/$version$,,"`
6214 : Change installation prefix, if necessary.
6215 if $test X"$prefix" != X"$installprefix"; then
6216         installvendorlib=`echo $vendorlibexp | $sed "s#^$prefix#$installprefix#"`
6217 else
6218         installvendorlib="$vendorlibexp"
6219 fi
6220
6221 case "$vendorprefix" in
6222 '')     d_vendorarch="$undef"
6223         vendorarch=''
6224         vendorarchexp=''
6225         ;;
6226 *)      d_vendorarch="$define"
6227         : determine where vendor-supplied architecture-dependent libraries go.
6228         : vendorlib  default is /usr/local/lib/perl5/vendor_perl/$version
6229         : vendorarch default is /usr/local/lib/perl5/vendor_perl/$version/$archname
6230         : vendorlib may have an optional trailing /share.
6231         case "$vendorarch" in
6232         '')     dflt=`echo $vendorlib | $sed 's,/share$,,'`
6233                 dflt="$dflt/$archname"
6234                 ;;
6235         *)      dflt="$vendorarch" ;;
6236         esac
6237         fn=d~+
6238         rp='Pathname for vendor-supplied architecture-dependent files?'
6239         . ./getfile
6240         vendorarch="$ans"
6241         vendorarchexp="$ansexp"
6242         ;;
6243 esac
6244 : Change installation prefix, if necessary.
6245 if $test X"$prefix" != X"$installprefix"; then
6246         installvendorarch=`echo $vendorarchexp | sed "s#^$prefix#$installprefix#"`
6247 else
6248         installvendorarch="$vendorarchexp"
6249 fi
6250
6251 : Final catch-all directories to search
6252 $cat <<EOM
6253
6254 Lastly, you can have perl look in other directories for extensions and
6255 modules in addition to those already specified.
6256 These directories will be searched after 
6257         $sitearch 
6258         $sitelib 
6259 EOM
6260 test X"$vendorlib" != "X" && echo '     ' $vendorlib
6261 test X"$vendorarch" != "X" && echo '    ' $vendorarch
6262 echo ' '
6263 case "$otherlibdirs" in
6264 ''|' ') dflt='none' ;;
6265 *)      dflt="$otherlibdirs" ;;
6266 esac
6267 $cat <<EOM
6268 Enter a colon-separated set of extra paths to include in perl's @INC
6269 search path, or enter 'none' for no extra paths.
6270
6271 EOM
6272
6273 rp='Colon-separated list of additional directories for perl to search?'
6274 . ./myread
6275 case "$ans" in
6276 ' '|''|none)    otherlibdirs=' ' ;;     
6277 *)      otherlibdirs="$ans" ;;
6278 esac
6279 case "$otherlibdirs" in
6280 ' ') val=$undef ;;
6281 *)      val=$define ;;
6282 esac
6283 set d_perl_otherlibdirs
6284 eval $setvar
6285
6286 : Cruising for prototypes
6287 echo " "
6288 echo "Checking out function prototypes..." >&4
6289 $cat >prototype.c <<'EOCP'
6290 int main(int argc, char *argv[]) {
6291         exit(0);}
6292 EOCP
6293 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
6294         echo "Your C compiler appears to support function prototypes."
6295         val="$define"
6296 else
6297         echo "Your C compiler doesn't seem to understand function prototypes."
6298         val="$undef"
6299 fi
6300 set prototype
6301 eval $setvar
6302 $rm -f prototype*
6303
6304 case "$prototype" in
6305 "$define") ;;
6306 *)      ansi2knr='ansi2knr'
6307         echo " "
6308         cat <<EOM >&4
6309
6310 $me:  FATAL ERROR:
6311 This version of $package can only be compiled by a compiler that 
6312 understands function prototypes.  Unfortunately, your C compiler 
6313         $cc $ccflags
6314 doesn't seem to understand them.  Sorry about that.
6315
6316 If GNU cc is available for your system, perhaps you could try that instead.  
6317
6318 Eventually, we hope to support building Perl with pre-ANSI compilers.
6319 If you would like to help in that effort, please contact <perlbug@perl.org>.
6320
6321 Aborting Configure now.
6322 EOM
6323         exit 2
6324         ;;
6325 esac
6326
6327 : determine where public executables go
6328 echo " "
6329 set dflt bin bin
6330 eval $prefixit
6331 fn=d~
6332 rp='Pathname where the public executables will reside?'
6333 . ./getfile
6334 if $test "X$ansexp" != "X$binexp"; then
6335         installbin=''
6336 fi
6337 bin="$ans"
6338 binexp="$ansexp"
6339 : Change installation prefix, if necessary.
6340 : XXX Bug? -- ignores Configure -Dinstallprefix setting.
6341 if $test X"$prefix" != X"$installprefix"; then
6342         installbin=`echo $binexp | sed "s#^$prefix#$installprefix#"`
6343 else
6344         installbin="$binexp"
6345 fi
6346
6347 : Find perl5.005 or later.
6348 echo "Looking for a previously installed perl5.005 or later... "
6349 case "$perl5" in
6350 '')     for tdir in `echo "$binexp:$PATH" | $sed "s/$path_sep/ /g"`; do
6351                 : Check if this perl is recent and can load a simple module
6352                 if $test -x $tdir/perl && $tdir/perl -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6353                         perl5=$tdir/perl
6354                         break;
6355                 elif $test -x $tdir/perl5 && $tdir/perl5 -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6356                         perl5=$tdir/perl
6357                         break;
6358                 fi
6359         done
6360         ;;
6361 *)      perl5="$perl5"
6362         ;;
6363 esac
6364 case "$perl5" in
6365 '')     echo "None found.  That's ok.";;
6366 *)      echo "Using $perl5." ;;
6367 esac
6368
6369 : Determine list of previous versions to include in @INC
6370 $cat > getverlist <<EOPL
6371 #!$perl5 -w
6372 use File::Basename;
6373 \$api_versionstring = "$api_versionstring";
6374 \$version = "$version";
6375 \$stem = "$sitelib_stem";
6376 \$archname = "$archname";
6377 EOPL
6378         $cat >> getverlist <<'EOPL'
6379 # Can't have leading @ because metaconfig interprets it as a command!
6380 ;@inc_version_list=();
6381 # XXX Redo to do opendir/readdir? 
6382 if (-d $stem) {
6383     chdir($stem);
6384     ;@candidates = glob("5.*");
6385 }
6386 else {
6387     ;@candidates = ();
6388 }
6389
6390 # XXX ToDo:  These comparisons must be reworked when two-digit
6391 # subversions come along, so that 5.7.10 compares as greater than
6392 # 5.7.3!  By that time, hope that 5.6.x is sufficiently
6393 # widespread that we can use the built-in version vectors rather
6394 # than reinventing them here.  For 5.6.0, however, we must
6395 # assume this script will likely be run by 5.005_0x.  --AD 1/2000.
6396 foreach $d (@candidates) {
6397     if ($d lt $version) {
6398         if ($d ge $api_versionstring) {
6399             unshift(@inc_version_list, grep { -d } "$d/$archname", $d);
6400         }
6401         elsif ($d ge "5.005") {
6402             unshift(@inc_version_list, grep { -d } $d);
6403         }
6404     }
6405     else {
6406         # Skip newer version.  I.e. don't look in
6407         # 5.7.0 if we're installing 5.6.1.
6408     }
6409 }
6410
6411 if (@inc_version_list) {
6412     print join(' ', @inc_version_list);
6413 }
6414 else {
6415     # Blank space to preserve value for next Configure run.
6416     print " ";
6417 }
6418 EOPL
6419 chmod +x getverlist
6420 case "$inc_version_list" in
6421 '')     if test -x "$perl5"; then
6422                 dflt=`$perl5 getverlist`
6423         else
6424                 dflt='none'
6425         fi
6426         ;;
6427 $undef) dflt='none' ;;
6428 *)  dflt="$inc_version_list" ;;
6429 esac
6430 case "$dflt" in
6431 ''|' ') dflt=none ;;
6432 esac
6433 case "$dflt" in
6434 5.005) case "$bincompat5005" in
6435        $define|true|[yY]*) ;;
6436        *) dflt=none ;;
6437        esac
6438        ;;
6439 esac
6440 $cat <<'EOM'
6441
6442 In order to ease the process of upgrading, this version of perl 
6443 can be configured to use modules built and installed with earlier 
6444 versions of perl that were installed under $prefix.  Specify here
6445 the list of earlier versions that this version of perl should check.
6446 If Configure detected no earlier versions of perl installed under
6447 $prefix, then the list will be empty.  Answer 'none' to tell perl
6448 to not search earlier versions.
6449
6450 The default should almost always be sensible, so if you're not sure,
6451 just accept the default.
6452 EOM
6453
6454 rp='List of earlier versions to include in @INC?'
6455 . ./myread
6456 case "$ans" in
6457 [Nn]one|''|' ') inc_version_list=' ' ;;
6458 *) inc_version_list="$ans" ;;
6459 esac
6460 case "$inc_version_list" in
6461 ''|' ') 
6462         inc_version_list_init='0';;
6463 *)      inc_version_list_init=`echo $inc_version_list |
6464                 $sed -e 's/^/"/' -e 's/ /","/g' -e 's/$/",0/'`
6465         ;;
6466 esac
6467 $rm -f getverlist
6468
6469 : determine whether to install perl also as /usr/bin/perl
6470
6471 echo " "
6472 if $test -d /usr/bin -a "X$installbin" != X/usr/bin; then
6473         $cat <<EOM
6474 Many scripts expect perl to be installed as /usr/bin/perl.
6475 I can install the perl you are about to compile also as /usr/bin/perl
6476 (in addition to $installbin/perl).
6477 EOM
6478         case "$installusrbinperl" in
6479         "$undef"|[nN]*) dflt='n';;
6480         *)              dflt='y';;
6481         esac
6482         rp="Do you want to install perl as /usr/bin/perl?"
6483         . ./myread
6484         case "$ans" in
6485         [yY]*)  val="$define";;
6486         *)      val="$undef" ;;
6487         esac
6488 else
6489         val="$undef"
6490 fi
6491 set installusrbinperl
6492 eval $setvar
6493
6494 : see if dld is available
6495 set dld.h i_dld
6496 eval $inhdr
6497
6498 : see if dlopen exists
6499 xxx_runnm="$runnm"
6500 runnm=false
6501 set dlopen d_dlopen
6502 eval $inlibc
6503 runnm="$xxx_runnm"
6504
6505 : determine which dynamic loading, if any, to compile in
6506 echo " "
6507 dldir="ext/DynaLoader"
6508 case "$usedl" in
6509 $define|y|true)
6510         dflt='y'
6511         usedl="$define"
6512         ;;
6513 $undef|n|false)
6514         dflt='n'
6515         usedl="$undef"
6516         ;;
6517 *) 
6518         dflt='n'
6519         case "$d_dlopen" in
6520             $define) dflt='y' ;;
6521         esac
6522         case "$i_dld" in
6523             $define) dflt='y' ;;
6524         esac
6525         : Does a dl_xxx.xs file exist for this operating system
6526         $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
6527         ;;
6528 esac
6529 rp="Do you wish to use dynamic loading?"
6530 . ./myread
6531 usedl="$ans"
6532 case "$ans" in
6533 y*) usedl="$define"
6534         case "$dlsrc" in
6535         '')
6536                 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
6537                         dflt="$dldir/dl_${osname}.xs"
6538                 elif $test "$d_dlopen" = "$define" ; then
6539                         dflt="$dldir/dl_dlopen.xs"
6540                 elif $test "$i_dld" = "$define" ; then
6541                         dflt="$dldir/dl_dld.xs"
6542                 else
6543                         dflt=''
6544                 fi
6545                 ;;
6546         *)      dflt="$dldir/$dlsrc"
6547                 ;;
6548         esac
6549     echo "The following dynamic loading files are available:"
6550         : Can not go over to $dldir because getfile has path hard-coded in.
6551         tdir=`pwd`; cd $rsrc; $ls -C $dldir/dl*.xs; cd $tdir
6552         rp="Source file to use for dynamic loading"
6553         fn="fne"
6554         gfpth="$src"
6555         . ./getfile
6556         usedl="$define"
6557         : emulate basename
6558         dlsrc=`echo $ans | $sed -e 's%.*/\([^/]*\)$%\1%'`
6559
6560         $cat << EOM
6561
6562 Some systems may require passing special flags to $cc -c to
6563 compile modules that will be used to create a shared library.
6564 To use no flags, say "none".
6565
6566 EOM
6567     case "$cccdlflags" in
6568     '') case "$gccversion" in
6569                 '') case "$osname" in
6570                         hpux)   dflt='+z' ;;
6571                         next)   dflt='none' ;;
6572                         irix*)  dflt='-KPIC' ;;
6573                         svr4*|esix*|solaris|nonstopux) dflt='-KPIC' ;;
6574                         sunos)  dflt='-pic' ;;
6575                         *)      dflt='none' ;;
6576                     esac
6577                         ;;
6578                 *)  case "$osname" in
6579                         svr4*|esix*|solaris|nonstopux) dflt='-fPIC' ;;
6580                         *)      dflt='-fpic' ;;
6581                     esac ;;
6582             esac ;;
6583         ' ') dflt='none' ;;
6584     *)  dflt="$cccdlflags" ;;
6585     esac
6586     rp="Any special flags to pass to $cc -c to compile shared library modules?"
6587     . ./myread
6588     case "$ans" in
6589     none) cccdlflags=' ' ;;
6590     *) cccdlflags="$ans" ;;
6591     esac
6592
6593     cat << EOM
6594
6595 Some systems use ld to create libraries that can be dynamically loaded,
6596 while other systems (such as those using ELF) use $cc.
6597
6598 EOM
6599         case "$ld" in
6600         '')     $cat >try.c <<'EOM'
6601 /* Test for whether ELF binaries are produced */
6602 #include <fcntl.h>
6603 #include <stdlib.h>
6604 int main() {
6605         char b[4];
6606         int i = open("a.out",O_RDONLY);
6607         if(i == -1) 
6608                 exit(1); /* fail */
6609         if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
6610                 exit(0); /* succeed (yes, it's ELF) */
6611         else
6612                 exit(1); /* fail */
6613 }
6614 EOM
6615                 if $cc $ccflags try.c >/dev/null 2>&1 && ./a.out; then
6616                         cat <<EOM
6617 You appear to have ELF support.  I'll use $cc to build dynamic libraries.
6618 EOM
6619                         dflt="$cc"
6620                 else
6621                         echo "I'll use ld to build dynamic libraries."
6622                         dflt='ld'
6623                 fi
6624                 rm -f try.c a.out
6625                 ;;
6626         *)      dflt="$ld"
6627                 ;;
6628         esac
6629
6630     rp="What command should be used to create dynamic libraries?"
6631     . ./myread
6632         ld="$ans"
6633
6634     cat << EOM
6635
6636 Some systems may require passing special flags to $ld to create a
6637 library that can be dynamically loaded.  If your ld flags include
6638 -L/other/path options to locate libraries outside your loader's normal
6639 search path, you may need to specify those -L options here as well.  To
6640 use no flags, say "none".
6641
6642 EOM
6643     case "$lddlflags" in
6644     '') case "$osname" in
6645                         beos) dflt='-nostart' ;;
6646                         hpux) dflt='-b';
6647                               case "$gccversion" in
6648                               '') dflt="$dflt +vnocompatwarnings" ;;
6649                               esac
6650                               ;;        
6651                         linux|irix*)    dflt='-shared' ;;
6652                         next)  dflt='none' ;;
6653                         solaris) dflt='-G' ;;
6654                         sunos) dflt='-assert nodefinitions' ;;
6655                         svr4*|esix*|nonstopux) dflt="-G $ldflags" ;;
6656                 *)     dflt='none' ;;
6657                         esac
6658                         ;;
6659     *) dflt="$lddlflags" ;;
6660     esac
6661
6662         : Try to guess additional flags to pick up local libraries.
6663         : Be careful not to append to a plain 'none'
6664         case "$dflt" in
6665         none) dflt='' ;;
6666         esac
6667         for thisflag in $ldflags; do
6668                 case "$thisflag" in
6669                 -L*|-R*)
6670                         case " $dflt " in
6671                         *" $thisflag "*) ;;
6672                         *) dflt="$dflt $thisflag" ;;
6673                         esac
6674                         ;;
6675                 esac
6676         done
6677
6678         case "$dflt" in
6679         ''|' ') dflt='none' ;;
6680         esac
6681
6682     rp="Any special flags to pass to $ld to create a dynamically loaded library?"
6683     . ./myread
6684     case "$ans" in
6685     none) lddlflags=' ' ;;
6686     *) lddlflags="$ans" ;;
6687     esac
6688
6689         cat <<EOM
6690
6691 Some systems may require passing special flags to $cc to indicate that
6692 the resulting executable will use dynamic linking.  To use no flags,
6693 say "none".
6694
6695 EOM
6696     case "$ccdlflags" in
6697     '') case "$osname" in
6698                 hpux)   dflt='-Wl,-E' ;;
6699                 linux)  dflt='-rdynamic' ;;
6700                 next)   dflt='none' ;;
6701                 sunos)  dflt='none' ;;
6702                 *)      dflt='none' ;;
6703             esac ;;
6704     ' ')  dflt='none' ;;
6705     *)  dflt="$ccdlflags" ;;
6706     esac
6707     rp="Any special flags to pass to $cc to use dynamic linking?"
6708     . ./myread
6709     case "$ans" in
6710     none) ccdlflags=' ' ;;
6711     *) ccdlflags="$ans" ;;
6712     esac
6713     ;;
6714 *)  usedl="$undef"
6715         ld='ld'
6716     dlsrc='dl_none.xs'
6717     lddlflags=''
6718     ccdlflags=''
6719     ;;
6720 esac
6721
6722 also=''
6723 case "$usedl" in
6724 $undef)
6725         # No dynamic loading being used, so don't bother even to prompt.
6726         useshrplib='false'
6727         ;;
6728 *)      case "$useshrplib" in
6729         '')     case "$osname" in
6730                 svr4*|nonstopux|dgux|dynixptx|esix|powerux|beos|cygwin*)
6731                         dflt=y
6732                         also='Building a shared libperl is required for dynamic loading to work on your system.'
6733                         ;;
6734                 next*)
6735                         case "$osvers" in
6736                         4*)     dflt=y
6737                                 also='Building a shared libperl is needed for MAB support.'
6738                                 ;;
6739                         *)      dflt=n
6740                                 ;;
6741                         esac
6742                         ;;
6743                 *)      dflt=n
6744                         ;;
6745                 esac
6746                 ;;
6747         $define|true|[Yy]*)
6748                 dflt=y
6749                 ;;
6750         *)      dflt=n
6751                 ;;
6752         esac
6753         $cat << EOM
6754
6755 The perl executable is normally obtained by linking perlmain.c with
6756 libperl${_a}, any static extensions (usually just DynaLoader), and
6757 any other libraries needed on this system (such as -lm, etc.).  Since
6758 your system supports dynamic loading, it is probably possible to build
6759 a shared libperl.$so.  If you will have more than one executable linked
6760 to libperl.$so, this will significantly reduce the size of each
6761 executable, but it may have a noticeable affect on performance.  The
6762 default is probably sensible for your system.
6763 $also
6764
6765 EOM
6766         rp="Build a shared libperl.$so (y/n)"
6767         . ./myread
6768         case "$ans" in
6769         true|$define|[Yy]*)
6770                 useshrplib='true'  ;;
6771         *)      useshrplib='false' ;;
6772         esac
6773         ;;
6774 esac
6775
6776 case "$useshrplib" in
6777 true)
6778         case "$libperl" in
6779         '')
6780                 # Figure out a good name for libperl.so.  Since it gets stored in
6781                 # a version-specific architecture-dependent library, the version
6782                 # number isn't really that important, except for making cc/ld happy.
6783                 #
6784                 # A name such as libperl.so.3.1
6785                 majmin="libperl.$so.$patchlevel.$subversion"
6786                 # A name such as libperl.so.301
6787                 majonly=`echo $patchlevel $subversion |
6788                         $awk '{printf "%d%02d", $1, $2}'`
6789                 majonly=libperl.$so.$majonly
6790                 # I'd prefer to keep the os-specific stuff here to a minimum, and
6791                 # rely on figuring it out from the naming of libc.
6792                 case "${osname}${osvers}" in
6793                 next4*)
6794                         dflt=libperl.5.$so
6795                         # XXX How handle the --version stuff for MAB?
6796                         ;;
6797                 linux*)  # ld won't link with a bare -lperl otherwise.
6798                         dflt=libperl.$so
6799                         ;;
6800                 cygwin*) # include version
6801                         dflt=`echo libperl$version | sed -e 's/\./_/g'`$lib_ext
6802                         ;;
6803                 *)      # Try to guess based on whether libc has major.minor.
6804                         case "$libc" in
6805                         *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
6806                         *libc.$so.[0-9]*) dflt=$majonly ;;
6807                         *)      dflt=libperl.$so ;;
6808                         esac
6809                         ;;
6810                 esac
6811                 ;;
6812         *)      dflt=$libperl
6813                 ;;
6814         esac
6815         cat << EOM
6816
6817 I need to select a good name for the shared libperl.  If your system uses
6818 library names with major and minor numbers, then you might want something
6819 like $majmin.  Alternatively, if your system uses a single version
6820 number for shared libraries, then you might want to use $majonly.
6821 Or, your system might be quite happy with a simple libperl.$so.
6822
6823 Since the shared libperl will get installed into a version-specific
6824 architecture-dependent directory, the version number of the shared perl
6825 library probably isn't important, so the default should be o.k.
6826
6827 EOM
6828         rp='What name do you want to give to the shared libperl?'
6829         . ./myread
6830         libperl=$ans
6831         echo "Ok, I'll use $libperl"
6832         ;;
6833 *)
6834         libperl="libperl${_a}"
6835         ;;
6836 esac
6837
6838 # Detect old use of shrpdir via undocumented Configure -Dshrpdir
6839 case "$shrpdir" in
6840 '') ;;
6841 *)      $cat >&4 <<EOM
6842 WARNING:  Use of the shrpdir variable for the installation location of
6843 the shared $libperl is not supported.  It was never documented and
6844 will not work in this version.  Let me (perlbug@perl.org)
6845 know of any problems this may cause.
6846
6847 EOM
6848         case "$shrpdir" in
6849         "$archlibexp/CORE")
6850                 $cat >&4 <<EOM
6851 But your current setting of $shrpdir is
6852 the default anyway, so it's harmless.
6853 EOM
6854                 ;;
6855         *)
6856                 $cat >&4 <<EOM
6857 Further, your current attempted setting of $shrpdir
6858 conflicts with the value of $archlibexp/CORE
6859 that installperl will use.
6860 EOM
6861                 ;;
6862         esac
6863         ;;
6864 esac
6865
6866 # How will the perl executable find the installed shared $libperl?
6867 # Add $xxx to ccdlflags.
6868 # If we can't figure out a command-line option, use $shrpenv to
6869 # set env LD_RUN_PATH.  The main perl makefile uses this.
6870 shrpdir=$archlibexp/CORE
6871 xxx=''
6872 tmp_shrpenv=''
6873 if "$useshrplib"; then
6874     case "$osname" in 
6875         aix)
6876                 # We'll set it in Makefile.SH...
6877                 ;;
6878         solaris|netbsd)
6879                 xxx="-R $shrpdir"
6880                 ;;
6881         freebsd)
6882                 xxx="-Wl,-R$shrpdir"
6883                 ;;
6884         linux|irix*|dec_osf)
6885                 xxx="-Wl,-rpath,$shrpdir"
6886                 ;;
6887         next)
6888                 # next doesn't like the default...
6889                 ;;
6890         beos)
6891                 # beos doesn't like the default, either.
6892                 ;;
6893         hpux*)
6894                 # hpux doesn't like the default, either.
6895                 tmp_shrpenv="env LDOPTS=\"+s +b${shrpdir}\""
6896                 ;;
6897         *)
6898                 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
6899                 ;;
6900         esac
6901         case "$xxx" in
6902         '') ;;
6903         *)      
6904                 # Only add $xxx if it isn't already in ccdlflags.
6905                 case " $ccdlflags " in
6906                 *" $xxx "*)     ;;
6907                 *)      ccdlflags="$ccdlflags $xxx"
6908                         cat <<EOM >&4
6909
6910 Adding $xxx to the flags
6911 passed to $ld so that the perl executable will find the 
6912 installed shared $libperl.
6913
6914 EOM
6915                         ;;
6916                 esac
6917                 ;;
6918         esac
6919 fi
6920 # Fix ccdlflags in AIX for building external extensions.
6921 # (For building Perl itself bare -bE:perl.exp is needed,
6922 #  Makefile.SH takes care of this.)
6923 case "$osname" in
6924 aix) ccdlflags="$ccdlflags -bE:$installarchlib/CORE/perl.exp" ;;
6925 esac
6926 # Respect a hint or command-line value.
6927 case "$shrpenv" in
6928 '') shrpenv="$tmp_shrpenv" ;;
6929 esac
6930 case "$ldlibpthname" in
6931 '')     ldlibpthname=LD_LIBRARY_PATH ;;
6932 none)   ldlibpthname='' ;;
6933 esac
6934
6935 : determine where manual pages are on this system
6936 echo " "
6937 case "$sysman" in
6938 '') 
6939         syspath='/usr/man/man1 /usr/man/mann /usr/man/manl /usr/man/local/man1'
6940         syspath="$syspath /usr/man/u_man/man1 /usr/share/man/man1"
6941         syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
6942         syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
6943         syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
6944         sysman=`./loc . /usr/man/man1 $syspath`
6945         ;;
6946 esac
6947 if $test -d "$sysman"; then
6948         echo "System manual is in $sysman." >&4
6949 else
6950         echo "Could not find manual pages in source form." >&4
6951 fi
6952
6953 : determine where manual pages go
6954 set man1dir man1dir none
6955 eval $prefixit
6956 $cat <<EOM
6957
6958 $spackage has manual pages available in source form.
6959 EOM
6960 case "$nroff" in
6961 nroff)
6962         echo "However, you don't have nroff, so they're probably useless to you."
6963         case "$man1dir" in
6964         '') man1dir="none";;
6965         esac;;
6966 esac
6967 echo "If you don't want the manual sources installed, answer 'none'."
6968 case "$man1dir" in
6969 ' ') dflt=none
6970         ;;
6971 '')
6972         lookpath="$prefixexp/man/man1 $prefixexp/man/l_man/man1"
6973         lookpath="$lookpath $prefixexp/man/p_man/man1"
6974         lookpath="$lookpath $prefixexp/man/u_man/man1"
6975         lookpath="$lookpath $prefixexp/man/man.1"
6976         case "$sysman" in
6977         */?_man*)       dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
6978         *)      dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
6979         esac
6980         set dflt
6981         eval $prefixup
6982         ;;
6983 *)  dflt="$man1dir"
6984         ;;
6985 esac
6986 echo " "
6987 fn=dn+~
6988 rp="Where do the main $spackage manual pages (source) go?"
6989 . ./getfile
6990 if $test "X$man1direxp" != "X$ansexp"; then
6991         installman1dir=''
6992 fi
6993 man1dir="$ans"
6994 man1direxp="$ansexp"
6995 case "$man1dir" in
6996 '')     man1dir=' '
6997         installman1dir='';;
6998 esac
6999
7000 : Change installation prefix, if necessary.
7001 if $test X"$prefix" != X"$installprefix"; then
7002         installman1dir=`echo $man1direxp | $sed "s#^$prefix#$installprefix#"`
7003 else
7004         installman1dir="$man1direxp"
7005 fi
7006
7007 : What suffix to use on installed man pages
7008
7009 case "$man1dir" in
7010 ' ')
7011         man1ext='0'
7012         ;;
7013 *)
7014         rp="What suffix should be used for the main $spackage man pages?"
7015         case "$man1ext" in
7016         '')     case "$man1dir" in
7017                 *1)  dflt=1 ;;
7018                 *1p) dflt=1p ;;
7019                 *1pm) dflt=1pm ;;
7020                 *l) dflt=l;;
7021                 *n) dflt=n;;
7022                 *o) dflt=o;;
7023                 *p) dflt=p;;
7024                 *C) dflt=C;;
7025                 *L) dflt=L;;
7026                 *L1) dflt=L1;;
7027                 *) dflt=1;;
7028                 esac
7029                 ;;
7030         *)      dflt="$man1ext";;
7031         esac
7032         . ./myread
7033         man1ext="$ans"
7034         ;;
7035 esac
7036
7037 : see if we can have long filenames
7038 echo " "
7039 first=123456789abcdef
7040 $rm -f $first
7041 if (echo hi >$first) 2>/dev/null; then
7042         if $test -f 123456789abcde; then
7043                 echo 'You cannot have filenames longer than 14 characters.  Sigh.' >&4
7044                 val="$undef"
7045         else
7046                 echo 'You can have filenames longer than 14 characters.'>&4
7047                 val="$define"
7048         fi
7049 else
7050         $cat <<'EOM'
7051 You can't have filenames longer than 14 chars.
7052 You can't even think about them!
7053 EOM
7054         val="$undef"
7055 fi 
7056 set d_flexfnam
7057 eval $setvar
7058 $rm -rf 123456789abcde*
7059
7060 : determine where library module manual pages go
7061 set man3dir man3dir none
7062 eval $prefixit
7063 $cat <<EOM
7064
7065 $spackage has manual pages for many of the library modules.
7066 EOM
7067
7068 case "$nroff" in
7069 nroff)
7070         $cat <<'EOM'
7071 However, you don't have nroff, so they're probably useless to you.
7072 EOM
7073         case "$man3dir" in
7074         '') man3dir="none";;
7075         esac;;
7076 esac
7077
7078 case "$d_flexfnam" in
7079 undef)
7080         $cat <<'EOM'
7081 However, your system can't handle the long file names like File::Basename.3. 
7082 EOM
7083         case "$man3dir" in
7084         '') man3dir="none";;
7085         esac;;
7086 esac
7087
7088 echo "If you don't want the manual sources installed, answer 'none'."
7089 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
7090 case "$man3dir" in
7091 '')     dflt=`echo "$man1dir" | $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'`
7092         if $test -d "$privlib/man/man3"; then
7093                 cat <<EOM >&4
7094
7095 WARNING:  Previous versions of perl installed man3 pages into
7096 $privlib/man/man3.  This version will suggest a 
7097 new default of $dflt.  
7098 EOM
7099                 tdflt=$dflt
7100                 dflt='n'
7101                 rp='Do you wish to preserve the old behavior?(y/n)'
7102                 . ./myread
7103                 case "$ans" in
7104                 y*) dflt="$privlib/man/man3" ;;
7105                 *)  dflt=$tdflt ;;
7106                 esac
7107     fi
7108         ;;
7109 *)      dflt="$man3dir" ;;
7110 esac
7111 case "$dflt" in
7112 ' ') dflt=none ;;
7113 esac
7114 echo " "
7115 fn=dn+~
7116 rp="Where do the $package library man pages (source) go?"
7117 . ./getfile
7118 man3dir="$ans"
7119 man3direxp="$ansexp"
7120 case "$man3dir" in
7121 '')     man3dir=' '
7122         installman3dir='';;
7123 esac
7124
7125 : Change installation prefix, if necessary.
7126 if $test X"$prefix" != X"$installprefix"; then
7127         installman3dir=`echo $man3direxp | $sed "s#^$prefix#$installprefix#"`
7128 else
7129         installman3dir="$man3direxp"
7130 fi
7131
7132 : What suffix to use on installed man pages
7133 case "$man3dir" in
7134 ' ')
7135         man3ext='0'
7136         ;;
7137 *)
7138         rp="What suffix should be used for the $package library man pages?"
7139         case "$man3ext" in
7140         '')     case "$man3dir" in
7141                 *3)  dflt=3 ;;
7142                 *3p) dflt=3p ;;
7143                 *3pm) dflt=3pm ;;
7144                 *l) dflt=l;;
7145                 *n) dflt=n;;
7146                 *o) dflt=o;;
7147                 *p) dflt=p;;
7148                 *C) dflt=C;;
7149                 *L) dflt=L;;
7150                 *L3) dflt=L3;;
7151                 *) dflt=3;;
7152                 esac
7153                 ;;
7154         *)      dflt="$man3ext";;
7155         esac
7156         . ./myread
7157         man3ext="$ans"
7158         ;;
7159 esac
7160
7161 : see if we have to deal with yellow pages, now NIS.
7162 if $test -d /usr/etc/yp || $test -d /etc/yp; then
7163         if $test -f /usr/etc/nibindd; then
7164                 echo " "
7165                 echo "I'm fairly confident you're on a NeXT."
7166                 echo " "
7167                 rp='Do you get the hosts file via NetInfo?'
7168                 dflt=y
7169                 case "$hostcat" in
7170                 nidump*) ;;
7171                 '') ;;
7172                 *) dflt=n;;
7173                 esac
7174                 . ./myread
7175                 case "$ans" in
7176                 y*) hostcat='nidump hosts .';;
7177                 *)      case "$hostcat" in
7178                         nidump*) hostcat='';;
7179                         esac
7180                         ;;
7181                 esac
7182         fi
7183         case "$hostcat" in
7184         nidump*) ;;
7185         *)
7186                 case "$hostcat" in
7187                 *ypcat*) dflt=y;;
7188                 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
7189                                 dflt=y
7190                         else
7191                                 dflt=n
7192                         fi;;
7193                 *) dflt=n;;
7194                 esac
7195                 echo " "
7196                 rp='Are you getting the hosts file via yellow pages?'
7197                 . ./myread
7198                 case "$ans" in
7199                 y*) hostcat='ypcat hosts';;
7200                 *) hostcat='cat /etc/hosts';;
7201                 esac
7202                 ;;
7203         esac
7204 fi
7205 case "$hostcat" in
7206 '') test -f /etc/hosts && hostcat='cat /etc/hosts';;
7207 esac
7208 case "$groupcat" in
7209 '') test -f /etc/group && groupcat='cat /etc/group';;
7210 esac
7211 case "$passcat" in
7212 '') test -f /etc/passwd && passcat='cat /etc/passwd';;
7213 esac
7214
7215 : now get the host name
7216 echo " "
7217 echo "Figuring out host name..." >&4
7218 case "$myhostname" in
7219 '') cont=true
7220         echo 'Maybe "hostname" will work...'
7221         if tans=`sh -c hostname 2>&1` ; then
7222                 myhostname=$tans
7223                 phostname=hostname
7224                 cont=''
7225         fi
7226         ;;
7227 *) cont='';;
7228 esac
7229 if $test "$cont"; then
7230         if ./xenix; then
7231                 echo 'Oh, dear.  Maybe "/etc/systemid" is the key...'
7232                 if tans=`cat /etc/systemid 2>&1` ; then
7233                         myhostname=$tans
7234                         phostname='cat /etc/systemid'
7235                         echo "Whadyaknow.  Xenix always was a bit strange..."
7236                         cont=''
7237                 fi
7238         elif $test -r /etc/systemid; then
7239                 echo "(What is a non-Xenix system doing with /etc/systemid?)"
7240         fi
7241 fi
7242 if $test "$cont"; then
7243         echo 'No, maybe "uuname -l" will work...'
7244         if tans=`sh -c 'uuname -l' 2>&1` ; then
7245                 myhostname=$tans
7246                 phostname='uuname -l'
7247         else
7248                 echo 'Strange.  Maybe "uname -n" will work...'
7249                 if tans=`sh -c 'uname -n' 2>&1` ; then
7250                         myhostname=$tans
7251                         phostname='uname -n'
7252                 else
7253                         echo 'Oh well, maybe I can mine it out of whoami.h...'
7254                         if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
7255                                 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
7256                                 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
7257                         else
7258                                 case "$myhostname" in
7259                                 '') echo "Does this machine have an identity crisis or something?"
7260                                         phostname='';;
7261                                 *)
7262                                         echo "Well, you said $myhostname before..."
7263                                         phostname='echo $myhostname';;
7264                                 esac
7265                         fi
7266                 fi
7267         fi
7268 fi
7269 : you do not want to know about this
7270 set $myhostname
7271 myhostname=$1
7272
7273 : verify guess
7274 if $test "$myhostname" ; then
7275         dflt=y
7276         rp='Your host name appears to be "'$myhostname'".'" Right?"
7277         . ./myread
7278         case "$ans" in
7279         y*) ;;
7280         *) myhostname='';;
7281         esac
7282 fi
7283
7284 : bad guess or no guess
7285 while $test "X$myhostname" = X ; do
7286         dflt=''
7287         rp="Please type the (one word) name of your host:"
7288         . ./myread
7289         myhostname="$ans"
7290 done
7291
7292 : translate upper to lower if necessary
7293 case "$myhostname" in
7294 *[A-Z]*)
7295         echo "(Normalizing case in your host name)"
7296         myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
7297         ;;
7298 esac
7299
7300 case "$myhostname" in
7301 *.*)
7302         dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
7303         myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
7304         echo "(Trimming domain name from host name--host name is now $myhostname)"
7305         ;;
7306 *) case "$mydomain" in
7307         '')
7308                 {
7309                         test "X$hostcat" = "Xypcat hosts" &&
7310                         ypmatch "$myhostname" hosts 2>/dev/null |\
7311                                 $sed -e 's/[     ]*#.*//; s/$/ /' > hosts && \
7312                         $test -s hosts
7313                 } || {
7314                         test "X$hostcat" != "X" &&
7315                         $hostcat | $sed -n -e "s/[       ]*#.*//; s/\$/ /
7316                                         /[       ]$myhostname[  . ]/p" > hosts
7317                 }
7318                 tmp_re="[       . ]"
7319                 if $test -f hosts; then
7320                         $test x`$awk "/[0-9].*[  ]$myhostname$tmp_re/ { sum++ }
7321                              END { print sum }" hosts` = x1 || tmp_re="[         ]"
7322                         dflt=.`$awk "/[0-9].*[   ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
7323                                 hosts | $sort | $uniq | \
7324                                 $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
7325                         case `$echo X$dflt` in
7326                         X*\ *)  echo "(Several hosts in the database matched hostname)"
7327                                 dflt=.
7328                                 ;;
7329                         X.) echo "(You do not have fully-qualified names in the hosts database)"
7330                                 ;;
7331                         esac
7332                 else
7333                         echo "(I cannot locate a hosts database anywhere)"
7334                         dflt=.
7335                 fi
7336                 case "$dflt" in
7337                 .)
7338                         tans=`./loc resolv.conf X /etc /usr/etc`
7339                         if $test -f "$tans"; then
7340                                 echo "(Attempting domain name extraction from $tans)"
7341                                 dflt=.`$sed -n -e 's/   / /g' \
7342                                   -e 's/^search  *\([^ ]*\).*/\1/p' $tans \
7343                                   | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
7344                                 case "$dflt" in
7345                                 .) dflt=.`$sed -n -e 's/        / /g' \
7346                                      -e 's/^domain  *\([^ ]*\).*/\1/p' $tans \
7347                                      | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
7348                                         ;;
7349                                 esac
7350                         fi
7351                         ;;
7352                 esac
7353                 case "$dflt" in
7354                 .) echo "(No help from resolv.conf either -- attempting clever guess)"
7355                         dflt=.`sh -c domainname 2>/dev/null`
7356                         case "$dflt" in
7357                         '') dflt='.';;
7358                         .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
7359                         esac
7360                         ;;
7361                 esac
7362                 case "$dflt" in
7363                 .) echo "(Lost all hope -- silly guess then)"
7364                         dflt='.uucp'
7365                         ;;
7366                 esac
7367                 $rm -f hosts
7368                 ;;
7369         *) dflt="$mydomain";;
7370         esac;;
7371 esac
7372 echo " "
7373 rp="What is your domain name?"
7374 . ./myread
7375 tans="$ans"
7376 case "$ans" in
7377 '') ;;
7378 .*) ;;
7379 *) tans=".$tans";;
7380 esac
7381 mydomain="$tans"
7382
7383 : translate upper to lower if necessary
7384 case "$mydomain" in
7385 *[A-Z]*)
7386         echo "(Normalizing case in your domain name)"
7387         mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
7388         ;;
7389 esac
7390
7391 : a little sanity check here
7392 case "$phostname" in
7393 '') ;;
7394 *)
7395         case `$phostname | ./tr '[A-Z]' '[a-z]'` in
7396         $myhostname$mydomain|$myhostname) ;;
7397         *)
7398                 case "$phostname" in
7399                 sed*)
7400                         echo "(That doesn't agree with your whoami.h file, by the way.)"
7401                         ;;
7402                 *)
7403                         echo "(That doesn't agree with your $phostname command, by the way.)"
7404                         ;;
7405                 esac
7406         ;;
7407         esac
7408         ;;
7409 esac
7410
7411 $cat <<EOM
7412
7413 I need to get your e-mail address in Internet format if possible, i.e.
7414 something like user@host.domain. Please answer accurately since I have
7415 no easy means to double check it. The default value provided below
7416 is most probably close to reality but may not be valid from outside
7417 your organization...
7418
7419 EOM
7420 cont=x
7421 while test "$cont"; do
7422         case "$cf_email" in
7423         '') dflt="$cf_by@$myhostname$mydomain";;
7424         *) dflt="$cf_email";;
7425         esac
7426         rp='What is your e-mail address?'
7427         . ./myread
7428         cf_email="$ans"
7429         case "$cf_email" in
7430         *@*.*) cont='' ;;
7431         *)
7432                 rp='Address does not look like an Internet one.  Use it anyway?'
7433                 case "$fastread" in
7434                 yes) dflt=y ;;
7435                 *) dflt=n ;;
7436                 esac
7437                 . ./myread
7438                 case "$ans" in
7439                 y*) cont='' ;;
7440                 *) echo " " ;;
7441                 esac
7442                 ;;
7443         esac
7444 done
7445
7446 $cat <<EOM
7447
7448 If you or somebody else will be maintaining perl at your site, please
7449 fill in the correct e-mail address here so that they may be contacted
7450 if necessary. Currently, the "perlbug" program included with perl
7451 will send mail to this address in addition to perlbug@perl.org. You may
7452 enter "none" for no administrator.
7453
7454 EOM
7455 case "$perladmin" in
7456 '') dflt="$cf_email";;
7457 *) dflt="$perladmin";;
7458 esac
7459 rp='Perl administrator e-mail address'
7460 . ./myread
7461 perladmin="$ans"
7462
7463 : determine whether to only install version-specific parts.
7464 echo " "
7465 $cat <<EOM
7466 Do you want to install only the version-specific parts of the perl
7467 distribution?  Usually you do *not* want to do this.
7468 EOM
7469 case "$versiononly" in
7470 "$define"|[Yy]*|true) dflt='y' ;;
7471 *) dflt='n';
7472 esac
7473 rp="Do you want to install only the version-specific parts of perl?"
7474 . ./myread
7475 case "$ans" in
7476 [yY]*)  val="$define";;
7477 *)      val="$undef" ;;
7478 esac
7479 set versiononly
7480 eval $setvar
7481
7482 : figure out how to guarantee perl startup
7483 case "$startperl" in
7484 '')
7485         case "$sharpbang" in
7486         *!)
7487                 $cat <<EOH
7488
7489 I can use the #! construct to start perl on your system. This will
7490 make startup of perl scripts faster, but may cause problems if you
7491 want to share those scripts and perl is not in a standard place
7492 ($binexp/perl) on all your platforms. The alternative is to force
7493 a shell by starting the script with a single ':' character.
7494
7495 EOH
7496                 case "$versiononly" in
7497                 "$define")      dflt="$binexp/perl$version";;  
7498                 *)              dflt="$binexp/perl";;
7499                 esac
7500                 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
7501                 . ./myread
7502                 case "$ans" in
7503                 none)   startperl=": # use perl";;
7504                 *)      startperl="#!$ans"
7505                         if $test 30 -lt `echo "$ans" | wc -c`; then
7506                                 $cat >&4 <<EOM
7507
7508 WARNING:  Some systems limit the #! command to 32 characters.
7509 If you experience difficulty running Perl scripts with #!, try
7510 installing Perl in a directory with a shorter pathname.
7511
7512 EOM
7513                         fi ;;
7514                 esac
7515                 ;;
7516         *) startperl=": # use perl"
7517                 ;;
7518         esac
7519         ;;
7520 esac
7521 echo "I'll use $startperl to start perl scripts."
7522
7523 : figure best path for perl in scripts
7524 case "$perlpath" in
7525 '')
7526         perlpath="$binexp/perl"
7527         case "$startperl" in
7528         *!*) ;;
7529         *)
7530                 $cat <<EOH
7531
7532 I will use the "eval 'exec'" idiom to start Perl on your system.
7533 I can use the full path of your Perl binary for this purpose, but
7534 doing so may cause problems if you want to share those scripts and
7535 Perl is not always in a standard place ($binexp/perl).
7536
7537 EOH
7538                 dflt="$binexp/perl"
7539                 rp="What path shall I use in \"eval 'exec'\"?"
7540                 . ./myread
7541                 perlpath="$ans"
7542                 ;;
7543         esac
7544         ;;
7545 esac
7546 case "$startperl" in
7547 *!*)    ;;
7548 *)      echo "I'll use $perlpath in \"eval 'exec'\"" ;;
7549 esac
7550
7551 : determine where public executable scripts go
7552 set scriptdir scriptdir
7553 eval $prefixit
7554 case "$scriptdir" in
7555 '')
7556         dflt="$bin"
7557         : guess some guesses
7558         $test -d /usr/share/scripts && dflt=/usr/share/scripts
7559         $test -d /usr/share/bin     && dflt=/usr/share/bin
7560         $test -d /usr/local/script  && dflt=/usr/local/script
7561         $test -d /usr/local/scripts && dflt=/usr/local/scripts
7562         $test -d $prefixexp/script  && dflt=$prefixexp/script
7563         set dflt
7564         eval $prefixup
7565         ;;
7566 *)  dflt="$scriptdir"
7567         ;;
7568 esac
7569 $cat <<EOM
7570  
7571 Some installations have a separate directory just for executable scripts so
7572 that they can mount it across multiple architectures but keep the scripts in
7573 one spot.  You might, for example, have a subdirectory of /usr/share for this.
7574 Or you might just lump your scripts in with all your other executables.
7575  
7576 EOM
7577 fn=d~
7578 rp='Where do you keep publicly executable scripts?'
7579 . ./getfile
7580 if $test "X$ansexp" != "X$scriptdirexp"; then
7581         installscript=''
7582 fi
7583 scriptdir="$ans"
7584 scriptdirexp="$ansexp"
7585 : Change installation prefix, if necessary.
7586 if $test X"$prefix" != X"$installprefix"; then
7587         installscript=`echo $scriptdirexp | sed "s#^$prefix#$installprefix#"`
7588 else
7589         installscript="$scriptdirexp"
7590 fi
7591
7592 : determine where add-on public executables go
7593 case "$sitebin" in
7594 '')     dflt=$siteprefix/bin ;;
7595 *)      dflt=$sitebin ;;
7596 esac
7597 fn=d~
7598 rp='Pathname where the add-on public executables should be installed?'
7599 . ./getfile
7600 sitebin="$ans"
7601 sitebinexp="$ansexp"
7602 : Change installation prefix, if necessary.
7603 if $test X"$prefix" != X"$installprefix"; then
7604         installsitebin=`echo $sitebinexp | sed "s#^$prefix#$installprefix#"`
7605 else
7606         installsitebin="$sitebinexp"
7607 fi
7608
7609 case "$vendorprefix" in
7610 '')     d_vendorbin="$undef"
7611         vendorbin=''
7612         vendorbinexp=''
7613         ;;
7614 *)      d_vendorbin="$define"
7615         : determine where vendor-supplied executables go.
7616         case "$vendorbin" in
7617         '') dflt=$vendorprefix/bin ;;
7618         *)      dflt="$vendorbin" ;;
7619         esac
7620         fn=d~+
7621         rp='Pathname for the vendor-supplied executables directory?'
7622         . ./getfile
7623         vendorbin="$ans"
7624         vendorbinexp="$ansexp"
7625         ;;
7626 esac
7627 : Change installation prefix, if necessary.
7628 if $test X"$prefix" != X"$installprefix"; then
7629         installvendorbin=`echo $vendorbinexp | $sed "s#^$prefix#$installprefix#"`
7630 else
7631         installvendorbin="$vendorbinexp"
7632 fi
7633
7634 : see if qgcvt exists
7635 set qgcvt d_qgcvt
7636 eval $inlibc
7637
7638 echo " "
7639
7640 if $test X"$d_longdbl" = X"$define"; then
7641
7642 echo "Checking how to print long doubles..." >&4
7643
7644 if $test X"$sPRIfldbl" = X -a X"$doublesize" = X"$longdblsize"; then
7645         $cat >try.c <<'EOCP'
7646 #include <sys/types.h>
7647 #include <stdio.h>
7648 int main() {
7649   double d = 123.456;
7650   printf("%.3f\n", d);
7651 }
7652 EOCP
7653         set try
7654         if eval $compile; then
7655                 yyy=`./try$exe_ext`
7656                 case "$yyy" in
7657                 123.456)
7658                         sPRIfldbl='"f"'; sPRIgldbl='"g"'; sPRIeldbl='"e"';
7659                         sPRIFUldbl='"F"'; sPRIGUldbl='"G"'; sPRIEUldbl='"E"';
7660                         echo "We will use %f."
7661                         ;;
7662                 esac
7663         fi
7664 fi
7665
7666 if $test X"$sPRIfldbl" = X; then
7667         $cat >try.c <<'EOCP'
7668 #include <sys/types.h>
7669 #include <stdio.h>
7670 int main() {
7671   long double d = 123.456;
7672   printf("%.3llf\n", d);
7673 }
7674 EOCP
7675         set try
7676         if eval $compile; then
7677                 yyy=`./try$exe_ext`
7678                 case "$yyy" in
7679                 123.456)
7680                         sPRIfldbl='"llf"'; sPRIgldbl='"llg"'; sPRIeldbl='"lle"';
7681                         sPRIFUldbl='"llF"'; sPRIGUldbl='"llG"'; sPRIEUldbl='"llE"';
7682                         echo "We will use %llf."
7683                         ;;
7684                 esac
7685         fi
7686 fi
7687
7688 if $test X"$sPRIfldbl" = X; then
7689         $cat >try.c <<'EOCP'
7690 #include <sys/types.h>
7691 #include <stdio.h>
7692 int main() {
7693   long double d = 123.456;
7694   printf("%.3Lf\n", d);
7695 }
7696 EOCP
7697         set try
7698         if eval $compile; then
7699                 yyy=`./try$exe_ext`
7700                 case "$yyy" in
7701                 123.456)
7702                         sPRIfldbl='"Lf"'; sPRIgldbl='"Lg"'; sPRIeldbl='"Le"';
7703                         sPRIFUldbl='"LF"'; sPRIGUldbl='"LG"'; sPRIEUldbl='"LE"';
7704                         echo "We will use %Lf."
7705                         ;;
7706                 esac
7707         fi
7708 fi
7709
7710 if $test X"$sPRIfldbl" = X; then
7711         $cat >try.c <<'EOCP'
7712 #include <sys/types.h>
7713 #include <stdio.h>
7714 int main() {
7715   long double d = 123.456;
7716   printf("%.3lf\n", d);
7717 }
7718 EOCP
7719         set try
7720         if eval $compile; then
7721                 yyy=`./try$exe_ext`
7722                 case "$yyy" in
7723                 123.456)
7724                         sPRIfldbl='"lf"'; sPRIgldbl='"lg"'; sPRIeldbl='"le"';
7725                         sPRIFUldbl='"lF"'; sPRIGUldbl='"lG"'; sPRIEUldbl='"lE"';
7726                         echo "We will use %lf."
7727                         ;;
7728                 esac
7729         fi
7730 fi
7731
7732 if $test X"$sPRIfldbl" = X; then
7733         echo "Cannot figure out how to print long doubles." >&4
7734 else
7735         sSCNfldbl=$sPRIfldbl    # expect consistency
7736 fi
7737
7738 $rm -f try try.*
7739
7740 fi # d_longdbl
7741
7742 case "$sPRIfldbl" in
7743 '')     d_PRIfldbl="$undef"; d_PRIgldbl="$undef"; d_PRIeldbl="$undef"; 
7744         d_PRIFUldbl="$undef"; d_PRIGUldbl="$undef"; d_PRIEUldbl="$undef"; 
7745         d_SCNfldbl="$undef";
7746         ;;
7747 *)      d_PRIfldbl="$define"; d_PRIgldbl="$define"; d_PRIeldbl="$define"; 
7748         d_PRIFUldbl="$define"; d_PRIGUldbl="$define"; d_PRIEUldbl="$define"; 
7749         d_SCNfldbl="$define";
7750         ;;
7751 esac
7752
7753 : Check how to convert floats to strings.
7754 echo " "
7755 echo "Checking for an efficient way to convert floats to strings."
7756 echo " " > try.c
7757 case "$uselongdouble" in
7758 "$define") echo "#define USE_LONG_DOUBLE" >>try.c ;;
7759 esac
7760 case "$d_longdbl" in
7761 "$define") echo "#define HAS_LONG_DOUBLE" >>try.c ;;
7762 esac
7763 case "$d_PRIgldbl" in
7764 "$define") echo "#define HAS_PRIgldbl"    >>try.c ;;
7765 esac
7766 $cat >>try.c <<EOP
7767 #ifdef TRY_gconvert
7768 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
7769 char *myname = "gconvert";
7770 #endif
7771 #ifdef TRY_gcvt
7772 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
7773 char *myname = "gcvt";
7774 #endif
7775 #ifdef TRY_qgcvt
7776 #define Gconvert(x,n,t,b) qgcvt((x),(n),(b))
7777 char *myname = "qgcvt";
7778 #define DOUBLETYPE long double
7779 #endif
7780 #ifdef TRY_sprintf
7781 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE) && defined(HAS_PRIgldbl)
7782 #define Gconvert(x,n,t,b) sprintf((b),"%.*"$sPRIgldbl,(n),(x))
7783 #else
7784 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
7785 #endif
7786 char *myname = "sprintf";
7787 #endif
7788
7789 #ifndef DOUBLETYPE
7790 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
7791 #define DOUBLETYPE long double
7792 #else
7793 #define DOUBLETYPE double
7794 #endif
7795 #endif
7796
7797 #include <stdio.h>
7798
7799 #define I_STDLIB $i_stdlib
7800 #ifdef I_STDLIB
7801 #include <stdlib.h>
7802 #endif
7803
7804 int
7805 checkit(expect, got)
7806 char *expect;
7807 char *got;
7808 {
7809     if (strcmp(expect, got)) {
7810                 printf("%s oddity:  Expected %s, got %s\n",
7811                         myname, expect, got);
7812                 exit(1);
7813         }
7814 }
7815
7816 int main()
7817
7818         char buf[64]; 
7819         buf[63] = '\0';
7820
7821         /* This must be 1st test on (which?) platform */
7822         /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
7823         Gconvert((DOUBLETYPE)0.1, 8, 0, buf);
7824         checkit("0.1", buf);
7825
7826         Gconvert((DOUBLETYPE)1.0, 8, 0, buf); 
7827         checkit("1", buf);
7828
7829         Gconvert((DOUBLETYPE)1.1, 8, 0, buf); 
7830         checkit("1.1", buf);
7831
7832         Gconvert((DOUBLETYPE)1.01, 8, 0, buf); 
7833         checkit("1.01", buf);
7834
7835         Gconvert((DOUBLETYPE)1.001, 8, 0, buf); 
7836         checkit("1.001", buf);
7837
7838         Gconvert((DOUBLETYPE)1.0001, 8, 0, buf); 
7839         checkit("1.0001", buf);
7840
7841         Gconvert((DOUBLETYPE)1.00001, 8, 0, buf); 
7842         checkit("1.00001", buf);
7843
7844         Gconvert((DOUBLETYPE)1.000001, 8, 0, buf); 
7845         checkit("1.000001", buf);
7846
7847         Gconvert((DOUBLETYPE)0.0, 8, 0, buf); 
7848         checkit("0", buf);
7849
7850         Gconvert((DOUBLETYPE)-1.0, 8, 0, buf); 
7851         checkit("-1", buf);
7852
7853         /* Some Linux gcvt's give 1.e+5 here. */
7854         Gconvert((DOUBLETYPE)100000.0, 8, 0, buf); 
7855         checkit("100000", buf);
7856         
7857         /* Some Linux gcvt's give -1.e+5 here. */
7858         Gconvert((DOUBLETYPE)-100000.0, 8, 0, buf); 
7859         checkit("-100000", buf);
7860
7861         Gconvert((DOUBLETYPE)123.456, 8, 0, buf); 
7862         checkit("123.456", buf);
7863
7864         exit(0);
7865 }
7866 EOP
7867 case "$d_Gconvert" in
7868 gconvert*) xxx_list='gconvert gcvt sprintf' ;;
7869 gcvt*) xxx_list='gcvt gconvert sprintf' ;;
7870 sprintf*) xxx_list='sprintf gconvert gcvt' ;;
7871 *) xxx_list='gconvert gcvt sprintf' ;;
7872 esac
7873
7874 case "$d_longdbl$uselongdouble$d_PRIgldbl" in
7875 "$define$define$define")
7876     # for long doubles prefer first qgcvt, then sprintf
7877     xxx_list="`echo $xxx_list|sed s/sprintf//`" 
7878     xxx_list="sprintf $xxx_list"
7879     case "$d_qgcvt" in
7880     "$define") xxx_list="qgcvt $xxx_list" ;;
7881     esac
7882     ;;
7883 esac
7884
7885 for xxx_convert in $xxx_list; do
7886         echo "Trying $xxx_convert..."
7887         $rm -f try try$_o
7888         set try -DTRY_$xxx_convert
7889         if eval $compile; then
7890                 echo "$xxx_convert() found." >&4
7891                 if ./try; then
7892                         echo "I'll use $xxx_convert to convert floats into a string." >&4
7893                         break;
7894                 else
7895                         echo "...But $xxx_convert didn't work as I expected."
7896                 fi
7897         else
7898                 echo "$xxx_convert NOT found." >&4
7899         fi
7900 done
7901         
7902 case "$xxx_convert" in
7903 gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
7904 gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
7905 qgcvt) d_Gconvert='qgcvt((x),(n),(b))' ;;
7906 *) case "$uselongdouble$d_longdbl$d_PRIgldbl" in
7907    "$define$define$define")
7908       d_Gconvert="sprintf((b),\"%.*\"$sPRIgldbl,(n),(x))" ;;
7909    *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
7910    esac
7911    ;;  
7912 esac
7913
7914 : see if _fwalk exists
7915 set fwalk d__fwalk
7916 eval $inlibc
7917
7918 : Initialize h_fcntl
7919 h_fcntl=false
7920
7921 : Initialize h_sysfile
7922 h_sysfile=false
7923
7924 : access call always available on UNIX
7925 set access d_access
7926 eval $inlibc
7927
7928 : locate the flags for 'access()'
7929 case "$d_access" in
7930 "$define")
7931         echo " "
7932         $cat >access.c <<'EOCP'
7933 #include <sys/types.h>
7934 #ifdef I_FCNTL
7935 #include <fcntl.h>
7936 #endif
7937 #ifdef I_SYS_FILE
7938 #include <sys/file.h>
7939 #endif
7940 #ifdef I_UNISTD
7941 #include <unistd.h>
7942 #endif
7943 int main() {
7944         exit(R_OK);
7945 }
7946 EOCP
7947         : check sys/file.h first, no particular reason here
7948         if $test `./findhdr sys/file.h` && \
7949                 $cc -o access $cppflags -DI_SYS_FILE access.c >/dev/null 2>&1 ; then
7950                 h_sysfile=true;
7951                 echo "<sys/file.h> defines the *_OK access constants." >&4
7952         elif $test `./findhdr fcntl.h` && \
7953                 $cc -o access $cppflags -DI_FCNTL access.c >/dev/null 2>&1 ; then
7954                 h_fcntl=true;
7955                 echo "<fcntl.h> defines the *_OK access constants." >&4
7956         elif $test `./findhdr unistd.h` && \
7957                 $cc -o access $cppflags -DI_UNISTD access.c >/dev/null 2>&1 ; then
7958                 echo "<unistd.h> defines the *_OK access constants." >&4
7959         else
7960                 echo "I can't find the four *_OK access constants--I'll use mine." >&4
7961         fi
7962         ;;
7963 esac
7964 $rm -f access*
7965
7966 : see if accessx exists
7967 set accessx d_accessx
7968 eval $inlibc
7969
7970 : see if alarm exists
7971 set alarm d_alarm
7972 eval $inlibc
7973
7974 : see if atolf exists
7975 set atolf d_atolf
7976 eval $inlibc
7977
7978 : see if atoll exists
7979 set atoll d_atoll
7980 eval $inlibc
7981
7982 : Look for GNU-cc style attribute checking
7983 echo " "
7984 echo "Checking whether your compiler can handle __attribute__ ..." >&4
7985 $cat >attrib.c <<'EOCP'
7986 #include <stdio.h>
7987 void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn));
7988 EOCP
7989 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
7990         if $contains 'warning' attrib.out >/dev/null 2>&1; then
7991                 echo "Your C compiler doesn't fully support __attribute__."
7992                 val="$undef"
7993         else
7994                 echo "Your C compiler supports __attribute__."
7995                 val="$define"
7996         fi
7997 else
7998         echo "Your C compiler doesn't seem to understand __attribute__ at all."
7999         val="$undef"
8000 fi
8001 set d_attribut
8002 eval $setvar
8003 $rm -f attrib*
8004
8005 : see if bcmp exists
8006 set bcmp d_bcmp
8007 eval $inlibc
8008
8009 : see if bcopy exists
8010 set bcopy d_bcopy
8011 eval $inlibc
8012
8013 : see if this is a unistd.h system
8014 set unistd.h i_unistd
8015 eval $inhdr
8016
8017 : see if getpgrp exists
8018 set getpgrp d_getpgrp
8019 eval $inlibc
8020
8021 case "$d_getpgrp" in
8022 "$define")
8023         echo " "
8024         echo "Checking to see which flavor of getpgrp is in use..."
8025         $cat >set.c <<EOP
8026 #$i_unistd I_UNISTD
8027 #include <sys/types.h>
8028 #ifdef I_UNISTD
8029 #  include <unistd.h>
8030 #endif
8031 int main()
8032 {
8033         if (getuid() == 0) {
8034                 printf("(I see you are running Configure as super-user...)\n");
8035                 setuid(1);
8036         }
8037 #ifdef TRY_BSD_PGRP
8038         if (getpgrp(1) == 0)
8039                 exit(0);
8040 #else
8041         if (getpgrp() > 0)
8042                 exit(0);
8043 #endif
8044         exit(1);
8045 }
8046 EOP
8047         if $cc -o set -DTRY_BSD_PGRP $ccflags $ldflags set.c $libs >/dev/null 2>&1 && ./set; then
8048                 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
8049                 val="$define"
8050         elif $cc -o set $ccflags $ldflags set.c $libs >/dev/null 2>&1 && ./set; then
8051                 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
8052                 val="$undef"
8053         else
8054                 echo "I can't seem to compile and run the test program."
8055                 if ./usg; then
8056                         xxx="a USG one, i.e. you use getpgrp()."
8057                 else
8058                         # SVR4 systems can appear rather BSD-ish.
8059                         case "$i_unistd" in
8060                         $undef)
8061                                 xxx="a BSD one, i.e. you use getpgrp(pid)."
8062                                 val="$define"
8063                                 ;;
8064                         $define)
8065                                 xxx="probably a USG one, i.e. you use getpgrp()."
8066                                 val="$undef"
8067                                 ;;
8068                         esac
8069                 fi
8070                 echo "Assuming your getpgrp is $xxx" >&4
8071         fi
8072         ;;
8073 *) val="$undef";;
8074 esac
8075 set d_bsdgetpgrp
8076 eval $setvar
8077 $rm -f set set.c
8078
8079 : see if setpgrp exists
8080 set setpgrp d_setpgrp
8081 eval $inlibc
8082
8083 case "$d_setpgrp" in
8084 "$define")
8085         echo " "
8086         echo "Checking to see which flavor of setpgrp is in use..."
8087         $cat >set.c <<EOP
8088 #$i_unistd I_UNISTD
8089 #include <sys/types.h>
8090 #ifdef I_UNISTD
8091 #  include <unistd.h>
8092 #endif
8093 int main()
8094 {
8095         if (getuid() == 0) {
8096                 printf("(I see you are running Configure as super-user...)\n");
8097                 setuid(1);
8098         }
8099 #ifdef TRY_BSD_PGRP
8100         if (-1 == setpgrp(1, 1))
8101                 exit(0);
8102 #else
8103         if (setpgrp() != -1)
8104                 exit(0);
8105 #endif
8106         exit(1);
8107 }
8108 EOP
8109         if $cc -o set -DTRY_BSD_PGRP $ccflags $ldflags set.c $libs >/dev/null 2>&1 && ./set; then
8110                 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
8111                 val="$define"
8112         elif $cc -o set $ccflags $ldflags set.c $libs >/dev/null 2>&1 && ./set; then
8113                 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
8114                 val="$undef"
8115         else
8116                 echo "(I can't seem to compile and run the test program.)"
8117                 if ./usg; then
8118                         xxx="a USG one, i.e. you use setpgrp()."
8119                 else
8120                         # SVR4 systems can appear rather BSD-ish.
8121                         case "$i_unistd" in
8122                         $undef)
8123                                 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
8124                                 val="$define"
8125                                 ;;
8126                         $define)
8127                                 xxx="probably a USG one, i.e. you use setpgrp()."
8128                                 val="$undef"
8129                                 ;;
8130                         esac
8131                 fi
8132                 echo "Assuming your setpgrp is $xxx" >&4
8133         fi
8134         ;;
8135 *) val="$undef";;
8136 esac
8137 set d_bsdsetpgrp
8138 eval $setvar
8139 $rm -f set set.c
8140 : see if bzero exists
8141 set bzero d_bzero
8142 eval $inlibc
8143
8144 : see if signal is declared as pointer to function returning int or void
8145 echo " "
8146 xxx=`./findhdr signal.h`
8147 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
8148 if $contains 'int.*\*[  ]*signal' $$.tmp >/dev/null 2>&1 ; then
8149         echo "You have int (*signal())() instead of void." >&4
8150         val="$undef"
8151 elif $contains 'void.*\*[       ]*signal' $$.tmp >/dev/null 2>&1 ; then
8152         echo "You have void (*signal())()." >&4
8153         val="$define"
8154 elif $contains 'extern[         ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
8155         echo "You have int (*signal())() instead of void." >&4
8156         val="$undef"
8157 elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
8158         echo "You have void (*signal())()." >&4
8159         val="$define"
8160 else
8161         case "$d_voidsig" in
8162         '')
8163         echo "I can't determine whether signal handler returns void or int..." >&4
8164                 dflt=void
8165                 rp="What type does your signal handler return?"
8166                 . ./myread
8167                 case "$ans" in
8168                 v*) val="$define";;
8169                 *) val="$undef";;
8170                 esac;;
8171         "$define")
8172                 echo "As you already told me, signal handler returns void." >&4
8173                 val="$define"
8174                 ;;
8175         *)      echo "As you already told me, signal handler returns int." >&4
8176                 val="$undef"
8177                 ;;
8178         esac
8179 fi
8180 set d_voidsig
8181 eval $setvar
8182 case "$d_voidsig" in
8183 "$define") signal_t="void";;
8184 *) signal_t="int";;
8185 esac
8186 $rm -f $$.tmp
8187
8188 : check for ability to cast large floats to 32-bit ints.
8189 echo " "
8190 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
8191 if $test "$intsize" -ge 4; then
8192         xxx=int
8193 else
8194         xxx=long
8195 fi
8196 $cat >try.c <<EOCP
8197 #include <stdio.h>
8198 #include <sys/types.h>
8199 #include <signal.h>
8200 $signal_t blech(s) int s; { exit(3); }
8201 int main()
8202 {
8203         $xxx i32;
8204         double f, g;
8205         int result = 0;
8206         char str[16];
8207         signal(SIGFPE, blech);
8208
8209         /* Don't let compiler optimize the test away.  Store the number 
8210            in a writable string for gcc to pass to sscanf under HP/UX.
8211         */
8212         sprintf(str, "2147483647");
8213         sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
8214         g = 10 * f;
8215         i32  = ($xxx) g;
8216
8217         /* x86 processors will probably give 0x8000 0000, which is a
8218        sign change.  We don't want that.  We want to mimic SPARC
8219            behavior here, which is to preserve the sign and give
8220            back 0x7fff ffff.
8221         */
8222         if (i32 != ($xxx) f)
8223                 result |= 1;
8224         exit(result);
8225 }
8226 EOCP
8227 set try
8228 if eval $compile_ok; then
8229         ./try
8230         yyy=$?
8231 else
8232         echo "(I can't seem to compile the test program--assuming it can't)"
8233         yyy=1
8234 fi
8235 case "$yyy" in
8236 0)      val="$define"
8237         echo "Yup, it can."
8238         ;;
8239 *)      val="$undef"
8240         echo "Nope, it can't."
8241         ;;
8242 esac
8243 set d_casti32
8244 eval $setvar
8245 $rm -f try try.*
8246
8247 : check for ability to cast negative floats to unsigned
8248 echo " "
8249 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
8250 $cat >try.c <<EOCP
8251 #include <stdio.h>
8252 #include <sys/types.h>
8253 #include <signal.h>
8254 $signal_t blech(s) int s; { exit(7); }
8255 $signal_t blech_in_list(s) int s; { exit(4); }
8256 unsigned long dummy_long(p) unsigned long p; { return p; }
8257 unsigned int dummy_int(p) unsigned int p; { return p; }
8258 unsigned short dummy_short(p) unsigned short p; { return p; }
8259 int main()
8260 {
8261         double f;
8262         unsigned long along;
8263         unsigned int aint;
8264         unsigned short ashort;
8265         int result = 0;
8266         char str[16];
8267         
8268         /* Frustrate gcc-2.7.2's optimizer which failed this test with
8269            a direct f = -123. assignment.  gcc-2.8.0 reportedly
8270            optimized the whole file away
8271         */
8272         /* Store the number in a writable string for gcc to pass to 
8273            sscanf under HP/UX.
8274         */
8275         sprintf(str, "-123");
8276         sscanf(str, "%lf", &f);  /* f = -123.; */
8277
8278         signal(SIGFPE, blech);
8279         along = (unsigned long)f;
8280         aint = (unsigned int)f;
8281         ashort = (unsigned short)f;
8282         if (along != (unsigned long)-123)
8283                 result |= 1;
8284         if (aint != (unsigned int)-123)
8285                 result |= 1;
8286         if (ashort != (unsigned short)-123)
8287                 result |= 1;
8288         sprintf(str, "1073741824.");
8289         sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
8290         f = f + f;
8291         along = 0;
8292         along = (unsigned long)f;
8293         if (along != 0x80000000)
8294                 result |= 2;
8295         f -= 1.;
8296         along = 0;
8297         along = (unsigned long)f;
8298         if (along != 0x7fffffff)
8299                 result |= 1;
8300         f += 2.;
8301         along = 0;
8302         along = (unsigned long)f;
8303         if (along != 0x80000001)
8304                 result |= 2;
8305         if (result)
8306                 exit(result);
8307         signal(SIGFPE, blech_in_list);
8308         sprintf(str, "123.");
8309         sscanf(str, "%lf", &f);  /* f = 123.; */
8310         along = dummy_long((unsigned long)f);
8311         aint = dummy_int((unsigned int)f);
8312         ashort = dummy_short((unsigned short)f);
8313         if (along != (unsigned long)123)
8314                 result |= 4;
8315         if (aint != (unsigned int)123)
8316                 result |= 4;
8317         if (ashort != (unsigned short)123)
8318                 result |= 4;
8319         exit(result);
8320
8321 }
8322 EOCP
8323 set try
8324 if eval $compile_ok; then
8325         ./try
8326         castflags=$?
8327 else
8328         echo "(I can't seem to compile the test program--assuming it can't)"
8329         castflags=7
8330 fi
8331 case "$castflags" in
8332 0)      val="$define"
8333         echo "Yup, it can."
8334         ;;
8335 *)      val="$undef"
8336         echo "Nope, it can't."
8337         ;;
8338 esac
8339 set d_castneg
8340 eval $setvar
8341 $rm -f try.*
8342
8343 : see if vprintf exists
8344 echo " "
8345 if set vprintf val -f d_vprintf; eval $csym; $val; then
8346         echo 'vprintf() found.' >&4
8347         val="$define"
8348         $cat >vprintf.c <<'EOF'
8349 #include <varargs.h>
8350
8351 int main() { xxx("foo"); }
8352
8353 xxx(va_alist)
8354 va_dcl
8355 {
8356         va_list args;
8357         char buf[10];
8358
8359         va_start(args);
8360         exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
8361 }
8362 EOF
8363         set vprintf
8364         if eval $compile && ./vprintf; then
8365                 echo "Your vsprintf() returns (int)." >&4
8366                 val2="$undef"
8367         else
8368                 echo "Your vsprintf() returns (char*)." >&4
8369                 val2="$define"
8370         fi
8371 else
8372         echo 'vprintf() NOT found.' >&4
8373                 val="$undef"
8374                 val2="$undef"
8375 fi
8376 set d_vprintf
8377 eval $setvar
8378 val=$val2
8379 set d_charvspr
8380 eval $setvar
8381
8382 : see if chown exists
8383 set chown d_chown
8384 eval $inlibc
8385
8386 : see if chroot exists
8387 set chroot d_chroot
8388 eval $inlibc
8389
8390 : see if chsize exists
8391 set chsize d_chsize
8392 eval $inlibc
8393
8394 : check for const keyword
8395 echo " "
8396 echo 'Checking to see if your C compiler knows about "const"...' >&4
8397 $cat >const.c <<'EOCP'
8398 typedef struct spug { int drokk; } spug;
8399 int main()
8400 {
8401         const char *foo;
8402         const spug y;
8403 }
8404 EOCP
8405 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
8406         val="$define"
8407         echo "Yup, it does."
8408 else
8409         val="$undef"
8410         echo "Nope, it doesn't."
8411 fi
8412 set d_const
8413 eval $setvar
8414
8415 : see if crypt exists
8416 echo " "
8417 if set crypt val -f d_crypt; eval $csym; $val; then
8418         echo 'crypt() found.' >&4
8419         val="$define"
8420         cryptlib=''
8421 else
8422         cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
8423         if $test -z "$cryptlib"; then
8424                 cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
8425         else
8426                 cryptlib=-lcrypt
8427         fi
8428         if $test -z "$cryptlib"; then
8429                 cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
8430         else
8431                 cryptlib=-lcrypt
8432         fi
8433         if $test -z "$cryptlib"; then
8434                 cryptlib=`./loc libcrypt$_a "" $libpth`
8435         else
8436                 cryptlib=-lcrypt
8437         fi
8438         if $test -z "$cryptlib"; then
8439                 echo 'crypt() NOT found.' >&4
8440                 val="$undef"
8441         else
8442                 val="$define"
8443         fi
8444 fi
8445 set d_crypt
8446 eval $setvar
8447
8448 : get csh whereabouts
8449 case "$csh" in
8450 'csh') val="$undef" ;;
8451 *) val="$define" ;;
8452 esac
8453 set d_csh
8454 eval $setvar
8455 : Respect a hint or command line value for full_csh.
8456 case "$full_csh" in
8457 '') full_csh=$csh ;;
8458 esac
8459
8460 : see if cuserid exists
8461 set cuserid d_cuserid
8462 eval $inlibc
8463
8464 : see if this is a limits.h system
8465 set limits.h i_limits
8466 eval $inhdr
8467
8468 : see if this is a float.h system
8469 set float.h i_float
8470 eval $inhdr
8471
8472 : See if number of significant digits in a double precision number is known
8473 echo " "
8474 $cat >dbl_dig.c <<EOM
8475 #$i_limits I_LIMITS
8476 #$i_float I_FLOAT
8477 #ifdef I_LIMITS
8478 #include <limits.h>
8479 #endif
8480 #ifdef I_FLOAT
8481 #include <float.h>
8482 #endif
8483 #ifdef DBL_DIG
8484 printf("Contains DBL_DIG");
8485 #endif
8486 EOM
8487 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
8488 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
8489         echo "DBL_DIG found." >&4
8490         val="$define"
8491 else
8492         echo "DBL_DIG NOT found." >&4
8493         val="$undef"
8494 fi
8495 $rm -f dbl_dig.?
8496 set d_dbl_dig
8497 eval $setvar
8498
8499 : see if difftime exists
8500 set difftime d_difftime
8501 eval $inlibc
8502
8503 : see if this is a dirent system
8504 echo " "
8505 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
8506         val="$define"
8507         echo "<dirent.h> found." >&4
8508 else
8509         val="$undef"
8510         if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
8511                 echo "<sys/dir.h> found." >&4
8512                 echo " "
8513         else
8514                 xinc=`./findhdr sys/ndir.h`
8515         fi
8516         echo "<dirent.h> NOT found." >&4
8517 fi
8518 set i_dirent
8519 eval $setvar
8520
8521 : Look for type of directory structure.
8522 echo " "
8523 $cppstdin $cppflags $cppminus < "$xinc" > try.c
8524
8525 case "$direntrytype" in
8526 ''|' ')
8527         case "$i_dirent" in
8528         $define) guess1='struct dirent' ;;
8529         *) guess1='struct direct'  ;;
8530         esac
8531         ;;
8532 *)      guess1="$direntrytype"
8533         ;;
8534 esac
8535
8536 case "$guess1" in
8537 'struct dirent') guess2='struct direct' ;;
8538 *) guess2='struct dirent' ;;
8539 esac
8540                 
8541 if $contains "$guess1" try.c >/dev/null 2>&1; then
8542         direntrytype="$guess1"
8543         echo "Your directory entries are $direntrytype." >&4
8544 elif $contains "$guess2" try.c >/dev/null 2>&1; then
8545         direntrytype="$guess2"
8546         echo "Your directory entries seem to be $direntrytype." >&4
8547 else
8548         echo "I don't recognize your system's directory entries." >&4
8549         rp="What type is used for directory entries on this system?"
8550         dflt="$guess1"
8551         . ./myread
8552         direntrytype="$ans"
8553 fi
8554 $rm -f try.c
8555
8556
8557 : see if the directory entry stores field length
8558 echo " "
8559 $cppstdin $cppflags $cppminus < "$xinc" > try.c
8560 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
8561         echo "Good, your directory entry keeps length information in d_namlen." >&4
8562         val="$define"
8563 else
8564         echo "Your directory entry does not know about the d_namlen field." >&4
8565         val="$undef"
8566 fi
8567 set d_dirnamlen
8568 eval $setvar
8569 $rm -f try.c
8570
8571 : see if dlerror exists
8572 xxx_runnm="$runnm"
8573 runnm=false
8574 set dlerror d_dlerror
8575 eval $inlibc
8576 runnm="$xxx_runnm"
8577
8578 : see if dlfcn is available
8579 set dlfcn.h i_dlfcn
8580 eval $inhdr
8581
8582 case "$usedl" in
8583 $define|y|true)
8584         $cat << EOM
8585
8586 On a few systems, the dynamically loaded modules that perl generates and uses
8587 will need a different extension than shared libs. The default will probably
8588 be appropriate.
8589
8590 EOM
8591         case "$dlext" in
8592         '')     dflt="$so" ;;
8593         *)      dflt="$dlext" ;;
8594         esac
8595         rp='What is the extension of dynamically loaded modules'
8596         . ./myread
8597         dlext="$ans"
8598         ;;
8599 *)
8600         dlext="none"
8601         ;;
8602 esac
8603
8604 : Check if dlsym need a leading underscore
8605 echo " "
8606 val="$undef"
8607
8608 case "$dlsrc" in
8609 dl_dlopen.xs)
8610         echo "Checking whether your dlsym() needs a leading underscore ..." >&4
8611         $cat >dyna.c <<'EOM'
8612 fred () { }
8613 EOM
8614
8615 $cat >fred.c<<EOM
8616
8617 #include <stdio.h>
8618 #$i_dlfcn I_DLFCN
8619 #ifdef I_DLFCN
8620 #include <dlfcn.h>      /* the dynamic linker include file for Sunos/Solaris */
8621 #else
8622 #include <sys/types.h>
8623 #include <nlist.h>
8624 #include <link.h>
8625 #endif
8626
8627 extern int fred() ;
8628
8629 int main()
8630 {
8631     void * handle ;
8632     void * symbol ;
8633 #ifndef RTLD_LAZY
8634     int mode = 1 ;
8635 #else
8636     int mode = RTLD_LAZY ;
8637 #endif
8638     handle = dlopen("./dyna.$dlext", mode) ;
8639     if (handle == NULL) {
8640         printf ("1\n") ;
8641         fflush (stdout) ;
8642         exit(0);
8643     }
8644     symbol = dlsym(handle, "fred") ;
8645     if (symbol == NULL) {
8646         /* try putting a leading underscore */
8647         symbol = dlsym(handle, "_fred") ;
8648         if (symbol == NULL) {
8649             printf ("2\n") ;
8650             fflush (stdout) ;
8651             exit(0);
8652         }
8653         printf ("3\n") ;
8654     }
8655     else
8656         printf ("4\n") ;
8657     fflush (stdout) ;
8658     exit(0);
8659 }
8660 EOM
8661         : Call the object file tmp-dyna.o in case dlext=o.
8662         if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 && 
8663                 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 && 
8664                 $ld -o dyna.$dlext $lddlflags tmp-dyna${_o} > /dev/null 2>&1 && 
8665                 $cc -o fred $ccflags $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1; then
8666                 xxx=`./fred`
8667                 case $xxx in
8668                 1)      echo "Test program failed using dlopen." >&4
8669                         echo "Perhaps you should not use dynamic loading." >&4;;
8670                 2)      echo "Test program failed using dlsym." >&4
8671                         echo "Perhaps you should not use dynamic loading." >&4;;
8672                 3)      echo "dlsym needs a leading underscore" >&4
8673                         val="$define" ;;
8674                 4)      echo "dlsym doesn't need a leading underscore." >&4;;
8675                 esac
8676         else
8677                 echo "I can't compile and run the test program." >&4
8678                 echo "I'm guessing that dlsym doesn't need a leading underscore." >&4
8679         fi
8680         ;;
8681 esac
8682                 
8683 $rm -f fred fred.? dyna.$dlext dyna.? tmp-dyna.?
8684
8685 set d_dlsymun
8686 eval $setvar
8687
8688 hasproto='varname=$1; func=$2; shift; shift;
8689 while $test $# -ge 2; do
8690         case "$1" in
8691         $define) echo "#include <$2>";;
8692         esac ;
8693     shift 2;
8694 done > try.c;
8695 $cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
8696 if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
8697         echo "$func() prototype found.";
8698         val="$define";
8699 else
8700         echo "$func() prototype NOT found.";
8701         val="$undef";
8702 fi;
8703 set $varname;
8704 eval $setvar;
8705 $rm -f try.c tryout.c'
8706
8707 : see if prototype for drand48 is available
8708 echo " "
8709 set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
8710 eval $hasproto
8711
8712 : see if dup2 exists
8713 set dup2 d_dup2
8714 eval $inlibc
8715
8716 : see if eaccess exists
8717 set eaccess d_eaccess
8718 eval $inlibc
8719
8720 : see if endgrent exists
8721 set endgrent d_endgrent
8722 eval $inlibc
8723
8724 : see if endhostent exists
8725 set endhostent d_endhent
8726 eval $inlibc
8727
8728 : see if endnetent exists
8729 set endnetent d_endnent
8730 eval $inlibc
8731
8732 : see if endprotoent exists
8733 set endprotoent d_endpent
8734 eval $inlibc
8735
8736 : see if endpwent exists
8737 set endpwent d_endpwent
8738 eval $inlibc
8739
8740 : see if endservent exists
8741 set endservent d_endsent
8742 eval $inlibc
8743
8744 : Locate the flags for 'open()'
8745 echo " "
8746 $cat >open3.c <<'EOCP'
8747 #include <sys/types.h>
8748 #ifdef I_FCNTL
8749 #include <fcntl.h>
8750 #endif
8751 #ifdef I_SYS_FILE
8752 #include <sys/file.h>
8753 #endif
8754 int main() {
8755         if(O_RDONLY);
8756 #ifdef O_TRUNC
8757         exit(0);
8758 #else
8759         exit(1);
8760 #endif
8761 }
8762 EOCP
8763 : check sys/file.h first to get FREAD on Sun
8764 if $test `./findhdr sys/file.h` && \
8765                 set open3 -DI_SYS_FILE && eval $compile; then
8766         h_sysfile=true;
8767         echo "<sys/file.h> defines the O_* constants..." >&4
8768         if ./open3; then
8769                 echo "and you have the 3 argument form of open()." >&4
8770                 val="$define"
8771         else
8772                 echo "but not the 3 argument form of open().  Oh, well." >&4
8773                 val="$undef"
8774         fi
8775 elif $test `./findhdr fcntl.h` && \
8776                 set open3 -DI_FCNTL && eval $compile; then
8777         h_fcntl=true;
8778         echo "<fcntl.h> defines the O_* constants..." >&4
8779         if ./open3; then
8780                 echo "and you have the 3 argument form of open()." >&4
8781                 val="$define"
8782         else
8783                 echo "but not the 3 argument form of open().  Oh, well." >&4
8784                 val="$undef"
8785         fi
8786 else
8787         val="$undef"
8788         echo "I can't find the O_* constant definitions!  You got problems." >&4
8789 fi
8790 set d_open3
8791 eval $setvar
8792 $rm -f open3*
8793
8794 : see which of string.h or strings.h is needed
8795 echo " "
8796 strings=`./findhdr string.h`
8797 if $test "$strings" && $test -r "$strings"; then
8798         echo "Using <string.h> instead of <strings.h>." >&4
8799         val="$define"
8800 else
8801         val="$undef"
8802         strings=`./findhdr strings.h`
8803         if $test "$strings" && $test -r "$strings"; then
8804                 echo "Using <strings.h> instead of <string.h>." >&4
8805         else
8806                 echo "No string header found -- You'll surely have problems." >&4
8807         fi
8808 fi
8809 set i_string
8810 eval $setvar
8811 case "$i_string" in
8812 "$undef") strings=`./findhdr strings.h`;;
8813 *)        strings=`./findhdr string.h`;;
8814 esac
8815
8816 : check for non-blocking I/O stuff
8817 case "$h_sysfile" in
8818 true) echo "#include <sys/file.h>" > head.c;;
8819 *)
8820        case "$h_fcntl" in
8821        true) echo "#include <fcntl.h>" > head.c;;
8822        *) echo "#include <sys/fcntl.h>" > head.c;;
8823        esac
8824        ;;
8825 esac
8826 echo " "
8827 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
8828 case "$o_nonblock" in
8829 '')
8830         $cat head.c > try.c
8831         $cat >>try.c <<'EOCP'
8832 #include <stdio.h>
8833 int main() {
8834 #ifdef O_NONBLOCK
8835         printf("O_NONBLOCK\n");
8836         exit(0);
8837 #endif
8838 #ifdef O_NDELAY
8839         printf("O_NDELAY\n");
8840         exit(0);
8841 #endif
8842 #ifdef FNDELAY
8843         printf("FNDELAY\n");
8844         exit(0);
8845 #endif
8846         exit(0);
8847 }
8848 EOCP
8849         set try
8850         if eval $compile_ok; then
8851                 o_nonblock=`./try`
8852                 case "$o_nonblock" in
8853                 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
8854                 *) echo "Seems like we can use $o_nonblock.";;
8855                 esac
8856         else
8857                 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
8858         fi
8859         ;;
8860 *) echo "Using $hint value $o_nonblock.";;
8861 esac
8862 $rm -f try try.* .out core
8863
8864 echo " "
8865 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
8866 case "$eagain" in
8867 '')
8868         $cat head.c > try.c
8869         $cat >>try.c <<EOCP
8870 #include <errno.h>
8871 #include <sys/types.h>
8872 #include <signal.h>
8873 #include <stdio.h> 
8874 #define MY_O_NONBLOCK $o_nonblock
8875 #ifndef errno  /* XXX need better Configure test */
8876 extern int errno;
8877 #endif
8878 #$i_unistd I_UNISTD
8879 #ifdef I_UNISTD
8880 #include <unistd.h>
8881 #endif
8882 #$i_string I_STRING
8883 #ifdef I_STRING
8884 #include <string.h>
8885 #else
8886 #include <strings.h>
8887 #endif
8888 $signal_t blech(x) int x; { exit(3); }
8889 EOCP
8890         $cat >> try.c <<'EOCP'
8891 int main()
8892 {
8893         int pd[2];
8894         int pu[2];
8895         char buf[1];
8896         char string[100];
8897
8898         pipe(pd);       /* Down: child -> parent */
8899         pipe(pu);       /* Up: parent -> child */
8900         if (0 != fork()) {
8901                 int ret;
8902                 close(pd[1]);   /* Parent reads from pd[0] */
8903                 close(pu[0]);   /* Parent writes (blocking) to pu[1] */
8904 #ifdef F_SETFL
8905                 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
8906                         exit(1);
8907 #else
8908                 exit(4);
8909 #endif
8910                 signal(SIGALRM, blech);
8911                 alarm(5);
8912                 if ((ret = read(pd[0], buf, 1)) > 0)    /* Nothing to read! */
8913                         exit(2);
8914                 sprintf(string, "%d\n", ret);
8915                 write(2, string, strlen(string));
8916                 alarm(0);
8917 #ifdef EAGAIN
8918                 if (errno == EAGAIN) {
8919                         printf("EAGAIN\n");
8920                         goto ok;
8921                 }
8922 #endif
8923 #ifdef EWOULDBLOCK
8924                 if (errno == EWOULDBLOCK)
8925                         printf("EWOULDBLOCK\n");
8926 #endif
8927         ok:
8928                 write(pu[1], buf, 1);   /* Unblocks child, tell it to close our pipe */
8929                 sleep(2);                               /* Give it time to close our pipe */
8930                 alarm(5);
8931                 ret = read(pd[0], buf, 1);      /* Should read EOF */
8932                 alarm(0);
8933                 sprintf(string, "%d\n", ret);
8934                 write(3, string, strlen(string));
8935                 exit(0);
8936         }
8937
8938         close(pd[0]);                   /* We write to pd[1] */
8939         close(pu[1]);                   /* We read from pu[0] */
8940         read(pu[0], buf, 1);    /* Wait for parent to signal us we may continue */
8941         close(pd[1]);                   /* Pipe pd is now fully closed! */
8942         exit(0);                                /* Bye bye, thank you for playing! */
8943 }
8944 EOCP
8945         set try
8946         if eval $compile_ok; then
8947                 echo "$startsh" >mtry
8948                 echo "./try >try.out 2>try.ret 3>try.err || exit 4" >>mtry
8949                 chmod +x mtry
8950                 ./mtry >/dev/null 2>&1
8951                 case $? in
8952                 0) eagain=`$cat try.out`;;
8953                 1) echo "Could not perform non-blocking setting!";;
8954                 2) echo "I did a successful read() for something that was not there!";;
8955                 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
8956                 4) echo "Could not find F_SETFL!";;
8957                 *) echo "Something terribly wrong happened during testing.";;
8958                 esac
8959                 rd_nodata=`$cat try.ret`
8960                 echo "A read() system call with no data present returns $rd_nodata."
8961                 case "$rd_nodata" in
8962                 0|-1) ;;
8963                 *)
8964                         echo "(That's peculiar, fixing that to be -1.)"
8965                         rd_nodata=-1
8966                         ;;
8967                 esac
8968                 case "$eagain" in
8969                 '')
8970                         echo "Forcing errno EAGAIN on read() with no data available."
8971                         eagain=EAGAIN
8972                         ;;
8973                 *)
8974                         echo "Your read() sets errno to $eagain when no data is available."
8975                         ;;
8976                 esac
8977                 status=`$cat try.err`
8978                 case "$status" in
8979                 0) echo "And it correctly returns 0 to signal EOF.";;
8980                 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
8981                 *) echo "However, your read() returns '$status' on EOF??";;
8982                 esac
8983                 val="$define"
8984                 if test "$status" = "$rd_nodata"; then
8985                         echo "WARNING: you can't distinguish between EOF and no data!"
8986                         val="$undef"
8987                 fi
8988         else
8989                 echo "I can't compile the test program--assuming errno EAGAIN will do."
8990                 eagain=EAGAIN
8991         fi
8992         set d_eofnblk
8993         eval $setvar
8994         ;;
8995 *)
8996         echo "Using $hint value $eagain."
8997         echo "Your read() returns $rd_nodata when no data is present."
8998         case "$d_eofnblk" in
8999         "$define") echo "And you can see EOF because read() returns 0.";;
9000         "$undef") echo "But you can't see EOF status from read() returned value.";;
9001         *)
9002                 echo "(Assuming you can't see EOF status from read anyway.)"
9003                 d_eofnblk=$undef
9004                 ;;
9005         esac
9006         ;;
9007 esac
9008 $rm -f try try.* .out core head.c mtry
9009
9010 : see if fchmod exists
9011 set fchmod d_fchmod
9012 eval $inlibc
9013
9014 : see if fchown exists
9015 set fchown d_fchown
9016 eval $inlibc
9017
9018 : see if this is an fcntl system
9019 set fcntl d_fcntl
9020 eval $inlibc
9021
9022 echo " "
9023 : See if fcntl-based locking works.
9024 $cat >try.c <<'EOCP'
9025 #include <stdlib.h>
9026 #include <unistd.h>
9027 #include <fcntl.h>
9028 int main() {
9029 #if defined(F_SETLK) && defined(F_SETLKW)
9030      struct flock flock;
9031      int retval, fd;
9032      fd = open("try.c", O_RDONLY);
9033      flock.l_type = F_RDLCK;
9034      flock.l_whence = SEEK_SET;
9035      flock.l_start = flock.l_len = 0;
9036      retval = fcntl(fd, F_SETLK, &flock);
9037      close(fd);
9038      (retval < 0 ? exit(2) : exit(0));
9039 #else
9040      exit(2);
9041 #endif
9042 }
9043 EOCP
9044 echo "Checking if fcntl-based file locking works... "
9045 case "$d_fcntl" in
9046 "$define")
9047         set try
9048         if eval $compile_ok; then
9049                 if ./try; then
9050                         echo "Yes, it seems to work."
9051                         val="$define"
9052                 else
9053                         echo "Nope, it didn't work."
9054                         val="$undef"
9055                 fi
9056         else
9057                 echo "I'm unable to compile the test program, so I'll assume not."
9058                 val="$undef"
9059         fi
9060         ;;
9061 *) val="$undef";
9062         echo "Nope, since you don't even have fcntl()."
9063         ;;
9064 esac
9065 set d_fcntl_can_lock
9066 eval $setvar
9067 $rm -f try*
9068
9069
9070 hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
9071 while $test $# -ge 2; do
9072         case "$1" in
9073         $define) echo "#include <$2>";;
9074         esac ;
9075     shift 2;
9076 done > try.c;
9077 echo "int main () { struct $struct foo; char* bar; bar = (char*)foo.$field; }" >> try.c;
9078 set try;
9079 if eval $compile; then
9080         val="$define";
9081 else
9082         val="$undef";
9083 fi;
9084 set $varname;
9085 eval $setvar;
9086 $rm -f try.c try.o'
9087
9088 socketlib=''
9089 sockethdr=''
9090 : see whether socket exists
9091 echo " "
9092 $echo $n "Hmm... $c" >&4
9093 if set socket val -f d_socket; eval $csym; $val; then
9094         echo "Looks like you have Berkeley networking support." >&4
9095         d_socket="$define"
9096         if set setsockopt val -f; eval $csym; $val; then
9097                 d_oldsock="$undef"
9098         else
9099                 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
9100                 d_oldsock="$define"
9101         fi
9102 else
9103         if $contains socklib libc.list >/dev/null 2>&1; then
9104                 echo "Looks like you have Berkeley networking support." >&4
9105                 d_socket="$define"
9106                 : we will have to assume that it supports the 4.2 BSD interface
9107                 d_oldsock="$undef"
9108         else
9109                 echo "You don't have Berkeley networking in libc$_a..." >&4
9110                 if test "X$d_socket" = "X$define"; then
9111                    echo "...but you seem to believe that you have sockets." >&4
9112                 else
9113                         for net in net socket
9114                         do
9115                                 if test -f /usr/lib/lib$net$_a; then
9116                                         ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) ||  \
9117                                         $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
9118                                         if $contains socket libc.list >/dev/null 2>&1; then
9119                                                 d_socket="$define"
9120                                                 socketlib="-l$net"
9121                                                 case "$net" in
9122                                                 net)
9123                                                         echo "...but the Wollongong group seems to have hacked it in." >&4
9124                                                         sockethdr="-I/usr/netinclude"
9125                                                         ;;
9126                                                 esac
9127                                                 echo "Found Berkeley sockets interface in lib$net." >& 4 
9128                                                 if $contains setsockopt libc.list >/dev/null 2>&1; then
9129                                                         d_oldsock="$undef"
9130                                                 else
9131                                                         echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
9132                                                         d_oldsock="$define"
9133                                                 fi
9134                                                 break
9135                                         fi
9136                                 fi
9137                         done
9138                         if test "X$d_socket" != "X$define"; then
9139                            echo "or anywhere else I see." >&4
9140                            d_socket="$undef"
9141                            d_oldsock="$undef"
9142                         fi
9143                 fi
9144         fi
9145 fi
9146
9147 : see if socketpair exists
9148 set socketpair d_sockpair
9149 eval $inlibc
9150
9151
9152 echo " "
9153 echo "Checking the availability of certain socket constants..." >& 4
9154 for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
9155         enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
9156         $cat >try.c <<EOF
9157 #include <sys/types.h>
9158 #include <sys/socket.h>
9159 int main() {
9160     int i = $ENUM;
9161 }
9162 EOF
9163         val="$undef"
9164         set try; if eval $compile; then
9165                 val="$define"
9166         fi
9167         set d_${enum}; eval $setvar
9168         $rm -f try.c try
9169 done
9170
9171 : see if sys/select.h has to be included
9172 set sys/select.h i_sysselct
9173 eval $inhdr
9174
9175 : see if we should include time.h, sys/time.h, or both
9176 echo " "
9177 if test "X$timeincl" = X; then
9178         echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
9179         $echo $n "I'm now running the test program...$c"
9180         $cat >try.c <<'EOCP'
9181 #include <sys/types.h>
9182 #ifdef I_TIME
9183 #include <time.h>
9184 #endif
9185 #ifdef I_SYSTIME
9186 #ifdef SYSTIMEKERNEL
9187 #define KERNEL
9188 #endif
9189 #include <sys/time.h>
9190 #endif
9191 #ifdef I_SYSSELECT
9192 #include <sys/select.h>
9193 #endif
9194 int main()
9195 {
9196         struct tm foo;
9197 #ifdef S_TIMEVAL
9198         struct timeval bar;
9199 #endif
9200 #ifdef S_TIMEZONE
9201         struct timezone tzp;
9202 #endif
9203         if (foo.tm_sec == foo.tm_sec)
9204                 exit(0);
9205 #ifdef S_TIMEVAL
9206         if (bar.tv_sec == bar.tv_sec)
9207                 exit(0);
9208 #endif
9209         exit(1);
9210 }
9211 EOCP
9212         flags=''
9213         for s_timezone in '-DS_TIMEZONE' ''; do
9214         sysselect=''
9215         for s_timeval in '-DS_TIMEVAL' ''; do
9216         for i_systimek in '' '-DSYSTIMEKERNEL'; do
9217         for i_time in '' '-DI_TIME'; do
9218         for i_systime in '-DI_SYSTIME' ''; do
9219                 case "$flags" in
9220                 '') $echo $n ".$c"
9221                         set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
9222                         if eval $compile; then
9223                                 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
9224                                 shift
9225                                 flags="$*"
9226                                 echo " "
9227                                 $echo $n "Succeeded with $flags$c"
9228                         fi
9229                         ;;
9230                 esac
9231         done
9232         done
9233         done
9234         done
9235         done
9236         timeincl=''
9237         echo " "
9238         case "$flags" in
9239         *SYSTIMEKERNEL*) i_systimek="$define"
9240                 timeincl=`./findhdr sys/time.h`
9241                 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
9242         *) i_systimek="$undef";;
9243         esac
9244         case "$flags" in
9245         *I_TIME*) i_time="$define"
9246                 timeincl=`./findhdr time.h`" $timeincl"
9247                 echo "We'll include <time.h>." >&4;;
9248         *) i_time="$undef";;
9249         esac
9250         case "$flags" in
9251         *I_SYSTIME*) i_systime="$define"
9252                 timeincl=`./findhdr sys/time.h`" $timeincl"
9253                 echo "We'll include <sys/time.h>." >&4;;
9254         *) i_systime="$undef";;
9255         esac
9256         $rm -f try.c try
9257 fi
9258
9259 : check for fd_set items
9260 $cat <<EOM
9261
9262 Checking to see how well your C compiler handles fd_set and friends ...
9263 EOM
9264 $cat >fd_set.c <<EOCP
9265 #$i_systime I_SYS_TIME
9266 #$i_sysselct I_SYS_SELECT
9267 #$d_socket HAS_SOCKET
9268 #include <sys/types.h>
9269 #ifdef HAS_SOCKET
9270 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
9271 #endif
9272 #ifdef I_SYS_TIME
9273 #include <sys/time.h>
9274 #endif
9275 #ifdef I_SYS_SELECT
9276 #include <sys/select.h>
9277 #endif
9278 int main() {
9279         fd_set fds;
9280
9281 #ifdef TRYBITS
9282         if(fds.fds_bits);
9283 #endif
9284
9285 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
9286         exit(0);
9287 #else
9288         exit(1);
9289 #endif
9290 }
9291 EOCP
9292 set fd_set -DTRYBITS
9293 if eval $compile; then
9294         d_fds_bits="$define"
9295         d_fd_set="$define"
9296         echo "Well, your system knows about the normal fd_set typedef..." >&4
9297         if ./fd_set; then
9298                 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
9299                 d_fd_macros="$define"
9300         else
9301                 $cat >&4 <<'EOM'
9302 but not the normal fd_set macros!  Gaaack!  I'll have to cover for you.
9303 EOM
9304                 d_fd_macros="$undef"
9305         fi
9306 else
9307         $cat <<'EOM'
9308 Hmm, your compiler has some difficulty with fd_set.  Checking further...
9309 EOM
9310         set fd_set
9311         if eval $compile; then
9312                 d_fds_bits="$undef"
9313                 d_fd_set="$define"
9314                 echo "Well, your system has some sort of fd_set available..." >&4
9315                 if ./fd_set; then
9316                         echo "and you have the normal fd_set macros." >&4
9317                         d_fd_macros="$define"
9318                 else
9319                         $cat <<'EOM'
9320 but not the normal fd_set macros!  Gross!  More work for me...
9321 EOM
9322                         d_fd_macros="$undef"
9323                 fi
9324         else
9325         echo "Well, you got zip.  That's OK, I can roll my own fd_set stuff." >&4
9326                 d_fd_set="$undef"
9327                 d_fds_bits="$undef"
9328                 d_fd_macros="$undef"
9329         fi
9330 fi
9331 $rm -f fd_set*
9332
9333 : see if fgetpos exists
9334 set fgetpos d_fgetpos
9335 eval $inlibc
9336
9337 : see if flock exists
9338 set flock d_flock
9339 eval $inlibc
9340
9341 : see if fork exists
9342 set fork d_fork
9343 eval $inlibc
9344
9345 : see if pathconf exists
9346 set pathconf d_pathconf
9347 eval $inlibc
9348
9349 : see if fpathconf exists
9350 set fpathconf d_fpathconf
9351 eval $inlibc
9352
9353
9354 : check for fpos64_t
9355 echo " "
9356 echo "Checking to see if you have fpos64_t..." >&4
9357 $cat >try.c <<EOCP
9358 #include <stdio.h>
9359 int main() { fpos64_t x = 7; }
9360 EOCP
9361 set try
9362 if eval $compile; then
9363         val="$define"
9364         echo "You have fpos64_t."
9365 else
9366         val="$undef"
9367         echo "You do not have fpos64_t."
9368         case "$fpossize" in
9369         8) echo "(Your fpos_t is 64 bits, so you could use that.)" ;;
9370         esac
9371 fi
9372 $rm -f try.* try
9373 set d_fpos64_t
9374 eval $setvar
9375
9376 : see if frexpl exists
9377 set frexpl d_frexpl
9378 eval $inlibc
9379
9380 hasstruct='varname=$1; struct=$2; shift; shift;
9381 while $test $# -ge 2; do
9382         case "$1" in
9383         $define) echo "#include <$2>";;
9384         esac ;
9385     shift 2;
9386 done > try.c;
9387 echo "int main () { struct $struct foo; }" >> try.c;
9388 set try;
9389 if eval $compile; then
9390         val="$define";
9391 else
9392         val="$undef";
9393 fi;
9394 set $varname;
9395 eval $setvar;
9396 $rm -f try.c try.o'
9397
9398 : see if this is a sys/param system
9399 set sys/param.h i_sysparam
9400 eval $inhdr
9401
9402 : see if this is a sys/mount.h system
9403 set sys/mount.h i_sysmount
9404 eval $inhdr
9405
9406 : see if sys/types.h has to be included
9407 set sys/types.h i_systypes
9408 eval $inhdr
9409
9410
9411 echo " "
9412 echo "Checking to see if your system supports struct fs_data..." >&4
9413 set d_fs_data_s fs_data $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h
9414 eval $hasstruct
9415 case "$d_fs_data_s" in
9416 "$define")      echo "Yes, it does."   ;;
9417 *)              echo "No, it doesn't." ;;
9418 esac
9419
9420 : see if fseeko exists
9421 set fseeko d_fseeko
9422 eval $inlibc
9423 case "$longsize" in
9424 8) echo "(Your long is 64 bits, so you could use fseek.)" ;;
9425 esac
9426
9427 : see if fsetpos exists
9428 set fsetpos d_fsetpos
9429 eval $inlibc
9430
9431
9432 : see if fstatfs exists
9433 set fstatfs d_fstatfs
9434 eval $inlibc
9435
9436
9437 : see if statvfs exists
9438 set statvfs d_statvfs
9439 eval $inlibc
9440
9441 : see if fstatvfs exists
9442 set fstatvfs d_fstatvfs
9443 eval $inlibc
9444
9445
9446 : see if fsync exists
9447 set fsync d_fsync
9448 eval $inlibc
9449
9450 : see if ftello exists
9451 set ftello d_ftello
9452 eval $inlibc
9453 case "$longsize" in
9454 8) echo "(Your long is 64 bits, so you could use ftell.)" ;;
9455 esac
9456
9457 : see if getcwd exists
9458 set getcwd d_getcwd
9459 eval $inlibc
9460
9461 : see if getespwnam exists
9462 set getespwnam d_getespwnam
9463 eval $inlibc
9464
9465
9466 : see if getfsstat exists
9467 set getfsstat d_getfsstat
9468 eval $inlibc
9469
9470 : see if getgrent exists
9471 set getgrent d_getgrent
9472 eval $inlibc
9473
9474 : see if gethostbyaddr exists
9475 set gethostbyaddr d_gethbyaddr
9476 eval $inlibc
9477
9478 : see if gethostbyname exists
9479 set gethostbyname d_gethbyname
9480 eval $inlibc
9481
9482 : see if gethostent exists
9483 set gethostent d_gethent
9484 eval $inlibc
9485
9486 : see how we will look up host name
9487 echo " "
9488 call=''
9489 if set gethostname val -f d_gethname; eval $csym; $val; then
9490         echo 'gethostname() found.' >&4
9491         d_gethname="$define"
9492         call=gethostname
9493 fi
9494 if set uname val -f d_uname; eval $csym; $val; then
9495         if ./xenix; then
9496                 $cat <<'EOM'
9497 uname() was found, but you're running xenix, and older versions of xenix
9498 have a broken uname(). If you don't really know whether your xenix is old
9499 enough to have a broken system call, use the default answer.
9500
9501 EOM
9502                 dflt=y
9503                 case "$d_uname" in
9504                 "$define") dflt=n;;
9505                 esac
9506                 rp='Is your uname() broken?'
9507                 . ./myread
9508                 case "$ans" in
9509                 n*) d_uname="$define"; call=uname;;
9510                 esac
9511         else
9512                 echo 'uname() found.' >&4
9513                 d_uname="$define"
9514                 case "$call" in
9515                 '') call=uname ;;
9516                 esac
9517         fi
9518 fi
9519 case "$d_gethname" in
9520 '') d_gethname="$undef";;
9521 esac
9522 case "$d_uname" in
9523 '') d_uname="$undef";;
9524 esac
9525 case "$d_uname$d_gethname" in
9526 *define*)
9527         dflt=n
9528         cat <<EOM
9529  
9530 Every now and then someone has a $call() that lies about the hostname
9531 but can't be fixed for political or economic reasons.  If you wish, I can
9532 pretend $call() isn't there and maybe compute hostname at run-time
9533 thanks to the '$phostname' command.
9534
9535 EOM
9536         rp="Shall I ignore $call() from now on?"
9537         . ./myread
9538         case "$ans" in
9539         y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
9540         esac;;
9541 esac
9542 case "$phostname" in
9543 '') aphostname='';;
9544 *) case "$aphostname" in
9545         /*) ;;
9546         *) set X $phostname
9547                 shift
9548                 file=$1
9549                 shift
9550                 file=`./loc $file $file $pth`
9551                 aphostname=`echo $file $*`
9552                 ;;
9553         esac
9554         ;;
9555 esac
9556 case "$d_uname$d_gethname" in
9557 *define*) ;;
9558 *)
9559         case "$phostname" in
9560         '')
9561                 echo "There will be no way for $package to get your hostname." >&4;;
9562         *)
9563         echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
9564                 ;;
9565         esac;;
9566 esac
9567 case "$d_phostname" in
9568 '') d_phostname="$undef";;
9569 esac
9570
9571 : see if this is a netdb.h system
9572 set netdb.h i_netdb
9573 eval $inhdr
9574
9575 : see if prototypes for various gethostxxx netdb.h functions are available
9576 echo " "
9577 set d_gethostprotos gethostent $i_netdb netdb.h
9578 eval $hasproto
9579
9580 : see if getlogin exists
9581 set getlogin d_getlogin
9582 eval $inlibc
9583
9584 : see if getmnt exists
9585 set getmnt d_getmnt
9586 eval $inlibc
9587
9588 : see if getmntent exists
9589 set getmntent d_getmntent
9590 eval $inlibc
9591
9592 : see if getnetbyaddr exists
9593 set getnetbyaddr d_getnbyaddr
9594 eval $inlibc
9595
9596 : see if getnetbyname exists
9597 set getnetbyname d_getnbyname
9598 eval $inlibc
9599
9600 : see if getnetent exists
9601 set getnetent d_getnent
9602 eval $inlibc
9603
9604 : see if prototypes for various getnetxxx netdb.h functions are available
9605 echo " "
9606 set d_getnetprotos getnetent $i_netdb netdb.h
9607 eval $hasproto
9608
9609 : see if getpagesize exists
9610 set getpagesize d_getpagsz
9611 eval $inlibc
9612
9613
9614 : see if getprotobyname exists
9615 set getprotobyname d_getpbyname
9616 eval $inlibc
9617
9618 : see if getprotobynumber exists
9619 set getprotobynumber d_getpbynumber
9620 eval $inlibc
9621
9622 : see if getprotoent exists
9623 set getprotoent d_getpent
9624 eval $inlibc
9625
9626 : see if getpgid exists
9627 set getpgid d_getpgid
9628 eval $inlibc
9629
9630 : see if getpgrp2 exists
9631 set getpgrp2 d_getpgrp2
9632 eval $inlibc
9633
9634 : see if getppid exists
9635 set getppid d_getppid
9636 eval $inlibc
9637
9638 : see if getpriority exists
9639 set getpriority d_getprior
9640 eval $inlibc
9641
9642 : see if prototypes for various getprotoxxx netdb.h functions are available
9643 echo " "
9644 set d_getprotoprotos getprotoent $i_netdb netdb.h
9645 eval $hasproto
9646
9647 : see if getprpwnam exists
9648 set getprpwnam d_getprpwnam
9649 eval $inlibc
9650
9651 : see if getpwent exists
9652 set getpwent d_getpwent
9653 eval $inlibc
9654
9655
9656 : see if getservbyname exists
9657 set getservbyname d_getsbyname
9658 eval $inlibc
9659
9660 : see if getservbyport exists
9661 set getservbyport d_getsbyport
9662 eval $inlibc
9663
9664 : see if getservent exists
9665 set getservent d_getsent
9666 eval $inlibc
9667
9668 : see if prototypes for various getservxxx netdb.h functions are available
9669 echo " "
9670 set d_getservprotos getservent $i_netdb netdb.h
9671 eval $hasproto
9672
9673 : see if getspnam exists
9674 set getspnam d_getspnam
9675 eval $inlibc
9676
9677 : see if gettimeofday or ftime exists
9678 set gettimeofday d_gettimeod
9679 eval $inlibc
9680 case "$d_gettimeod" in
9681 "$undef")
9682         set ftime d_ftime 
9683         eval $inlibc
9684         ;;
9685 *)
9686         val="$undef"; set d_ftime; eval $setvar
9687         ;;
9688 esac
9689 case "$d_gettimeod$d_ftime" in
9690 "$undef$undef")
9691         echo " "
9692         echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
9693         ;;
9694 esac
9695
9696 : see if this is an grp system
9697 set grp.h i_grp
9698 eval $inhdr
9699
9700 case "$i_grp" in
9701 $define)
9702         xxx=`./findhdr grp.h`
9703         $cppstdin $cppflags $cppminus < $xxx >$$.h
9704
9705         if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
9706                 val="$define"
9707         else
9708                 val="$undef"
9709         fi
9710         set d_grpasswd
9711         eval $setvar
9712
9713         $rm -f $$.h
9714         ;;
9715 *)
9716         val="$undef";
9717         set d_grpasswd; eval $setvar
9718         ;;
9719 esac
9720
9721 : see if hasmntopt exists
9722 set hasmntopt d_hasmntopt
9723 eval $inlibc
9724
9725 : see if this is a netinet/in.h or sys/in.h system
9726 set netinet/in.h i_niin sys/in.h i_sysin
9727 eval $inhdr
9728
9729 : see if arpa/inet.h has to be included
9730 set arpa/inet.h i_arpainet
9731 eval $inhdr
9732
9733 : see if htonl --and friends-- exists
9734 val=''
9735 set htonl val
9736 eval $inlibc
9737
9738 : Maybe they are macros.
9739 case "$val" in
9740 $undef)
9741         $cat >htonl.c <<EOM
9742 #include <stdio.h>
9743 #include <sys/types.h>
9744 #$i_niin I_NETINET_IN
9745 #$i_sysin I_SYS_IN
9746 #$i_arpainet I_ARPA_INET
9747 #ifdef I_NETINET_IN
9748 #include <netinet/in.h>
9749 #endif
9750 #ifdef I_SYS_IN
9751 #include <sys/in.h>
9752 #endif
9753 #ifdef I_ARPA_INET
9754 #include <arpa/inet.h>
9755 #endif
9756 #ifdef htonl
9757 printf("Defined as a macro.");
9758 #endif
9759 EOM
9760         $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
9761         if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
9762                 val="$define"
9763                 echo "But it seems to be defined as a macro." >&4
9764         fi
9765         $rm -f htonl.?
9766         ;;
9767 esac
9768 set d_htonl
9769 eval $setvar
9770
9771 : see if iconv exists
9772 set iconv d_iconv
9773 eval $inlibc
9774
9775 : index or strchr
9776 echo " "
9777 if set index val -f; eval $csym; $val; then
9778         if set strchr val -f d_strchr; eval $csym; $val; then
9779                 if $contains strchr "$strings" >/dev/null 2>&1 ; then
9780                         val="$define"
9781                         vali="$undef"
9782                         echo "strchr() found." >&4
9783                 else
9784                         val="$undef"
9785                         vali="$define"
9786                         echo "index() found." >&4
9787                 fi
9788         else
9789                 val="$undef"
9790                 vali="$define"
9791                 echo "index() found." >&4
9792         fi
9793 else
9794         if set strchr val -f d_strchr; eval $csym; $val; then
9795                 val="$define"
9796                 vali="$undef"
9797                 echo "strchr() found." >&4
9798         else
9799                 echo "No index() or strchr() found!" >&4
9800                 val="$undef"
9801                 vali="$undef"
9802         fi
9803 fi
9804 set d_strchr; eval $setvar
9805 val="$vali"
9806 set d_index; eval $setvar
9807
9808 : check whether inet_aton exists
9809 set inet_aton d_inetaton
9810 eval $inlibc
9811
9812 : see if inttypes.h is available
9813 : we want a real compile instead of Inhdr because some systems
9814 : have an inttypes.h which includes non-existent headers
9815 echo " "
9816 $cat >try.c <<EOCP
9817 #include <inttypes.h>
9818 int main() {
9819         static int32_t foo32 = 0x12345678;
9820 }
9821 EOCP
9822 set try
9823 if eval $compile; then
9824         echo "<inttypes.h> found." >&4
9825         val="$define"
9826 else
9827         echo "<inttypes.h> NOT found." >&4
9828         val="$undef"
9829 fi
9830 $rm -f try.c try
9831 set i_inttypes
9832 eval $setvar
9833
9834 : check for int64_t
9835 echo " "
9836 echo "Checking to see if you have int64_t..." >&4
9837 $cat >try.c <<EOCP
9838 #include <sys/types.h>
9839 #$i_inttypes I_INTTYPES
9840 #ifdef I_INTTYPES
9841 #include <inttypes.h>
9842 #endif
9843 int main() { int64_t x = 7; }
9844 EOCP
9845 set try
9846 if eval $compile; then
9847         val="$define"
9848         echo "You have int64_t."
9849 else
9850         val="$undef"
9851         echo "You do not have int64_t."
9852 fi
9853 $rm -f try try.*
9854 set d_int64_t
9855 eval $setvar
9856
9857 : Look for isascii
9858 echo " "
9859 $cat >isascii.c <<'EOCP'
9860 #include <stdio.h>
9861 #include <ctype.h>
9862 int main() {
9863         int c = 'A';
9864         if (isascii(c))
9865                 exit(0);
9866         else
9867                 exit(1);
9868 }
9869 EOCP
9870 set isascii
9871 if eval $compile; then
9872         echo "isascii() found." >&4
9873         val="$define"
9874 else
9875         echo "isascii() NOT found." >&4
9876         val="$undef"
9877 fi
9878 set d_isascii
9879 eval $setvar
9880 $rm -f isascii*
9881
9882 : see if isnan exists
9883 set isnan d_isnan
9884 eval $inlibc
9885
9886 : see if isnanl exists
9887 set isnanl d_isnanl
9888 eval $inlibc
9889
9890 : see if killpg exists
9891 set killpg d_killpg
9892 eval $inlibc
9893
9894 : see if lchown exists
9895 echo " "
9896 $cat > try.c <<'EOCP'
9897 /* System header to define __stub macros and hopefully few prototypes,
9898     which can conflict with char lchown(); below.  */
9899 #include <assert.h>
9900 /* Override any gcc2 internal prototype to avoid an error.  */
9901 /* We use char because int might match the return type of a gcc2
9902    builtin and then its argument prototype would still apply.  */
9903 char lchown();
9904 int main() {
9905     /*  The GNU C library defines this for functions which it implements
9906         to always fail with ENOSYS.  Some functions are actually named
9907         something starting with __ and the normal name is an alias.  */
9908 #if defined (__stub_lchown) || defined (__stub___lchown)
9909 choke me
9910 #else
9911 lchown();
9912 #endif
9913 ; return 0; }
9914 EOCP
9915 set try
9916 if eval $compile; then
9917     $echo "lchown() found." >&4
9918     val="$define"
9919 else
9920     $echo "lchown() NOT found." >&4
9921     val="$undef"
9922 fi
9923 set d_lchown
9924 eval $setvar
9925
9926 : See if number of significant digits in a double precision number is known
9927 echo " "
9928 $cat >ldbl_dig.c <<EOM
9929 #$i_limits I_LIMITS
9930 #$i_float I_FLOAT
9931 #ifdef I_LIMITS
9932 #include <limits.h>
9933 #endif
9934 #ifdef I_FLOAT
9935 #include <float.h>
9936 #endif
9937 #ifdef LDBL_DIG
9938 printf("Contains LDBL_DIG");
9939 #endif
9940 EOM
9941 $cppstdin $cppflags $cppminus < ldbl_dig.c >ldbl_dig.E 2>/dev/null
9942 if $contains 'LDBL_DIG' ldbl_dig.E >/dev/null 2>&1; then
9943         echo "LDBL_DIG found." >&4
9944         val="$define"
9945 else
9946         echo "LDBL_DIG NOT found." >&4
9947         val="$undef"
9948 fi
9949 $rm -f ldbl_dig.?
9950 set d_ldbl_dig
9951 eval $setvar
9952
9953 : see if link exists
9954 set link d_link
9955 eval $inlibc
9956
9957 : see if localeconv exists
9958 set localeconv d_locconv
9959 eval $inlibc
9960
9961 : see if lockf exists
9962 set lockf d_lockf
9963 eval $inlibc
9964
9965 : check for long long
9966 echo " "
9967 echo "Checking to see if you have long long..." >&4
9968 echo 'int main() { long long x = 7; return 0; }' > try.c
9969 set try
9970 if eval $compile; then
9971         val="$define"
9972         echo "You have long long."
9973 else
9974         val="$undef"
9975         echo "You do not have long long."
9976 fi
9977 $rm try.*
9978 set d_longlong
9979 eval $setvar
9980
9981 : check for length of long long
9982 case "${d_longlong}${longlongsize}" in
9983 $define)
9984         echo " "
9985         echo "Checking to see how big your long longs are..." >&4
9986         $cat >try.c <<'EOCP'
9987 #include <stdio.h>
9988 int main()
9989 {
9990     printf("%d\n", (int)sizeof(long long));
9991     return(0);
9992 }
9993 EOCP
9994         set try
9995         if eval $compile_ok; then
9996                 longlongsize=`./try$exe_ext`
9997                 echo "Your long longs are $longlongsize bytes long."
9998         else
9999                 dflt='8'
10000                 echo " "
10001                 echo "(I can't seem to compile the test program.  Guessing...)"
10002                 rp="What is the size of a long long (in bytes)?"
10003                 . ./myread
10004                 longlongsize="$ans"
10005         fi
10006         if $test "X$longsize" = "X$longlongsize"; then
10007                 echo "(That isn't any different from an ordinary long.)"
10008         fi      
10009         ;;
10010 esac
10011 $rm -f try.* try
10012
10013 : see if prototype for lseek is available
10014 echo " "
10015 set d_lseekproto lseek $i_systypes sys/types.h $i_unistd unistd.h
10016 eval $hasproto
10017
10018 : see if lstat exists
10019 set lstat d_lstat
10020 eval $inlibc
10021
10022 : see if madvise exists
10023 set madvise d_madvise
10024 eval $inlibc
10025
10026 : see if mblen exists
10027 set mblen d_mblen
10028 eval $inlibc
10029
10030 : see if mbstowcs exists
10031 set mbstowcs d_mbstowcs
10032 eval $inlibc
10033
10034 : see if mbtowc exists
10035 set mbtowc d_mbtowc
10036 eval $inlibc
10037
10038 : see if memchr exists
10039 set memchr d_memchr
10040 eval $inlibc
10041
10042 : see if memcmp exists
10043 set memcmp d_memcmp
10044 eval $inlibc
10045
10046 : see if memcpy exists
10047 set memcpy d_memcpy
10048 eval $inlibc
10049
10050 : see if memmove exists
10051 set memmove d_memmove
10052 eval $inlibc
10053
10054 : see if memset exists
10055 set memset d_memset
10056 eval $inlibc
10057
10058 : see if mkdir exists
10059 set mkdir d_mkdir
10060 eval $inlibc
10061
10062 : see if mkdtemp exists
10063 set mkdtemp d_mkdtemp
10064 eval $inlibc
10065
10066 : see if mkfifo exists
10067 set mkfifo d_mkfifo
10068 eval $inlibc
10069
10070 : see if mkstemp exists
10071 set mkstemp d_mkstemp
10072 eval $inlibc
10073
10074 : see if mkstemps exists
10075 set mkstemps d_mkstemps
10076 eval $inlibc
10077
10078 : see if mktime exists
10079 set mktime d_mktime
10080 eval $inlibc
10081
10082 : see if this is a sys/mman.h system
10083 set sys/mman.h i_sysmman
10084 eval $inhdr
10085
10086 : see if mmap exists
10087 set mmap d_mmap
10088 eval $inlibc
10089 : see what shmat returns
10090 : default to something harmless
10091 mmaptype='void *'
10092 case "$i_sysmman$d_mmap" in
10093 "$define$define")
10094         $cat >mmap.c <<'END'
10095 #include <sys/mman.h>
10096 void *mmap();
10097 END
10098         if $cc $ccflags -c mmap.c >/dev/null 2>&1; then
10099                 mmaptype='void *'
10100         else
10101                 mmaptype='caddr_t'
10102         fi
10103         echo "and it returns ($mmaptype)." >&4
10104         ;;
10105 esac
10106
10107
10108
10109 : see if modfl exists
10110 set modfl d_modfl
10111 eval $inlibc
10112
10113 : see if mprotect exists
10114 set mprotect d_mprotect
10115 eval $inlibc
10116
10117 : see if msgctl exists
10118 set msgctl d_msgctl
10119 eval $inlibc
10120
10121 : see if msgget exists
10122 set msgget d_msgget
10123 eval $inlibc
10124
10125 : see if msgsnd exists
10126 set msgsnd d_msgsnd
10127 eval $inlibc
10128
10129 : see if msgrcv exists
10130 set msgrcv d_msgrcv
10131 eval $inlibc
10132
10133 : see how much of the 'msg*(2)' library is present.
10134 h_msg=true
10135 echo " "
10136 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
10137 *"$undef"*) h_msg=false;;
10138 esac
10139 case "$osname" in
10140 freebsd)
10141     case "`ipcs 2>&1`" in
10142     "SVID messages"*"not configured"*)
10143         echo "Your $osname does not have the msg*(2) configured." >&4
10144         h_msg=false
10145         val="$undef"
10146         set msgctl d_msgctl
10147         eval $setvar
10148         set msgget d_msgget
10149         eval $setvar
10150         set msgsnd d_msgsnd
10151         eval $setvar
10152         set msgrcv d_msgrcv
10153         eval $setvar
10154         ;;
10155     esac
10156     ;;
10157 esac
10158 : we could also check for sys/ipc.h ...
10159 if $h_msg && $test `./findhdr sys/msg.h`; then
10160         echo "You have the full msg*(2) library." >&4
10161         val="$define"
10162 else
10163         echo "You don't have the full msg*(2) library." >&4
10164         val="$undef"
10165 fi
10166 set d_msg
10167 eval $setvar
10168
10169 : see if msync exists
10170 set msync d_msync
10171 eval $inlibc
10172
10173 : see if munmap exists
10174 set munmap d_munmap
10175 eval $inlibc
10176
10177 : see if nice exists
10178 set nice d_nice
10179 eval $inlibc
10180
10181
10182 echo " "
10183 echo "Checking which 64-bit integer type we could use..." >&4
10184
10185 case "$intsize" in
10186 8) val=int
10187    set quadtype
10188    eval $setvar
10189    val='"unsigned int"'
10190    set uquadtype
10191    eval $setvar
10192    quadkind=1
10193    ;;
10194 *) case "$longsize" in
10195    8) val=long
10196       set quadtype
10197       eval $setvar
10198       val='"unsigned long"'
10199       set uquadtype
10200       eval $setvar
10201       quadkind=2
10202       ;;
10203    *) case "$d_longlong:$longlongsize" in
10204       define:8)
10205         val='"long long"'
10206         set quadtype
10207         eval $setvar
10208         val='"unsigned long long"'
10209         set uquadtype
10210         eval $setvar
10211         quadkind=3
10212         ;;
10213       *) case "$d_int64_t" in
10214          define)
10215            val=int64_t
10216            set quadtype
10217            eval $setvar
10218            val=uint64_t
10219            set uquadtype
10220            eval $setvar
10221            quadkind=4
10222            ;;
10223          esac
10224          ;;
10225       esac
10226       ;;
10227    esac
10228    ;;
10229 esac
10230
10231 case "$quadtype" in
10232 '')     echo "Alas, no 64-bit integer types in sight." >&4
10233         d_quad="$undef"
10234         ;;
10235 *)      if test X"$use64bitint" = Xdefine -o X"$longsize" = X8; then
10236             verb="will"
10237         else
10238             verb="could"
10239         fi
10240         echo "We $verb use '$quadtype' for 64-bit integers." >&4
10241         d_quad="$define"
10242         ;;
10243 esac
10244
10245 : check for length of character
10246 echo " "
10247 case "$charsize" in
10248 '')
10249         echo "Checking to see how big your characters are (hey, you never know)..." >&4
10250         $cat >try.c <<'EOCP'
10251 #include <stdio.h>
10252 int main()
10253 {
10254     printf("%d\n", (int)sizeof(char));
10255     exit(0);
10256 }
10257 EOCP
10258         set try
10259         if eval $compile_ok; then
10260                 dflt=`./try`
10261         else
10262                 dflt='1'
10263                 echo "(I can't seem to compile the test program.  Guessing...)"
10264         fi
10265         ;;
10266 *)
10267         dflt="$charsize"
10268         ;;
10269 esac
10270 rp="What is the size of a character (in bytes)?"
10271 . ./myread
10272 charsize="$ans"
10273 $rm -f try.c try
10274
10275 : check for volatile keyword
10276 echo " "
10277 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
10278 $cat >try.c <<'EOCP'
10279 int main()
10280 {
10281         typedef struct _goo_struct goo_struct;
10282         goo_struct * volatile goo = ((goo_struct *)0);
10283         struct _goo_struct {
10284                 long long_int;
10285                 int reg_int;
10286                 char char_var;
10287         };
10288         typedef unsigned short foo_t;
10289         char *volatile foo;
10290         volatile int bar;
10291         volatile foo_t blech;
10292         foo = foo;
10293 }
10294 EOCP
10295 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
10296         val="$define"
10297         echo "Yup, it does."
10298 else
10299         val="$undef"
10300         echo "Nope, it doesn't."
10301 fi
10302 set d_volatile
10303 eval $setvar
10304 $rm -f try.*
10305
10306
10307 echo " "
10308 $echo "Choosing the C types to be used for Perl's internal types..." >&4
10309
10310 case "$use64bitint:$d_quad:$quadtype" in
10311 define:define:?*)
10312         ivtype="$quadtype"
10313         uvtype="$uquadtype"
10314         ivsize=8
10315         uvsize=8
10316         ;;
10317 *)      ivtype="long"
10318         uvtype="unsigned long"
10319         ivsize=$longsize
10320         uvsize=$longsize
10321         ;;
10322 esac
10323
10324 case "$uselongdouble:$d_longdbl" in
10325 define:define)
10326         nvtype="long double"
10327         nvsize=$longdblsize
10328         ;;
10329 *)      nvtype=double
10330         nvsize=$doublesize
10331         ;;
10332 esac
10333
10334 $echo "(IV will be "$ivtype", $ivsize bytes)"
10335 $echo "(UV will be "$uvtype", $uvsize bytes)"
10336 $echo "(NV will be "$nvtype", $nvsize bytes)"
10337
10338 $cat >try.c <<EOCP
10339 #$i_inttypes I_INTTYPES
10340 #ifdef I_INTTYPES
10341 #include <inttypes.h>
10342 #endif
10343 #include <stdio.h>
10344 int main() {
10345 #ifdef INT8
10346    int8_t i =  INT8_MAX;
10347   uint8_t u = UINT8_MAX;
10348   printf("int8_t\n");
10349 #endif
10350 #ifdef INT16
10351    int16_t i =  INT16_MAX;
10352   uint16_t i = UINT16_MAX;
10353   printf("int16_t\n");
10354 #endif
10355 #ifdef INT32
10356    int32_t i =  INT32_MAX;
10357   uint32_t u = UINT32_MAX;
10358   printf("int32_t\n");
10359 #endif
10360 }
10361 EOCP
10362
10363 case "$i8type" in
10364 '')     case "$charsize" in
10365         1)      i8type=char
10366                 u8type="unsigned char"
10367                 i8size=$charsize
10368                 u8size=$charsize
10369                 ;;
10370         esac
10371         ;;
10372 esac
10373 case "$i8type" in
10374 '')     set try -DINT8
10375         if eval $compile; then
10376                 case "`./try$exe_ext`" in
10377                 int8_t) i8type=int8_t
10378                         u8type=uint8_t
10379                         i8size=1
10380                         u8size=1
10381                         ;;
10382                 esac
10383         fi
10384         ;;
10385 esac
10386 case "$i8type" in
10387 '')     if $test $charsize -ge 1; then
10388                 i8type=char
10389                 u8type="unsigned char"
10390                 i8size=$charsize
10391                 u8size=$charsize
10392         fi
10393         ;;
10394 esac
10395
10396 case "$i16type" in
10397 '')     case "$shortsize" in
10398         2)      i16type=short
10399                 u16type="unsigned short"
10400                 i16size=$shortsize
10401                 u16size=$shortsize
10402                 ;;
10403         esac
10404         ;;
10405 esac
10406 case "$i16type" in
10407 '')     set try -DINT16
10408         if eval $compile; then
10409                 case "`./try$exe_ext`" in
10410                 int16_t)
10411                         i16type=int16_t
10412                         u16type=uint16_t
10413                         i16size=2
10414                         u16size=2
10415                         ;;
10416                 esac
10417         fi
10418         ;;
10419 esac
10420 case "$i16type" in
10421 '')     if $test $shortsize -ge 2; then
10422                 i16type=short
10423                 u16type="unsigned short"
10424                 i16size=$shortsize
10425                 u16size=$shortsize
10426         fi
10427         ;;
10428 esac
10429
10430 case "$i32type" in
10431 '')     case "$longsize" in
10432         4)      i32type=long
10433                 u32type="unsigned long"
10434                 i32size=$longsize
10435                 u32size=$longsize
10436                 ;;
10437         *)      case "$intsize" in
10438                 4)      i32type=int
10439                         u32type="unsigned int"
10440                         i32size=$intsize
10441                         u32size=$intsize
10442                         ;;
10443                 esac
10444                 ;;
10445         esac
10446         ;;
10447 esac
10448 case "$i32type" in
10449 '')     set try -DINT32
10450         if eval $compile; then
10451                 case "`./try$exe_ext`" in
10452                 int32_t)
10453                         i32type=int32_t
10454                         u32type=uint32_t
10455                         i32size=4
10456                         u32size=4
10457                         ;;
10458                 esac
10459         fi
10460         ;;
10461 esac
10462 case "$i32type" in
10463 '')     if $test $intsize -ge 4; then
10464                 i32type=int
10465                 u32type="unsigned int"
10466                 i32size=$intsize
10467                 u32size=$intsize
10468         fi
10469         ;;
10470 esac
10471
10472 case "$i64type" in
10473 '')     case "$d_quad:$quadtype" in
10474         define:?*)
10475                 i64type="$quadtype"
10476                 u64type="$uquadtype"
10477                 i64size=8
10478                 u64size=8
10479                 ;;
10480         esac
10481         ;;
10482 esac
10483
10484 $echo "Checking how many bits of your UVs your NVs can preserve..." >&4
10485 : volatile so that the compiler has to store it out to memory.
10486 if test X"$d_volatile" = X"$define"; then
10487         volatile=volatile
10488 fi
10489 $cat <<EOP >try.c
10490 #include <stdio.h>
10491 #include <sys/types.h>
10492 #include <signal.h>
10493 #ifdef SIGFPE
10494 $volatile int bletched = 0;
10495 $signal_t blech(s) int s; { bletched = 1; }
10496 #endif
10497 int main() {
10498     $uvtype u = 0;
10499     $nvtype d;
10500     int     n = 8 * $uvsize;
10501     int     i;
10502 #ifdef SIGFPE
10503     signal(SIGFPE, blech);
10504 #endif
10505
10506     for (i = 0; i < n; i++) {
10507       u = u << 1 | ($uvtype)1;
10508       d = ($nvtype)u;
10509       if (($uvtype)d != u)
10510         break;
10511       if (d <= 0)
10512         break;
10513       d = ($nvtype)(u - 1);
10514       if (($uvtype)d != (u - 1))
10515         break;
10516 #ifdef SIGFPE
10517       if (bletched) {
10518         break;
10519 #endif
10520       } 
10521     }
10522     printf("%d\n", ((i == n) ? -n : i));
10523     exit(0);
10524 }
10525 EOP
10526 set try
10527
10528 d_nv_preserves_uv="$undef"
10529 if eval $compile; then
10530         d_nv_preserves_uv_bits="`./try$exe_ext`"
10531 fi
10532 case "$d_nv_preserves_uv_bits" in
10533 \-[1-9]*)       
10534         d_nv_preserves_uv_bits=`expr 0 - $d_nv_preserves_uv_bits`
10535         $echo "Your NVs can preserve all $d_nv_preserves_uv_bits bits of your UVs."  2>&1
10536         d_nv_preserves_uv="$define"
10537         ;;
10538 [1-9]*) $echo "Your NVs can preserve only $d_nv_preserves_uv_bits bits of your UVs."  2>&1
10539         d_nv_preserves_uv="$undef" ;;
10540 *)      $echo "Can't figure out how many bits your NVs preserve." 2>&1
10541         d_nv_preserves_uv_bits="$undef" ;;
10542 esac
10543
10544 $rm -f try.* try
10545
10546
10547 : check for off64_t
10548 echo " "
10549 echo "Checking to see if you have off64_t..." >&4
10550 $cat >try.c <<EOCP
10551 #include <sys/types.h>
10552 #include <unistd.h>
10553 int main() { off64_t x = 7; }
10554 EOCP
10555 set try
10556 if eval $compile; then
10557         val="$define"
10558         echo "You have off64_t."
10559 else
10560         val="$undef"
10561         echo "You do not have off64_t."
10562         case "$lseeksize" in
10563         8) echo "(Your off_t is 64 bits, so you could use that.)" ;;
10564         esac
10565 fi
10566 $rm -f try.* try
10567 set d_off64_t
10568 eval $setvar
10569
10570 : see if POSIX threads are available
10571 set pthread.h i_pthread
10572 eval $inhdr
10573
10574
10575
10576
10577 : how to create joinable pthreads
10578 if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
10579         echo " "
10580         echo "Checking what constant to use for creating joinable pthreads..." >&4 
10581         $cat >try.c <<'EOCP'
10582 #include <pthread.h>
10583 int main() {
10584     int detachstate = JOINABLE;
10585 }
10586 EOCP
10587         set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
10588         if eval $compile; then
10589                 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
10590                 val="$undef" # Yes, undef.
10591                 set d_old_pthread_create_joinable
10592                 eval $setvar
10593                 val=""
10594                 set old_pthread_create_joinable
10595                 eval $setvar
10596         else
10597                 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
10598                 if eval $compile; then
10599                         echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
10600                         val="$define"
10601                         set d_old_pthread_create_joinable
10602                         eval $setvar
10603                         val=PTHREAD_CREATE_UNDETACHED
10604                         set old_pthread_create_joinable
10605                         eval $setvar
10606                 else            
10607                         set try -DJOINABLE=__UNDETACHED
10608                         if eval $compile; then
10609                                 echo "You seem to use __UNDETACHED." >&4
10610                                 val="$define"
10611                                 set d_old_pthread_create_joinable
10612                                 eval $setvar
10613                                 val=__UNDETACHED
10614                                 set old_pthread_create_joinable
10615                                 eval $setvar
10616                         else
10617                                 echo "Egads, nothing obvious found.  Guessing that you use 0." >&4
10618                                 val="$define"
10619                                 set d_old_pthread_create_joinable
10620                                 eval $setvar
10621                                 val=0
10622                                 set old_pthread_create_joinable
10623                                 eval $setvar
10624                         fi
10625                 fi
10626         fi
10627         $rm -f try try.*
10628 else
10629     d_old_pthread_create_joinable="$undef"
10630     old_pthread_create_joinable=""
10631 fi
10632
10633 : see if pause exists
10634 set pause d_pause
10635 eval $inlibc
10636
10637 : see if pipe exists
10638 set pipe d_pipe
10639 eval $inlibc
10640
10641 : see if poll exists
10642 set poll d_poll
10643 eval $inlibc
10644
10645
10646 : see whether the various POSIXish _yields exist
10647 $cat >try.c <<EOP
10648 #include <pthread.h>
10649 #include <stdio.h>
10650 int main() {
10651 #ifdef SCHED_YIELD
10652         sched_yield();
10653 #else
10654 #ifdef PTHREAD_YIELD
10655         pthread_yield();
10656 #else
10657 #ifdef PTHREAD_YIELD_NULL
10658         pthread_yield(NULL);
10659 #endif
10660 #endif
10661 #endif
10662 }
10663 EOP
10664 : see if sched_yield exists
10665 set try -DSCHED_YIELD
10666 if eval $compile; then
10667     val="$define"
10668     sched_yield='sched_yield()'
10669 else
10670     val="$undef"
10671 fi
10672 case "$usethreads" in
10673 $define)
10674         case "$val" in
10675         $define) echo 'sched_yield() found.' >&4        ;;
10676         *)       echo 'sched_yield() NOT found.' >&4    ;;
10677         esac
10678 esac
10679 set d_sched_yield
10680 eval $setvar
10681
10682 : see if pthread_yield exists
10683 set try -DPTHREAD_YIELD
10684 if eval $compile; then
10685     val="$define"
10686     case "$sched_yield" in
10687     '') sched_yield='pthread_yield()' ;;
10688     esac
10689 else
10690     set try -DPTHREAD_YIELD_NULL
10691     if eval $compile; then
10692         val="$define"
10693         case "$sched_yield" in
10694         '') sched_yield='pthread_yield(NULL)' ;;
10695         esac
10696     else
10697         val="$undef"
10698     fi
10699 fi
10700 case "$usethreads" in
10701 $define)
10702         case "$val" in
10703         $define) echo 'pthread_yield() found.' >&4      ;;
10704         *)       echo 'pthread_yield() NOT found.' >&4  ;;
10705         esac
10706         ;;
10707 esac
10708 set d_pthread_yield
10709 eval $setvar
10710
10711 case "$sched_yield" in
10712 '') sched_yield=undef ;;
10713 esac
10714
10715 $rm -f try try.*
10716
10717 : see if this is a pwd.h system
10718 set pwd.h i_pwd
10719 eval $inhdr
10720
10721 case "$i_pwd" in
10722 $define)
10723         xxx=`./findhdr pwd.h`
10724         $cppstdin $cppflags $cppminus < $xxx >$$.h
10725
10726         if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
10727                 val="$define"
10728         else
10729                 val="$undef"
10730         fi
10731         set d_pwquota
10732         eval $setvar
10733
10734         if $contains 'pw_age' $$.h >/dev/null 2>&1; then
10735                 val="$define"
10736         else
10737                 val="$undef"
10738         fi
10739         set d_pwage
10740         eval $setvar
10741
10742         if $contains 'pw_change' $$.h >/dev/null 2>&1; then
10743                 val="$define"
10744         else
10745                 val="$undef"
10746         fi
10747         set d_pwchange
10748         eval $setvar
10749
10750         if $contains 'pw_class' $$.h >/dev/null 2>&1; then
10751                 val="$define"
10752         else
10753                 val="$undef"
10754         fi
10755         set d_pwclass
10756         eval $setvar
10757
10758         if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
10759                 val="$define"
10760         else
10761                 val="$undef"
10762         fi
10763         set d_pwexpire
10764         eval $setvar
10765
10766         if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
10767                 val="$define"
10768         else
10769                 val="$undef"
10770         fi
10771         set d_pwcomment
10772         eval $setvar
10773
10774         if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
10775                 val="$define"
10776         else
10777                 val="$undef"
10778         fi
10779         set d_pwgecos
10780         eval $setvar
10781
10782         if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
10783                 val="$define"
10784         else
10785                 val="$undef"
10786         fi
10787         set d_pwpasswd
10788         eval $setvar
10789
10790         $rm -f $$.h
10791         ;;
10792 *)
10793         val="$undef"; 
10794         set d_pwquota; eval $setvar
10795         set d_pwage; eval $setvar
10796         set d_pwchange; eval $setvar
10797         set d_pwclass; eval $setvar
10798         set d_pwexpire; eval $setvar
10799         set d_pwcomment; eval $setvar
10800         set d_pwgecos; eval $setvar
10801         set d_pwpasswd; eval $setvar
10802         ;;
10803 esac
10804
10805 : see if readdir and friends exist
10806 set readdir d_readdir
10807 eval $inlibc
10808 set seekdir d_seekdir
10809 eval $inlibc
10810 set telldir d_telldir
10811 eval $inlibc
10812 set rewinddir d_rewinddir
10813 eval $inlibc
10814
10815 : see if readlink exists
10816 set readlink d_readlink
10817 eval $inlibc
10818
10819 : see if rename exists
10820 set rename d_rename
10821 eval $inlibc
10822
10823 : see if rmdir exists
10824 set rmdir d_rmdir
10825 eval $inlibc
10826
10827 : see if memory.h is available.
10828 val=''
10829 set memory.h val
10830 eval $inhdr
10831
10832 : See if it conflicts with string.h
10833 case "$val" in
10834 $define)
10835         case "$strings" in
10836         '') ;;
10837         *)
10838                 $cppstdin $cppflags $cppminus < $strings > mem.h
10839                 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
10840                         echo " "
10841                         echo "We won't be including <memory.h>."
10842                         val="$undef"
10843                 fi
10844                 $rm -f mem.h
10845                 ;;
10846         esac
10847 esac
10848 set i_memory
10849 eval $setvar
10850
10851 : can bcopy handle overlapping blocks?
10852 val="$undef"
10853 case "$d_bcopy" in
10854 "$define")
10855         echo " "
10856         echo "Checking to see if your bcopy() can do overlapping copies..." >&4
10857         $cat >try.c <<EOCP
10858 #$i_memory I_MEMORY
10859 #$i_stdlib I_STDLIB
10860 #$i_string I_STRING
10861 #$i_unistd I_UNISTD
10862 EOCP
10863         $cat >>try.c <<'EOCP'
10864 #include <stdio.h>
10865 #ifdef I_MEMORY
10866 #  include <memory.h>
10867 #endif
10868 #ifdef I_STDLIB
10869 #  include <stdlib.h>
10870 #endif
10871 #ifdef I_STRING
10872 #  include <string.h>
10873 #else
10874 #  include <strings.h>
10875 #endif
10876 #ifdef I_UNISTD
10877 #  include <unistd.h>  /* Needed for NetBSD */
10878 #endif
10879 int main()
10880 {
10881 char buf[128], abc[128];
10882 char *b;
10883 int len;
10884 int off;
10885 int align;
10886
10887 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
10888
10889 for (align = 7; align >= 0; align--) {
10890         for (len = 36; len; len--) {
10891                 b = buf+align;
10892                 bcopy(abc, b, len);
10893                 for (off = 1; off <= len; off++) {
10894                         bcopy(b, b+off, len);
10895                         bcopy(b+off, b, len);
10896                         if (bcmp(b, abc, len))
10897                                 exit(1);
10898                 }
10899         }
10900 }
10901 exit(0);
10902 }
10903 EOCP
10904         set try
10905         if eval $compile_ok; then
10906                 if ./try 2>/dev/null; then
10907                         echo "Yes, it can."
10908                         val="$define"
10909                 else
10910                         echo "It can't, sorry."
10911                         case "$d_memmove" in
10912                         "$define") echo "But that's Ok since you have memmove()." ;;
10913                         esac
10914                 fi
10915         else
10916                 echo "(I can't compile the test program, so we'll assume not...)"
10917                 case "$d_memmove" in
10918                 "$define") echo "But that's Ok since you have memmove()." ;;
10919                 esac
10920         fi
10921         ;;
10922 esac
10923 $rm -f try.* try core
10924 set d_safebcpy
10925 eval $setvar
10926
10927 : can memcpy handle overlapping blocks?
10928 val="$undef"
10929 case "$d_memcpy" in
10930 "$define")
10931         echo " "
10932         echo "Checking to see if your memcpy() can do overlapping copies..." >&4
10933         $cat >try.c <<EOCP
10934 #$i_memory I_MEMORY
10935 #$i_stdlib I_STDLIB
10936 #$i_string I_STRING
10937 #$i_unistd I_UNISTD
10938 EOCP
10939         $cat >>try.c <<'EOCP'
10940 #include <stdio.h>
10941 #ifdef I_MEMORY
10942 #  include <memory.h>
10943 #endif
10944 #ifdef I_STDLIB
10945 #  include <stdlib.h>
10946 #endif
10947 #ifdef I_STRING
10948 #  include <string.h>
10949 #else
10950 #  include <strings.h>
10951 #endif
10952 #ifdef I_UNISTD
10953 #  include <unistd.h>  /* Needed for NetBSD */
10954 #endif
10955 int main()
10956 {
10957 char buf[128], abc[128];
10958 char *b;
10959 int len;
10960 int off;
10961 int align;
10962
10963 /* Copy "abcde..." string to char abc[] so that gcc doesn't
10964    try to store the string in read-only memory. */
10965 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
10966
10967 for (align = 7; align >= 0; align--) {
10968         for (len = 36; len; len--) {
10969                 b = buf+align;
10970                 memcpy(b, abc, len);
10971                 for (off = 1; off <= len; off++) {
10972                         memcpy(b+off, b, len);
10973                         memcpy(b, b+off, len);
10974                         if (memcmp(b, abc, len))
10975                                 exit(1);
10976                 }
10977         }
10978 }
10979 exit(0);
10980 }
10981 EOCP
10982         set try
10983         if eval $compile_ok; then
10984                 if ./try 2>/dev/null; then
10985                         echo "Yes, it can."
10986                         val="$define"
10987                 else
10988                         echo "It can't, sorry."
10989                         case "$d_memmove" in
10990                         "$define") echo "But that's Ok since you have memmove()." ;;
10991                         esac
10992                 fi
10993         else
10994                 echo "(I can't compile the test program, so we'll assume not...)"
10995                 case "$d_memmove" in
10996                 "$define") echo "But that's Ok since you have memmove()." ;;
10997                 esac
10998         fi
10999         ;;
11000 esac
11001 $rm -f try.* try core
11002 set d_safemcpy
11003 eval $setvar
11004
11005 : can memcmp be trusted to compare relative magnitude?
11006 val="$undef"
11007 case "$d_memcmp" in
11008 "$define")
11009         echo " "
11010         echo "Checking if your memcmp() can compare relative magnitude..." >&4
11011         $cat >try.c <<EOCP
11012 #$i_memory I_MEMORY
11013 #$i_stdlib I_STDLIB
11014 #$i_string I_STRING
11015 #$i_unistd I_UNISTD
11016 EOCP
11017         $cat >>try.c <<'EOCP'
11018 #include <stdio.h>
11019 #ifdef I_MEMORY
11020 #  include <memory.h>
11021 #endif
11022 #ifdef I_STDLIB
11023 #  include <stdlib.h>
11024 #endif
11025 #ifdef I_STRING
11026 #  include <string.h>
11027 #else
11028 #  include <strings.h>
11029 #endif
11030 #ifdef I_UNISTD
11031 #  include <unistd.h>  /* Needed for NetBSD */
11032 #endif
11033 int main()
11034 {
11035 char a = -1;
11036 char b = 0;
11037 if ((a < b) && memcmp(&a, &b, 1) < 0)
11038         exit(1);
11039 exit(0);
11040 }
11041 EOCP
11042         set try
11043         if eval $compile_ok; then
11044                 if ./try 2>/dev/null; then
11045                         echo "Yes, it can."
11046                         val="$define"
11047                 else
11048                         echo "No, it can't (it uses signed chars)."
11049                 fi
11050         else
11051                 echo "(I can't compile the test program, so we'll assume not...)"
11052         fi
11053         ;;
11054 esac
11055 $rm -f try.* try core
11056 set d_sanemcmp
11057 eval $setvar
11058
11059 : see if prototype for sbrk is available
11060 echo " "
11061 set d_sbrkproto sbrk $i_unistd unistd.h
11062 eval $hasproto
11063
11064 : see if select exists
11065 set select d_select
11066 eval $inlibc
11067
11068 : see if semctl exists
11069 set semctl d_semctl
11070 eval $inlibc
11071
11072 : see if semget exists
11073 set semget d_semget
11074 eval $inlibc
11075
11076 : see if semop exists
11077 set semop d_semop
11078 eval $inlibc
11079
11080 : see how much of the 'sem*(2)' library is present.
11081 h_sem=true
11082 echo " "
11083 case "$d_semctl$d_semget$d_semop" in
11084 *"$undef"*) h_sem=false;;
11085 esac
11086 case "$osname" in
11087 freebsd)
11088     case "`ipcs 2>&1`" in
11089     "SVID messages"*"not configured"*)
11090         echo "Your $osname does not have the sem*(2) configured." >&4
11091         h_sem=false
11092         val="$undef"
11093         set semctl d_semctl
11094         eval $setvar
11095         set semget d_semget
11096         eval $setvar
11097         set semop d_semop
11098         eval $setvar
11099         ;;
11100     esac
11101     ;;
11102 esac
11103 : we could also check for sys/ipc.h ...
11104 if $h_sem && $test `./findhdr sys/sem.h`; then
11105         echo "You have the full sem*(2) library." >&4
11106         val="$define"
11107 else
11108         echo "You don't have the full sem*(2) library." >&4
11109         val="$undef"
11110 fi
11111 set d_sem
11112 eval $setvar
11113
11114 : see whether sys/sem.h defines union semun
11115 echo " "
11116 $cat > try.c <<'END'
11117 #include <sys/types.h>
11118 #include <sys/ipc.h>
11119 #include <sys/sem.h>
11120 int main () { union semun semun; semun.buf = 0; }
11121 END
11122 set try
11123 if eval $compile; then
11124     echo "You have union semun in <sys/sem.h>." >&4
11125     val="$define"
11126 else
11127     echo "You do not have union semun in <sys/sem.h>." >&4
11128     val="$undef"
11129 fi
11130 $rm -f try try.c try.h
11131 set d_union_semun
11132 eval $setvar
11133
11134 : see how to do semctl IPC_STAT
11135 case "$d_sem" in
11136 $define)
11137     : see whether semctl IPC_STAT can use union semun
11138     echo " "
11139     $cat > try.h <<END
11140 #ifndef S_IRUSR
11141 #   ifdef S_IREAD
11142 #       define S_IRUSR S_IREAD
11143 #       define S_IWUSR S_IWRITE
11144 #       define S_IXUSR S_IEXEC
11145 #   else
11146 #       define S_IRUSR 0400
11147 #       define S_IWUSR 0200
11148 #       define S_IXUSR 0100
11149 #   endif
11150 #   define S_IRGRP (S_IRUSR>>3)
11151 #   define S_IWGRP (S_IWUSR>>3)
11152 #   define S_IXGRP (S_IXUSR>>3)
11153 #   define S_IROTH (S_IRUSR>>6)
11154 #   define S_IWOTH (S_IWUSR>>6)
11155 #   define S_IXOTH (S_IXUSR>>6)
11156 #endif
11157 #ifndef S_IRWXU
11158 #   define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
11159 #   define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
11160 #   define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
11161 #endif
11162 END
11163
11164     $cat > try.c <<END
11165 #include <sys/types.h>
11166 #include <sys/ipc.h>
11167 #include <sys/sem.h>
11168 #include <sys/stat.h>
11169 #include <stdio.h>
11170 #include <errno.h>
11171 #include "try.h"
11172 #ifndef errno
11173 extern int errno;
11174 #endif
11175 #$d_union_semun HAS_UNION_SEMUN
11176 int main() {
11177     union semun
11178 #ifndef HAS_UNION_SEMUN
11179     {
11180         int val;
11181         struct semid_ds *buf;
11182         unsigned short *array;
11183     }
11184 #endif
11185     arg;
11186     int sem, st;
11187
11188 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
11189     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
11190     if (sem > -1) {
11191         struct semid_ds argbuf;
11192         arg.buf = &argbuf;
11193 #       ifdef IPC_STAT
11194         st = semctl(sem, 0, IPC_STAT, arg);
11195         if (st == 0)
11196             printf("semun\n");
11197         else
11198 #       endif /* IPC_STAT */
11199             printf("semctl IPC_STAT failed: errno = %d\n", errno);
11200 #       ifdef IPC_RMID
11201         if (semctl(sem, 0, IPC_RMID, arg) != 0)
11202 #       endif /* IPC_RMID */
11203             printf("semctl IPC_RMID failed: errno = %d\n", errno);
11204     } else
11205 #endif /* IPC_PRIVATE && ... */
11206         printf("semget failed: errno = %d\n", errno);
11207   return 0;
11208 }
11209 END
11210     val="$undef"
11211     set try
11212     if eval $compile; then
11213         xxx=`./try`
11214         case "$xxx" in
11215         semun) val="$define" ;;
11216         esac
11217     fi
11218     $rm -f try try.c
11219     set d_semctl_semun
11220     eval $setvar
11221     case "$d_semctl_semun" in
11222     $define)
11223         echo "You can use union semun for semctl IPC_STAT." >&4
11224         also='also'
11225         ;;
11226     *)  echo "You cannot use union semun for semctl IPC_STAT." >&4
11227         also=''
11228         ;;
11229     esac
11230
11231     : see whether semctl IPC_STAT can use struct semid_ds pointer
11232     $cat > try.c <<'END'
11233 #include <sys/types.h>
11234 #include <sys/ipc.h>
11235 #include <sys/sem.h>
11236 #include <sys/stat.h>
11237 #include "try.h"
11238 #include <stdio.h>
11239 #include <errno.h>
11240 #ifndef errno
11241 extern int errno;
11242 #endif
11243 int main() {
11244     struct semid_ds arg;
11245     int sem, st;
11246
11247 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) &&  defined(S_IRWXO) && defined(IPC_CREAT)
11248     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
11249     if (sem > -1) {
11250 #       ifdef IPC_STAT
11251         st = semctl(sem, 0, IPC_STAT, &arg);
11252         if (st == 0)
11253             printf("semid_ds\n");
11254         else
11255 #       endif /* IPC_STAT */
11256             printf("semctl IPC_STAT failed: errno = %d\n", errno);
11257 #       ifdef IPC_RMID
11258         if (semctl(sem, 0, IPC_RMID, &arg) != 0)
11259 #       endif /* IPC_RMID */
11260             printf("semctl IPC_RMID failed: errno = %d\n", errno);
11261     } else
11262 #endif /* IPC_PRIVATE && ... */
11263         printf("semget failed: errno = %d\n", errno);
11264
11265     return 0;
11266 }
11267 END
11268     val="$undef"
11269     set try
11270     if eval $compile; then
11271         xxx=`./try`
11272         case "$xxx" in
11273         semid_ds) val="$define" ;;
11274         esac
11275     fi
11276     $rm -f try try.c
11277     set d_semctl_semid_ds
11278     eval $setvar
11279     case "$d_semctl_semid_ds" in
11280     $define)
11281         echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
11282         ;;
11283     *)  echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
11284         ;;
11285     esac
11286     $rm -f try.h
11287     ;;
11288 *)  val="$undef"
11289
11290     # We do not have the full sem*(2) library, so assume we can not
11291     # use either.
11292
11293     set d_semctl_semun
11294     eval $setvar
11295
11296     set d_semctl_semid_ds
11297     eval $setvar
11298     ;;
11299 esac
11300
11301 : see if setegid exists
11302 set setegid d_setegid
11303 eval $inlibc
11304
11305 : see if seteuid exists
11306 set seteuid d_seteuid
11307 eval $inlibc
11308
11309 : see if setgrent exists
11310 set setgrent d_setgrent
11311 eval $inlibc
11312
11313 : see if sethostent exists
11314 set sethostent d_sethent
11315 eval $inlibc
11316
11317 : see if setlinebuf exists
11318 set setlinebuf d_setlinebuf
11319 eval $inlibc
11320
11321 : see if setlocale exists
11322 set setlocale d_setlocale
11323 eval $inlibc
11324
11325 : see if setnetent exists
11326 set setnetent d_setnent
11327 eval $inlibc
11328
11329 : see if setprotoent exists
11330 set setprotoent d_setpent
11331 eval $inlibc
11332
11333 : see if setpgid exists
11334 set setpgid d_setpgid
11335 eval $inlibc
11336
11337 : see if setpgrp2 exists
11338 set setpgrp2 d_setpgrp2
11339 eval $inlibc
11340
11341 : see if setpriority exists
11342 set setpriority d_setprior
11343 eval $inlibc
11344
11345 : see if setproctitle exists
11346 set setproctitle d_setproctitle
11347 eval $inlibc
11348
11349 : see if setpwent exists
11350 set setpwent d_setpwent
11351 eval $inlibc
11352
11353 : see if setregid exists
11354 set setregid d_setregid
11355 eval $inlibc
11356 set setresgid d_setresgid
11357 eval $inlibc
11358
11359 : see if setreuid exists
11360 set setreuid d_setreuid
11361 eval $inlibc
11362 set setresuid d_setresuid
11363 eval $inlibc
11364
11365 : see if setrgid exists
11366 set setrgid d_setrgid
11367 eval $inlibc
11368
11369 : see if setruid exists
11370 set setruid d_setruid
11371 eval $inlibc
11372
11373 : see if setservent exists
11374 set setservent d_setsent
11375 eval $inlibc
11376
11377 : see if setsid exists
11378 set setsid d_setsid
11379 eval $inlibc
11380
11381 : see if setvbuf exists
11382 set setvbuf d_setvbuf
11383 eval $inlibc
11384
11385 : see if sfio.h is available
11386 set sfio.h i_sfio
11387 eval $inhdr
11388
11389
11390 : see if sfio library is available
11391 case "$i_sfio" in
11392 $define)
11393         val=''
11394         set sfreserve val
11395         eval $inlibc
11396         ;;
11397 *)
11398         val="$undef"
11399         ;;
11400 esac
11401 : Ok, but do we want to use it.
11402 case "$val" in
11403 $define)
11404         case "$usesfio" in
11405         true|$define|[yY]*) dflt='y';;
11406         *) dflt='n';;
11407         esac
11408         echo "$package can use the sfio library, but it is experimental."
11409         case "$useperlio" in
11410         "$undef")
11411             echo "For sfio also the PerlIO abstraction layer is needed."
11412             echo "Earlier you said you wouldn't want that."
11413             ;;
11414         esac
11415         rp="You seem to have sfio available, do you want to try using it?"
11416         . ./myread
11417         case "$ans" in
11418         y|Y)    echo "Ok, turning on both sfio and PerlIO, then."
11419                 useperlio="$define"
11420                 val="$define"
11421                 ;;
11422         *)      echo "Ok, avoiding sfio this time.  I'll use stdio instead."
11423                 val="$undef"
11424                 ;;
11425         esac
11426         ;;
11427 *)      case "$usesfio" in
11428         true|$define|[yY]*)
11429                 echo "Sorry, cannot find sfio on this machine." >&4
11430                 echo "Ignoring your setting of usesfio=$usesfio." >&4
11431                 val="$undef"
11432                 ;;
11433         esac
11434         ;;
11435 esac
11436 set d_sfio
11437 eval $setvar
11438 case "$d_sfio" in
11439 $define) usesfio='true';;
11440 *) usesfio='false';;
11441 esac
11442 case "$d_sfio" in
11443 $define) ;;
11444 *)      : Remove sfio from list of libraries to use
11445         set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
11446         shift
11447         libs="$*"
11448         echo "libs = $libs" >&4
11449 ;;
11450 esac
11451
11452
11453 : see if shmctl exists
11454 set shmctl d_shmctl
11455 eval $inlibc
11456
11457 : see if shmget exists
11458 set shmget d_shmget
11459 eval $inlibc
11460
11461 : see if shmat exists
11462 set shmat d_shmat
11463 eval $inlibc
11464 : see what shmat returns
11465 case "$d_shmat" in
11466 "$define")
11467         $cat >shmat.c <<'END'
11468 #include <sys/shm.h>
11469 void *shmat();
11470 END
11471         if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
11472                 shmattype='void *'
11473         else
11474                 shmattype='char *'
11475         fi
11476         echo "and it returns ($shmattype)." >&4
11477         : see if a prototype for shmat is available
11478         xxx=`./findhdr sys/shm.h`
11479         $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
11480         if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
11481                 val="$define"
11482         else
11483                 val="$undef"
11484         fi
11485         $rm -f shmat.[co]
11486         ;;
11487 *)
11488         val="$undef"
11489         ;;
11490 esac
11491 set d_shmatprototype
11492 eval $setvar
11493
11494 : see if shmdt exists
11495 set shmdt d_shmdt
11496 eval $inlibc
11497
11498 : see how much of the 'shm*(2)' library is present.
11499 h_shm=true
11500 echo " "
11501 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
11502 *"$undef"*) h_shm=false;;
11503 esac
11504 case "$osname" in
11505 freebsd)
11506     case "`ipcs 2>&1`" in
11507     "SVID shared memory"*"not configured"*)
11508         echo "Your $osname does not have the shm*(2) configured." >&4
11509         h_shm=false
11510         val="$undef"
11511         set shmctl d_shmctl
11512         evat $setvar
11513         set shmget d_shmget
11514         evat $setvar
11515         set shmat d_shmat
11516         evat $setvar
11517         set shmdt d_shmdt
11518         evat $setvar
11519         ;;
11520     esac
11521     ;;
11522 esac
11523 : we could also check for sys/ipc.h ...
11524 if $h_shm && $test `./findhdr sys/shm.h`; then
11525         echo "You have the full shm*(2) library." >&4
11526         val="$define"
11527 else
11528         echo "You don't have the full shm*(2) library." >&4
11529         val="$undef"
11530 fi
11531 set d_shm
11532 eval $setvar
11533
11534 echo " "
11535 : see if we have sigaction
11536 if set sigaction val -f d_sigaction; eval $csym; $val; then
11537         echo 'sigaction() found.' >&4
11538         $cat > try.c <<'EOP'
11539 #include <stdio.h>
11540 #include <sys/types.h>
11541 #include <signal.h>
11542 int main()
11543 {
11544     struct sigaction act, oact;
11545     act.sa_flags = 0;
11546     oact.sa_handler = 0;
11547     /* so that act and oact are used */
11548     exit(act.sa_flags == 0 &&  oact.sa_handler == 0);
11549 }
11550 EOP
11551         set try
11552         if eval $compile_ok; then
11553                 val="$define"
11554         else
11555                 echo "But you don't seem to have a useable struct sigaction." >&4
11556                 val="$undef"
11557         fi
11558 else
11559         echo 'sigaction NOT found.' >&4
11560         val="$undef"
11561 fi
11562 set d_sigaction; eval $setvar
11563 $rm -f try try$_o try.c
11564
11565 : see if sigprocmask exists
11566 set sigprocmask d_sigprocmask
11567 eval $inlibc
11568
11569 : see if sigsetjmp exists
11570 echo " "
11571 case "$d_sigsetjmp" in
11572 '')
11573         $cat >try.c <<'EOP'
11574 #include <setjmp.h>
11575 sigjmp_buf env;
11576 int set = 1;
11577 int main()
11578 {
11579         if (sigsetjmp(env,1))
11580                 exit(set);
11581         set = 0;
11582         siglongjmp(env, 1);
11583         exit(1);
11584 }
11585 EOP
11586         set try
11587         if eval $compile; then
11588                 if ./try >/dev/null 2>&1; then
11589                         echo "POSIX sigsetjmp found." >&4
11590                         val="$define"
11591                 else
11592                         $cat >&4 <<EOM
11593 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
11594 I'll ignore them.
11595 EOM
11596                         val="$undef"
11597                 fi
11598         else
11599                 echo "sigsetjmp not found." >&4
11600                 val="$undef"
11601         fi
11602         ;;
11603 *) val="$d_sigsetjmp"
11604         case "$d_sigsetjmp" in
11605         $define) echo "POSIX sigsetjmp found." >&4;;
11606         $undef) echo "sigsetjmp not found." >&4;;
11607         esac
11608         ;;
11609 esac
11610 set d_sigsetjmp
11611 eval $setvar
11612 $rm -f try.c try
11613
11614 : see if socks5_init exists
11615 set socks5_init d_socks5_init
11616 eval $inlibc
11617
11618 : see if sys/stat.h is available
11619 set sys/stat.h i_sysstat
11620 eval $inhdr
11621
11622
11623 : see if stat knows about block sizes
11624 echo " "
11625 echo "Checking to see if your struct stat has st_blocks field..." >&4
11626 set d_statblks stat st_blocks $i_sysstat sys/stat.h
11627 eval $hasfield
11628
11629
11630 : see if this is a sys/vfs.h system
11631 set sys/vfs.h i_sysvfs
11632 eval $inhdr
11633
11634
11635 : see if this is a sys/statfs.h system
11636 set sys/statfs.h i_sysstatfs
11637 eval $inhdr
11638
11639
11640 echo " "
11641 echo "Checking to see if your system supports struct statfs..." >&4
11642 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
11643 eval $hasstruct
11644 case "$d_statfs_s" in
11645 "$define")      echo "Yes, it does."   ;;
11646 *)              echo "No, it doesn't." ;;
11647 esac
11648
11649
11650
11651 : see if struct statfs knows about f_flags
11652 case "$d_statfs_s" in
11653 define) 
11654         echo " "
11655         echo "Checking to see if your struct statfs has f_flags field..." >&4
11656         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
11657         eval $hasfield
11658         ;;
11659 *)      val="$undef"
11660         set d_statfs_f_flags
11661         eval $setvar
11662         ;;
11663 esac
11664 case "$d_statfs_f_flags" in
11665 "$define")      echo "Yes, it does."   ;;
11666 *)              echo "No, it doesn't." ;;
11667 esac
11668
11669 : see if _ptr and _cnt from stdio act std
11670 echo " "
11671
11672 if $contains '_lbfsize' `./findhdr stdio.h` >/dev/null 2>&1 ; then
11673         echo "(Looks like you have stdio.h from BSD.)"
11674         case "$stdio_ptr" in
11675         '') stdio_ptr='((fp)->_p)'
11676                 ptr_lval=$define
11677                 ;;
11678         *)      ptr_lval=$d_stdio_ptr_lval;;
11679         esac
11680         case "$stdio_cnt" in
11681         '') stdio_cnt='((fp)->_r)'
11682                 cnt_lval=$define
11683                 ;;
11684         *)      cnt_lval=$d_stdio_cnt_lval;;
11685         esac
11686         case "$stdio_base" in
11687         '') stdio_base='((fp)->_ub._base ? (fp)->_ub._base : (fp)->_bf._base)';;
11688         esac
11689         case "$stdio_bufsiz" in
11690         '') stdio_bufsiz='((fp)->_ub._base ? (fp)->_ub._size : (fp)->_bf._size)';;
11691         esac
11692 elif $contains '_IO_fpos_t' `./findhdr stdio.h` `./findhdr libio.h` >/dev/null 2>&1 ; then
11693         echo "(Looks like you have stdio.h from Linux.)"
11694         case "$stdio_ptr" in
11695         '') stdio_ptr='((fp)->_IO_read_ptr)'
11696                 ptr_lval=$define
11697                 ;;
11698         *)      ptr_lval=$d_stdio_ptr_lval;;
11699         esac
11700         case "$stdio_cnt" in
11701         '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
11702                 cnt_lval=$undef
11703                 ;;
11704         *)      cnt_lval=$d_stdio_cnt_lval;;
11705         esac
11706         case "$stdio_base" in
11707         '') stdio_base='((fp)->_IO_read_base)';;
11708         esac
11709         case "$stdio_bufsiz" in
11710         '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
11711         esac
11712 else
11713         case "$stdio_ptr" in
11714         '') stdio_ptr='((fp)->_ptr)'
11715                 ptr_lval=$define
11716                 ;;
11717         *)      ptr_lval=$d_stdio_ptr_lval;;
11718         esac
11719         case "$stdio_cnt" in
11720         '') stdio_cnt='((fp)->_cnt)'
11721                 cnt_lval=$define
11722                 ;;
11723         *)      cnt_lval=$d_stdio_cnt_lval;;
11724         esac
11725         case "$stdio_base" in
11726         '') stdio_base='((fp)->_base)';;
11727         esac
11728         case "$stdio_bufsiz" in
11729         '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
11730         esac
11731 fi
11732
11733 : test whether _ptr and _cnt really work
11734 echo "Checking how std your stdio is..." >&4
11735 $cat >try.c <<EOP
11736 #include <stdio.h>
11737 #define FILE_ptr(fp)    $stdio_ptr
11738 #define FILE_cnt(fp)    $stdio_cnt
11739 int main() {
11740         FILE *fp = fopen("try.c", "r");
11741         char c = getc(fp);
11742         if (
11743                 18 <= FILE_cnt(fp) &&
11744                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
11745         )
11746                 exit(0);
11747         exit(1);
11748 }
11749 EOP
11750 val="$undef"
11751 set try
11752 if eval $compile; then
11753         if ./try; then
11754                 echo "Your stdio acts pretty std."
11755                 val="$define"
11756         else
11757                 echo "Your stdio isn't very std."
11758         fi
11759 else
11760         echo "Your stdio doesn't appear very std."
11761 fi
11762 $rm -f try.c try
11763 set d_stdstdio
11764 eval $setvar
11765
11766 : Can _ptr be used as an lvalue?
11767 case "$d_stdstdio$ptr_lval" in
11768 $define$define) val=$define ;;
11769 *) val=$undef ;;
11770 esac
11771 set d_stdio_ptr_lval
11772 eval $setvar
11773
11774 : Can _cnt be used as an lvalue?
11775 case "$d_stdstdio$cnt_lval" in
11776 $define$define) val=$define ;;
11777 *) val=$undef ;;
11778 esac
11779 set d_stdio_cnt_lval
11780 eval $setvar
11781
11782
11783 : test whether setting _ptr sets _cnt as a side effect
11784 d_stdio_ptr_lval_sets_cnt="$undef"
11785 d_stdio_ptr_lval_nochange_cnt="$undef"
11786 case "$d_stdio_ptr_lval$d_stdstdio" in
11787 $define$define)
11788         echo "Checking to see what happens if we set the stdio ptr..." >&4
11789 $cat >try.c <<EOP
11790 #include <stdio.h>
11791 /* Can we scream? */
11792 /* Eat dust sed :-) */
11793 /* In the buffer space, no one can hear you scream. */
11794 #define FILE_ptr(fp)    $stdio_ptr
11795 #define FILE_cnt(fp)    $stdio_cnt
11796 #include <sys/types.h>
11797 int main() {
11798         FILE *fp = fopen("try.c", "r");
11799         int c;
11800         char *ptr;
11801         size_t cnt;
11802         if (!fp) {
11803             puts("Fail even to read");
11804             exit(1);
11805         }
11806         c = getc(fp); /* Read away the first # */
11807         if (c == EOF) {
11808             puts("Fail even to read");
11809             exit(1);
11810         }
11811         if (!(
11812                 18 <= FILE_cnt(fp) &&
11813                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
11814         )) {
11815                 puts("Fail even to read");
11816                 exit (1);
11817         }
11818         ptr = (char*) FILE_ptr(fp);
11819         cnt = (size_t)FILE_cnt(fp);
11820
11821         FILE_ptr(fp) += 42;
11822
11823         if ((char*)FILE_ptr(fp) != (ptr + 42)) {
11824                 printf("Fail ptr check %p != %p", FILE_ptr(fp), (ptr + 42));
11825                 exit (1);
11826         }
11827         if (FILE_cnt(fp) <= 20) {
11828                 printf ("Fail (<20 chars to test)");
11829                 exit (1);
11830         }
11831         if (strncmp(FILE_ptr(fp), "Eat dust sed :-) */\n", 20) != 0) {
11832                 puts("Fail compare");
11833                 exit (1);
11834         }
11835         if (cnt == FILE_cnt(fp)) {
11836                 puts("Pass_unchanged");
11837                 exit (0);
11838         }       
11839         if (FILE_cnt(fp) == (cnt - 42)) {
11840                 puts("Pass_changed");
11841                 exit (0);
11842         }
11843         printf("Fail count was %d now %d\n", cnt, FILE_cnt(fp));
11844         return 1;
11845
11846 }
11847 EOP
11848         set try
11849         if eval $compile; then
11850                 case `./try$exe_ext` in
11851                 Pass_changed)
11852                         echo "Increasing ptr in your stdio decreases cnt by the same amount.  Good." >&4
11853                         d_stdio_ptr_lval_sets_cnt="$define" ;;
11854                 Pass_unchanged)
11855                         echo "Increasing ptr in your stdio leaves cnt unchanged.  Good." >&4
11856                         d_stdio_ptr_lval_nochange_cnt="$define" ;;
11857                 Fail*)
11858                         echo "Increasing ptr in your stdio didn't do exactly what I expected.  We'll not be doing that then." >&4 ;;
11859                 *)
11860                         echo "It appears attempting to set ptr in your stdio is a bad plan." >&4 ;;
11861         esac
11862         else
11863                 echo "It seems we can't set ptr in your stdio.  Nevermind." >&4
11864         fi
11865         $rm -f try.c try
11866         ;;
11867 esac
11868
11869 : see if _base is also standard
11870 val="$undef"
11871 case "$d_stdstdio" in
11872 $define)
11873         $cat >try.c <<EOP
11874 #include <stdio.h>
11875 #define FILE_base(fp)   $stdio_base
11876 #define FILE_bufsiz(fp) $stdio_bufsiz
11877 int main() {
11878         FILE *fp = fopen("try.c", "r");
11879         char c = getc(fp);
11880         if (
11881                 19 <= FILE_bufsiz(fp) &&
11882                 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
11883         )
11884                 exit(0);
11885         exit(1);
11886 }
11887 EOP
11888         set try
11889         if eval $compile; then
11890                 if ./try; then
11891                         echo "And its _base field acts std."
11892                         val="$define"
11893                 else
11894                         echo "But its _base field isn't std."
11895                 fi
11896         else
11897                 echo "However, it seems to be lacking the _base field."
11898         fi
11899         $rm -f try.c try
11900         ;;
11901 esac
11902 set d_stdiobase
11903 eval $setvar
11904
11905 $cat >&4 <<EOM
11906 Checking how to access stdio streams by file descriptor number...
11907 EOM
11908 case "$stdio_stream_array" in
11909 '')     $cat >try.c <<EOCP
11910 #include <stdio.h>
11911 int main() {
11912   if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
11913     printf("yes\n");
11914 }
11915 EOCP
11916         for s in _iob __iob __sF
11917         do
11918                 set try -DSTDIO_STREAM_ARRAY=$s
11919                 if eval $compile; then
11920                         case "`./try$exe_ext`" in
11921                         yes)    stdio_stream_array=$s; break ;;
11922                         esac
11923                 fi
11924         done
11925         $rm -f try.* try$exe_ext
11926 esac
11927 case "$stdio_stream_array" in
11928 '')     $cat >&4 <<EOM
11929 I can't figure out how to access stdio streams by file descriptor number.
11930 EOM
11931         d_stdio_stream_array="$undef"
11932         ;;
11933 *)      $cat >&4 <<EOM
11934 You can access stdio streams by file descriptor number by the $stdio_stream_array array.
11935 EOM
11936         d_stdio_stream_array="$define"
11937         ;;
11938 esac
11939
11940 : see if strcoll exists
11941 set strcoll d_strcoll
11942 eval $inlibc
11943
11944 : check for structure copying
11945 echo " "
11946 echo "Checking to see if your C compiler can copy structs..." >&4
11947 $cat >try.c <<'EOCP'
11948 int main()
11949 {
11950         struct blurfl {
11951                 int dyick;
11952         } foo, bar;
11953
11954         foo = bar;
11955 }
11956 EOCP
11957 if $cc -c try.c >/dev/null 2>&1 ; then
11958         val="$define"
11959         echo "Yup, it can."
11960 else
11961         val="$undef"
11962         echo "Nope, it can't."
11963 fi
11964 set d_strctcpy
11965 eval $setvar
11966 $rm -f try.*
11967
11968 : see if strerror and/or sys_errlist[] exist
11969 echo " "
11970 if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
11971     if set strerror val -f d_strerror; eval $csym; $val; then
11972                 echo 'strerror() found.' >&4
11973                 d_strerror="$define"
11974                 d_strerrm='strerror(e)'
11975                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
11976                         echo "(You also have sys_errlist[], so we could roll our own strerror.)" 
11977                         d_syserrlst="$define"
11978                 else
11979                         echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
11980                         d_syserrlst="$undef"
11981                 fi
11982     elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
11983                         $contains '#[   ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
11984                 echo 'strerror() found in string header.' >&4
11985                 d_strerror="$define"
11986                 d_strerrm='strerror(e)'
11987                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
11988                         echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
11989                                 d_syserrlst="$define"
11990                 else
11991                         echo "(You don't appear to have any sys_errlist[], how can this be?)"
11992                         d_syserrlst="$undef"
11993                 fi
11994     elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
11995                 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
11996                 d_strerror="$undef"
11997                 d_syserrlst="$define"
11998                 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
11999     else
12000                 echo 'strerror() and sys_errlist[] NOT found.' >&4
12001                 d_strerror="$undef"
12002                 d_syserrlst="$undef"
12003                 d_strerrm='"unknown"'
12004     fi
12005 fi
12006
12007 : see if strtod exists
12008 set strtod d_strtod
12009 eval $inlibc
12010
12011 : see if strtol exists
12012 set strtol d_strtol
12013 eval $inlibc
12014
12015 : see if strtold exists
12016 set strtold d_strtold
12017 eval $inlibc
12018
12019 : see if strtoll exists
12020 set strtoll d_strtoll
12021 eval $inlibc
12022
12023 case "$d_longlong-$d_strtoll" in
12024 "$define-$define")
12025         $cat <<EOM
12026 Checking whether your strtoll() works okay...
12027 EOM
12028         $cat >try.c <<'EOCP'
12029 #include <errno.h>
12030 #ifdef __hpux
12031 #define strtoll __strtoll
12032 #endif
12033 #ifdef __EMX__
12034 #define strtoll _strtoll
12035 #endif
12036 #include <stdio.h>
12037 extern long long int strtoll(char *s, char **, int); 
12038 static int bad = 0;
12039 int check(char *s, long long ell, int een) {
12040         long long gll;
12041         errno = 0;
12042         gll = strtoll(s, 0, 10);
12043         if (!((gll == ell) && (errno == een)))
12044                 bad++;
12045 }
12046 int main() {
12047         check(" 1",                                      1LL, 0);
12048         check(" 0",                                      0LL, 0);
12049         check("-1",                                     -1LL, 0);
12050         check("-9223372036854775808", -9223372036854775808LL, 0);
12051         check("-9223372036854775808", -9223372036854775808LL, 0);
12052         check(" 9223372036854775807",  9223372036854775807LL, 0);
12053         check("-9223372036854775808", -9223372036854775808LL, 0);
12054         check(" 9223372036854775808",  9223372036854775807LL, ERANGE);
12055         check("-9223372036854775809", -9223372036854775808LL, ERANGE);
12056         if (!bad)
12057                 printf("ok\n");
12058 }
12059 EOCP
12060         set try
12061         if eval $compile; then
12062                 yyy=`./try`
12063                 case "$yyy" in
12064                 ok) echo "Your strtoll() seems to be working okay." ;;
12065                 *) cat <<EOM >&4
12066 Your strtoll() doesn't seem to be working okay.
12067 EOM
12068                    d_strtoll="$undef"
12069                    ;;
12070                 esac
12071         else
12072                 echo "(I can't seem to compile the test program--assuming it doesn't)"
12073                 d_strtoll="$undef"
12074         fi
12075         ;;
12076 esac
12077
12078 : see if strtoq exists
12079 set strtoq d_strtoq
12080 eval $inlibc
12081
12082 : see if strtoul exists
12083 set strtoul d_strtoul
12084 eval $inlibc
12085
12086 case "$d_strtoul" in
12087 "$define")
12088         $cat <<EOM
12089 Checking whether your strtoul() works okay...
12090 EOM
12091         $cat >try.c <<'EOCP'
12092 #include <errno.h>
12093 #include <stdio.h>
12094 extern unsigned long int strtoul(char *s, char **, int); 
12095 static int bad = 0;
12096 void check(char *s, unsigned long eul, int een) {
12097         unsigned long gul;
12098         errno = 0;
12099         gul = strtoul(s, 0, 10);
12100         if (!((gul == eul) && (errno == een)))
12101                 bad++;
12102 }
12103 int main() {
12104         check(" 1", 1L, 0);
12105         check(" 0", 0L, 0);
12106 EOCP
12107         case "$longsize" in
12108         8)
12109             $cat >>try.c <<'EOCP'
12110         check("18446744073709551615", 18446744073709551615UL, 0);
12111         check("18446744073709551616", 18446744073709551615UL, ERANGE);
12112 #if 0 /* strtoul() for /^-/ strings is undefined. */
12113         check("-1", 18446744073709551615UL, 0);
12114         check("-18446744073709551614", 2, 0);
12115         check("-18446744073709551615", 1, 0);
12116         check("-18446744073709551616", 18446744073709551615UL, ERANGE);
12117         check("-18446744073709551617", 18446744073709551615UL, ERANGE);
12118 #endif
12119 EOCP
12120                 ;;
12121         4)
12122                     $cat >>try.c <<'EOCP'
12123         check("4294967295", 4294967295UL, 0);
12124         check("4294967296", 4294967295UL, ERANGE);
12125 #if 0 /* strtoul() for /^-/ strings is undefined. */
12126         check("-1", 4294967295UL, 0);
12127         check("-4294967294", 2, 0);
12128         check("-4294967295", 1, 0);
12129         check("-4294967296", 4294967295UL, ERANGE);
12130         check("-4294967297", 4294967295UL, ERANGE);
12131 #endif
12132 EOCP
12133                 ;;
12134         *)
12135 : Should we write these tests to be more portable by sprintf-ing
12136 : ~0 and then manipulating that char string as input for strtol?
12137                 ;;
12138         esac
12139         $cat >>try.c <<'EOCP'
12140         if (!bad)
12141                 printf("ok\n");
12142         return 0;
12143 }
12144 EOCP
12145         set try
12146         if eval $compile; then
12147                 case "`./try`" in
12148                 ok) echo "Your strtoul() seems to be working okay." ;;
12149                 *) cat <<EOM >&4
12150 Your strtoul() doesn't seem to be working okay.
12151 EOM
12152                    d_strtoul="$undef"
12153                    ;;
12154                 esac
12155         fi
12156         ;;
12157 esac
12158
12159 : see if strtoull exists
12160 set strtoull d_strtoull
12161 eval $inlibc
12162
12163 case "$d_longlong-$d_strtoull" in
12164 "$define-$define")
12165         $cat <<EOM
12166 Checking whether your strtoull() works okay...
12167 EOM
12168         $cat >try.c <<'EOCP'
12169 #include <errno.h>
12170 #ifdef __hpux
12171 #define strtoull __strtoull
12172 #endif
12173 #include <stdio.h>
12174 extern unsigned long long int strtoull(char *s, char **, int); 
12175 static int bad = 0;
12176 int check(char *s, long long eull, int een) {
12177         long long gull;
12178         errno = 0;
12179         gull = strtoull(s, 0, 10);
12180         if (!((gull == eull) && (errno == een)))
12181                 bad++;
12182 }
12183 int main() {
12184         check(" 1",                                        1LL, 0);
12185         check(" 0",                                        0LL, 0);
12186         check("18446744073709551615",  18446744073709551615ULL, 0);
12187         check("18446744073709551616",  18446744073709551615ULL, ERANGE);
12188 #if 0 /* strtoull() for /^-/ strings is undefined. */
12189         check("-1",                    18446744073709551615ULL, 0);
12190         check("-18446744073709551614",                     2LL, 0);
12191         check("-18446744073709551615",                     1LL, 0);
12192         check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
12193         check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
12194 #endif
12195         if (!bad)
12196                 printf("ok\n");
12197 }
12198 EOCP
12199         set try
12200         if eval $compile; then
12201                 case "`./try`" in
12202                 ok) echo "Your strtoull() seems to be working okay." ;;
12203                 *) cat <<EOM >&4
12204 Your strtoull() doesn't seem to be working okay.
12205 EOM
12206                    d_strtoull="$undef"
12207                    ;;
12208                 esac
12209         fi
12210         ;;
12211 esac
12212
12213 : see if strtouq exists
12214 set strtouq d_strtouq
12215 eval $inlibc
12216
12217 case "$d_strtouq" in
12218 "$define")
12219         $cat <<EOM
12220 Checking whether your strtouq() works okay...
12221 EOM
12222         $cat >try.c <<'EOCP'
12223 #include <errno.h>
12224 #include <stdio.h>
12225 extern unsigned long long int strtouq(char *s, char **, int); 
12226 static int bad = 0;
12227 void check(char *s, unsigned long long eull, int een) {
12228         unsigned long long gull;
12229         errno = 0;
12230         gull = strtouq(s, 0, 10);
12231         if (!((gull == eull) && (errno == een)))
12232                 bad++;
12233 }
12234 int main() {
12235         check(" 1",                                        1LL, 0);
12236         check(" 0",                                        0LL, 0);
12237         check("18446744073709551615",  18446744073709551615ULL, 0);
12238         check("18446744073709551616",  18446744073709551615ULL, ERANGE);
12239 #if 0 /* strtouq() for /^-/ strings is undefined. */
12240         check("-1",                    18446744073709551615ULL, 0);
12241         check("-18446744073709551614",                     2LL, 0);
12242         check("-18446744073709551615",                     1LL, 0);
12243         check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
12244         check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
12245 #endif
12246         if (!bad)
12247                 printf("ok\n");
12248         return 0;
12249 }
12250 EOCP
12251         set try
12252         if eval $compile; then
12253                 case "`./try`" in
12254                 ok) echo "Your strtouq() seems to be working okay." ;;
12255                 *) cat <<EOM >&4
12256 Your strtouq() doesn't seem to be working okay.
12257 EOM
12258                    d_strtouq="$undef"
12259                    ;;
12260                 esac
12261         fi
12262         ;;
12263 esac
12264
12265 : see if strxfrm exists
12266 set strxfrm d_strxfrm
12267 eval $inlibc
12268
12269 : see if symlink exists
12270 set symlink d_symlink
12271 eval $inlibc
12272
12273 : see if syscall exists
12274 set syscall d_syscall
12275 eval $inlibc
12276
12277 : see if sysconf exists
12278 set sysconf d_sysconf
12279 eval $inlibc
12280
12281 : see if system exists
12282 set system d_system
12283 eval $inlibc
12284
12285 : see if tcgetpgrp exists
12286 set tcgetpgrp d_tcgetpgrp
12287 eval $inlibc
12288
12289 : see if tcsetpgrp exists
12290 set tcsetpgrp d_tcsetpgrp
12291 eval $inlibc
12292
12293 : see if prototype for telldir is available
12294 echo " "
12295 set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
12296 eval $hasproto
12297
12298 : see if this is a sys/times.h system
12299 set sys/times.h i_systimes
12300 eval $inhdr
12301
12302 : see if times exists
12303 echo " "
12304 if set times val -f d_times; eval $csym; $val; then
12305         echo 'times() found.' >&4
12306         d_times="$define"
12307         inc=''
12308         case "$i_systimes" in
12309         "$define") inc='sys/times.h';;
12310         esac
12311         rp="What is the type returned by times() on this system?"
12312         set clock_t clocktype long stdio.h sys/types.h $inc
12313         eval $typedef_ask
12314 else
12315         echo 'times() NOT found, hope that will do.' >&4
12316         d_times="$undef"
12317         clocktype='int'
12318 fi
12319
12320 : see if truncate exists
12321 set truncate d_truncate
12322 eval $inlibc
12323
12324 : see if tzname[] exists
12325 echo " "
12326 if set tzname val -a d_tzname; eval $csym; $val; then
12327         val="$define"
12328         echo 'tzname[] found.' >&4
12329 else
12330         val="$undef"
12331         echo 'tzname[] NOT found.' >&4
12332 fi
12333 set d_tzname
12334 eval $setvar
12335
12336 : see if umask exists
12337 set umask d_umask
12338 eval $inlibc
12339
12340 : see if ustat exists
12341 set ustat d_ustat
12342 eval $inlibc
12343
12344 : backward compatibility for d_hvfork
12345 if test X$d_hvfork != X; then
12346         d_vfork="$d_hvfork"
12347         d_hvfork=''
12348 fi
12349 : see if there is a vfork
12350 val=''
12351 set vfork val
12352 eval $inlibc
12353
12354 : Ok, but do we want to use it. vfork is reportedly unreliable in 
12355 : perl on Solaris 2.x, and probably elsewhere.
12356 case "$val" in
12357 $define)
12358         echo " "
12359         case "$usevfork" in
12360         false) dflt='n';;
12361         *) dflt='y';;
12362         esac
12363         cat <<'EOM'
12364  
12365 Perl can only use a vfork() that doesn't suffer from strict
12366 restrictions on calling functions or modifying global data in
12367 the child.  For example, glibc-2.1 contains such a vfork()
12368 that is unsuitable.  If your system provides a proper fork()
12369 call, chances are that you do NOT want perl to use vfork().
12370
12371 EOM
12372         rp="Do you still want to use vfork()?"
12373         . ./myread
12374         case "$ans" in
12375         y|Y) ;;
12376         *)
12377                 echo "Ok, we won't use vfork()."
12378                 val="$undef"
12379                 ;;
12380         esac
12381         ;;
12382 esac
12383 set d_vfork
12384 eval $setvar
12385 case "$d_vfork" in
12386 $define) usevfork='true';;
12387 *) usevfork='false';;
12388 esac
12389
12390 : see if this is an sysdir system
12391 set sys/dir.h i_sysdir
12392 eval $inhdr
12393
12394 : see if this is an sysndir system
12395 set sys/ndir.h i_sysndir
12396 eval $inhdr
12397
12398 : see if closedir exists
12399 set closedir d_closedir
12400 eval $inlibc
12401
12402 case "$d_closedir" in
12403 "$define")
12404         echo " "
12405         echo "Checking whether closedir() returns a status..." >&4
12406         cat > closedir.c <<EOM
12407 #$i_dirent I_DIRENT             /**/
12408 #$i_sysdir I_SYS_DIR            /**/
12409 #$i_sysndir I_SYS_NDIR          /**/
12410 #$i_systypes I_SYS_TYPES        /**/
12411
12412 #if defined(I_SYS_TYPES)
12413 #include <sys/types.h>
12414 #endif
12415 #if defined(I_DIRENT)
12416 #include <dirent.h>
12417 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
12418 #include <sys/dir.h>
12419 #endif
12420 #else
12421 #ifdef I_SYS_NDIR
12422 #include <sys/ndir.h>
12423 #else
12424 #ifdef I_SYS_DIR
12425 #ifdef hp9000s500
12426 #include <ndir.h>       /* may be wrong in the future */
12427 #else
12428 #include <sys/dir.h>
12429 #endif
12430 #endif
12431 #endif
12432 #endif 
12433 int main() { return closedir(opendir(".")); }
12434 EOM
12435         set closedir
12436         if eval $compile_ok; then
12437                 if ./closedir > /dev/null 2>&1 ; then
12438                         echo "Yes, it does."
12439                         val="$undef"
12440                 else
12441                         echo "No, it doesn't."
12442                         val="$define"
12443                 fi
12444         else
12445                 echo "(I can't seem to compile the test program--assuming it doesn't)"
12446                 val="$define"
12447         fi
12448         ;;
12449 *)
12450         val="$undef";
12451         ;;
12452 esac
12453 set d_void_closedir
12454 eval $setvar
12455 $rm -f closedir*
12456 : see if there is a wait4
12457 set wait4 d_wait4
12458 eval $inlibc
12459
12460 : see if waitpid exists
12461 set waitpid d_waitpid
12462 eval $inlibc
12463
12464 : see if wcstombs exists
12465 set wcstombs d_wcstombs
12466 eval $inlibc
12467
12468 : see if wctomb exists
12469 set wctomb d_wctomb
12470 eval $inlibc
12471
12472 : preserve RCS keywords in files with variable substitution, grrr
12473 Date='$Date'
12474 Id='$Id'
12475 Log='$Log'
12476 RCSfile='$RCSfile'
12477 Revision='$Revision'
12478
12479 case "$crosscompile" in
12480 ''|[nN]*) crosscompile="$undef" ;;
12481 esac
12482
12483 case "$osname" in
12484 next|rhapsody|darwin) multiarch="$define" ;;
12485 esac
12486 case "$multiarch" in
12487 ''|[nN]*) multiarch="$undef" ;;
12488 esac
12489
12490 : check for alignment requirements
12491 echo " "
12492 case "$crosscompile$multiarch" in
12493 *$define*)
12494         $cat <<EOM
12495 You seem to be either cross-compiling or doing a multiarchitecture build,
12496 skipping the memory alignment check.
12497
12498 EOM
12499         case "$alignbytes" in
12500         '') alignbytes=8 ;;
12501         esac
12502         ;;
12503 *)
12504         case "$alignbytes" in
12505         '') echo "Checking alignment constraints..." >&4
12506                 if $test "X$uselongdouble" = Xdefine -a "X$d_longdbl" = Xdefine; then
12507                         $cat >try.c <<'EOCP'
12508 typedef long double NV;
12509 EOCP
12510                 else
12511                         $cat >try.c <<'EOCP'
12512 typedef double NV;
12513 EOCP
12514                 fi
12515                 $cat >>try.c <<'EOCP'
12516 #include <stdio.h>
12517 struct foobar {
12518         char foo;
12519         NV bar;
12520 } try_algn;
12521 int main()
12522 {
12523     printf("%d\n", (int)((char *)&try_algn.bar - (char *)&try_algn.foo));
12524     return(0);
12525 }
12526 EOCP
12527                 set try
12528                 if eval $compile_ok; then
12529                         dflt=`./try`
12530                 else
12531                         dflt='8'
12532                         echo "(I can't seem to compile the test program...)"
12533                 fi
12534                 ;;
12535         *) dflt="$alignbytes"
12536                 ;;
12537         esac
12538         rp="Doubles must be aligned on a how-many-byte boundary?"
12539         . ./myread
12540         alignbytes="$ans"
12541         $rm -f try.c try
12542         ;;
12543 esac
12544
12545
12546 : set the base revision
12547 baserev=5.0
12548
12549 : check for ordering of bytes in a long
12550 echo " "
12551 case "$crosscompile$multiarch" in
12552 *$define*)
12553         $cat <<EOM
12554 You seem to be either cross-compiling or doing a multiarchitecture build,
12555 skipping the byteorder check.
12556
12557 EOM
12558         byteorder='0xffff'
12559         ;;
12560 *)
12561         case "$byteorder" in
12562         '')
12563                 $cat <<'EOM'
12564 In the following, larger digits indicate more significance.  A big-endian
12565 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
12566 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
12567 machines may have weird orders like 3412.  A Cray will report 87654321,
12568 an Alpha will report 12345678. If the test program works the default is
12569 probably right.
12570 I'm now running the test program...
12571 EOM
12572                 $cat >try.c <<'EOCP'
12573 #include <stdio.h>
12574 int main()
12575 {
12576         int i;
12577         union {
12578                 unsigned long l;
12579                 char c[sizeof(long)];
12580         } u;
12581
12582         if (sizeof(long) > 4)
12583                 u.l = (0x08070605L << 32) | 0x04030201L;
12584         else
12585                 u.l = 0x04030201L;
12586         for (i = 0; i < sizeof(long); i++)
12587                 printf("%c", u.c[i]+'0');
12588         printf("\n");
12589         exit(0);
12590 }
12591 EOCP
12592                 xxx_prompt=y
12593                 set try
12594                 if eval $compile && ./try > /dev/null; then
12595                         dflt=`./try`
12596                         case "$dflt" in
12597                         [1-4][1-4][1-4][1-4]|12345678|87654321)
12598                                 echo "(The test program ran ok.)"
12599                                 echo "byteorder=$dflt"
12600                                 xxx_prompt=n
12601                         ;;
12602                         ????|????????) echo "(The test program ran ok.)" ;;
12603                         *) echo "(The test program didn't run right for some reason.)" ;;
12604                         esac
12605                 else
12606                         dflt='4321'
12607                         cat <<'EOM'
12608 (I can't seem to compile the test program.  Guessing big-endian...)
12609 EOM
12610                 fi
12611                 case "$xxx_prompt" in
12612                 y)
12613                         rp="What is the order of bytes in a long?"
12614                         . ./myread
12615                         byteorder="$ans"
12616                         ;;
12617                 *)      byteorder=$dflt
12618                         ;;
12619                 esac
12620                 ;;
12621         esac
12622         $rm -f try.c try
12623         ;;
12624 esac
12625
12626
12627 : how do we catenate cpp tokens here?
12628 echo " "
12629 echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
12630 $cat >cpp_stuff.c <<'EOCP'
12631 #define RCAT(a,b)a/**/b
12632 #define ACAT(a,b)a ## b
12633 RCAT(Rei,ser)
12634 ACAT(Cir,cus)
12635 EOCP
12636 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
12637 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
12638         echo "Oh!  Smells like ANSI's been here." >&4
12639         echo "We can catify or stringify, separately or together!"
12640         cpp_stuff=42
12641 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
12642         echo "Ah, yes!  The good old days!" >&4
12643         echo "However, in the good old days we don't know how to stringify and"
12644         echo "catify at the same time."
12645         cpp_stuff=1
12646 else
12647         $cat >&4 <<EOM
12648 Hmm, I don't seem to be able to catenate tokens with your cpp.  You're going
12649 to have to edit the values of CAT[2-5] in config.h...
12650 EOM
12651         cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
12652 fi
12653 $rm -f cpp_stuff.*
12654
12655 : see if this is a db.h system
12656 set db.h i_db
12657 eval $inhdr
12658
12659 case "$i_db" in
12660 $define)
12661         : Check db version.
12662         echo " "
12663         echo "Checking Berkeley DB version ..." >&4
12664         $cat >try.c <<EOCP
12665 #$d_const HASCONST
12666 #ifndef HASCONST
12667 #define const
12668 #endif
12669 #include <sys/types.h>
12670 #include <stdio.h>
12671 #include <db.h>
12672 int main()
12673 {
12674 #ifdef DB_VERSION_MAJOR /* DB version >= 2 */
12675     int Major, Minor, Patch ;
12676     unsigned long Version ;
12677     (void)db_version(&Major, &Minor, &Patch) ;
12678     printf("You have Berkeley DB Version 2 or greater\n");
12679
12680     printf("db.h is from Berkeley DB Version %d.%d.%d\n",
12681                 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
12682     printf("libdb is from Berkeley DB Version %d.%d.%d\n",
12683                 Major, Minor, Patch) ;
12684
12685     /* check that db.h & libdb are compatible */
12686     if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
12687         printf("db.h and libdb are incompatible\n") ;
12688         exit(3);        
12689     }
12690
12691     printf("db.h and libdb are compatible\n") ;
12692
12693     Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
12694                 + DB_VERSION_PATCH ;
12695
12696     /* needs to be >= 2.3.4 */
12697     if (Version < 2003004) {
12698     /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
12699         printf("but Perl needs Berkeley DB 2.3.4 or greater\n") ;
12700         exit(2);        
12701     }
12702
12703     exit(0);
12704 #else
12705 #if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
12706     printf("You have Berkeley DB Version 1\n");
12707     exit(0);    /* DB version < 2: the coast is clear. */
12708 #else
12709     exit(1);    /* <db.h> not Berkeley DB? */
12710 #endif
12711 #endif
12712 }
12713 EOCP
12714         set try
12715         if eval $compile_ok && ./try; then
12716                 echo 'Looks OK.' >&4
12717         else
12718                 echo "I can't use Berkeley DB with your <db.h>.  I'll disable Berkeley DB." >&4
12719                 i_db=$undef
12720                 case " $libs " in
12721                 *"-ldb "*)
12722                         : Remove db from list of libraries to use
12723                         echo "Removing unusable -ldb from library list" >&4
12724                         set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
12725                         shift
12726                         libs="$*"
12727                         echo "libs = $libs" >&4
12728                         ;;
12729                 esac
12730         fi
12731         $rm -f try.*
12732         ;;
12733 esac
12734
12735 case "$i_db" in
12736 define)
12737         : Check the return type needed for hash 
12738         echo " "
12739         echo "Checking return type needed for hash for Berkeley DB ..." >&4
12740         $cat >try.c <<EOCP
12741 #$d_const HASCONST
12742 #ifndef HASCONST
12743 #define const
12744 #endif
12745 #include <sys/types.h>
12746 #include <db.h>
12747
12748 #ifndef DB_VERSION_MAJOR
12749 u_int32_t hash_cb (ptr, size)
12750 const void *ptr;
12751 size_t size;
12752 {
12753 }
12754 HASHINFO info;
12755 int main()
12756 {
12757         info.hash = hash_cb;
12758 }
12759 #endif
12760 EOCP
12761         if $cc $ccflags -c try.c >try.out 2>&1 ; then
12762                 if $contains warning try.out >>/dev/null 2>&1 ; then
12763                         db_hashtype='int'
12764                 else
12765                         db_hashtype='u_int32_t'
12766                 fi
12767         else
12768                 : XXX Maybe we should just give up here.
12769                 db_hashtype=u_int32_t
12770                 $cat try.out >&4
12771                 echo "Help:  I can't seem to compile the db test program." >&4
12772                 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
12773         fi
12774         $rm -f try.*
12775         echo "Your version of Berkeley DB uses $db_hashtype for hash."
12776         ;;
12777 *)      db_hashtype=u_int32_t
12778         ;;
12779 esac
12780 case "$i_db" in
12781 define)
12782         : Check the return type needed for prefix 
12783         echo " "
12784         echo "Checking return type needed for prefix for Berkeley DB ..." >&4
12785         cat >try.c <<EOCP
12786 #$d_const HASCONST
12787 #ifndef HASCONST
12788 #define const
12789 #endif
12790 #include <sys/types.h>
12791 #include <db.h>
12792
12793 #ifndef DB_VERSION_MAJOR
12794 size_t prefix_cb (key1, key2)
12795 const DBT *key1;
12796 const DBT *key2;
12797 {
12798 }
12799 BTREEINFO info;
12800 int main()
12801 {
12802         info.prefix = prefix_cb;
12803 }
12804 #endif
12805 EOCP
12806         if $cc $ccflags -c try.c  >try.out 2>&1 ; then
12807                 if $contains warning try.out >>/dev/null 2>&1 ; then
12808                         db_prefixtype='int'
12809                 else
12810                         db_prefixtype='size_t'
12811                 fi
12812         else
12813                 db_prefixtype='size_t'
12814                 : XXX Maybe we should just give up here.
12815                 $cat try.out >&4
12816                 echo "Help:  I can't seem to compile the db test program." >&4
12817                 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
12818         fi
12819         $rm -f try.*
12820         echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
12821         ;;
12822 *)      db_prefixtype='size_t'
12823         ;;
12824 esac
12825
12826 : check for void type
12827 echo " "
12828 echo "Checking to see how well your C compiler groks the void type..." >&4
12829 case "$voidflags" in
12830 '')
12831         $cat >try.c <<'EOCP'
12832 #if TRY & 1
12833 void sub() {
12834 #else
12835 sub() {
12836 #endif
12837         extern void moo();      /* function returning void */
12838         void (*goo)();          /* ptr to func returning void */
12839 #if TRY & 8
12840         void *hue;              /* generic ptr */
12841 #endif
12842 #if TRY & 2
12843         void (*foo[10])();
12844 #endif
12845
12846 #if TRY & 4
12847         if(goo == moo) {
12848                 exit(0);
12849         }
12850 #endif
12851         exit(0);
12852 }
12853 int main() { sub(); }
12854 EOCP
12855         if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
12856                 voidflags=$defvoidused
12857         echo "Good.  It appears to support void to the level $package wants.">&4
12858                 if $contains warning .out >/dev/null 2>&1; then
12859                         echo "However, you might get some warnings that look like this:"
12860                         $cat .out
12861                 fi
12862         else
12863 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
12864                 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
12865                         echo "It supports 1..."
12866                         if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
12867                                 echo "It also supports 2..."
12868                                 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
12869                                         voidflags=7
12870                                         echo "And it supports 4 but not 8 definitely."
12871                                 else
12872                                         echo "It doesn't support 4..."
12873                                         if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
12874                                                 voidflags=11
12875                                                 echo "But it supports 8."
12876                                         else
12877                                                 voidflags=3
12878                                                 echo "Neither does it support 8."
12879                                         fi
12880                                 fi
12881                         else
12882                                 echo "It does not support 2..."
12883                                 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
12884                                         voidflags=13
12885                                         echo "But it supports 4 and 8."
12886                                 else
12887                                         if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
12888                                                 voidflags=5
12889                                                 echo "And it supports 4 but has not heard about 8."
12890                                         else
12891                                                 echo "However it supports 8 but not 4."
12892                                         fi
12893                                 fi
12894                         fi
12895                 else
12896                         echo "There is no support at all for void."
12897                         voidflags=0
12898                 fi
12899         fi
12900 esac
12901 case "$voidflags" in
12902 "$defvoidused") ;;
12903 *)      $cat >&4 <<'EOM'
12904   Support flag bits are:
12905     1: basic void declarations.
12906     2: arrays of pointers to functions returning void.
12907     4: operations between pointers to and addresses of void functions.
12908     8: generic void pointers.
12909 EOM
12910         dflt="$voidflags";
12911         rp="Your void support flags add up to what?"
12912         . ./myread
12913         voidflags="$ans"
12914         ;;
12915 esac
12916 $rm -f try.* .out
12917
12918
12919 : How can we generate normalized random numbers ?
12920 echo " "
12921 echo "Looking for a random number function..." >&4
12922 case "$randfunc" in
12923 '')
12924         if set drand48 val -f; eval $csym; $val; then
12925                 dflt="drand48"
12926                 echo "Good, found drand48()." >&4
12927         elif set random val -f; eval $csym; $val; then
12928                 dflt="random"
12929                 echo "OK, found random()." >&4
12930         else
12931                 dflt="rand"
12932                 echo "Yick, looks like I have to use rand()." >&4
12933         fi
12934         echo " "
12935         ;;
12936 *)
12937         dflt="$randfunc"
12938         ;;
12939 esac
12940 cont=true
12941
12942 case "$ccflags" in
12943 *-Dmy_rand=*|*-Dmy_srand=*)
12944         echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
12945         ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
12946         ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
12947         ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
12948         ;;
12949 esac
12950
12951 while $test "$cont"; do
12952         rp="Use which function to generate random numbers?"
12953         . ./myread
12954         if $test "$ans" = "$dflt"; then
12955                 : null
12956         else
12957                 randbits=''
12958         fi
12959         randfunc="$ans"
12960         if set $ans val -f; eval $csym; $val; then
12961                 cont=''
12962         else
12963                 dflt=y
12964                 rp="I cannot find function $ans. Use that name anyway?"
12965                 . ./myread
12966                 dflt=rand
12967                 case "$ans" in
12968                         [yY]*) cont='';;
12969                 esac
12970         fi
12971         case "$cont" in
12972         '')
12973                 case "$randfunc" in
12974                 drand48)
12975                         drand01="drand48()"
12976                         seedfunc="srand48"
12977                         randbits=48
12978                         randseedtype=long
12979                         ;;
12980                 rand|random)
12981                         case "$randbits" in
12982                         '')
12983 echo "Checking to see how many bits your $randfunc() function produces..." >&4
12984                                 $cat >try.c <<EOCP
12985 #$i_unistd I_UNISTD
12986 #$i_stdlib I_STDLIB
12987 #include <stdio.h>
12988 #ifdef I_UNISTD
12989 #  include <unistd.h>
12990 #endif
12991 #ifdef I_STDLIB
12992 #  include <stdlib.h>
12993 #endif
12994 int main()
12995 {
12996         register int i;
12997         register unsigned long tmp;
12998         register unsigned long max = 0L;
12999
13000         for (i = 1000; i; i--) {
13001                 tmp = (unsigned long) $randfunc();
13002                 if (tmp > max) max = tmp;
13003         }
13004         for (i = 0; max; i++)
13005                 max /= 2;
13006         printf("%d\n",i);
13007 }
13008 EOCP
13009                                 set try
13010                                 if eval $compile_ok; then
13011                                         dflt=`try`
13012                                 else
13013                                         dflt='?'
13014                                         echo "(I can't seem to compile the test program...)"
13015                                 fi
13016                                 ;;
13017                         *)
13018                                 dflt="$randbits"
13019                                 ;;
13020                         esac
13021                         rp="How many bits does your $randfunc() function produce?"
13022                         . ./myread
13023                         randbits="$ans"
13024                         $rm -f try.c try
13025                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
13026                         seedfunc="s$randfunc"
13027                         randseedtype=unsigned
13028                         ;;
13029                 *)
13030                         dflt="31"
13031                         rp="How many bits does your $randfunc() function produce?"
13032                         . ./myread
13033                         randbits="$ans"
13034                         seedfunc="s$randfunc"
13035                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
13036                         if set $seedfunc val -f; eval $csym; $val; then
13037                                 echo "(Using $seedfunc() to seed random generator)"
13038                         else
13039                                 echo "(Warning: no $seedfunc() to seed random generator)"
13040                                 seedfunc=rand
13041                         fi
13042                         randseedtype=unsigned
13043                         ;;
13044                 esac
13045                 ;;
13046         esac
13047 done
13048
13049 echo " "
13050 echo "Determining whether or not we are on an EBCDIC system..." >&4
13051 $cat >tebcdic.c <<'EOM'
13052 int main()
13053 {
13054   if ('M'==0xd4) return 0;
13055   return 1;
13056 }
13057 EOM
13058
13059 val=$undef
13060 set tebcdic
13061 if eval $compile_ok; then
13062         if ./tebcdic; then
13063                 echo "You seem to speak EBCDIC." >&4
13064                 val="$define"
13065         else
13066                 echo "Nope, no EBCDIC, probably ASCII or some ISO Latin. Or UTF8." >&4
13067         fi
13068 else
13069         echo "I'm unable to compile the test program." >&4
13070         echo "I'll assume ASCII or some ISO Latin. Or UTF8." >&4
13071 fi
13072 $rm -f tebcdic.c tebcdic
13073 set ebcdic
13074 eval $setvar
13075
13076 echo " "
13077 $cat >&4 <<EOM
13078 Checking how to flush all pending stdio output...
13079 EOM
13080 # I only know how to find the first 32 possibly open files on SunOS.
13081 # See also hints/sunos_4_1.sh and util.c  --AD
13082 case "$osname" in
13083 sunos) $echo '#define PERL_FFLUSH_ALL_FOPEN_MAX 32' > try.c ;;
13084 esac
13085 $cat >>try.c <<EOCP
13086 #include <stdio.h>
13087 #$i_unistd I_UNISTD
13088 #ifdef I_UNISTD
13089 # include <unistd.h>
13090 #endif
13091 #$d_sysconf HAS_SYSCONF
13092 #$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY
13093 #ifdef HAS_STDIO_STREAM_ARRAY
13094 # define STDIO_STREAM_ARRAY $stdio_stream_array
13095 #endif
13096 int main() {
13097   FILE* p = fopen("try.out", "w");
13098 #ifdef TRY_FPUTC
13099   fputc('x', p);
13100 #else
13101 # ifdef TRY_FPRINTF
13102   fprintf(p, "x");
13103 # endif
13104 #endif
13105 #ifdef TRY_FFLUSH_NULL
13106   fflush(NULL);
13107 #endif
13108 #ifdef TRY_FFLUSH_ALL
13109   {
13110     long open_max = -1;
13111 # ifdef PERL_FFLUSH_ALL_FOPEN_MAX
13112     open_max = PERL_FFLUSH_ALL_FOPEN_MAX;
13113 # else
13114 #  if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
13115     open_max = sysconf(_SC_OPEN_MAX);
13116 #  else
13117 #   ifdef FOPEN_MAX
13118     open_max = FOPEN_MAX;
13119 #   else
13120 #    ifdef OPEN_MAX
13121     open_max = OPEN_MAX;
13122 #    else
13123 #     ifdef _NFILE
13124     open_max = _NFILE;
13125 #     endif
13126 #    endif
13127 #   endif
13128 #  endif
13129 # endif 
13130 # ifdef HAS_STDIO_STREAM_ARRAY
13131     if (open_max > 0) {
13132       long i;
13133       for (i = 0; i < open_max; i++)
13134             if (STDIO_STREAM_ARRAY[i]._file >= 0 &&
13135                 STDIO_STREAM_ARRAY[i]._file < open_max &&
13136                 STDIO_STREAM_ARRAY[i]._flag)
13137                 fflush(&STDIO_STREAM_ARRAY[i]);
13138     }   
13139   }
13140 # endif
13141 #endif
13142   _exit(42);
13143 }
13144 EOCP
13145 : first we have to find out how _not_ to flush
13146 if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
13147     output=''
13148     set try -DTRY_FPUTC
13149     if eval $compile; then
13150             $rm -f try.out
13151             ./try$exe_ext 2>/dev/null
13152             if $test ! -s try.out -a "X$?" = X42; then
13153                 output=-DTRY_FPUTC
13154             fi
13155     fi
13156     case "$output" in
13157     '')
13158             set try -DTRY_FPRINTF
13159             $rm -f try.out
13160             if eval $compile; then
13161                     $rm -f try.out
13162                     ./try$exe_ext 2>/dev/null
13163                     if $test ! -s try.out -a "X$?" = X42; then
13164                         output=-DTRY_FPRINTF
13165                     fi
13166             fi
13167         ;;
13168     esac
13169 fi
13170 : check for fflush NULL behaviour
13171 case "$fflushNULL" in
13172 '')     set try -DTRY_FFLUSH_NULL $output
13173         if eval $compile; then
13174                 $rm -f try.out
13175                 ./try$exe_ext 2>/dev/null
13176                 code="$?"
13177                 if $test -s try.out -a "X$code" = X42; then
13178                         fflushNULL="`$cat try.out`"
13179                 else
13180                         if $test "X$code" != X42; then
13181                                 $cat >&4 <<EOM
13182 (If this test failed, don't worry, we'll try another method shortly.)
13183 EOM
13184                         fi
13185                 fi
13186         fi
13187         $rm -f core try.core core.try.*
13188         case "$fflushNULL" in
13189         x)      $cat >&4 <<EOM
13190 Your fflush(NULL) works okay for output streams.
13191 Let's see if it clobbers input pipes...
13192 EOM
13193 # As of mid-March 2000 all versions of Solaris appear to have a stdio
13194 # bug that improperly flushes the input end of pipes.  So we avoid the
13195 # autoflush on fork/system/exec support for now. :-(
13196 $cat >tryp.c <<EOCP
13197 #include <stdio.h>
13198 int
13199 main(int argc, char **argv)
13200 {
13201     char buf[1024];
13202     int i;
13203     char *bp = buf;
13204     while (1) {
13205         while ((i = getc(stdin)) != -1
13206                && (*bp++ = i) != '\n'
13207                && bp < &buf[1024])
13208         /* DO NOTHING */ ;
13209         *bp = '\0';
13210         fprintf(stdout, "%s", buf);
13211         fflush(NULL);
13212         if (i == -1)
13213             return 0;
13214         bp = buf;
13215     }
13216 }
13217 EOCP
13218                 fflushNULL="$define"
13219                 set tryp
13220                 if eval $compile; then
13221                     $rm -f tryp.out
13222                     $cat tryp.c | ./tryp$exe_ext 2>/dev/null > tryp.out
13223                     if cmp tryp.c tryp.out >/dev/null 2>&1; then
13224                        $cat >&4 <<EOM
13225 fflush(NULL) seems to behave okay with input streams.
13226 EOM
13227                         fflushNULL="$define"
13228                     else
13229                         $cat >&4 <<EOM
13230 Ouch, fflush(NULL) clobbers input pipes!  We will not use it.
13231 EOM
13232                         fflushNULL="$undef"
13233                     fi
13234                 fi
13235                 $rm -f core tryp.c tryp.core core.tryp.*
13236                 ;;
13237         '')     $cat >&4 <<EOM
13238 Your fflush(NULL) isn't working (contrary to ANSI C).
13239 EOM
13240                 fflushNULL="$undef"
13241                 ;;
13242         *)      $cat >&4 <<EOM
13243 Cannot figure out whether your fflush(NULL) works or not.
13244 I'm assuming it doesn't (contrary to ANSI C).
13245 EOM
13246                 fflushNULL="$undef"
13247                 ;;
13248         esac
13249         ;;
13250 $define|true|[yY]*)
13251         fflushNULL="$define"
13252         ;;
13253 *)
13254         fflushNULL="$undef"
13255         ;;
13256 esac
13257 : check explicit looping only if NULL did not work, and if the pipe
13258 : bug does not show up on an explicit flush too
13259 case "$fflushNULL" in
13260 "$undef")
13261         $cat >tryp.c <<EOCP
13262 #include <stdio.h>
13263 int
13264 main(int argc, char **argv)
13265 {
13266     char buf[1024];
13267     int i;
13268     char *bp = buf;
13269     while (1) {
13270         while ((i = getc(stdin)) != -1
13271                && (*bp++ = i) != '\n'
13272                && bp < &buf[1024])
13273         /* DO NOTHING */ ;
13274         *bp = '\0';
13275         fprintf(stdout, "%s", buf);
13276         fflush(stdin);
13277         if (i == -1)
13278             return 0;
13279         bp = buf;
13280     }
13281 }
13282 EOCP
13283         set tryp
13284         if eval $compile; then
13285             $rm -f tryp.out
13286             $cat tryp.c | ./tryp$exe_ext 2>/dev/null > tryp.out
13287             if cmp tryp.c tryp.out >/dev/null 2>&1; then
13288                $cat >&4 <<EOM
13289 Good, at least fflush(stdin) seems to behave okay when stdin is a pipe.
13290 EOM
13291                 : now check for fflushall behaviour
13292                 case "$fflushall" in
13293                 '')     set try -DTRY_FFLUSH_ALL $output
13294                         if eval $compile; then
13295                                 $cat >&4 <<EOM
13296 (Now testing the other method--but note that this also may fail.)
13297 EOM
13298                                 $rm -f try.out
13299                                 ./try$exe_ext 2>/dev/null
13300                                 if $test -s try.out -a "X$?" = X42; then
13301                                         fflushall="`$cat try.out`"
13302                                 fi
13303                         fi
13304                         $rm -f core try.core core.try.*
13305                         case "$fflushall" in
13306                         x)      $cat >&4 <<EOM
13307 Whew. Flushing explicitly all the stdio streams works.
13308 EOM
13309                                 fflushall="$define"
13310                                 ;;
13311                         '')     $cat >&4 <<EOM
13312 Sigh. Flushing explicitly all the stdio streams doesn't work.
13313 EOM
13314                                 fflushall="$undef"
13315                                 ;;
13316                         *)      $cat >&4 <<EOM
13317 Cannot figure out whether flushing stdio streams explicitly works or not.
13318 I'm assuming it doesn't.
13319 EOM
13320                                 fflushall="$undef"
13321                                 ;;
13322                         esac
13323                         ;;
13324                 "$define"|true|[yY]*)
13325                         fflushall="$define"
13326                         ;;
13327                 *)
13328                         fflushall="$undef"
13329                         ;;
13330                 esac
13331             else
13332                 $cat >&4 <<EOM
13333 All is futile.  Even fflush(stdin) clobbers input pipes!
13334 EOM
13335                 fflushall="$undef"
13336             fi
13337         else
13338             fflushall="$undef"
13339         fi
13340         $rm -f core tryp.c tryp.core core.tryp.*
13341         ;;
13342 *)      fflushall="$undef"
13343         ;;
13344 esac
13345
13346 case "$fflushNULL$fflushall" in
13347 undefundef)
13348         $cat <<EOM
13349 OK, I give up.  I cannot figure out how to flush pending stdio output.
13350 We won't be flushing handles at all before fork/exec/popen.
13351 EOM
13352         ;;
13353 esac
13354 $rm -f try.* try$exe_ext
13355
13356 : Store the full pathname to the ar program for use in the C program
13357 : Respect a hint or command line value for full_ar.
13358 case "$full_ar" in
13359 '') full_ar=$ar ;;
13360 esac
13361
13362 : Store the full pathname to the sed program for use in the C program
13363 full_sed=$sed
13364
13365 : see what type gids are declared as in the kernel
13366 echo " "
13367 echo "Looking for the type for group ids returned by getgid()."
13368 set gid_t gidtype xxx stdio.h sys/types.h
13369 eval $typedef
13370 case "$gidtype" in
13371 xxx)
13372         xxx=`./findhdr sys/user.h`
13373         set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
13374         case $1 in
13375         unsigned) dflt="$1 $2" ;;
13376         *) dflt="$1" ;;
13377         esac
13378         ;;
13379 *) dflt="$gidtype";;
13380 esac
13381 case "$gidtype" in
13382 gid_t) echo "gid_t found." ;;
13383 *)      rp="What is the type for group ids returned by getgid()?"
13384         . ./myread
13385         gidtype="$ans"
13386         ;;
13387 esac
13388
13389 echo " "
13390 case "$gidtype" in
13391 *_t) zzz="$gidtype"     ;;
13392 *)   zzz="gid"          ;;
13393 esac
13394 echo "Checking the size of $zzz..." >&4 
13395 cat > try.c <<EOCP
13396 #include <sys/types.h>
13397 #include <stdio.h>
13398 int main() {
13399     printf("%d\n", (int)sizeof($gidtype));
13400     exit(0);
13401 }
13402 EOCP
13403 set try
13404 if eval $compile_ok; then
13405         yyy=`./try`
13406         case "$yyy" in
13407         '')     gidsize=4
13408                 echo "(I can't execute the test program--guessing $gidsize.)" >&4
13409                 ;;
13410         *)      gidsize=$yyy
13411                 echo "Your $zzz is $gidsize bytes long."
13412                 ;;
13413         esac
13414 else
13415         gidsize=4
13416         echo "(I can't compile the test program--guessing $gidsize.)" >&4
13417 fi
13418
13419
13420 echo " "
13421 case "$gidtype" in
13422 *_t) zzz="$gidtype"     ;;
13423 *)   zzz="gid"          ;;
13424 esac
13425 echo "Checking the sign of $zzz..." >&4 
13426 cat > try.c <<EOCP
13427 #include <sys/types.h>
13428 #include <stdio.h>
13429 int main() {
13430         $gidtype foo = -1;
13431         if (foo < 0)
13432                 printf("-1\n");
13433         else
13434                 printf("1\n");
13435 }
13436 EOCP
13437 set try
13438 if eval $compile; then
13439         yyy=`./try`
13440         case "$yyy" in
13441         '')     gidsign=1
13442                 echo "(I can't execute the test program--guessing unsigned.)" >&4
13443                 ;;
13444         *)      gidsign=$yyy
13445                 case "$gidsign" in
13446                  1) echo "Your $zzz is unsigned." ;;
13447                 -1) echo "Your $zzz is signed."   ;;
13448                 esac
13449                 ;;
13450         esac
13451 else
13452         gidsign=1
13453         echo "(I can't compile the test program--guessing unsigned.)" >&4
13454 fi
13455
13456
13457 echo " "
13458
13459 if $test X"$quadtype" != X; then
13460
13461 echo "Checking how to print 64-bit integers..." >&4
13462
13463 if $test X"$sPRId64" = X -a X"$quadtype" = Xint; then
13464         $cat >try.c <<'EOCP'
13465 #include <sys/types.h>
13466 #include <stdio.h>
13467 int main() {
13468   int q = 12345678901;
13469   printf("%ld\n", q);
13470 }
13471 EOCP
13472         set try
13473         if eval $compile; then
13474                 yyy=`./try$exe_ext`
13475                 case "$yyy" in
13476                 12345678901)
13477                         sPRId64='"d"'; sPRIi64='"i"'; sPRIu64='"u"';
13478                         sPRIo64='"o"'; sPRIx64='"x"'; sPRIXU64='"X"';
13479                         echo "We will use %d."
13480                         ;;
13481                 esac
13482         fi
13483 fi
13484
13485 if $test X"$sPRId64" = X -a X"$quadtype" = Xlong; then
13486         $cat >try.c <<'EOCP'
13487 #include <sys/types.h>
13488 #include <stdio.h>
13489 int main() {
13490   long q = 12345678901;
13491   printf("%ld\n", q);
13492 }
13493 EOCP
13494         set try
13495         if eval $compile; then
13496                 yyy=`./try$exe_ext`
13497                 case "$yyy" in
13498                 12345678901)
13499                         sPRId64='"ld"'; sPRIi64='"li"'; sPRIu64='"lu"';
13500                         sPRIo64='"lo"'; sPRIx64='"lx"'; sPRIXU64='"lX"';
13501                         echo "We will use %ld."
13502                         ;;
13503                 esac
13504         fi
13505 fi
13506
13507 if $test X"$sPRId64" = X -a X"$i_inttypes" = X"$define" -a X"$quadtype" = Xint64_t; then
13508         $cat >try.c <<'EOCP'
13509 #include <sys/types.h>
13510 #include <inttypes.h>
13511 #include <stdio.h>
13512 int main() {
13513   int64_t q = 12345678901;
13514   printf("%" PRId64 "\n", q);
13515 }
13516 EOCP
13517         set try
13518         if eval $compile; then
13519                 yyy=`./try$exe_ext`
13520                 case "$yyy" in
13521                 12345678901)
13522                         sPRId64=PRId64; sPRIi64=PRIi64; sPRIu64=PRIu64;
13523                         sPRIo64=PRIo64; sPRIx64=PRIx64; sPRIXU64=PRIXU64;
13524                         echo "We will use the C9X style."
13525                         ;;
13526                 esac
13527         fi
13528 fi
13529
13530 if $test X"$sPRId64" = X -a X"$quadtype" = X"long long"; then
13531         $cat >try.c <<'EOCP'
13532 #include <sys/types.h>
13533 #include <stdio.h>
13534 int main() {
13535   long long q = 12345678901LL; /* AIX cc requires the LL suffix. */
13536   printf("%lld\n", q);
13537 }
13538 EOCP
13539         set try
13540         if eval $compile; then
13541                 yyy=`./try$exe_ext`
13542                 case "$yyy" in
13543                 12345678901)
13544                         sPRId64='"lld"'; sPRIi64='"lli"'; sPRIu64='"llu"';
13545                         sPRIo64='"llo"'; sPRIx64='"llx"'; sPRIXU64='"llX"';
13546                         echo "We will use the %lld style."
13547                         ;;
13548                 esac
13549         fi
13550 fi
13551
13552 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
13553         $cat >try.c <<EOCP
13554 #include <sys/types.h>
13555 #include <stdio.h>
13556 int main() {
13557   $quadtype q = 12345678901;
13558   printf("%Ld\n", q);
13559 }
13560 EOCP
13561         set try
13562         if eval $compile; then
13563                 yyy=`./try$exe_ext`
13564                 case "$yyy" in
13565                 12345678901)
13566                         sPRId64='"Ld"'; sPRIi64='"Li"'; sPRIu64='"Lu"';
13567                         sPRIo64='"Lo"'; sPRIx64='"Lx"'; sPRIXU64='"LX"';
13568                         echo "We will use %Ld."
13569                         ;;
13570                 esac
13571         fi
13572 fi
13573
13574 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
13575         $cat >try.c <<EOCP
13576 #include <sys/types.h>
13577 #include <stdio.h>
13578 int main() {
13579   $quadtype q = 12345678901;
13580   printf("%qd\n", q);
13581 }
13582 EOCP
13583         set try
13584         if eval $compile; then
13585                 yyy=`./try$exe_ext`
13586                 case "$yyy" in
13587                 12345678901)
13588                         sPRId64='"qd"'; sPRIi64='"qi"'; sPRIu64='"qu"';
13589                         sPRIo64='"qo"'; sPRIx64='"qx"'; sPRIXU64='"qX"';
13590                         echo "We will use %qd."
13591                         ;;
13592                 esac
13593         fi
13594 fi
13595
13596 if $test X"$sPRId64" = X; then
13597         echo "Cannot figure out how to print 64-bit integers." >&4
13598 fi
13599
13600 $rm -f try try.*
13601
13602 fi
13603
13604 case "$sPRId64" in
13605 '')     d_PRId64="$undef"; d_PRIi64="$undef"; d_PRIu64="$undef"; 
13606         d_PRIo64="$undef"; d_PRIx64="$undef"; d_PRIXU64="$undef"; 
13607         ;;
13608 *)      d_PRId64="$define"; d_PRIi64="$define"; d_PRIu64="$define"; 
13609         d_PRIo64="$define"; d_PRIx64="$define"; d_PRIXU64="$define"; 
13610         ;;
13611 esac
13612
13613
13614 echo " "
13615 $echo "Checking the format strings to be used for Perl's internal types..." >&4
13616
13617 if $test X"$ivsize" = X8; then
13618         ivdformat="$sPRId64"
13619         uvuformat="$sPRIu64"
13620         uvoformat="$sPRIo64"
13621         uvxformat="$sPRIx64"
13622         uvXUformat="$sPRIXU64"
13623 else
13624         if $test X"$ivsize" = X"$longsize"; then
13625                 ivdformat='"ld"'
13626                 uvuformat='"lu"'
13627                 uvoformat='"lo"'
13628                 uvxformat='"lx"'
13629                 uvXUformat='"lX"'
13630         else
13631                 if $test X"$ivsize" = X"$intsize"; then
13632                         ivdformat='"d"'
13633                         uvuformat='"u"'
13634                         uvoformat='"o"'
13635                         uvxformat='"x"'
13636                         uvXUformat='"X"'
13637                 else
13638                         : far out
13639                         if $test X"$ivsize" = X"$shortsize"; then
13640                                 ivdformat='"hd"'
13641                                 uvuformat='"hu"'
13642                                 uvoformat='"ho"'
13643                                 uvxformat='"hx"'
13644                                 uvXUformat='"hX"'
13645                         fi
13646                 fi
13647         fi
13648 fi
13649
13650 if $test X"$uselongdouble" = X"$define" -a X"$d_longdbl" = X"$define" -a X"$d_PRIgldbl" = X"$define"; then
13651         nveformat="$sPRIeldbl"
13652         nvfformat="$sPRIfldbl"
13653         nvgformat="$sPRIgldbl"
13654         nvEUformat="$sPRIEUldbl"
13655         nvFUformat="$sPRIFUldbl"
13656         nvGUformat="$sPRIGUldbl"
13657 else
13658         nveformat='"e"'
13659         nvfformat='"f"'
13660         nvgformat='"g"'
13661         nvEUformat='"E"'
13662         nvFUformat='"F"'
13663         nvGUformat='"G"'
13664 fi
13665
13666 case "$ivdformat" in
13667 '') echo "$0: Fatal: failed to find format strings, cannot continue." >& 4
13668     exit 1
13669     ;;
13670 esac
13671
13672
13673 echo " "
13674 $echo "Checking the format string to be used for gids..." >&4
13675
13676 case "$gidsign" in
13677 -1)     if $test X"$gidsize" = X"$ivsize"; then
13678                 gidformat="$ivdformat"
13679         else
13680                 if $test X"$gidsize" = X"$longsize"; then
13681                         gidformat='"ld"'
13682                 else
13683                         if $test X"$gidsize" = X"$intsize"; then
13684                                 gidformat='"d"'
13685                         else
13686                                 if $test X"$gidsize" = X"$shortsize"; then
13687                                         gidformat='"hd"'
13688                                 fi
13689                         fi
13690                 fi
13691         fi
13692         ;;
13693 *)      if $test X"$gidsize" = X"$uvsize"; then
13694                 gidformat="$uvuformat"
13695         else
13696                 if $test X"$gidsize" = X"$longsize"; then
13697                         gidformat='"lu"'
13698                 else
13699                         if $test X"$gidsize" = X"$intsize"; then
13700                                 gidformat='"u"'
13701                         else
13702                                 if $test X"$gidsize" = X"$shortsize"; then
13703                                         gidformat='"hu"'
13704                                 fi
13705                         fi
13706                 fi
13707         fi
13708         ;;
13709 esac
13710
13711 : see if getgroups exists
13712 set getgroups d_getgrps
13713 eval $inlibc
13714
13715 : see if setgroups exists
13716 set setgroups d_setgrps
13717 eval $inlibc
13718
13719
13720 : Find type of 2nd arg to 'getgroups()' and 'setgroups()'
13721 echo " "
13722 case "$d_getgrps$d_setgrps" in
13723 *define*)
13724         case "$groupstype" in
13725         '') dflt="$gidtype" ;;
13726         *)  dflt="$groupstype" ;;
13727         esac
13728         $cat <<EOM
13729 What type of pointer is the second argument to getgroups() and setgroups()?
13730 Usually this is the same as group ids, $gidtype, but not always.
13731
13732 EOM
13733         rp='What type pointer is the second argument to getgroups() and setgroups()?'
13734         . ./myread
13735         groupstype="$ans"
13736         ;;
13737 *)  groupstype="$gidtype";;
13738 esac
13739
13740 echo " "
13741 echo "Checking if your $make program sets \$(MAKE)..." >&4
13742 case "$make_set_make" in
13743 '')
13744         $sed 's/^X //' > testmake.mak << 'EOF'
13745 Xall:
13746 X       @echo 'maketemp="$(MAKE)"'
13747 EOF
13748         case "`$make -f testmake.mak 2>/dev/null`" in
13749         *maketemp=*) make_set_make='#' ;;
13750         *)      make_set_make="MAKE=$make" ;;
13751         esac
13752         $rm -f testmake.mak
13753         ;;
13754 esac
13755 case "$make_set_make" in
13756 '#') echo "Yup, it does.";;
13757 *) echo "Nope, it doesn't.";;
13758 esac
13759
13760 : see what type is used for mode_t
13761 rp="What is the type used for file modes for system calls (e.g. fchmod())?"
13762 set mode_t modetype int stdio.h sys/types.h
13763 eval $typedef_ask
13764
13765 : see if stdarg is available
13766 echo " "
13767 if $test `./findhdr stdarg.h`; then
13768         echo "<stdarg.h> found." >&4
13769         valstd="$define"
13770 else
13771         echo "<stdarg.h> NOT found." >&4
13772         valstd="$undef"
13773 fi
13774
13775 : see if varags is available
13776 echo " "
13777 if $test `./findhdr varargs.h`; then
13778         echo "<varargs.h> found." >&4
13779 else
13780         echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
13781 fi
13782
13783 : set up the varargs testing programs
13784 $cat > varargs.c <<EOP
13785 #ifdef I_STDARG
13786 #include <stdarg.h>
13787 #endif
13788 #ifdef I_VARARGS
13789 #include <varargs.h>
13790 #endif
13791
13792 #ifdef I_STDARG
13793 int f(char *p, ...)
13794 #else
13795 int f(va_alist)
13796 va_dcl
13797 #endif
13798 {
13799         va_list ap;
13800 #ifndef I_STDARG
13801         char *p;
13802 #endif
13803 #ifdef I_STDARG
13804         va_start(ap,p);
13805 #else
13806         va_start(ap);
13807         p = va_arg(ap, char *);
13808 #endif
13809         va_end(ap);
13810 }
13811 EOP
13812 $cat > varargs <<EOP
13813 $startsh
13814 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
13815         echo "true"
13816 else
13817         echo "false"
13818 fi
13819 $rm -f varargs$_o
13820 EOP
13821 chmod +x varargs
13822
13823 : now check which varargs header should be included
13824 echo " "
13825 i_varhdr=''
13826 case "$valstd" in
13827 "$define")
13828         if `./varargs I_STDARG`; then
13829                 val='stdarg.h'
13830         elif `./varargs I_VARARGS`; then
13831                 val='varargs.h'
13832         fi
13833         ;;
13834 *)
13835         if `./varargs I_VARARGS`; then
13836                 val='varargs.h'
13837         fi
13838         ;;
13839 esac
13840 case "$val" in
13841 '')
13842 echo "I could not find the definition for va_dcl... You have problems..." >&4
13843         val="$undef"; set i_stdarg; eval $setvar
13844         val="$undef"; set i_varargs; eval $setvar
13845         ;;
13846 *) 
13847         set i_varhdr
13848         eval $setvar
13849         case "$i_varhdr" in
13850         stdarg.h)
13851                 val="$define"; set i_stdarg; eval $setvar
13852                 val="$undef"; set i_varargs; eval $setvar
13853                 ;;
13854         varargs.h)
13855                 val="$undef"; set i_stdarg; eval $setvar
13856                 val="$define"; set i_varargs; eval $setvar
13857                 ;;
13858         esac
13859         echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
13860 esac
13861 $rm -f varargs*
13862
13863 : see if we need va_copy
13864 echo " "
13865 case "$i_stdarg" in
13866 "$define")
13867         $cat >try.c <<EOCP
13868 #include <stdarg.h>
13869 #include <stdio.h>
13870 #$i_stdlib I_STDLIB
13871 #ifdef I_STDLIB
13872 #include <stdlib.h>
13873 #endif
13874 #include <signal.h>
13875
13876 int
13877 ivfprintf(FILE *f, const char *fmt, va_list *valp)
13878 {
13879   return vfprintf(f, fmt, *valp);
13880 }
13881  
13882 int    
13883 myvfprintf(FILE *f, const  char *fmt, va_list val)
13884 {
13885   return ivfprintf(f, fmt, &val);
13886 }
13887       
13888 int
13889 myprintf(char *fmt, ...) 
13890 {
13891   va_list val;
13892   va_start(val, fmt);
13893   return myvfprintf(stdout, fmt, val); 
13894 }         
13895
13896 int
13897 main(int ac, char **av)
13898 {
13899   signal(SIGSEGV, exit);
13900
13901   myprintf("%s%cs all right, then\n", "that", '\'');                            
13902   exit(0);      
13903 }
13904 EOCP
13905         set try
13906         if eval $compile && ./try 2>&1 >/dev/null; then
13907                 case "`./try`" in
13908                 "that's all right, then")
13909                         okay=yes
13910                         ;;
13911                 esac
13912         fi
13913         case "$okay" in
13914         yes)    echo "It seems that you don't need va_copy()." >&4
13915                 need_va_copy="$undef"
13916                 ;;
13917         *)      echo "It seems that va_copy() or similar will be needed." >&4
13918                 need_va_copy="$define"
13919                 ;;
13920         esac
13921         $rm -f try.* core core.* *.core *.core.*
13922         ;;
13923 *)      echo "You don't have <stdarg.h>, not checking for va_copy()." >&4
13924         ;;
13925 esac
13926
13927 : define a fucntion to check prototypes
13928 $cat > protochk <<EOSH
13929 $startsh
13930 cc="$cc"
13931 optimize="$optimize"
13932 ccflags="$ccflags"
13933 prototype="$prototype"
13934 define="$define"
13935 rm=$rm
13936 EOSH
13937
13938 $cat >> protochk <<'EOSH'
13939
13940 $rm -f try.c
13941 foo="$1"
13942 shift
13943 while test $# -ge 2; do
13944         case "$1" in
13945                 $define) echo "#include <$2>" >> try.c ;;
13946                 literal) echo "$2" >> try.c ;;
13947         esac
13948     shift 2
13949 done
13950 test "$prototype" = "$define"  && echo '#define CAN_PROTOTYPE' >> try.c
13951 cat >> try.c <<'EOCP'
13952 #ifdef CAN_PROTOTYPE
13953 #define _(args) args
13954 #else
13955 #define _(args) ()
13956 #endif
13957 EOCP
13958 echo "$foo" >> try.c
13959 echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
13960 $cc $optimize $ccflags -c try.c > /dev/null 2>&1
13961 status=$?
13962 $rm -f try.[co]
13963 exit $status
13964 EOSH
13965 chmod +x protochk
13966 $eunicefix protochk
13967
13968 : see what type is used for size_t
13969 rp="What is the type used for the length parameter for string functions?"
13970 set size_t sizetype 'unsigned int' stdio.h sys/types.h
13971 eval $typedef_ask
13972
13973 : check for type of arguments to gethostbyaddr. 
13974 if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
13975         case "$d_gethbyaddr" in
13976         $define)
13977                 $cat <<EOM
13978
13979 Checking to see what type of arguments are accepted by gethostbyaddr().
13980 EOM
13981                 hdrs="$define sys/types.h
13982                         $d_socket sys/socket.h 
13983                         $i_niin netinet/in.h 
13984                         $i_netdb netdb.h
13985                         $i_unistd unistd.h"
13986                 : The first arg can 'char *' or 'void *'
13987                 : The second arg is some of integral type
13988                 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
13989                         for yyy in size_t long int; do
13990                                 case "$netdb_host_type" in
13991                                 '')     try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
13992                                         if ./protochk "$try" $hdrs; then
13993                                                 echo "Your system accepts $xxx for the first arg."
13994                                                 echo "...and $yyy for the second arg."
13995                                                 netdb_host_type="$xxx"
13996                                                 netdb_hlen_type="$yyy"
13997                                         fi
13998                                         ;;
13999                                 esac
14000                         done
14001                 done
14002                 : In case none of those worked, prompt the user.
14003                 case "$netdb_host_type" in
14004                 '')     rp='What is the type for the 1st argument to gethostbyaddr?'
14005                         dflt='char *'
14006                         . ./myread
14007                         netdb_host_type=$ans
14008                         rp='What is the type for the 2nd argument to gethostbyaddr?'
14009                         dflt="$sizetype"
14010                         . ./myread
14011                         netdb_hlen_type=$ans
14012                         ;;
14013                 esac
14014                 ;;
14015         *)      : no gethostbyaddr, so pick harmless defaults
14016                 netdb_host_type='char *'
14017                 netdb_hlen_type="$sizetype"
14018                 ;;
14019         esac
14020         # Remove the "const" if needed. -- but then we'll have a 
14021         # prototype clash!
14022         # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
14023 fi
14024
14025 : check for type of argument to gethostbyname. 
14026 if test "X$netdb_name_type" = X ; then
14027         case "$d_gethbyname" in
14028         $define)
14029                 $cat <<EOM
14030
14031 Checking to see what type of argument is accepted by gethostbyname().
14032 EOM
14033                 hdrs="$define sys/types.h
14034                         $d_socket sys/socket.h 
14035                         $i_niin netinet/in.h 
14036                         $i_netdb netdb.h
14037                         $i_unistd unistd.h"
14038                 for xxx in "const char *" "char *"; do
14039                         case "$netdb_name_type" in
14040                         '')     try="extern struct hostent *gethostbyname($xxx);"
14041                                 if ./protochk "$try" $hdrs; then
14042                                         echo "Your system accepts $xxx."
14043                                         netdb_name_type="$xxx"
14044                                 fi
14045                                 ;;
14046                         esac
14047                 done
14048                 : In case none of those worked, prompt the user.
14049                 case "$netdb_name_type" in
14050                 '')     rp='What is the type for the 1st argument to gethostbyname?'
14051                         dflt='char *'
14052                         . ./myread
14053                         netdb_name_type=$ans
14054                         ;;
14055                 esac
14056                 ;;
14057         *)      : no gethostbyname, so pick harmless default
14058                 netdb_name_type='char *'
14059                 ;;
14060         esac
14061 fi
14062
14063 : check for type of 1st argument to getnetbyaddr. 
14064 if test "X$netdb_net_type" = X ; then
14065         case "$d_getnbyaddr" in
14066         $define)
14067                 $cat <<EOM
14068
14069 Checking to see what type of 1st argument is accepted by getnetbyaddr().
14070 EOM
14071                 hdrs="$define sys/types.h
14072                         $d_socket sys/socket.h 
14073                         $i_niin netinet/in.h 
14074                         $i_netdb netdb.h
14075                         $i_unistd unistd.h"
14076                 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
14077                         case "$netdb_net_type" in
14078                         '')     try="extern struct netent *getnetbyaddr($xxx, int);"
14079                                 if ./protochk "$try" $hdrs; then
14080                                         echo "Your system accepts $xxx."
14081                                         netdb_net_type="$xxx"
14082                                 fi
14083                                 ;;
14084                         esac
14085                 done
14086                 : In case none of those worked, prompt the user.
14087                 case "$netdb_net_type" in
14088                 '')     rp='What is the type for the 1st argument to getnetbyaddr?'
14089                         dflt='long'
14090                         . ./myread
14091                         netdb_net_type=$ans
14092                         ;;
14093                 esac
14094                 ;;
14095         *)      : no getnetbyaddr, so pick harmless default
14096                 netdb_net_type='long'
14097                 ;;
14098         esac
14099 fi
14100 : locate the preferred pager for this system
14101 case "$pager" in
14102 '')
14103         dflt=''
14104         case "$pg" in
14105         /*) dflt=$pg;;
14106         [a-zA-Z]:/*) dflt=$pg;;
14107         esac
14108         case "$more" in
14109         /*) dflt=$more;;
14110         [a-zA-Z]:/*) dflt=$more;;
14111         esac
14112         case "$less" in
14113         /*) dflt=$less;;
14114         [a-zA-Z]:/*) dflt=$less;;
14115         esac
14116         case "$dflt" in
14117         '') dflt=/usr/ucb/more;;
14118         esac
14119         ;;
14120 *) dflt="$pager";;
14121 esac
14122 echo " "
14123 fn=f/
14124 rp='What pager is used on your system?'
14125 . ./getfile
14126 pager="$ans"
14127
14128 : see what type pids are declared as in the kernel
14129 rp="What is the type of process ids on this system?"
14130 set pid_t pidtype int stdio.h sys/types.h
14131 eval $typedef_ask
14132
14133 : Find earliest binary compatible site_perl subdirectory perl can use.
14134 case "$bincompat5005" in
14135 "$define") xs_apiversion='5.005' ;;
14136 *) xs_apiversion=$version ;;   # The current site_perl version.
14137 esac
14138 : Find earliest pure perl site_perl subdirectory perl can use.
14139 : The versioned directories started at 5.005.
14140 pm_apiversion='5.005'
14141
14142 : check for length of pointer
14143 echo " "
14144 case "$ptrsize" in
14145 '')
14146         echo "Checking to see how big your pointers are..." >&4
14147         if test "$voidflags" -gt 7; then
14148                 echo '#define VOID_PTR char *' > try.c
14149         else
14150                 echo '#define VOID_PTR void *' > try.c
14151         fi
14152         $cat >>try.c <<'EOCP'
14153 #include <stdio.h>
14154 int main()
14155 {
14156     printf("%d\n", (int)sizeof(VOID_PTR));
14157     exit(0);
14158 }
14159 EOCP
14160         set try
14161         if eval $compile_ok; then
14162                 ptrsize=`./try`
14163                 echo "Your pointers are $ptrsize bytes long."
14164         else
14165                 dflt='4'
14166                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
14167                 rp="What is the size of a pointer (in bytes)?"
14168                 . ./myread
14169                 ptrsize="$ans"
14170         fi
14171         ;;
14172 esac
14173 $rm -f try.c try
14174
14175 : see if ar generates random libraries by itself
14176 echo " "
14177 echo "Checking how to generate random libraries on your machine..." >&4
14178 echo 'int bar1() { return bar2(); }' > bar1.c
14179 echo 'int bar2() { return 2; }' > bar2.c
14180 $cat > foo.c <<'EOP'
14181 int main() { printf("%d\n", bar1()); exit(0); }
14182 EOP
14183 $cc $ccflags -c bar1.c >/dev/null 2>&1
14184 $cc $ccflags -c bar2.c >/dev/null 2>&1
14185 $cc $ccflags -c foo.c >/dev/null 2>&1
14186 $ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
14187 if $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
14188         ./foobar >/dev/null 2>&1; then
14189         echo "$ar appears to generate random libraries itself."
14190         orderlib=false
14191         ranlib=":"
14192 elif $ar ts bar$_a >/dev/null 2>&1 &&
14193         $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
14194         ./foobar >/dev/null 2>&1; then
14195                 echo "a table of contents needs to be added with '$ar ts'."
14196                 orderlib=false
14197                 ranlib="$ar ts"
14198 else
14199         case "$ranlib" in
14200         :) ranlib='';;
14201         '')
14202                 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
14203                 $test -f $ranlib || ranlib=''
14204                 ;;
14205         esac
14206         if $test -n "$ranlib"; then
14207                 echo "your system has '$ranlib'; we'll use that."
14208                 orderlib=false
14209         else
14210                 echo "your system doesn't seem to support random libraries"
14211                 echo "so we'll use lorder and tsort to order the libraries."
14212                 orderlib=true
14213                 ranlib=":"
14214         fi
14215 fi
14216 $rm -f foo* bar* 
14217
14218 : check for type of arguments to select. 
14219 case "$selecttype" in
14220 '') case "$d_select" in
14221         $define)
14222                 echo " "
14223                 $cat <<EOM
14224 Checking to see what type of arguments are accepted by select().
14225 EOM
14226                 hdrs="$define sys/types.h
14227                         $i_systime sys/time.h 
14228                         $i_sysselct sys/select.h
14229                         $d_socket sys/socket.h"
14230                 : The first arg can be int, unsigned, or size_t
14231                 : The last arg may or may not be 'const'
14232                 val=''
14233                 : void pointer has been seen but using that
14234                 : breaks the selectminbits test
14235                 for xxx in 'fd_set *' 'int *'; do
14236                         for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
14237                                 for tmo in 'struct timeval *' 'const struct timeval *'; do
14238                                         case "$val" in
14239                                         '')     try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
14240                                                 if ./protochk "$try" $hdrs; then
14241                                                         echo "Your system accepts $xxx."
14242                                                         val="$xxx"
14243                                                 fi
14244                                                 ;;
14245                                         esac
14246                                 done
14247                         done
14248                 done
14249                 case "$val" in
14250                 '')     rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
14251                         case "$d_fd_set" in
14252                                 $define) dflt="fd_set *" ;;
14253                                 *)              dflt="int *" ;;
14254                         esac
14255                         . ./myread
14256                         val=$ans
14257                         ;;
14258                 esac
14259                 selecttype="$val"
14260                 ;;
14261         *)      : no select, so pick a harmless default
14262                 selecttype='int *'
14263                 ;;
14264         esac
14265         ;;
14266 esac
14267
14268 : check for the select 'width'
14269 case "$selectminbits" in
14270 '') case "$d_select" in
14271         $define)
14272                 $cat <<EOM
14273
14274 Checking to see on how many bits at a time your select() operates...
14275 EOM
14276                 $cat >try.c <<EOCP
14277 #include <sys/types.h>
14278 #$i_time I_TIME
14279 #$i_systime I_SYS_TIME
14280 #$i_systimek I_SYS_TIME_KERNEL
14281 #ifdef I_TIME
14282 #   include <time.h>
14283 #endif
14284 #ifdef I_SYS_TIME
14285 #   ifdef I_SYS_TIME_KERNEL
14286 #       define KERNEL
14287 #   endif
14288 #   include <sys/time.h>
14289 #   ifdef I_SYS_TIME_KERNEL
14290 #       undef KERNEL
14291 #   endif
14292 #endif
14293 #$i_sysselct I_SYS_SELECT
14294 #ifdef I_SYS_SELECT
14295 #include <sys/select.h>
14296 #endif
14297 #$d_socket HAS_SOCKET
14298 #ifdef HAS_SOCKET
14299 #   include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
14300 #endif
14301 #include <stdio.h>
14302 $selecttype b;
14303 #define S sizeof(*(b))
14304 #define MINBITS 64
14305 #define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
14306 #define NBITS  (NBYTES * 8)
14307 int main() {
14308     char s[NBYTES];
14309     struct timeval t;
14310     int i;
14311     FILE* fp;
14312     int fd;
14313
14314     fclose(stdin);
14315     fp = fopen("try.c", "r");
14316     if (fp == 0)
14317       exit(1);
14318     fd = fileno(fp);
14319     if (fd < 0)
14320       exit(2);
14321     b = ($selecttype)s;
14322     for (i = 0; i < NBITS; i++)
14323         FD_SET(i, b);
14324     t.tv_sec  = 0;
14325     t.tv_usec = 0;
14326     select(fd + 1, b, 0, 0, &t);
14327     for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
14328     printf("%d\n", i + 1);
14329     return 0;
14330 }
14331 EOCP
14332                 set try
14333                 if eval $compile_ok; then
14334                         selectminbits=`./try`
14335                         case "$selectminbits" in
14336                         '')     cat >&4 <<EOM
14337 Cannot figure out on how many bits at a time your select() operates.
14338 I'll play safe and guess it is 32 bits.
14339 EOM
14340                                 selectminbits=32
14341                                 bits="32 bits"
14342                                 ;;
14343                         1)      bits="1 bit" ;;
14344                         *)      bits="$selectminbits bits" ;;
14345                         esac
14346                         echo "Your select() operates on $bits at a time." >&4
14347                 else
14348                         rp='What is the minimum number of bits your select() operates on?'
14349                         case "$byteorder" in
14350                         1234|12345678)  dflt=32 ;;
14351                         *)              dflt=1  ;;
14352                         esac
14353                         . ./myread
14354                         val=$ans
14355                         selectminbits="$val"
14356                 fi
14357                 $rm -f try.* try
14358                 ;;
14359         *)      : no select, so pick a harmless default
14360                 selectminbits='32'
14361                 ;;
14362         esac
14363         ;;
14364 esac
14365
14366 : Trace out the files included by signal.h, then look for SIGxxx names.
14367 : Remove SIGARRAYSIZE used by HPUX.
14368 : Remove SIGSTKSIZE used by Linux.
14369 : Remove SIGSTKSZ used by Posix.
14370 : Remove SIGTYP void lines used by OS2.
14371 : Some cpps, like os390, dont give the file name anywhere
14372 if [ "X$fieldn" = X ]; then
14373         : Just make some guesses.  We check them later.
14374         xxx='/usr/include/signal.h /usr/include/sys/signal.h'
14375 else
14376         xxx=`echo '#include <signal.h>' |
14377         $cppstdin $cppminus $cppflags 2>/dev/null |
14378         $grep '^[       ]*#.*include' | 
14379         $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sort | $uniq`
14380 fi
14381 : Check this list of files to be sure we have parsed the cpp output ok.
14382 : This will also avoid potentially non-existent files, such 
14383 : as ../foo/bar.h
14384 xxxfiles=''
14385 for xx in $xxx /dev/null ; do
14386         $test -f "$xx" && xxxfiles="$xxxfiles $xx"
14387 done
14388 : If we have found no files, at least try signal.h
14389 case "$xxxfiles" in
14390 '')     xxxfiles=`./findhdr signal.h` ;;
14391 esac
14392 xxx=`awk '
14393 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
14394         print substr($2, 4, 20)
14395 }
14396 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
14397         print substr($3, 4, 20)
14398 }' $xxxfiles`
14399 : Append some common names just in case the awk scan failed.
14400 xxx="$xxx ABRT ALRM BUS CANCEL CHLD CLD CONT DIL EMT FPE"
14401 xxx="$xxx FREEZE HUP ILL INT IO IOT KILL LOST LWP PHONE"
14402 xxx="$xxx PIPE POLL PROF PWR QUIT RTMAX RTMIN SEGV STKFLT STOP"
14403 xxx="$xxx SYS TERM THAW TRAP TSTP TTIN TTOU URG USR1 USR2"
14404 xxx="$xxx USR3 USR4 VTALRM WAITING WINCH WIND WINDOW XCPU XFSZ"
14405
14406 : generate a few handy files for later
14407 $cat > signal.c <<'EOCP'
14408 #include <sys/types.h>
14409 #include <signal.h>
14410 #include <stdio.h>
14411 int main() {
14412
14413 /* Strange style to avoid deeply-nested #if/#else/#endif */
14414 #ifndef NSIG
14415 #  ifdef _NSIG
14416 #    define NSIG (_NSIG)
14417 #  endif
14418 #endif
14419
14420 #ifndef NSIG
14421 #  ifdef SIGMAX
14422 #    define NSIG (SIGMAX+1)
14423 #  endif
14424 #endif
14425
14426 #ifndef NSIG
14427 #  ifdef SIG_MAX
14428 #    define NSIG (SIG_MAX+1)
14429 #  endif
14430 #endif
14431
14432 #ifndef NSIG
14433 #  ifdef MAXSIG
14434 #    define NSIG (MAXSIG+1)
14435 #  endif
14436 #endif
14437
14438 #ifndef NSIG
14439 #  ifdef MAX_SIG
14440 #    define NSIG (MAX_SIG+1)
14441 #  endif
14442 #endif
14443
14444 #ifndef NSIG
14445 #  ifdef SIGARRAYSIZE
14446 #    define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
14447 #  endif
14448 #endif
14449
14450 #ifndef NSIG
14451 #  ifdef _sys_nsig
14452 #    define NSIG (_sys_nsig) /* Solaris 2.5 */
14453 #  endif
14454 #endif
14455
14456 /* Default to some arbitrary number that's big enough to get most
14457    of the common signals.
14458 */
14459 #ifndef NSIG
14460 #    define NSIG 50
14461 #endif
14462
14463 printf("NSIG %d\n", NSIG);
14464
14465 #ifndef JUST_NSIG
14466
14467 EOCP
14468
14469 echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
14470 {
14471         printf "#ifdef SIG"; printf $1; printf "\n"
14472         printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
14473         printf $1; printf ");\n"
14474         printf "#endif\n"
14475 }
14476 END {
14477         printf "#endif /* JUST_NSIG */\n";
14478         printf "exit(0);\n}\n";
14479 }
14480 ' >>signal.c
14481 $cat >signal.awk <<'EOP'
14482 BEGIN { ndups = 0 }
14483 $1 ~ /^NSIG$/ { nsig = $2 }
14484 ($1 !~ /^NSIG$/) && (NF == 2) {
14485     if ($2 > maxsig) { maxsig = $2 }
14486     if (sig_name[$2]) {
14487         dup_name[ndups] = $1
14488         dup_num[ndups] = $2
14489         ndups++ 
14490     }
14491     else {
14492         sig_name[$2] = $1
14493         sig_num[$2] = $2
14494     }
14495 }
14496 END { 
14497     if (nsig == 0) {
14498         nsig = maxsig + 1
14499     }
14500     printf("NSIG %d\n", nsig);
14501     for (n = 1; n < nsig; n++) {
14502         if (sig_name[n]) {
14503             printf("%s %d\n", sig_name[n], sig_num[n])
14504         }
14505         else {
14506             printf("NUM%d %d\n", n, n) 
14507         }
14508     }
14509     for (n = 0; n < ndups; n++) {
14510         printf("%s %d\n", dup_name[n], dup_num[n])
14511     }
14512 }
14513 EOP
14514 $cat >signal_cmd <<EOS
14515 $startsh
14516 if $test -s signal.lst; then
14517     echo "Using your existing signal.lst file"
14518         exit 0
14519 fi
14520 xxx="$xxx"
14521 EOS
14522 $cat >>signal_cmd <<'EOS'
14523
14524 set signal
14525 if eval $compile_ok; then
14526         ./signal$_exe | $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
14527 else
14528         echo "(I can't seem be able to compile the whole test program)" >&4
14529         echo "(I'll try it in little pieces.)" >&4
14530         set signal -DJUST_NSIG
14531         if eval $compile_ok; then
14532                 ./signal$_exe > signal.nsg
14533                 $cat signal.nsg
14534         else
14535                 echo "I can't seem to figure out how many signals you have." >&4
14536                 echo "Guessing 50." >&4
14537                 echo 'NSIG 50' > signal.nsg
14538         fi
14539         : Now look at all the signal names, one at a time.
14540         for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
14541                 $cat > signal.c <<EOCP
14542 #include <sys/types.h>
14543 #include <signal.h>
14544 #include <stdio.h>
14545 int main() {
14546 printf("$xx %d\n", SIG${xx});
14547 return 0;
14548 }
14549 EOCP
14550                 set signal
14551                 if eval $compile; then
14552                         echo "SIG${xx} found."
14553                         ./signal$_exe  >> signal.ls1
14554                 else
14555                         echo "SIG${xx} NOT found."
14556                 fi
14557         done
14558         if $test -s signal.ls1; then
14559                 $cat signal.nsg signal.ls1 |
14560                         $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
14561         fi
14562
14563 fi
14564 if $test -s signal.lst; then
14565         :
14566 else
14567         echo "(AAK! I can't compile the test programs -- Guessing)" >&4
14568         echo 'kill -l' >signal
14569         set X `csh -f <signal`
14570         $rm -f signal
14571         shift
14572         case $# in
14573         0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
14574         esac
14575         echo $@ | $tr ' ' $trnl | \
14576             $awk '{ printf "%s %d\n", $1, ++s; }
14577                   END { printf "NSIG %d\n", ++s }' >signal.lst
14578 fi
14579 $rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
14580 EOS
14581 chmod a+x signal_cmd
14582 $eunicefix signal_cmd
14583
14584 : generate list of signal names
14585 echo " "
14586 case "$sig_name_init" in
14587 '') doinit=yes ;;
14588 *)  case "$sig_num_init" in
14589     ''|*,*) doinit=yes ;;
14590     esac ;;
14591 esac
14592 case "$doinit" in
14593 yes)
14594         echo "Generating a list of signal names and numbers..." >&4
14595         . ./signal_cmd
14596         sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
14597         sig_name=`$awk 'BEGIN { printf "ZERO " }
14598                         !/^NSIG/ { printf "%s ", $1 }' signal.lst`
14599         sig_num=`$awk  'BEGIN { printf "0 " }
14600                         !/^NSIG/ { printf "%d ", $2 }' signal.lst`
14601         sig_name_init=`$awk 'BEGIN      { printf "\"ZERO\", " }
14602                              !/^NSIG/   { printf "\"%s\", ", $1 }
14603                              END        { printf "0\n" }' signal.lst`
14604         sig_num_init=`$awk  'BEGIN      { printf "0, " }
14605                              !/^NSIG/   { printf "%d, ", $2}
14606                              END        { printf "0\n"}' signal.lst`
14607         ;;
14608 esac
14609 echo "The following $sig_count signals are available:"
14610 echo " "
14611 echo $sig_name | $awk \
14612 'BEGIN { linelen = 0 }
14613 {
14614         for (i = 1; i <= NF; i++) {
14615                 name = "SIG" $i " "
14616                 linelen = linelen + length(name)
14617                 if (linelen > 70) {
14618                         printf "\n"
14619                         linelen = length(name)
14620                 }
14621                 printf "%s", name
14622         }
14623         printf "\n"
14624 }'
14625 sig_size=`echo $sig_name | awk '{print NF}'`
14626 $rm -f signal signal.c signal.awk signal.lst signal_cmd 
14627
14628 echo " "
14629 case "$sizetype" in
14630 *_t) zzz="$sizetype"    ;;
14631 *)   zzz="filesize"     ;;
14632 esac
14633 echo "Checking the size of $zzz..." >&4 
14634 cat > try.c <<EOCP
14635 #include <sys/types.h>
14636 #include <stdio.h>
14637 int main() {
14638     printf("%d\n", (int)sizeof($sizetype));
14639     exit(0);
14640 }
14641 EOCP
14642 set try
14643 if eval $compile_ok; then
14644         yyy=`./try`
14645         case "$yyy" in
14646         '')     sizesize=4
14647                 echo "(I can't execute the test program--guessing $sizesize.)" >&4
14648                 ;;
14649         *)      sizesize=$yyy
14650                 echo "Your $zzz size is $sizesize bytes."
14651                 ;;
14652         esac
14653 else
14654         sizesize=4
14655         echo "(I can't compile the test program--guessing $sizesize.)" >&4
14656 fi
14657
14658
14659 : check for socklen_t
14660 echo " "
14661 echo "Checking to see if you have socklen_t..." >&4
14662 $cat >try.c <<EOCP
14663 #include <sys/types.h>
14664 #$d_socket HAS_SOCKET
14665 #ifdef HAS_SOCKET
14666 #include <sys/socket.h>
14667 #endif
14668 int main() { socklen_t x = 16; }
14669 EOCP
14670 set try
14671 if eval $compile; then
14672         val="$define"
14673         echo "You have socklen_t."
14674 else
14675         val="$undef"
14676         echo "You do not have socklen_t."
14677         case "$sizetype" in
14678         size_t) echo "(You do have size_t, that might work. Some people are happy with just an int.)" ;;
14679         esac
14680 fi
14681 $rm -f try try.*
14682 set d_socklen_t
14683 eval $setvar
14684
14685 : see if this is a socks.h system
14686 set socks.h i_socks
14687 eval $inhdr
14688
14689 : check for type of the size argument to socket calls
14690 case "$d_socket" in
14691 "$define")
14692         $cat <<EOM
14693
14694 Checking to see what type is the last argument of accept().
14695 EOM
14696         yyy=''
14697         case "$d_socklen_t" in
14698         "$define") yyy="$yyy socklen_t"
14699         esac
14700         yyy="$yyy $sizetype int long unsigned"
14701         for xxx in $yyy; do
14702                 case "$socksizetype" in
14703                 '')     try="extern int accept(int, struct sockaddr *, $xxx *);"
14704                         case "$usesocks" in
14705                         "$define")
14706                                 if ./protochk "$try" $i_systypes sys/types.h $d_socket sys/socket.h literal '#define INCLUDE_PROTOTYPES' $i_socks socks.h.; then
14707                                         echo "Your system accepts '$xxx *' for the last argument of accept()."
14708                                         socksizetype="$xxx"
14709                                 fi
14710                                 ;;
14711                         *)      if ./protochk "$try"  $i_systypes sys/types.h $d_socket sys/socket.h; then
14712                                         echo "Your system accepts '$xxx *' for the last argument of accept()."
14713                                         socksizetype="$xxx"
14714                                 fi
14715                                 ;;
14716                         esac
14717                         ;;
14718                 esac
14719         done
14720 : In case none of those worked, prompt the user.
14721         case "$socksizetype" in
14722         '')     rp='What is the type for socket address structure sizes?'
14723                 dflt='int'
14724                 . ./myread
14725                 socksizetype=$ans
14726                 ;;
14727         esac
14728         ;;
14729 *)      : no sockets, so pick relatively harmless default
14730         socksizetype='int'
14731         ;;
14732 esac
14733
14734 : see what type is used for signed size_t
14735 set ssize_t ssizetype int stdio.h sys/types.h
14736 eval $typedef
14737 dflt="$ssizetype"
14738 $cat > ssize.c <<EOM
14739 #include <stdio.h>
14740 #include <sys/types.h>
14741 #define Size_t $sizetype
14742 #define SSize_t $dflt
14743 int main()
14744 {
14745         if (sizeof(Size_t) == sizeof(SSize_t))
14746                 printf("$dflt\n");
14747         else if (sizeof(Size_t) == sizeof(int))
14748                 printf("int\n");
14749         else 
14750                 printf("long\n");
14751         exit(0);
14752 }
14753 EOM
14754 echo " "
14755 set ssize
14756 if eval $compile_ok && ./ssize > /dev/null; then
14757         ssizetype=`./ssize`
14758         echo "I'll be using $ssizetype for functions returning a byte count." >&4
14759 else
14760         $cat >&4 <<EOM
14761 Help! I can't compile and run the ssize_t test program: please enlighten me!
14762 (This is probably a misconfiguration in your system or libraries, and
14763 you really ought to fix it.  Still, I'll try anyway.)
14764
14765 I need a type that is the same size as $sizetype, but is guaranteed to
14766 be signed.  Common values are ssize_t, int and long.
14767
14768 EOM
14769         rp="What signed type is the same size as $sizetype?"
14770         . ./myread
14771         ssizetype="$ans"
14772 fi
14773 $rm -f ssize ssize.*
14774
14775 : see what type of char stdio uses.
14776 echo " "
14777 echo '#include <stdio.h>' | $cppstdin $cppminus > stdioh
14778 if $contains 'unsigned.*char.*_ptr;' stdioh >/dev/null 2>&1 ; then
14779         echo "Your stdio uses unsigned chars." >&4
14780         stdchar="unsigned char"
14781 else
14782         echo "Your stdio uses signed chars." >&4
14783         stdchar="char"
14784 fi
14785 $rm -f stdioh
14786
14787
14788
14789 : see if time exists
14790 echo " "
14791 if test "X$d_time" = X -o X"$timetype" = X; then
14792     if set time val -f d_time; eval $csym; $val; then
14793                 echo 'time() found.' >&4
14794                 val="$define"
14795                 rp="What is the type returned by time() on this system?"
14796                 set time_t timetype long stdio.h sys/types.h
14797                 eval $typedef_ask
14798     else
14799                 echo 'time() not found, hope that will do.' >&4
14800                 val="$undef"
14801                 timetype='int';
14802     fi
14803     set d_time
14804     eval $setvar
14805 fi
14806
14807 : see what type uids are declared as in the kernel
14808 echo " "
14809 echo "Looking for the type for user ids returned by getuid()."
14810 set uid_t uidtype xxx stdio.h sys/types.h
14811 eval $typedef
14812 case "$uidtype" in
14813 xxx)
14814         xxx=`./findhdr sys/user.h`
14815         set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
14816         case $1 in
14817         unsigned) dflt="$1 $2" ;;
14818         *) dflt="$1" ;;
14819         esac
14820         ;;
14821 *) dflt="$uidtype";;
14822 esac
14823 case "$uidtype" in
14824 uid_t)  echo "uid_t found." ;;
14825 *)      rp="What is the type for user ids returned by getuid()?"
14826         . ./myread
14827         uidtype="$ans"
14828         ;;
14829 esac
14830
14831 echo " "
14832 case "$uidtype" in
14833 *_t) zzz="$uidtype"     ;;
14834 *)   zzz="uid"          ;;
14835 esac
14836 echo "Checking the size of $zzz..." >&4 
14837 cat > try.c <<EOCP
14838 #include <sys/types.h>
14839 #include <stdio.h>
14840 int main() {
14841     printf("%d\n", (int)sizeof($uidtype));
14842     exit(0);
14843 }
14844 EOCP
14845 set try
14846 if eval $compile_ok; then
14847         yyy=`./try`
14848         case "$yyy" in
14849         '')     uidsize=4
14850                 echo "(I can't execute the test program--guessing $uidsize.)" >&4
14851                 ;;
14852         *)      uidsize=$yyy
14853                 echo "Your $zzz is $uidsize bytes long."
14854                 ;;
14855         esac
14856 else
14857         uidsize=4
14858         echo "(I can't compile the test program--guessing $uidsize.)" >&4
14859 fi
14860
14861 echo " "
14862 case "$uidtype" in
14863 *_t) zzz="$uidtype"     ;;
14864 *)   zzz="uid"          ;;
14865 esac
14866 echo "Checking the sign of $zzz..." >&4
14867 cat > try.c <<EOCP
14868 #include <sys/types.h>
14869 #include <stdio.h>
14870 int main() {
14871         $uidtype foo = -1;
14872         if (foo < 0)
14873                 printf("-1\n");
14874         else
14875                 printf("1\n");
14876 }
14877 EOCP
14878 set try
14879 if eval $compile; then
14880         yyy=`./try`
14881         case "$yyy" in
14882         '')     uidsign=1
14883                 echo "(I can't execute the test program--guessing unsigned.)" >&4
14884                 ;;
14885         *)      uidsign=$yyy
14886                 case "$uidsign" in
14887                  1) echo "Your $zzz is unsigned." ;;
14888                 -1) echo "Your $zzz is signed."   ;;
14889                 esac
14890                 ;;
14891         esac
14892 else
14893         uidsign=1
14894         echo "(I can't compile the test program--guessing unsigned.)" >&4
14895 fi
14896
14897
14898
14899 echo " "
14900 $echo "Checking the format string to be used for uids..." >&4
14901
14902 case "$uidsign" in
14903 -1)     if $test X"$uidsize" = X"$ivsize"; then
14904                 uidformat="$ivdformat"
14905         else
14906                 if $test X"$uidsize" = X"$longsize"; then
14907                         uidformat='"ld"'
14908                 else
14909                         if $test X"$uidsize" = X"$intsize"; then
14910                                 uidformat='"d"'
14911                         else
14912                                 if $test X"$uidsize" = X"$shortsize"; then
14913                                         uidformat='"hd"'
14914                                 fi
14915                         fi
14916                 fi
14917         fi
14918         ;;
14919 *)      if $test X"$uidsize" = X"$uvsize"; then
14920                 uidformat="$uvuformat"
14921         else
14922                 if $test X"$uidsize" = X"$longsize"; then
14923                         uidformat='"lu"'
14924                 else
14925                         if $test X"$uidsize" = X"$intsize"; then
14926                                 uidformat='"u"'
14927                         else
14928                                 if $test X"$uidsize" = X"$shortsize"; then
14929                                         uidformat='"hu"'
14930                                 fi
14931                         fi
14932                 fi
14933         fi
14934         ;;
14935 esac
14936
14937 : determine compiler compiler
14938 case "$yacc" in
14939 '')
14940         dflt=yacc;;
14941 *)
14942         dflt="$yacc";;
14943 esac
14944 echo " "
14945 comp='yacc'
14946 if $test -f "$byacc"; then
14947         dflt="$byacc"
14948         comp="byacc or $comp"
14949 fi
14950 if $test -f "$bison"; then
14951         comp="$comp or bison -y"
14952 fi
14953 rp="Which compiler compiler ($comp) shall I use?"
14954 . ./myread
14955 yacc="$ans"
14956 case "$yacc" in
14957 *bis*)
14958         case "$yacc" in
14959         *-y*) ;;
14960         *)
14961                 yacc="$yacc -y"
14962                 echo "(Adding -y option to bison to get yacc-compatible behaviour.)"
14963                 ;;
14964         esac
14965         ;;
14966 esac
14967
14968 : see if dbm.h is available
14969 : see if dbmclose exists
14970 set dbmclose d_dbmclose
14971 eval $inlibc
14972
14973 case "$d_dbmclose" in
14974 $define)
14975         set dbm.h i_dbm
14976         eval $inhdr
14977         case "$i_dbm" in
14978         $define)
14979                 val="$undef"
14980                 set i_rpcsvcdbm
14981                 eval $setvar
14982                 ;;
14983         *)      set rpcsvc/dbm.h i_rpcsvcdbm
14984                 eval $inhdr
14985                 ;;
14986         esac
14987         ;;
14988 *)      echo "We won't be including <dbm.h>"
14989         val="$undef"
14990         set i_dbm
14991         eval $setvar
14992         val="$undef"
14993         set i_rpcsvcdbm
14994         eval $setvar
14995         ;;
14996 esac
14997
14998 : see if this is a sys/file.h system
14999 val=''
15000 set sys/file.h val
15001 eval $inhdr
15002
15003 : do we need to include sys/file.h ?
15004 case "$val" in
15005 "$define")
15006         echo " "
15007         if $h_sysfile; then
15008                 val="$define"
15009                 echo "We'll be including <sys/file.h>." >&4
15010         else
15011                 val="$undef"
15012                 echo "We won't be including <sys/file.h>." >&4
15013         fi
15014         ;;
15015 *)
15016         h_sysfile=false
15017         ;;
15018 esac
15019 set i_sysfile
15020 eval $setvar
15021
15022 : see if fcntl.h is there
15023 val=''
15024 set fcntl.h val
15025 eval $inhdr
15026
15027 : see if we can include fcntl.h
15028 case "$val" in
15029 "$define")
15030         echo " "
15031         if $h_fcntl; then
15032                 val="$define"
15033                 echo "We'll be including <fcntl.h>." >&4
15034         else
15035                 val="$undef"
15036                 if $h_sysfile; then
15037         echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
15038                 else
15039                         echo "We won't be including <fcntl.h>." >&4
15040                 fi
15041         fi
15042         ;;
15043 *)
15044         h_fcntl=false
15045         val="$undef"
15046         ;;
15047 esac
15048 set i_fcntl
15049 eval $setvar
15050
15051 : see if this is a iconv.h system
15052 set iconv.h i_iconv
15053 eval $inhdr
15054
15055 : see if this is a ieeefp.h system
15056 set ieeefp.h i_ieeefp
15057 eval $inhdr
15058
15059 : see if this is a libutil.h system
15060 set libutil.h i_libutil
15061 eval $inhdr
15062
15063 : see if locale.h is available
15064 set locale.h i_locale
15065 eval $inhdr
15066
15067 : see if mach cthreads are available
15068 if test "X$usethreads" = "X$define"; then
15069         set mach/cthreads.h i_machcthr
15070         eval $inhdr
15071 else
15072         i_machcthr="$undef"
15073 fi
15074
15075
15076
15077 : see if this is a math.h system
15078 set math.h i_math
15079 eval $inhdr
15080
15081 : see if this is a mntent.h system
15082 set mntent.h i_mntent
15083 eval $inhdr
15084
15085 : see if ndbm.h is available
15086 set ndbm.h t_ndbm
15087 eval $inhdr
15088 case "$t_ndbm" in
15089 $define)
15090         : see if dbm_open exists
15091         set dbm_open d_dbm_open
15092         eval $inlibc
15093         case "$d_dbm_open" in
15094         $undef)
15095                 t_ndbm="$undef"
15096                 echo "We won't be including <ndbm.h>"
15097                 ;;
15098         esac
15099         ;;
15100 esac
15101 val="$t_ndbm"
15102 set i_ndbm
15103 eval $setvar
15104
15105 : see if net/errno.h is available
15106 val=''
15107 set net/errno.h val
15108 eval $inhdr
15109
15110 : Unfortunately, it causes problems on some systems.  Arrgh.
15111 case "$val" in
15112 $define)
15113         cat > try.c <<'EOM'
15114 #include <stdio.h>
15115 #include <errno.h>
15116 #include <net/errno.h>
15117 int func()
15118 {
15119         return ENOTSOCK;
15120 }
15121 EOM
15122         if $cc $ccflags -c try.c >/dev/null 2>&1; then
15123                 echo "We'll be including <net/errno.h>." >&4
15124         else
15125                 echo "We won't be including <net/errno.h>." >&4
15126                 val="$undef"
15127         fi
15128         $rm -f try.* try
15129         ;;
15130 esac
15131 set i_neterrno
15132 eval $setvar
15133
15134 : see if netinet/tcp.h is available
15135 set netinet/tcp.h i_netinettcp
15136 eval $inhdr
15137
15138 : see if this is a poll.h system
15139 set poll.h i_poll
15140 eval $inhdr
15141
15142 : see if this is a prot.h system
15143 set prot.h i_prot
15144 eval $inhdr
15145
15146 echo " "
15147 $echo "Guessing which symbols your C compiler and preprocessor define..." >&4 
15148 $cat <<'EOSH' > Cppsym.know
15149 a29k ABI64 aegis AES_SOURCE AIX AIX32 AIX370
15150 AIX41 AIX42 AIX43 AIX_SOURCE aixpc ALL_SOURCE
15151 alliant alpha am29000 AM29000 AMD64 amiga AMIGAOS AMIX
15152 ansi ANSI_C_SOURCE apollo ardent ARM32 atarist att386 att3b
15153 BeOS BIG_ENDIAN BIT_MSF bsd BSD bsd43 bsd4_2 bsd4_3 BSD4_3 bsd4_4
15154 BSD_4_3 BSD_4_4 BSD_NET2 BSD_TIME BSD_TYPES BSDCOMPAT bsdi
15155 bull c cadmus clipper CMU COFF COMPILER_VERSION
15156 concurrent convex cpu cray CRAY CRAYMPP ctix CX_UX
15157 CYGWIN DGUX DGUX_SOURCE DJGPP dmert DOLPHIN DPX2 DSO
15158 Dynix DynixPTX ELF encore EPI EXTENSIONS FILE_OFFSET_BITS
15159 FreeBSD GCC_NEW_VARARGS gcos gcx gimpel
15160 GNU_SOURCE GNUC GNUC_MINOR GO32 gould GOULD_PN
15161 H3050R H3050RX hbullx20 hcx host_mips
15162 hp200 hp300 hp700 HP700 hp800 hp9000
15163 hp9000s200 hp9000s300 hp9000s400 hp9000s500
15164 hp9000s700 hp9000s800 hp9k8 hp_osf hppa hpux HPUX_SOURCE
15165 i186 i286 i386 i486 i586 i686 i8086 i80960 i860 I960
15166 IA64 iAPX286 ibm ibm032 ibmesa IBMR2 ibmrt ILP32 ILP64
15167 INLINE_INTRINSICS INTRINSICS INT64 interdata is68k ksr1
15168 LANGUAGE_C LARGE_FILE_API LARGEFILE64_SOURCE
15169 LARGEFILE_SOURCE LFS64_LARGEFILE LFS_LARGEFILE
15170 Linux LITTLE_ENDIAN LONG64 LONG_DOUBLE LONG_LONG
15171 LONGDOUBLE LONGLONG LP64 luna luna88k Lynx
15172 M68000 m68k m88100 m88k M88KBCS_TARGET M_COFF
15173 M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM M_SYS3
15174 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX MACH machine MachTen
15175 MATH_HAS_NO_SIDE_EFFECTS
15176 mc300 mc500 mc68000 mc68010 mc68020 mc68030 mc68040
15177 mc68060 mc68k mc68k32 mc700 mc88000 mc88100 merlin
15178 mert MiNT mips MIPS_FPSET MIPS_ISA MIPS_SIM MIPS_SZINT
15179 MIPS_SZLONG MIPS_SZPTR MIPSEB MIPSEL MODERN_C motorola
15180 mpeix MSDOS MTXINU MULTIMAX mvs MVS n16 ncl_el ncl_mr
15181 NetBSD news1500 news1700 news1800 news1900 news3700
15182 news700 news800 news900 NeXT NLS nonstopux ns16000 ns32000
15183 ns32016 ns32332 ns32k nsc32000
15184 OCS88 OEMVS OpenBSD os OS2 OS390 osf OSF1 OSF_SOURCE
15185 pa_risc PA_RISC1_1 PA_RISC2_0 PARAGON parisc
15186 pc532 pdp11 PGC PIC plexus PORTAR posix
15187 POSIX1B_SOURCE POSIX2_SOURCE POSIX4_SOURCE
15188 POSIX_C_SOURCE POSIX_SOURCE POWER
15189 PROTOTYPES PWB pyr QNX R3000 REENTRANT RES Rhapsody RISC6000
15190 riscix riscos RT S390 SA110 scs SCO sequent sgi SGI_SOURCE SH3 sinix
15191 SIZE_INT SIZE_LONG SIZE_PTR SOCKET_SOURCE SOCKETS_SOURCE
15192 sony sony_news sonyrisc sparc sparclite spectrum
15193 stardent stdc STDC_EXT stratos sun sun3 sun386
15194 Sun386i svr3 svr4 SVR4_2 SVR4_SOURCE svr5
15195 SX system SYSTYPE_BSD SYSTYPE_BSD43 SYSTYPE_BSD44
15196 SYSTYPE_SVR4 SYSTYPE_SVR5 SYSTYPE_SYSV SYSV SYSV3 SYSV4 SYSV5
15197 sysV68 sysV88 Tek4132 Tek4300 titan
15198 TM3200 TM5400 TM5600
15199 tower tower32 tower32_200 tower32_600 tower32_700
15200 tower32_800 tower32_850 tss
15201 u370 u3b u3b2 u3b20 u3b200 u3b20d u3b5
15202 ultrix UMAXV UnicomPBB UnicomPBD UNICOS UNICOSMK
15203 unix UNIX95 UNIX99 unixpc unos USGr4 USGr4_2
15204 Utek UTek UTS UWIN uxpm uxps vax venix VMESA vms xenix Xenix286
15205 XOPEN_SOURCE XOPEN_SOURCE_EXTENDED XPG2 XPG2_EXTENDED
15206 XPG3 XPG3_EXTENDED XPG4 XPG4_EXTENDED
15207 z8000
15208 EOSH
15209 # Maybe put other stuff here too.
15210 cat <<EOSH >>Cppsym.know
15211 $osname
15212 EOSH
15213 ./tr '[a-z]' '[A-Z]' < Cppsym.know > Cppsym.a
15214 ./tr '[A-Z]' '[a-z]' < Cppsym.know > Cppsym.b
15215 $cat Cppsym.know > Cppsym.c
15216 $cat Cppsym.a Cppsym.b Cppsym.c | $tr ' ' $trnl | $sort | $uniq > Cppsym.know
15217 $rm -f Cppsym.a Cppsym.b Cppsym.c
15218 cat <<EOSH > Cppsym
15219 $startsh
15220 if $test \$# -gt 0; then
15221     echo \$* | $tr " " "$trnl" | ./Cppsym.try > Cppsym.got
15222     if $test -s Cppsym.got; then
15223         $rm -f Cppsym.got
15224         exit 0
15225     fi
15226     $rm -f Cppsym.got
15227     exit 1
15228 else
15229     $tr " " "$trnl" | ./Cppsym.try
15230     exit 0
15231 fi
15232 EOSH
15233 chmod +x Cppsym
15234 $eunicefix Cppsym
15235 cat <<EOSH > Cppsym.try
15236 $startsh
15237 cat <<'EOCP' > try.c
15238 #include <stdio.h>
15239 int main() {
15240 EOCP
15241 $awk \\
15242 EOSH
15243 cat <<'EOSH' >> Cppsym.try
15244 'length($1) > 0 {
15245     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
15246     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
15247     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
15248     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
15249 }'       >> try.c
15250 echo '}' >> try.c
15251 EOSH
15252 cat <<EOSH >> Cppsym.try
15253 ccflags="$ccflags"
15254 case "$osname-$gccversion" in
15255 irix-) ccflags="\$ccflags -woff 1178" ;;
15256 os2-*) ccflags="\$ccflags -Zlinker /PM:VIO" ;;
15257 esac
15258 $cc -o try $optimize \$ccflags $ldflags try.c $libs && ./try$exe_ext
15259 EOSH
15260 chmod +x Cppsym.try
15261 $eunicefix Cppsym.try
15262 ./Cppsym < Cppsym.know > Cppsym.true
15263 : now check the C compiler for additional symbols
15264 postprocess_cc_v=''
15265 case "$osname" in
15266 aix) postprocess_cc_v="|$tr , ' '" ;;
15267 esac
15268 $cat >ccsym <<EOS
15269 $startsh
15270 $cat >tmp.c <<EOF
15271 extern int foo;
15272 EOF
15273 for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
15274 do
15275         case "\$i" in
15276         -D*) echo "\$i" | $sed 's/^-D//';;
15277         -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A\(.*\)(\(.*\))/\1=\2/';;
15278         esac
15279 done
15280 $rm -f try.c
15281 EOS
15282 postprocess_cc_v=''
15283 chmod +x ccsym
15284 $eunicefix ccsym
15285 ./ccsym > ccsym1.raw
15286 if $test -s ccsym1.raw; then
15287        $sort ccsym1.raw | $uniq >ccsym.raw
15288 else
15289        mv ccsym1.raw ccsym.raw
15290 fi
15291
15292 $awk '/\=/ { print $0; next }
15293         { print $0"=1" }' ccsym.raw >ccsym.list
15294 $awk '/\=/ { print $0; next }
15295         { print $0"=1" }' Cppsym.true >ccsym.true
15296 $comm -13 ccsym.true ccsym.list >ccsym.own
15297 $comm -12 ccsym.true ccsym.list >ccsym.com
15298 $comm -23 ccsym.true ccsym.list >ccsym.cpp
15299 also=''
15300 if $test -z ccsym.raw; then
15301         echo "Your C compiler doesn't seem to define any symbols!" >&4
15302         echo " "
15303         echo "However, your C preprocessor defines the following symbols:"
15304         $cat Cppsym.true
15305         ccsymbols=''
15306         cppsymbols=`$cat Cppsym.true`
15307         cppsymbols=`echo $cppsymbols`
15308         cppccsymbols="$cppsymbols"
15309 else
15310         if $test -s ccsym.com; then
15311                 echo "Your C compiler and pre-processor define these symbols:"
15312                 $sed -e 's/\(..*\)=.*/\1/' ccsym.com
15313                 also='also '
15314                 symbols='ones'
15315                 cppccsymbols=`$cat ccsym.com`
15316                 cppccsymbols=`echo $cppccsymbols`
15317                 $test "$silent" || sleep 1
15318         fi
15319         if $test -s ccsym.cpp; then
15320                 $test "$also" && echo " "
15321                 echo "Your C pre-processor ${also}defines the following symbols:"
15322                 $sed -e 's/\(..*\)=.*/\1/' ccsym.cpp
15323                 also='further '
15324                 cppsymbols=`$cat ccsym.cpp`
15325                 cppsymbols=`echo $cppsymbols`
15326                 $test "$silent" || sleep 1
15327         fi
15328         if $test -s ccsym.own; then
15329                 $test "$also" && echo " "
15330                 echo "Your C compiler ${also}defines the following cpp symbols:"
15331                 $sed -e 's/\(..*\)=1/\1/' ccsym.own
15332                 $sed -e 's/\(..*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
15333                 ccsymbols=`$cat ccsym.own`
15334                 ccsymbols=`echo $ccsymbols`
15335                 $test "$silent" || sleep 1
15336         fi
15337 fi
15338 $rm -f ccsym* Cppsym.*
15339
15340 : see if this is a termio system
15341 val="$undef"
15342 val2="$undef"
15343 val3="$undef"
15344 if $test `./findhdr termios.h`; then
15345         set tcsetattr i_termios
15346         eval $inlibc
15347         val3="$i_termios"
15348 fi
15349 echo " "
15350 case "$val3" in
15351 "$define") echo "You have POSIX termios.h... good!" >&4;;
15352 *) if ./Cppsym pyr; then
15353                 case "`/bin/universe`" in
15354                 ucb) if $test `./findhdr sgtty.h`; then
15355                                 val2="$define"
15356                                 echo "<sgtty.h> found." >&4
15357                         else
15358                                 echo "System is pyramid with BSD universe."
15359                                 echo "<sgtty.h> not found--you could have problems." >&4
15360                         fi;;
15361                 *) if $test `./findhdr termio.h`; then
15362                                 val="$define"
15363                                 echo "<termio.h> found." >&4
15364                         else
15365                                 echo "System is pyramid with USG universe."
15366                                 echo "<termio.h> not found--you could have problems." >&4
15367                         fi;;
15368                 esac
15369         elif ./usg; then
15370                 if $test `./findhdr termio.h`; then
15371                         echo "<termio.h> found." >&4
15372                         val="$define"
15373                 elif $test `./findhdr sgtty.h`; then
15374                         echo "<sgtty.h> found." >&4
15375                         val2="$define"
15376                 else
15377 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
15378                 fi
15379         else
15380                 if $test `./findhdr sgtty.h`; then
15381                         echo "<sgtty.h> found." >&4
15382                         val2="$define"
15383                 elif $test `./findhdr termio.h`; then
15384                         echo "<termio.h> found." >&4
15385                         val="$define"
15386                 else
15387 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
15388                 fi
15389         fi;;
15390 esac
15391 set i_termio; eval $setvar
15392 val=$val2; set i_sgtty; eval $setvar
15393 val=$val3; set i_termios; eval $setvar
15394
15395 : see if this is a shadow.h system
15396 set shadow.h i_shadow
15397 eval $inhdr
15398
15399 : see if stddef is available
15400 set stddef.h i_stddef
15401 eval $inhdr
15402
15403 : see if this is a sunmath.h system
15404 set sunmath.h i_sunmath
15405 eval $inhdr
15406
15407 : see if sys/access.h is available
15408 set sys/access.h i_sysaccess
15409 eval $inhdr
15410
15411 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
15412 set sys/filio.h i_sysfilio
15413 eval $inhdr
15414 echo " "
15415 if $test `./findhdr sys/ioctl.h`; then
15416         val="$define"
15417         echo '<sys/ioctl.h> found.' >&4
15418 else
15419         val="$undef"
15420         if $test $i_sysfilio = "$define"; then
15421             echo '<sys/ioctl.h> NOT found.' >&4
15422         else
15423                 $test $i_sgtty = "$define" && xxx="sgtty.h"
15424                 $test $i_termio = "$define" && xxx="termio.h"
15425                 $test $i_termios = "$define" && xxx="termios.h"
15426 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
15427         fi
15428 fi
15429 set i_sysioctl
15430 eval $setvar
15431
15432
15433 : see if this is a syslog.h system
15434 set syslog.h i_syslog
15435 eval $inhdr
15436
15437
15438 : see if this is a sys/mode.h system
15439 set sys/mode.h i_sysmode
15440 eval $inhdr
15441
15442 : see if sys/resource.h has to be included
15443 set sys/resource.h i_sysresrc
15444 eval $inhdr
15445
15446 : see if sys/security.h is available
15447 set sys/security.h i_syssecrt
15448 eval $inhdr
15449
15450 : see if this is a sys/statvfs.h system
15451 set sys/statvfs.h i_sysstatvfs
15452 eval $inhdr
15453
15454 : see if this is a sys/uio.h system
15455 set sys/uio.h i_sysuio
15456 eval $inhdr
15457
15458 : see if this is a sys/un.h system
15459 set sys/un.h i_sysun
15460 eval $inhdr
15461
15462
15463 : see if this is a sys/utsname.h system
15464 set sys/utsname.h i_sysutsname
15465 eval $inhdr
15466
15467 : see if this is a syswait system
15468 set sys/wait.h i_syswait
15469 eval $inhdr
15470
15471 : see if this is a ustat.h system
15472 set ustat.h i_ustat
15473 eval $inhdr
15474
15475 : see if this is an utime system
15476 set utime.h i_utime
15477 eval $inhdr
15478
15479 : see if this is a values.h system
15480 set values.h i_values
15481 eval $inhdr
15482
15483 : see if this is a vfork system
15484 case "$d_vfork" in
15485 "$define")
15486         set vfork.h i_vfork
15487         eval $inhdr
15488         ;;
15489 *)
15490         i_vfork="$undef"
15491         ;;
15492 esac
15493
15494 : see if gdbm.h is available
15495 set gdbm.h t_gdbm
15496 eval $inhdr
15497 case "$t_gdbm" in
15498 $define)
15499         : see if gdbm_open exists
15500         set gdbm_open d_gdbm_open
15501         eval $inlibc
15502         case "$d_gdbm_open" in
15503         $undef)
15504                 t_gdbm="$undef"
15505                 echo "We won't be including <gdbm.h>"
15506                 ;;
15507         esac
15508         ;;
15509 esac
15510 val="$t_gdbm"
15511 set i_gdbm
15512 eval $setvar
15513
15514 echo " "
15515 echo "Looking for extensions..." >&4
15516 : If we are using the old config.sh, known_extensions may contain
15517 : old or inaccurate or duplicate values.
15518 known_extensions=''
15519 nonxs_extensions=''
15520 : We do not use find because it might not be available.
15521 : We do not just use MANIFEST because the user may have dropped
15522 : some additional extensions into the source tree and expect them
15523 : to be built.
15524
15525 : Function to recursively find available extensions, ignoring DynaLoader
15526 : NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
15527 find_extensions='
15528     for xxx in *; do
15529        case "$xxx" in
15530            DynaLoader|dynaload) ;;
15531            *)
15532            if $test -f $xxx/$xxx.xs; then
15533                known_extensions="$known_extensions $1$xxx";
15534            elif $test -f $xxx/Makefile.PL; then
15535                nonxs_extensions="$nonxs_extensions $1$xxx";
15536            else
15537                if $test -d $xxx -a $# -lt 10; then
15538                    set $1$xxx/ $*;
15539                    cd $xxx;
15540                    eval $find_extensions;
15541                    cd ..;
15542                    shift;
15543                fi;
15544            fi
15545            ;;
15546        esac;
15547     done'
15548 tdir=`pwd`
15549 cd $rsrc/ext
15550 set X
15551 shift
15552 eval $find_extensions
15553 set X $nonxs_extensions
15554 shift
15555 nonxs_extensions="$*"
15556 set X $known_extensions
15557 shift
15558 known_extensions="$*"
15559 cd $tdir
15560
15561 : Now see which are supported on this system.
15562 avail_ext=''
15563 for xxx in $known_extensions ; do
15564         case "$xxx" in
15565         DB_File|db_file)
15566                 case "$i_db" in
15567                 $define) avail_ext="$avail_ext $xxx" ;;
15568                 esac
15569                 ;;
15570         GDBM_File|gdbm_fil)
15571                 case "$i_gdbm" in 
15572                 $define) avail_ext="$avail_ext $xxx" ;;
15573                 esac
15574                 ;;
15575         NDBM_File|ndbm_fil)
15576                 case "$i_ndbm" in
15577                 $define)
15578                     case "$osname-$use64bitint" in
15579                     hpux-define)
15580                         case "$libs" in
15581                         *-lndbm*) avail_ext="$avail_ext $xxx" ;;
15582                         esac
15583                         ;;
15584                     *) avail_ext="$avail_ext $xxx" ;;
15585                     esac
15586                     ;;
15587                 esac
15588                 ;;
15589         ODBM_File|odbm_fil) 
15590                 case "${i_dbm}${i_rpcsvcdbm}" in
15591                 *"${define}"*)
15592                     case "$osname-$use64bitint" in
15593                     hpux-define)
15594                         case "$libs" in
15595                         *-ldbm*) avail_ext="$avail_ext $xxx" ;;
15596                         esac
15597                         ;;
15598                     *) avail_ext="$avail_ext $xxx" ;;
15599                     esac
15600                     ;;
15601                 esac
15602                 ;;
15603         POSIX|posix)
15604                 case "$useposix" in
15605                 true|define|y) avail_ext="$avail_ext $xxx" ;;
15606                 esac
15607                 ;;
15608         Opcode|opcode)
15609                 case "$useopcode" in
15610                 true|define|y) avail_ext="$avail_ext $xxx" ;;
15611                 esac
15612                 ;;
15613         Socket|socket)
15614                 case "$d_socket" in 
15615                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
15616                 esac
15617                 ;;
15618         Sys/Syslog|sys/syslog)
15619                 : XXX syslog requires socket
15620                 case "$d_socket" in 
15621                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
15622                 esac
15623                 ;;
15624         Thread|thread)
15625                 case "$usethreads" in 
15626                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
15627                 esac
15628                 ;;
15629         IPC/SysV|ipc/sysv)
15630                 : XXX Do we need a useipcsysv variable here
15631                 case "${d_msg}${d_sem}${d_shm}" in 
15632                 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
15633                 esac
15634                 ;;
15635         *)      avail_ext="$avail_ext $xxx"
15636                 ;;
15637         esac
15638 done
15639
15640 set X $avail_ext
15641 shift
15642 avail_ext="$*"
15643
15644 : Now see which nonxs extensions are supported on this system.
15645 : For now assume all are.
15646 nonxs_ext=''
15647 for xxx in $nonxs_extensions ; do
15648         case "$xxx" in
15649         *)      nonxs_ext="$nonxs_ext $xxx"
15650                 ;;
15651         esac
15652 done
15653
15654 set X $nonxs_ext
15655 shift
15656 nonxs_ext="$*"
15657
15658 case $usedl in
15659 $define)
15660         $cat <<EOM
15661 A number of extensions are supplied with $package.  You may choose to
15662 compile these extensions for dynamic loading (the default), compile
15663 them into the $package executable (static loading), or not include
15664 them at all.  Answer "none" to include no extensions.
15665 Note that DynaLoader is always built and need not be mentioned here.
15666
15667 EOM
15668         case "$dynamic_ext" in
15669         '') dflt="$avail_ext" ;;
15670         *)      dflt="$dynamic_ext"
15671                 # Perhaps we are reusing an old out-of-date config.sh.
15672                 case "$hint" in
15673                 previous)
15674                         if test X"$dynamic_ext" != X"$avail_ext"; then
15675                                 $cat <<EOM
15676 NOTICE:  Your previous config.sh list may be incorrect. 
15677 The extensions now available to you are 
15678         ${avail_ext}
15679 but the default list from your previous config.sh is
15680         ${dynamic_ext} 
15681
15682 EOM
15683                         fi
15684                         ;;
15685                 esac
15686                 ;;
15687         esac
15688         case "$dflt" in
15689         '')     dflt=none;;
15690         esac
15691         rp="What extensions do you wish to load dynamically?"
15692         . ./myread
15693         case "$ans" in
15694         none) dynamic_ext=' ' ;;
15695         *) dynamic_ext="$ans" ;;
15696         esac
15697
15698         case "$static_ext" in
15699         '')
15700                 : Exclude those already listed in dynamic linking
15701                 dflt=''
15702                 for xxx in $avail_ext; do
15703                         case " $dynamic_ext " in
15704                         *" $xxx "*) ;;
15705                         *) dflt="$dflt $xxx" ;;
15706                         esac
15707                 done
15708                 set X $dflt
15709                 shift
15710                 dflt="$*"
15711                 ;;
15712         *)  dflt="$static_ext" 
15713                 ;;
15714         esac
15715
15716         case "$dflt" in
15717         '')     dflt=none;;
15718         esac
15719         rp="What extensions do you wish to load statically?"
15720         . ./myread
15721         case "$ans" in
15722         none) static_ext=' ' ;;
15723         *) static_ext="$ans" ;;
15724         esac
15725         ;;
15726 *)
15727         $cat <<EOM
15728 A number of extensions are supplied with $package.  Answer "none" 
15729 to include no extensions. 
15730 Note that DynaLoader is always built and need not be mentioned here.
15731
15732 EOM
15733         case "$static_ext" in
15734         '') dflt="$avail_ext" ;;
15735         *)      dflt="$static_ext"
15736                 # Perhaps we are reusing an old out-of-date config.sh.
15737                 case "$hint" in
15738                 previous)
15739                         if test X"$static_ext" != X"$avail_ext"; then
15740                                 $cat <<EOM
15741 NOTICE:  Your previous config.sh list may be incorrect. 
15742 The extensions now available to you are 
15743         ${avail_ext}
15744 but the default list from your previous config.sh is
15745         ${static_ext} 
15746
15747 EOM
15748                         fi
15749                         ;;
15750                 esac
15751                 ;;
15752         esac
15753         : Exclude those that are not xs extensions
15754         case "$dflt" in
15755         '')     dflt=none;;
15756         esac
15757         rp="What extensions do you wish to include?"
15758         . ./myread
15759         case "$ans" in
15760         none) static_ext=' ' ;;
15761         *) static_ext="$ans" ;;
15762         esac
15763         ;;
15764 esac
15765
15766 set X $dynamic_ext $static_ext $nonxs_ext
15767 shift
15768 extensions="$*"
15769
15770 : Remove libraries needed only for extensions
15771 : The appropriate ext/Foo/Makefile.PL will add them back in, if necessary.
15772 : The exception is SunOS 4.x, which needs them.
15773 case "${osname}X${osvers}" in
15774 sunos*X4*)
15775     perllibs="$libs"
15776     ;;
15777 *) case "$usedl" in
15778     $define|true|[yY]*)
15779             set X `echo " $libs " | sed -e 's@ -lndbm @ @' -e 's@ -lgdbm @ @' -e 's@ -ldbm @ @' -e 's@ -ldb @ @'` 
15780             shift
15781             perllibs="$*"
15782             ;;
15783     *)  perllibs="$libs"
15784             ;;
15785     esac
15786     ;;
15787 esac
15788
15789 : Remove build directory name from cppstdin so it can be used from
15790 : either the present location or the final installed location.
15791 echo " "
15792 : Get out of the UU directory to get correct path name.
15793 cd ..
15794 case "$cppstdin" in
15795 `pwd`/cppstdin)
15796         echo "Stripping down cppstdin path name"
15797         cppstdin=cppstdin
15798         ;;
15799 esac
15800 cd UU
15801
15802 : end of configuration questions
15803 echo " "
15804 echo "End of configuration questions."
15805 echo " "
15806
15807 : back to where it started
15808 if test -d ../UU; then
15809         cd ..
15810 fi
15811
15812 : configuration may be patched via a 'config.over' file
15813 if $test -f config.over; then
15814         echo " "
15815         dflt=y
15816         rp='I see a config.over file.  Do you wish to load it?'
15817         . UU/myread
15818         case "$ans" in
15819         n*) echo "OK, I'll ignore it.";;
15820         *)      . ./config.over
15821                 echo "Configuration override changes have been loaded."
15822                 ;;
15823         esac
15824 fi
15825
15826 : in case they want portability, strip down executable paths
15827 case "$d_portable" in
15828 "$define")
15829         echo " "
15830         echo "Stripping down executable paths..." >&4
15831         for file in $loclist $trylist; do
15832                 eval temp=\$$file
15833                 eval $file=`basename $temp`
15834         done
15835         ;;
15836 esac
15837
15838 : create config.sh file
15839 echo " "
15840 echo "Creating config.sh..." >&4
15841 $spitshell <<EOT >config.sh
15842 $startsh
15843 #
15844 # This file was produced by running the Configure script. It holds all the
15845 # definitions figured out by Configure. Should you modify one of these values,
15846 # do not forget to propagate your changes by running "Configure -der". You may
15847 # instead choose to run each of the .SH files by yourself, or "Configure -S".
15848 #
15849
15850 # Package name      : $package
15851 # Source directory  : $src
15852 # Configuration time: $cf_time
15853 # Configured by     : $cf_by
15854 # Target system     : $myuname
15855
15856 Author='$Author'
15857 Date='$Date'
15858 Header='$Header'
15859 Id='$Id'
15860 Locker='$Locker'
15861 Log='$Log'
15862 Mcc='$Mcc'
15863 RCSfile='$RCSfile'
15864 Revision='$Revision'
15865 Source='$Source'
15866 State='$State'
15867 _a='$_a'
15868 _exe='$_exe'
15869 _o='$_o'
15870 afs='$afs'
15871 alignbytes='$alignbytes'
15872 ansi2knr='$ansi2knr'
15873 aphostname='$aphostname'
15874 api_revision='$api_revision'
15875 api_subversion='$api_subversion'
15876 api_version='$api_version'
15877 api_versionstring='$api_versionstring'
15878 ar='$ar'
15879 archlib='$archlib'
15880 archlibexp='$archlibexp'
15881 archname64='$archname64'
15882 archname='$archname'
15883 archobjs='$archobjs'
15884 awk='$awk'
15885 baserev='$baserev'
15886 bash='$bash'
15887 bin='$bin'
15888 bincompat5005='$bincompat5005'
15889 binexp='$binexp'
15890 bison='$bison'
15891 byacc='$byacc'
15892 byteorder='$byteorder'
15893 c='$c'
15894 castflags='$castflags'
15895 cat='$cat'
15896 cc='$cc'
15897 cccdlflags='$cccdlflags'
15898 ccdlflags='$ccdlflags'
15899 ccflags='$ccflags'
15900 ccflags_uselargefiles='$ccflags_uselargefiles'
15901 ccname='$ccname'
15902 ccsymbols='$ccsymbols'
15903 ccversion='$ccversion'
15904 cf_by='$cf_by'
15905 cf_email='$cf_email'
15906 cf_time='$cf_time'
15907 charsize='$charsize'
15908 chgrp='$chgrp'
15909 chmod='$chmod'
15910 chown='$chown'
15911 clocktype='$clocktype'
15912 comm='$comm'
15913 compress='$compress'
15914 contains='$contains'
15915 cp='$cp'
15916 cpio='$cpio'
15917 cpp='$cpp'
15918 cpp_stuff='$cpp_stuff'
15919 cppccsymbols='$cppccsymbols'
15920 cppflags='$cppflags'
15921 cpplast='$cpplast'
15922 cppminus='$cppminus'
15923 cpprun='$cpprun'
15924 cppstdin='$cppstdin'
15925 cppsymbols='$cppsymbols'
15926 crosscompile='$crosscompile'
15927 cryptlib='$cryptlib'
15928 csh='$csh'
15929 d_Gconvert='$d_Gconvert'
15930 d_PRIEUldbl='$d_PRIEUldbl'
15931 d_PRIFUldbl='$d_PRIFUldbl'
15932 d_PRIGUldbl='$d_PRIGUldbl'
15933 d_PRIXU64='$d_PRIXU64'
15934 d_PRId64='$d_PRId64'
15935 d_PRIeldbl='$d_PRIeldbl'
15936 d_PRIfldbl='$d_PRIfldbl'
15937 d_PRIgldbl='$d_PRIgldbl'
15938 d_PRIi64='$d_PRIi64'
15939 d_PRIo64='$d_PRIo64'
15940 d_PRIu64='$d_PRIu64'
15941 d_PRIx64='$d_PRIx64'
15942 d_SCNfldbl='$d_SCNfldbl'
15943 d__fwalk='$d__fwalk'
15944 d_access='$d_access'
15945 d_accessx='$d_accessx'
15946 d_alarm='$d_alarm'
15947 d_archlib='$d_archlib'
15948 d_atolf='$d_atolf'
15949 d_atoll='$d_atoll'
15950 d_attribut='$d_attribut'
15951 d_bcmp='$d_bcmp'
15952 d_bcopy='$d_bcopy'
15953 d_bincompat5005='$d_bincompat5005'
15954 d_bsd='$d_bsd'
15955 d_bsdgetpgrp='$d_bsdgetpgrp'
15956 d_bsdsetpgrp='$d_bsdsetpgrp'
15957 d_bzero='$d_bzero'
15958 d_casti32='$d_casti32'
15959 d_castneg='$d_castneg'
15960 d_charvspr='$d_charvspr'
15961 d_chown='$d_chown'
15962 d_chroot='$d_chroot'
15963 d_chsize='$d_chsize'
15964 d_closedir='$d_closedir'
15965 d_const='$d_const'
15966 d_crypt='$d_crypt'
15967 d_csh='$d_csh'
15968 d_cuserid='$d_cuserid'
15969 d_dbl_dig='$d_dbl_dig'
15970 d_difftime='$d_difftime'
15971 d_dirnamlen='$d_dirnamlen'
15972 d_dlerror='$d_dlerror'
15973 d_dlopen='$d_dlopen'
15974 d_dlsymun='$d_dlsymun'
15975 d_dosuid='$d_dosuid'
15976 d_drand48proto='$d_drand48proto'
15977 d_dup2='$d_dup2'
15978 d_eaccess='$d_eaccess'
15979 d_endgrent='$d_endgrent'
15980 d_endhent='$d_endhent'
15981 d_endnent='$d_endnent'
15982 d_endpent='$d_endpent'
15983 d_endpwent='$d_endpwent'
15984 d_endsent='$d_endsent'
15985 d_eofnblk='$d_eofnblk'
15986 d_eunice='$d_eunice'
15987 d_fchmod='$d_fchmod'
15988 d_fchown='$d_fchown'
15989 d_fcntl='$d_fcntl'
15990 d_fcntl_can_lock='$d_fcntl_can_lock'
15991 d_fd_macros='$d_fd_macros'
15992 d_fd_set='$d_fd_set'
15993 d_fds_bits='$d_fds_bits'
15994 d_fgetpos='$d_fgetpos'
15995 d_flexfnam='$d_flexfnam'
15996 d_flock='$d_flock'
15997 d_fork='$d_fork'
15998 d_fpathconf='$d_fpathconf'
15999 d_fpos64_t='$d_fpos64_t'
16000 d_frexpl='$d_frexpl'
16001 d_fs_data_s='$d_fs_data_s'
16002 d_fseeko='$d_fseeko'
16003 d_fsetpos='$d_fsetpos'
16004 d_fstatfs='$d_fstatfs'
16005 d_fstatvfs='$d_fstatvfs'
16006 d_fsync='$d_fsync'
16007 d_ftello='$d_ftello'
16008 d_ftime='$d_ftime'
16009 d_getcwd='$d_getcwd'
16010 d_getespwnam='$d_getespwnam'
16011 d_getfsstat='$d_getfsstat'
16012 d_getgrent='$d_getgrent'
16013 d_getgrps='$d_getgrps'
16014 d_gethbyaddr='$d_gethbyaddr'
16015 d_gethbyname='$d_gethbyname'
16016 d_gethent='$d_gethent'
16017 d_gethname='$d_gethname'
16018 d_gethostprotos='$d_gethostprotos'
16019 d_getlogin='$d_getlogin'
16020 d_getmnt='$d_getmnt'
16021 d_getmntent='$d_getmntent'
16022 d_getnbyaddr='$d_getnbyaddr'
16023 d_getnbyname='$d_getnbyname'
16024 d_getnent='$d_getnent'
16025 d_getnetprotos='$d_getnetprotos'
16026 d_getpagsz='$d_getpagsz'
16027 d_getpbyname='$d_getpbyname'
16028 d_getpbynumber='$d_getpbynumber'
16029 d_getpent='$d_getpent'
16030 d_getpgid='$d_getpgid'
16031 d_getpgrp2='$d_getpgrp2'
16032 d_getpgrp='$d_getpgrp'
16033 d_getppid='$d_getppid'
16034 d_getprior='$d_getprior'
16035 d_getprotoprotos='$d_getprotoprotos'
16036 d_getprpwnam='$d_getprpwnam'
16037 d_getpwent='$d_getpwent'
16038 d_getsbyname='$d_getsbyname'
16039 d_getsbyport='$d_getsbyport'
16040 d_getsent='$d_getsent'
16041 d_getservprotos='$d_getservprotos'
16042 d_getspnam='$d_getspnam'
16043 d_gettimeod='$d_gettimeod'
16044 d_gnulibc='$d_gnulibc'
16045 d_grpasswd='$d_grpasswd'
16046 d_hasmntopt='$d_hasmntopt'
16047 d_htonl='$d_htonl'
16048 d_iconv='$d_iconv'
16049 d_index='$d_index'
16050 d_inetaton='$d_inetaton'
16051 d_int64_t='$d_int64_t'
16052 d_isascii='$d_isascii'
16053 d_isnan='$d_isnan'
16054 d_isnanl='$d_isnanl'
16055 d_killpg='$d_killpg'
16056 d_lchown='$d_lchown'
16057 d_ldbl_dig='$d_ldbl_dig'
16058 d_link='$d_link'
16059 d_locconv='$d_locconv'
16060 d_lockf='$d_lockf'
16061 d_longdbl='$d_longdbl'
16062 d_longlong='$d_longlong'
16063 d_lseekproto='$d_lseekproto'
16064 d_lstat='$d_lstat'
16065 d_madvise='$d_madvise'
16066 d_mblen='$d_mblen'
16067 d_mbstowcs='$d_mbstowcs'
16068 d_mbtowc='$d_mbtowc'
16069 d_memchr='$d_memchr'
16070 d_memcmp='$d_memcmp'
16071 d_memcpy='$d_memcpy'
16072 d_memmove='$d_memmove'
16073 d_memset='$d_memset'
16074 d_mkdir='$d_mkdir'
16075 d_mkdtemp='$d_mkdtemp'
16076 d_mkfifo='$d_mkfifo'
16077 d_mkstemp='$d_mkstemp'
16078 d_mkstemps='$d_mkstemps'
16079 d_mktime='$d_mktime'
16080 d_mmap='$d_mmap'
16081 d_modfl='$d_modfl'
16082 d_mprotect='$d_mprotect'
16083 d_msg='$d_msg'
16084 d_msg_ctrunc='$d_msg_ctrunc'
16085 d_msg_dontroute='$d_msg_dontroute'
16086 d_msg_oob='$d_msg_oob'
16087 d_msg_peek='$d_msg_peek'
16088 d_msg_proxy='$d_msg_proxy'
16089 d_msgctl='$d_msgctl'
16090 d_msgget='$d_msgget'
16091 d_msgrcv='$d_msgrcv'
16092 d_msgsnd='$d_msgsnd'
16093 d_msync='$d_msync'
16094 d_munmap='$d_munmap'
16095 d_mymalloc='$d_mymalloc'
16096 d_nice='$d_nice'
16097 d_nv_preserves_uv='$d_nv_preserves_uv'
16098 d_nv_preserves_uv_bits='$d_nv_preserves_uv_bits'
16099 d_off64_t='$d_off64_t'
16100 d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
16101 d_oldpthreads='$d_oldpthreads'
16102 d_oldsock='$d_oldsock'
16103 d_open3='$d_open3'
16104 d_pathconf='$d_pathconf'
16105 d_pause='$d_pause'
16106 d_perl_otherlibdirs='$d_perl_otherlibdirs'
16107 d_phostname='$d_phostname'
16108 d_pipe='$d_pipe'
16109 d_poll='$d_poll'
16110 d_portable='$d_portable'
16111 d_pthread_yield='$d_pthread_yield'
16112 d_pwage='$d_pwage'
16113 d_pwchange='$d_pwchange'
16114 d_pwclass='$d_pwclass'
16115 d_pwcomment='$d_pwcomment'
16116 d_pwexpire='$d_pwexpire'
16117 d_pwgecos='$d_pwgecos'
16118 d_pwpasswd='$d_pwpasswd'
16119 d_pwquota='$d_pwquota'
16120 d_qgcvt='$d_qgcvt'
16121 d_quad='$d_quad'
16122 d_readdir='$d_readdir'
16123 d_readlink='$d_readlink'
16124 d_rename='$d_rename'
16125 d_rewinddir='$d_rewinddir'
16126 d_rmdir='$d_rmdir'
16127 d_safebcpy='$d_safebcpy'
16128 d_safemcpy='$d_safemcpy'
16129 d_sanemcmp='$d_sanemcmp'
16130 d_sbrkproto='$d_sbrkproto'
16131 d_sched_yield='$d_sched_yield'
16132 d_scm_rights='$d_scm_rights'
16133 d_seekdir='$d_seekdir'
16134 d_select='$d_select'
16135 d_sem='$d_sem'
16136 d_semctl='$d_semctl'
16137 d_semctl_semid_ds='$d_semctl_semid_ds'
16138 d_semctl_semun='$d_semctl_semun'
16139 d_semget='$d_semget'
16140 d_semop='$d_semop'
16141 d_setegid='$d_setegid'
16142 d_seteuid='$d_seteuid'
16143 d_setgrent='$d_setgrent'
16144 d_setgrps='$d_setgrps'
16145 d_sethent='$d_sethent'
16146 d_setlinebuf='$d_setlinebuf'
16147 d_setlocale='$d_setlocale'
16148 d_setnent='$d_setnent'
16149 d_setpent='$d_setpent'
16150 d_setpgid='$d_setpgid'
16151 d_setpgrp2='$d_setpgrp2'
16152 d_setpgrp='$d_setpgrp'
16153 d_setprior='$d_setprior'
16154 d_setproctitle='$d_setproctitle'
16155 d_setpwent='$d_setpwent'
16156 d_setregid='$d_setregid'
16157 d_setresgid='$d_setresgid'
16158 d_setresuid='$d_setresuid'
16159 d_setreuid='$d_setreuid'
16160 d_setrgid='$d_setrgid'
16161 d_setruid='$d_setruid'
16162 d_setsent='$d_setsent'
16163 d_setsid='$d_setsid'
16164 d_setvbuf='$d_setvbuf'
16165 d_sfio='$d_sfio'
16166 d_shm='$d_shm'
16167 d_shmat='$d_shmat'
16168 d_shmatprototype='$d_shmatprototype'
16169 d_shmctl='$d_shmctl'
16170 d_shmdt='$d_shmdt'
16171 d_shmget='$d_shmget'
16172 d_sigaction='$d_sigaction'
16173 d_sigprocmask='$d_sigprocmask'
16174 d_sigsetjmp='$d_sigsetjmp'
16175 d_socket='$d_socket'
16176 d_socklen_t='$d_socklen_t'
16177 d_sockpair='$d_sockpair'
16178 d_socks5_init='$d_socks5_init'
16179 d_sqrtl='$d_sqrtl'
16180 d_statblks='$d_statblks'
16181 d_statfs_f_flags='$d_statfs_f_flags'
16182 d_statfs_s='$d_statfs_s'
16183 d_statvfs='$d_statvfs'
16184 d_stdio_cnt_lval='$d_stdio_cnt_lval'
16185 d_stdio_ptr_lval='$d_stdio_ptr_lval'
16186 d_stdio_ptr_lval_nochange_cnt='$d_stdio_ptr_lval_nochange_cnt'
16187 d_stdio_ptr_lval_sets_cnt='$d_stdio_ptr_lval_sets_cnt'
16188 d_stdio_stream_array='$d_stdio_stream_array'
16189 d_stdiobase='$d_stdiobase'
16190 d_stdstdio='$d_stdstdio'
16191 d_strchr='$d_strchr'
16192 d_strcoll='$d_strcoll'
16193 d_strctcpy='$d_strctcpy'
16194 d_strerrm='$d_strerrm'
16195 d_strerror='$d_strerror'
16196 d_strtod='$d_strtod'
16197 d_strtol='$d_strtol'
16198 d_strtold='$d_strtold'
16199 d_strtoll='$d_strtoll'
16200 d_strtoq='$d_strtoq'
16201 d_strtoul='$d_strtoul'
16202 d_strtoull='$d_strtoull'
16203 d_strtouq='$d_strtouq'
16204 d_strxfrm='$d_strxfrm'
16205 d_suidsafe='$d_suidsafe'
16206 d_symlink='$d_symlink'
16207 d_syscall='$d_syscall'
16208 d_sysconf='$d_sysconf'
16209 d_sysernlst='$d_sysernlst'
16210 d_syserrlst='$d_syserrlst'
16211 d_system='$d_system'
16212 d_tcgetpgrp='$d_tcgetpgrp'
16213 d_tcsetpgrp='$d_tcsetpgrp'
16214 d_telldir='$d_telldir'
16215 d_telldirproto='$d_telldirproto'
16216 d_time='$d_time'
16217 d_times='$d_times'
16218 d_truncate='$d_truncate'
16219 d_tzname='$d_tzname'
16220 d_umask='$d_umask'
16221 d_uname='$d_uname'
16222 d_union_semun='$d_union_semun'
16223 d_ustat='$d_ustat'
16224 d_vendorarch='$d_vendorarch'
16225 d_vendorbin='$d_vendorbin'
16226 d_vendorlib='$d_vendorlib'
16227 d_vfork='$d_vfork'
16228 d_void_closedir='$d_void_closedir'
16229 d_voidsig='$d_voidsig'
16230 d_voidtty='$d_voidtty'
16231 d_volatile='$d_volatile'
16232 d_vprintf='$d_vprintf'
16233 d_wait4='$d_wait4'
16234 d_waitpid='$d_waitpid'
16235 d_wcstombs='$d_wcstombs'
16236 d_wctomb='$d_wctomb'
16237 d_xenix='$d_xenix'
16238 date='$date'
16239 db_hashtype='$db_hashtype'
16240 db_prefixtype='$db_prefixtype'
16241 defvoidused='$defvoidused'
16242 direntrytype='$direntrytype'
16243 dlext='$dlext'
16244 dlsrc='$dlsrc'
16245 doublesize='$doublesize'
16246 drand01='$drand01'
16247 dynamic_ext='$dynamic_ext'
16248 eagain='$eagain'
16249 ebcdic='$ebcdic'
16250 echo='$echo'
16251 egrep='$egrep'
16252 emacs='$emacs'
16253 eunicefix='$eunicefix'
16254 exe_ext='$exe_ext'
16255 expr='$expr'
16256 extensions='$extensions'
16257 fflushNULL='$fflushNULL'
16258 fflushall='$fflushall'
16259 find='$find'
16260 firstmakefile='$firstmakefile'
16261 flex='$flex'
16262 fpossize='$fpossize'
16263 fpostype='$fpostype'
16264 freetype='$freetype'
16265 full_ar='$full_ar'
16266 full_csh='$full_csh'
16267 full_sed='$full_sed'
16268 gccosandvers='$gccosandvers'
16269 gccversion='$gccversion'
16270 gidformat='$gidformat'
16271 gidsign='$gidsign'
16272 gidsize='$gidsize'
16273 gidtype='$gidtype'
16274 glibpth='$glibpth'
16275 grep='$grep'
16276 groupcat='$groupcat'
16277 groupstype='$groupstype'
16278 gzip='$gzip'
16279 h_fcntl='$h_fcntl'
16280 h_sysfile='$h_sysfile'
16281 hint='$hint'
16282 hostcat='$hostcat'
16283 i16size='$i16size'
16284 i16type='$i16type'
16285 i32size='$i32size'
16286 i32type='$i32type'
16287 i64size='$i64size'
16288 i64type='$i64type'
16289 i8size='$i8size'
16290 i8type='$i8type'
16291 i_arpainet='$i_arpainet'
16292 i_bsdioctl='$i_bsdioctl'
16293 i_db='$i_db'
16294 i_dbm='$i_dbm'
16295 i_dirent='$i_dirent'
16296 i_dld='$i_dld'
16297 i_dlfcn='$i_dlfcn'
16298 i_fcntl='$i_fcntl'
16299 i_float='$i_float'
16300 i_gdbm='$i_gdbm'
16301 i_grp='$i_grp'
16302 i_iconv='$i_iconv'
16303 i_ieeefp='$i_ieeefp'
16304 i_inttypes='$i_inttypes'
16305 i_libutil='$i_libutil'
16306 i_limits='$i_limits'
16307 i_locale='$i_locale'
16308 i_machcthr='$i_machcthr'
16309 i_malloc='$i_malloc'
16310 i_math='$i_math'
16311 i_memory='$i_memory'
16312 i_mntent='$i_mntent'
16313 i_ndbm='$i_ndbm'
16314 i_netdb='$i_netdb'
16315 i_neterrno='$i_neterrno'
16316 i_netinettcp='$i_netinettcp'
16317 i_niin='$i_niin'
16318 i_poll='$i_poll'
16319 i_prot='$i_prot'
16320 i_pthread='$i_pthread'
16321 i_pwd='$i_pwd'
16322 i_rpcsvcdbm='$i_rpcsvcdbm'
16323 i_sfio='$i_sfio'
16324 i_sgtty='$i_sgtty'
16325 i_shadow='$i_shadow'
16326 i_socks='$i_socks'
16327 i_stdarg='$i_stdarg'
16328 i_stddef='$i_stddef'
16329 i_stdlib='$i_stdlib'
16330 i_string='$i_string'
16331 i_sunmath='$i_sunmath'
16332 i_sysaccess='$i_sysaccess'
16333 i_sysdir='$i_sysdir'
16334 i_sysfile='$i_sysfile'
16335 i_sysfilio='$i_sysfilio'
16336 i_sysin='$i_sysin'
16337 i_sysioctl='$i_sysioctl'
16338 i_syslog='$i_syslog'
16339 i_sysmman='$i_sysmman'
16340 i_sysmode='$i_sysmode'
16341 i_sysmount='$i_sysmount'
16342 i_sysndir='$i_sysndir'
16343 i_sysparam='$i_sysparam'
16344 i_sysresrc='$i_sysresrc'
16345 i_syssecrt='$i_syssecrt'
16346 i_sysselct='$i_sysselct'
16347 i_syssockio='$i_syssockio'
16348 i_sysstat='$i_sysstat'
16349 i_sysstatfs='$i_sysstatfs'
16350 i_sysstatvfs='$i_sysstatvfs'
16351 i_systime='$i_systime'
16352 i_systimek='$i_systimek'
16353 i_systimes='$i_systimes'
16354 i_systypes='$i_systypes'
16355 i_sysuio='$i_sysuio'
16356 i_sysun='$i_sysun'
16357 i_sysutsname='$i_sysutsname'
16358 i_sysvfs='$i_sysvfs'
16359 i_syswait='$i_syswait'
16360 i_termio='$i_termio'
16361 i_termios='$i_termios'
16362 i_time='$i_time'
16363 i_unistd='$i_unistd'
16364 i_ustat='$i_ustat'
16365 i_utime='$i_utime'
16366 i_values='$i_values'
16367 i_varargs='$i_varargs'
16368 i_varhdr='$i_varhdr'
16369 i_vfork='$i_vfork'
16370 ignore_versioned_solibs='$ignore_versioned_solibs'
16371 inc_version_list='$inc_version_list'
16372 inc_version_list_init='$inc_version_list_init'
16373 incpath='$incpath'
16374 inews='$inews'
16375 installarchlib='$installarchlib'
16376 installbin='$installbin'
16377 installman1dir='$installman1dir'
16378 installman3dir='$installman3dir'
16379 installprefix='$installprefix'
16380 installprefixexp='$installprefixexp'
16381 installprivlib='$installprivlib'
16382 installscript='$installscript'
16383 installsitearch='$installsitearch'
16384 installsitebin='$installsitebin'
16385 installsitelib='$installsitelib'
16386 installstyle='$installstyle'
16387 installusrbinperl='$installusrbinperl'
16388 installvendorarch='$installvendorarch'
16389 installvendorbin='$installvendorbin'
16390 installvendorlib='$installvendorlib'
16391 intsize='$intsize'
16392 issymlink='$issymlink'
16393 ivdformat='$ivdformat'
16394 ivsize='$ivsize'
16395 ivtype='$ivtype'
16396 known_extensions='$known_extensions'
16397 ksh='$ksh'
16398 ld='$ld'
16399 lddlflags='$lddlflags'
16400 ldflags='$ldflags'
16401 ldflags_uselargefiles='$ldflags_uselargefiles'
16402 ldlibpthname='$ldlibpthname'
16403 less='$less'
16404 lib_ext='$lib_ext'
16405 libc='$libc'
16406 libperl='$libperl'
16407 libpth='$libpth'
16408 libs='$libs'
16409 libsdirs='$libsdirs'
16410 libsfiles='$libsfiles'
16411 libsfound='$libsfound'
16412 libspath='$libspath'
16413 libswanted='$libswanted'
16414 libswanted_uselargefiles='$libswanted_uselargefiles'
16415 line='$line'
16416 lint='$lint'
16417 lkflags='$lkflags'
16418 ln='$ln'
16419 lns='$lns'
16420 locincpth='$locincpth'
16421 loclibpth='$loclibpth'
16422 longdblsize='$longdblsize'
16423 longlongsize='$longlongsize'
16424 longsize='$longsize'
16425 lp='$lp'
16426 lpr='$lpr'
16427 ls='$ls'
16428 lseeksize='$lseeksize'
16429 lseektype='$lseektype'
16430 mail='$mail'
16431 mailx='$mailx'
16432 make='$make'
16433 make_set_make='$make_set_make'
16434 mallocobj='$mallocobj'
16435 mallocsrc='$mallocsrc'
16436 malloctype='$malloctype'
16437 man1dir='$man1dir'
16438 man1direxp='$man1direxp'
16439 man1ext='$man1ext'
16440 man3dir='$man3dir'
16441 man3direxp='$man3direxp'
16442 man3ext='$man3ext'
16443 mips_type='$mips_type'
16444 mkdir='$mkdir'
16445 mmaptype='$mmaptype'
16446 modetype='$modetype'
16447 more='$more'
16448 multiarch='$multiarch'
16449 mv='$mv'
16450 myarchname='$myarchname'
16451 mydomain='$mydomain'
16452 myhostname='$myhostname'
16453 myuname='$myuname'
16454 n='$n'
16455 need_va_copy='$need_va_copy'
16456 netdb_hlen_type='$netdb_hlen_type'
16457 netdb_host_type='$netdb_host_type'
16458 netdb_name_type='$netdb_name_type'
16459 netdb_net_type='$netdb_net_type'
16460 nm='$nm'
16461 nm_opt='$nm_opt'
16462 nm_so_opt='$nm_so_opt'
16463 nonxs_ext='$nonxs_ext'
16464 nroff='$nroff'
16465 nvEUformat='$nvEUformat'
16466 nvFUformat='$nvFUformat'
16467 nvGUformat='$nvGUformat'
16468 nveformat='$nveformat'
16469 nvfformat='$nvfformat'
16470 nvgformat='$nvgformat'
16471 nvsize='$nvsize'
16472 nvtype='$nvtype'
16473 o_nonblock='$o_nonblock'
16474 obj_ext='$obj_ext'
16475 old_pthread_create_joinable='$old_pthread_create_joinable'
16476 optimize='$optimize'
16477 orderlib='$orderlib'
16478 osname='$osname'
16479 osvers='$osvers'
16480 otherlibdirs='$otherlibdirs'
16481 package='$package'
16482 pager='$pager'
16483 passcat='$passcat'
16484 patchlevel='$patchlevel'
16485 path_sep='$path_sep'
16486 perl5='$perl5'
16487 perl='$perl'
16488 perladmin='$perladmin'
16489 perllibs='$perllibs'
16490 perlpath='$perlpath'
16491 pg='$pg'
16492 phostname='$phostname'
16493 pidtype='$pidtype'
16494 plibpth='$plibpth'
16495 pm_apiversion='$pm_apiversion'
16496 pmake='$pmake'
16497 pr='$pr'
16498 prefix='$prefix'
16499 prefixexp='$prefixexp'
16500 privlib='$privlib'
16501 privlibexp='$privlibexp'
16502 prototype='$prototype'
16503 ptrsize='$ptrsize'
16504 quadkind='$quadkind'
16505 quadtype='$quadtype'
16506 randbits='$randbits'
16507 randfunc='$randfunc'
16508 randseedtype='$randseedtype'
16509 ranlib='$ranlib'
16510 rd_nodata='$rd_nodata'
16511 revision='$revision'
16512 rm='$rm'
16513 rmail='$rmail'
16514 runnm='$runnm'
16515 sPRIEUldbl='$sPRIEUldbl'
16516 sPRIFUldbl='$sPRIFUldbl'
16517 sPRIGUldbl='$sPRIGUldbl'
16518 sPRIXU64='$sPRIXU64'
16519 sPRId64='$sPRId64'
16520 sPRIeldbl='$sPRIeldbl'
16521 sPRIfldbl='$sPRIfldbl'
16522 sPRIgldbl='$sPRIgldbl'
16523 sPRIi64='$sPRIi64'
16524 sPRIo64='$sPRIo64'
16525 sPRIu64='$sPRIu64'
16526 sPRIx64='$sPRIx64'
16527 sSCNfldbl='$sSCNfldbl'
16528 sched_yield='$sched_yield'
16529 scriptdir='$scriptdir'
16530 scriptdirexp='$scriptdirexp'
16531 sed='$sed'
16532 seedfunc='$seedfunc'
16533 selectminbits='$selectminbits'
16534 selecttype='$selecttype'
16535 sendmail='$sendmail'
16536 sh='$sh'
16537 shar='$shar'
16538 sharpbang='$sharpbang'
16539 shmattype='$shmattype'
16540 shortsize='$shortsize'
16541 shrpenv='$shrpenv'
16542 shsharp='$shsharp'
16543 sig_count='$sig_count'
16544 sig_name='$sig_name'
16545 sig_name_init='$sig_name_init'
16546 sig_num='$sig_num'
16547 sig_num_init='$sig_num_init'
16548 sig_size='$sig_size'
16549 signal_t='$signal_t'
16550 sitearch='$sitearch'
16551 sitearchexp='$sitearchexp'
16552 sitebin='$sitebin'
16553 sitebinexp='$sitebinexp'
16554 sitelib='$sitelib'
16555 sitelib_stem='$sitelib_stem'
16556 sitelibexp='$sitelibexp'
16557 siteprefix='$siteprefix'
16558 siteprefixexp='$siteprefixexp'
16559 sizesize='$sizesize'
16560 sizetype='$sizetype'
16561 sleep='$sleep'
16562 smail='$smail'
16563 so='$so'
16564 sockethdr='$sockethdr'
16565 socketlib='$socketlib'
16566 socksizetype='$socksizetype'
16567 sort='$sort'
16568 spackage='$spackage'
16569 spitshell='$spitshell'
16570 src='$src'
16571 ssizetype='$ssizetype'
16572 startperl='$startperl'
16573 startsh='$startsh'
16574 static_ext='$static_ext'
16575 stdchar='$stdchar'
16576 stdio_base='$stdio_base'
16577 stdio_bufsiz='$stdio_bufsiz'
16578 stdio_cnt='$stdio_cnt'
16579 stdio_filbuf='$stdio_filbuf'
16580 stdio_ptr='$stdio_ptr'
16581 stdio_stream_array='$stdio_stream_array'
16582 strings='$strings'
16583 submit='$submit'
16584 subversion='$subversion'
16585 sysman='$sysman'
16586 tail='$tail'
16587 tar='$tar'
16588 tbl='$tbl'
16589 tee='$tee'
16590 test='$test'
16591 timeincl='$timeincl'
16592 timetype='$timetype'
16593 touch='$touch'
16594 tr='$tr'
16595 trnl='$trnl'
16596 troff='$troff'
16597 u16size='$u16size'
16598 u16type='$u16type'
16599 u32size='$u32size'
16600 u32type='$u32type'
16601 u64size='$u64size'
16602 u64type='$u64type'
16603 u8size='$u8size'
16604 u8type='$u8type'
16605 uidformat='$uidformat'
16606 uidsign='$uidsign'
16607 uidsize='$uidsize'
16608 uidtype='$uidtype'
16609 uname='$uname'
16610 uniq='$uniq'
16611 uquadtype='$uquadtype'
16612 use5005threads='$use5005threads'
16613 use64bitall='$use64bitall'
16614 use64bitint='$use64bitint'
16615 usedl='$usedl'
16616 useithreads='$useithreads'
16617 uselargefiles='$uselargefiles'
16618 uselongdouble='$uselongdouble'
16619 usemorebits='$usemorebits'
16620 usemultiplicity='$usemultiplicity'
16621 usemymalloc='$usemymalloc'
16622 usenm='$usenm'
16623 useopcode='$useopcode'
16624 useperlio='$useperlio'
16625 useposix='$useposix'
16626 usesfio='$usesfio'
16627 useshrplib='$useshrplib'
16628 usesocks='$usesocks'
16629 usethreads='$usethreads'
16630 usevendorprefix='$usevendorprefix'
16631 usevfork='$usevfork'
16632 usrinc='$usrinc'
16633 uuname='$uuname'
16634 uvXUformat='$uvXUformat'
16635 uvoformat='$uvoformat'
16636 uvsize='$uvsize'
16637 uvtype='$uvtype'
16638 uvuformat='$uvuformat'
16639 uvxformat='$uvxformat'
16640 vendorarch='$vendorarch'
16641 vendorarchexp='$vendorarchexp'
16642 vendorbin='$vendorbin'
16643 vendorbinexp='$vendorbinexp'
16644 vendorlib='$vendorlib'
16645 vendorlib_stem='$vendorlib_stem'
16646 vendorlibexp='$vendorlibexp'
16647 vendorprefix='$vendorprefix'
16648 vendorprefixexp='$vendorprefixexp'
16649 version='$version'
16650 versiononly='$versiononly'
16651 vi='$vi'
16652 voidflags='$voidflags'
16653 xlibpth='$xlibpth'
16654 xs_apiversion='$xs_apiversion'
16655 yacc='$yacc'
16656 yaccflags='$yaccflags'
16657 zcat='$zcat'
16658 zip='$zip'
16659 EOT
16660
16661 : Add in command line options if available
16662 $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
16663
16664 : add special variables
16665 $test -f $src/patchlevel.h && \
16666 awk '/^#define[         ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
16667 echo "CONFIGDOTSH=true" >>config.sh
16668
16669 : propagate old symbols
16670 if $test -f UU/config.sh; then
16671         <UU/config.sh $sort | $uniq >UU/oldconfig.sh
16672         sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
16673         $sort | $uniq -u >UU/oldsyms
16674         set X `cat UU/oldsyms`
16675         shift
16676         case $# in
16677         0) ;;
16678         *)
16679                 cat <<EOM
16680 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
16681 EOM
16682                 echo "# Variables propagated from previous config.sh file." >>config.sh
16683                 for sym in `cat UU/oldsyms`; do
16684                         echo "    Propagating $hint variable "'$'"$sym..."
16685                         eval 'tmp="$'"${sym}"'"'
16686                         echo "$tmp" | \
16687                                 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
16688                 done
16689                 ;;
16690         esac
16691 fi
16692
16693 : Finish up by extracting the .SH files
16694 case "$alldone" in
16695 exit)
16696         $rm -rf UU
16697         echo "Done."
16698         exit 0
16699         ;;
16700 cont)
16701         ;;
16702 '')
16703         dflt=''
16704         nostick=true
16705         $cat <<EOM
16706
16707 If you'd like to make any changes to the config.sh file before I begin
16708 to configure things, do it as a shell escape now (e.g. !vi config.sh).
16709
16710 EOM
16711         rp="Press return or use a shell escape to edit config.sh:"
16712         . UU/myread
16713         nostick=''
16714         case "$ans" in
16715         '') ;;
16716         *) : in case they cannot read
16717                 sh 1>&4 -c "$ans";;
16718         esac
16719         ;;
16720 esac
16721
16722 : if this fails, just run all the .SH files by hand
16723 . ./config.sh
16724
16725 echo " "
16726 exec 1>&4
16727 . ./UU/extract
16728
16729 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
16730         dflt=y
16731         case "$silent" in
16732         true) ;;
16733         *)
16734                 $cat <<EOM
16735
16736 Now you need to generate make dependencies by running "$make depend".
16737 You might prefer to run it in background: "$make depend > makedepend.out &"
16738 It can take a while, so you might not want to run it right now.
16739
16740 EOM
16741                 ;;
16742         esac
16743         rp="Run $make depend now?"
16744         . UU/myread
16745         case "$ans" in
16746         y*)
16747                 $make depend && echo "Now you must run '$make'."
16748                 ;;
16749         *)
16750                 echo "You must run '$make depend' then '$make'."
16751                 ;;
16752         esac
16753 elif test -f [Mm]akefile; then
16754         echo " "
16755         echo "Now you must run a $make."
16756 else
16757         echo "Done."
16758 fi
16759
16760 if $test -f Policy.sh; then
16761     $cat <<EOM
16762
16763 If you compile $package on a different machine or from a different object
16764 directory, copy the Policy.sh file from this object directory to the
16765 new one before you run Configure -- this will help you with most of
16766 the policy defaults.
16767
16768 EOM
16769 fi
16770 if $test -f config.msg; then
16771     echo "Hmm.  I also noted the following information while running:"
16772     echo " "
16773     $cat config.msg >&4
16774     $rm -f config.msg
16775 fi
16776 $rm -f kit*isdone ark*isdone
16777 $rm -rf UU
16778
16779 : End of Configure
16780