Add -Wall in cflags, not in Configure.
[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 Tue Jul 31 18:10:25 EET DST 2001 [metaconfig 3.0 PL70]
24 # (with additional metaconfig patches by perlbug@perl.org)
25
26 cat >c1$$ <<EOF
27 ARGGGHHHH!!!!!
28
29 SCO csh still thinks true is false.  Write to SCO today and tell them that next
30 year Configure ought to "rm /bin/csh" unless they fix their blasted shell. :-)
31
32 (Actually, Configure ought to just patch csh in place.  Hmm.  Hmmmmm.  All
33 we'd have to do is go in and swap the && and || tokens, wherever they are.)
34
35 [End of diatribe. We now return you to your regularly scheduled programming...]
36 EOF
37 cat >c2$$ <<EOF
38
39 OOPS!  You naughty creature!  You didn't run Configure with sh!
40 I will attempt to remedy the situation by running sh for you...
41 EOF
42
43 true || cat c1$$ c2$$
44 true || exec sh $0 $argv:q
45
46 (exit $?0) || cat c2$$
47 (exit $?0) || exec sh $0 $argv:q
48 rm -f c1$$ c2$$
49
50 : compute my invocation name
51 me=$0
52 case "$0" in
53 */*)
54         me=`echo $0 | sed -e 's!.*/\(.*\)!\1!' 2>/dev/null`
55         test "$me" || me=$0
56         ;;
57 esac
58
59 : Proper separator for the PATH environment variable
60 p_=:
61 : On OS/2 this directory should exist if this is not floppy only system :-]
62 if test -d c:/. ; then
63     if test -n "$OS2_SHELL"; then
64                 p_=\;
65                 PATH=`cmd /c "echo %PATH%" | tr '\\\\' / `
66                 OS2_SHELL=`cmd /c "echo %OS2_SHELL%" | tr '\\\\' / | tr '[A-Z]' '[a-z]'`
67         elif test -n "$DJGPP"; then
68                 p_=\;
69         fi
70 fi
71
72 : Proper PATH setting
73 paths='/bin /usr/bin /usr/local/bin /usr/ucb /usr/local /usr/lbin'
74 paths="$paths /opt/bin /opt/local/bin /opt/local /opt/lbin"
75 paths="$paths /usr/5bin /etc /usr/gnu/bin /usr/new /usr/new/bin /usr/nbin"
76 paths="$paths /opt/gnu/bin /opt/new /opt/new/bin /opt/nbin"
77 paths="$paths /sys5.3/bin /sys5.3/usr/bin /bsd4.3/bin /bsd4.3/usr/ucb"
78 paths="$paths /bsd4.3/usr/bin /usr/bsd /bsd43/bin /usr/ccs/bin"
79 paths="$paths /etc /usr/lib /usr/ucblib /lib /usr/ccs/lib"
80 paths="$paths /sbin /usr/sbin /usr/libexec"
81
82 for p in $paths
83 do
84         case "$p_$PATH$p_" in
85         *$p_$p$p_*) ;;
86         *) test -d $p && PATH=$PATH$p_$p ;;
87         esac
88 done
89
90 PATH=.$p_$PATH
91 export PATH
92
93 : shall we be using ksh?
94 inksh=''
95 needksh=''
96 avoidksh=''
97 newsh=/bin/ksh
98 changesh=''
99 if (PATH=.; alias -x) >/dev/null 2>&1; then
100                 inksh=true
101 fi
102 if test -f /hp-ux -a -f /bin/ksh; then
103         needksh='to avoid sh bug in "here document" expansion'
104 fi
105 if test -d /usr/lpp -a -f /usr/bin/bsh -a -f /usr/bin/uname; then
106         if test X`/usr/bin/uname -v` = X4; then
107                 avoidksh="to avoid AIX 4's /bin/sh"
108                 newsh=/usr/bin/bsh
109         fi
110 fi
111 if test -f /osf_boot -a -f /usr/sbin/setld; then
112         if test X`/usr/bin/uname -s` = XOSF1; then
113                 avoidksh="to avoid Digital UNIX' ksh"
114                 newsh=/bin/sh
115                 unset BIN_SH # if this is 'xpg4' sh will start up ksh
116         fi
117 fi
118 case "$inksh/$needksh" in
119 /[a-z]*)
120                 ENV=''
121                 changesh=true
122                 reason="$needksh"
123         ;;
124 esac
125 case "$inksh/$avoidksh" in
126 true/[a-z]*)
127         changesh=true
128         reason="$avoidksh"
129         ;;
130 esac
131 case "$inksh/$needksh-$avoidksh-" in
132 true/--)
133                 cat <<EOM
134 (I see you are using the Korn shell.  Some ksh's blow up on $me,
135 mainly on older exotic systems.  If yours does, try the Bourne shell instead.)
136 EOM
137         ;;
138 esac
139 case "$changesh" in
140 true)
141         echo "(Feeding myself to $newsh $reason.)"
142         case "$0" in
143         Configure|*/Configure) exec $newsh $0 "$@";;
144         *) exec $newsh Configure "$@";;
145         esac
146         ;;
147 esac
148
149 : if needed set CDPATH to a harmless value that is not chatty
150 : avoid bash 2.02 problems with empty CDPATH.
151 case "$CDPATH" in
152 '')     ;;
153 *)      case "$SHELL" in
154         *bash*) CDPATH='.' ;;
155         *)              CDPATH='' ;;
156         esac
157         ;;
158 esac
159 : Configure runs within the UU subdirectory
160 test -d UU || mkdir UU
161 cd UU && rm -f ./*
162
163 ccname=''
164 ccversion=''
165 ccsymbols=''
166 cppccsymbols=''
167 cppsymbols=''
168 from=''
169 run=''
170 targetarch=''
171 to=''
172 usecrosscompile=''
173 perllibs=''
174 dynamic_ext=''
175 extensions=''
176 known_extensions=''
177 nonxs_ext=''
178 static_ext=''
179 useopcode=''
180 useposix=''
181 extras=''
182 d_bsd=''
183 d_eunice=''
184 d_xenix=''
185 eunicefix=''
186 Mcc=''
187 ar=''
188 awk=''
189 bash=''
190 bison=''
191 byacc=''
192 cat=''
193 chgrp=''
194 chmod=''
195 chown=''
196 comm=''
197 compress=''
198 cp=''
199 cpio=''
200 cpp=''
201 csh=''
202 date=''
203 echo=''
204 egrep=''
205 emacs=''
206 expr=''
207 find=''
208 flex=''
209 grep=''
210 gzip=''
211 inews=''
212 ksh=''
213 less=''
214 line=''
215 lint=''
216 ln=''
217 lp=''
218 lpr=''
219 ls=''
220 mail=''
221 mailx=''
222 make=''
223 mkdir=''
224 more=''
225 mv=''
226 nm=''
227 nroff=''
228 perl=''
229 pg=''
230 pmake=''
231 pr=''
232 rm=''
233 rmail=''
234 sed=''
235 sendmail=''
236 shar=''
237 sleep=''
238 smail=''
239 sort=''
240 submit=''
241 tail=''
242 tar=''
243 tbl=''
244 tee=''
245 test=''
246 touch=''
247 tr=''
248 troff=''
249 uname=''
250 uniq=''
251 uuname=''
252 vi=''
253 zcat=''
254 zip=''
255 full_ar=''
256 full_sed=''
257 libswanted=''
258 hint=''
259 myuname=''
260 osname=''
261 osvers=''
262 Author=''
263 Date=''
264 Header=''
265 Id=''
266 Locker=''
267 Log=''
268 RCSfile=''
269 Revision=''
270 Source=''
271 State=''
272 _a=''
273 _exe=''
274 _o=''
275 archobjs=''
276 exe_ext=''
277 firstmakefile=''
278 lib_ext=''
279 obj_ext=''
280 path_sep=''
281 afs=''
282 afsroot=''
283 alignbytes=''
284 ansi2knr=''
285 archlib=''
286 archlibexp=''
287 d_archlib=''
288 installarchlib=''
289 archname=''
290 myarchname=''
291 d_atolf=''
292 d_atoll=''
293 baserev=''
294 bin=''
295 binexp=''
296 installbin=''
297 bincompat5005=''
298 d_bincompat5005=''
299 byteorder=''
300 cc=''
301 ccflags=''
302 cppflags=''
303 ldflags=''
304 lkflags=''
305 locincpth=''
306 optimize=''
307 cf_email=''
308 cf_by=''
309 cf_time=''
310 charsize=''
311 contains=''
312 cpp_stuff=''
313 cpplast=''
314 cppminus=''
315 cpprun=''
316 cppstdin=''
317 d__fwalk=''
318 d_access=''
319 d_accessx=''
320 d_alarm=''
321 d_attribut=''
322 d_bcmp=''
323 d_bcopy=''
324 d_bzero=''
325 d_casti32=''
326 castflags=''
327 d_castneg=''
328 d_chown=''
329 d_chroot=''
330 d_chsize=''
331 d_closedir=''
332 d_void_closedir=''
333 d_cmsghdr_s=''
334 d_const=''
335 cryptlib=''
336 d_crypt=''
337 d_csh=''
338 full_csh=''
339 d_cuserid=''
340 d_dbl_dig=''
341 d_dbminitproto=''
342 d_difftime=''
343 d_dlerror=''
344 d_dlopen=''
345 d_dlsymun=''
346 d_dosuid=''
347 d_suidsafe=''
348 d_drand48proto=''
349 d_dup2=''
350 d_eaccess=''
351 d_endgrent=''
352 d_endhent=''
353 d_endnent=''
354 d_endpent=''
355 d_endpwent=''
356 d_endsent=''
357 d_fchdir=''
358 d_fchmod=''
359 d_fchown=''
360 d_fcntl=''
361 d_fcntl_can_lock=''
362 d_fd_macros=''
363 d_fd_set=''
364 d_fds_bits=''
365 d_fgetpos=''
366 d_flexfnam=''
367 d_flock=''
368 d_flockproto=''
369 d_fork=''
370 d_fpos64_t=''
371 d_frexpl=''
372 d_fs_data_s=''
373 d_fseeko=''
374 d_fsetpos=''
375 d_fstatfs=''
376 d_fsync=''
377 d_ftello=''
378 d_ftime=''
379 d_gettimeod=''
380 d_Gconvert=''
381 d_getcwd=''
382 d_getespwnam=''
383 d_getfsstat=''
384 d_getgrent=''
385 d_getgrps=''
386 d_gethbyaddr=''
387 d_gethbyname=''
388 d_gethent=''
389 aphostname=''
390 d_gethname=''
391 d_phostname=''
392 d_uname=''
393 d_gethostprotos=''
394 d_getitimer=''
395 d_getlogin=''
396 d_getmnt=''
397 d_getmntent=''
398 d_getnbyaddr=''
399 d_getnbyname=''
400 d_getnent=''
401 d_getnetprotos=''
402 d_getpagsz=''
403 d_getpent=''
404 d_getpgid=''
405 d_getpgrp2=''
406 d_bsdgetpgrp=''
407 d_getpgrp=''
408 d_getppid=''
409 d_getprior=''
410 d_getpbyname=''
411 d_getpbynumber=''
412 d_getprotoprotos=''
413 d_getprpwnam=''
414 d_getpwent=''
415 d_getsent=''
416 d_getservprotos=''
417 d_getspnam=''
418 d_getsbyname=''
419 d_getsbyport=''
420 d_gnulibc=''
421 d_hasmntopt=''
422 d_htonl=''
423 d_iconv=''
424 d_inetaton=''
425 d_int64_t=''
426 d_isascii=''
427 d_isnan=''
428 d_isnanl=''
429 d_killpg=''
430 d_lchown=''
431 d_ldbl_dig=''
432 d_link=''
433 d_locconv=''
434 d_lockf=''
435 d_longdbl=''
436 longdblsize=''
437 d_longlong=''
438 longlongsize=''
439 d_lseekproto=''
440 d_lstat=''
441 d_madvise=''
442 d_mblen=''
443 d_mbstowcs=''
444 d_mbtowc=''
445 d_memchr=''
446 d_memcmp=''
447 d_memcpy=''
448 d_memmove=''
449 d_memset=''
450 d_mkdir=''
451 d_mkdtemp=''
452 d_mkfifo=''
453 d_mkstemp=''
454 d_mkstemps=''
455 d_mktime=''
456 d_mmap=''
457 mmaptype=''
458 d_modfl=''
459 d_modfl_pow32_bug=''
460 d_mprotect=''
461 d_msg=''
462 d_msgctl=''
463 d_msgget=''
464 d_msghdr_s=''
465 d_msgrcv=''
466 d_msgsnd=''
467 d_msync=''
468 d_munmap=''
469 d_nice=''
470 d_nl_langinfo=''
471 d_off64_t=''
472 d_open3=''
473 d_fpathconf=''
474 d_pathconf=''
475 d_pause=''
476 d_pipe=''
477 d_poll=''
478 d_portable=''
479 d_old_pthread_create_joinable=''
480 old_pthread_create_joinable=''
481 d_pthread_atfork=''
482 d_pthread_yield=''
483 d_sched_yield=''
484 sched_yield=''
485 d_qgcvt=''
486 d_readdir=''
487 d_rewinddir=''
488 d_seekdir=''
489 d_telldir=''
490 d_readlink=''
491 d_readv=''
492 d_recvmsg=''
493 d_rename=''
494 d_rmdir=''
495 d_safebcpy=''
496 d_safemcpy=''
497 d_sanemcmp=''
498 d_sbrkproto=''
499 d_select=''
500 d_sem=''
501 d_semctl=''
502 d_semget=''
503 d_semop=''
504 d_sendmsg=''
505 d_setegid=''
506 d_seteuid=''
507 d_setgrent=''
508 d_setgrps=''
509 d_sethent=''
510 d_setitimer=''
511 d_setlinebuf=''
512 d_setlocale=''
513 d_setnent=''
514 d_setpent=''
515 d_setpgid=''
516 d_setpgrp2=''
517 d_bsdsetpgrp=''
518 d_setpgrp=''
519 d_setprior=''
520 d_setproctitle=''
521 d_setpwent=''
522 d_setregid=''
523 d_setresgid=''
524 d_setresuid=''
525 d_setreuid=''
526 d_setrgid=''
527 d_setruid=''
528 d_setsent=''
529 d_setsid=''
530 d_setvbuf=''
531 d_sfio=''
532 usesfio=''
533 d_shm=''
534 d_shmat=''
535 d_shmatprototype=''
536 shmattype=''
537 d_shmctl=''
538 d_shmdt=''
539 d_shmget=''
540 d_sigaction=''
541 d_sigprocmask=''
542 d_sigsetjmp=''
543 d_sockatmark=''
544 d_sockatmarkproto=''
545 d_msg_ctrunc=''
546 d_msg_dontroute=''
547 d_msg_oob=''
548 d_msg_peek=''
549 d_msg_proxy=''
550 d_oldsock=''
551 d_scm_rights=''
552 d_socket=''
553 d_sockpair=''
554 sockethdr=''
555 socketlib=''
556 d_socklen_t=''
557 d_socks5_init=''
558 d_sqrtl=''
559 d_sresgproto=''
560 d_sresuproto=''
561 d_statblks=''
562 d_statfs_f_flags=''
563 d_statfs_s=''
564 d_fstatvfs=''
565 d_statvfs=''
566 d_stdio_cnt_lval=''
567 d_stdio_ptr_lval=''
568 d_stdio_ptr_lval_nochange_cnt=''
569 d_stdio_ptr_lval_sets_cnt=''
570 d_stdiobase=''
571 d_stdstdio=''
572 stdio_base=''
573 stdio_bufsiz=''
574 stdio_cnt=''
575 stdio_filbuf=''
576 stdio_ptr=''
577 d_index=''
578 d_strchr=''
579 d_strcoll=''
580 d_strctcpy=''
581 d_strerrm=''
582 d_strerror=''
583 d_sysernlst=''
584 d_syserrlst=''
585 d_strftime=''
586 d_strtod=''
587 d_strtol=''
588 d_strtold=''
589 d_strtoll=''
590 d_strtoq=''
591 d_strtoul=''
592 d_strtoull=''
593 d_strtouq=''
594 d_strxfrm=''
595 d_symlink=''
596 d_syscall=''
597 d_syscallproto=''
598 d_sysconf=''
599 d_system=''
600 d_tcgetpgrp=''
601 d_tcsetpgrp=''
602 d_telldirproto=''
603 d_time=''
604 timetype=''
605 clocktype=''
606 d_times=''
607 d_truncate=''
608 d_tzname=''
609 d_u32align=''
610 d_ualarm=''
611 d_umask=''
612 d_semctl_semid_ds=''
613 d_semctl_semun=''
614 d_union_semun=''
615 d_usleep=''
616 d_usleepproto=''
617 d_ustat=''
618 d_vfork=''
619 usevfork=''
620 d_voidsig=''
621 signal_t=''
622 d_volatile=''
623 d_charvspr=''
624 d_vprintf=''
625 d_wait4=''
626 d_waitpid=''
627 d_wcstombs=''
628 d_wctomb=''
629 d_writev=''
630 dlext=''
631 cccdlflags=''
632 ccdlflags=''
633 dlsrc=''
634 ld=''
635 lddlflags=''
636 usedl=''
637 doublesize=''
638 ebcdic=''
639 fflushNULL=''
640 fflushall=''
641 fpossize=''
642 fpostype=''
643 gccosandvers=''
644 gccversion=''
645 gidformat=''
646 gidsign=''
647 gidsize=''
648 gidtype=''
649 groupstype=''
650 h_fcntl=''
651 h_sysfile=''
652 i_arpainet=''
653 db_hashtype=''
654 db_prefixtype=''
655 db_version_major=''
656 db_version_minor=''
657 db_version_patch=''
658 i_db=''
659 i_dbm=''
660 i_rpcsvcdbm=''
661 d_dirnamlen=''
662 direntrytype=''
663 i_dirent=''
664 i_dld=''
665 i_dlfcn=''
666 i_fcntl=''
667 i_float=''
668 i_gdbm=''
669 d_grpasswd=''
670 i_grp=''
671 i_iconv=''
672 i_ieeefp=''
673 i_inttypes=''
674 i_langinfo=''
675 i_libutil=''
676 i_limits=''
677 i_locale=''
678 i_machcthr=''
679 i_malloc=''
680 i_math=''
681 i_memory=''
682 i_mntent=''
683 i_ndbm=''
684 i_netdb=''
685 i_neterrno=''
686 i_netinettcp=''
687 i_niin=''
688 i_sysin=''
689 i_poll=''
690 i_prot=''
691 i_pthread=''
692 d_pwage=''
693 d_pwchange=''
694 d_pwclass=''
695 d_pwcomment=''
696 d_pwexpire=''
697 d_pwgecos=''
698 d_pwpasswd=''
699 d_pwquota=''
700 i_pwd=''
701 i_sfio=''
702 i_shadow=''
703 i_socks=''
704 i_stddef=''
705 i_stdlib=''
706 i_string=''
707 strings=''
708 i_sunmath=''
709 i_sysaccess=''
710 i_sysdir=''
711 i_sysfile=''
712 d_voidtty=''
713 i_bsdioctl=''
714 i_sysfilio=''
715 i_sysioctl=''
716 i_syssockio=''
717 i_syslog=''
718 i_sysmman=''
719 i_sysmode=''
720 i_sysmount=''
721 i_sysndir=''
722 i_sysparam=''
723 i_sysresrc=''
724 i_syssecrt=''
725 i_sysselct=''
726 i_sysstat=''
727 i_sysstatfs=''
728 i_sysstatvfs=''
729 i_systimes=''
730 i_systypes=''
731 i_sysuio=''
732 i_sysun=''
733 i_sysutsname=''
734 i_sysvfs=''
735 i_syswait=''
736 i_sgtty=''
737 i_termio=''
738 i_termios=''
739 i_systime=''
740 i_systimek=''
741 i_time=''
742 timeincl=''
743 i_unistd=''
744 i_ustat=''
745 i_utime=''
746 i_values=''
747 i_stdarg=''
748 i_varargs=''
749 i_varhdr=''
750 i_vfork=''
751 inc_version_list=''
752 inc_version_list_init=''
753 installprefix=''
754 installprefixexp=''
755 installstyle=''
756 installusrbinperl=''
757 intsize=''
758 longsize=''
759 shortsize=''
760 issymlink=''
761 libc=''
762 ldlibpthname=''
763 libperl=''
764 shrpenv=''
765 useshrplib=''
766 glibpth=''
767 libpth=''
768 loclibpth=''
769 plibpth=''
770 xlibpth=''
771 ignore_versioned_solibs=''
772 libs=''
773 libsdirs=''
774 libsfiles=''
775 libsfound=''
776 libspath=''
777 lns=''
778 d_PRIEUldbl=''
779 d_PRIFUldbl=''
780 d_PRIGUldbl=''
781 d_PRIeldbl=''
782 d_PRIfldbl=''
783 d_PRIgldbl=''
784 d_SCNfldbl=''
785 sPRIEUldbl=''
786 sPRIFUldbl=''
787 sPRIGUldbl=''
788 sPRIeldbl=''
789 sPRIfldbl=''
790 sPRIgldbl=''
791 sSCNfldbl=''
792 lseeksize=''
793 lseektype=''
794 make_set_make=''
795 d_mymalloc=''
796 freetype=''
797 mallocobj=''
798 mallocsrc=''
799 malloctype=''
800 usemymalloc=''
801 installman1dir=''
802 man1dir=''
803 man1direxp=''
804 man1ext=''
805 installman3dir=''
806 man3dir=''
807 man3direxp=''
808 man3ext=''
809 modetype=''
810 multiarch=''
811 mydomain=''
812 myhostname=''
813 phostname=''
814 c=''
815 n=''
816 d_eofnblk=''
817 eagain=''
818 o_nonblock=''
819 rd_nodata=''
820 need_va_copy=''
821 netdb_hlen_type=''
822 netdb_host_type=''
823 netdb_name_type=''
824 netdb_net_type=''
825 groupcat=''
826 hostcat=''
827 passcat=''
828 orderlib=''
829 ranlib=''
830 d_perl_otherlibdirs=''
831 otherlibdirs=''
832 package=''
833 spackage=''
834 pager=''
835 api_revision=''
836 api_subversion=''
837 api_version=''
838 api_versionstring=''
839 patchlevel=''
840 perl_patchlevel=''
841 revision=''
842 subversion=''
843 version=''
844 version_patchlevel_string=''
845 perl5=''
846 perladmin=''
847 perlpath=''
848 d_nv_preserves_uv=''
849 d_nv_preserves_uv_bits=''
850 i16size=''
851 i16type=''
852 i32size=''
853 i32type=''
854 i64size=''
855 i64type=''
856 i8size=''
857 i8type=''
858 ivsize=''
859 ivtype=''
860 nvsize=''
861 nvtype=''
862 u16size=''
863 u16type=''
864 u32size=''
865 u32type=''
866 u64size=''
867 u64type=''
868 u8size=''
869 u8type=''
870 uvsize=''
871 uvtype=''
872 ivdformat=''
873 nvEUformat=''
874 nvFUformat=''
875 nvGUformat=''
876 nveformat=''
877 nvfformat=''
878 nvgformat=''
879 uvXUformat=''
880 uvoformat=''
881 uvuformat=''
882 uvxformat=''
883 pidtype=''
884 prefix=''
885 prefixexp=''
886 installprivlib=''
887 privlib=''
888 privlibexp=''
889 prototype=''
890 ptrsize=''
891 d_PRIXU64=''
892 d_PRId64=''
893 d_PRIi64=''
894 d_PRIo64=''
895 d_PRIu64=''
896 d_PRIx64=''
897 sPRIXU64=''
898 sPRId64=''
899 sPRIi64=''
900 sPRIo64=''
901 sPRIu64=''
902 sPRIx64=''
903 d_quad=''
904 quadkind=''
905 quadtype=''
906 uquadtype=''
907 drand01=''
908 randbits=''
909 randfunc=''
910 randseedtype=''
911 seedfunc=''
912 installscript=''
913 scriptdir=''
914 scriptdirexp=''
915 selectminbits=''
916 selecttype=''
917 sh=''
918 sig_count=''
919 sig_name=''
920 sig_name_init=''
921 sig_num=''
922 sig_num_init=''
923 sig_size=''
924 installsitearch=''
925 sitearch=''
926 sitearchexp=''
927 installsitebin=''
928 sitebin=''
929 sitebinexp=''
930 installsitelib=''
931 sitelib=''
932 sitelib_stem=''
933 sitelibexp=''
934 siteprefix=''
935 siteprefixexp=''
936 sizesize=''
937 sizetype=''
938 so=''
939 socksizetype=''
940 sharpbang=''
941 shsharp=''
942 spitshell=''
943 src=''
944 ssizetype=''
945 startperl=''
946 startsh=''
947 stdchar=''
948 d_stdio_stream_array=''
949 stdio_stream_array=''
950 sysman=''
951 trnl=''
952 uidformat=''
953 uidsign=''
954 uidsize=''
955 uidtype=''
956 archname64=''
957 use64bitall=''
958 use64bitint=''
959 ccflags_uselargefiles=''
960 ldflags_uselargefiles=''
961 libswanted_uselargefiles=''
962 uselargefiles=''
963 uselongdouble=''
964 usemorebits=''
965 usemultiplicity=''
966 nm_opt=''
967 nm_so_opt=''
968 runnm=''
969 usenm=''
970 useperlio=''
971 usesocks=''
972 d_oldpthreads=''
973 use5005threads=''
974 useithreads=''
975 usereentrant=''
976 usethreads=''
977 incpath=''
978 mips_type=''
979 usrinc=''
980 d_vendorarch=''
981 installvendorarch=''
982 vendorarch=''
983 vendorarchexp=''
984 d_vendorbin=''
985 installvendorbin=''
986 vendorbin=''
987 vendorbinexp=''
988 d_vendorlib=''
989 installvendorlib=''
990 vendorlib=''
991 vendorlib_stem=''
992 vendorlibexp=''
993 usevendorprefix=''
994 vendorprefix=''
995 vendorprefixexp=''
996 versiononly=''
997 defvoidused=''
998 voidflags=''
999 pm_apiversion=''
1000 xs_apiversion=''
1001 yacc=''
1002 yaccflags=''
1003 CONFIG=''
1004
1005 define='define'
1006 undef='undef'
1007 smallmach='pdp11 i8086 z8000 i80286 iAPX286'
1008 rmlist=''
1009
1010 : We must find out about Eunice early
1011 eunicefix=':'
1012 if test -f /etc/unixtovms; then
1013         eunicefix=/etc/unixtovms
1014 fi
1015 if test -f /etc/unixtovms.exe; then
1016         eunicefix=/etc/unixtovms.exe
1017 fi
1018
1019 i_whoami=''
1020 ccname=''
1021 ccversion=''
1022 perllibs=''
1023 : set useposix=false in your hint file to disable the POSIX extension.
1024 useposix=true
1025 : set useopcode=false in your hint file to disable the Opcode extension.
1026 useopcode=true
1027 : Trailing extension.  Override this in a hint file, if needed.
1028 _exe=''
1029 : Extra object files, if any, needed on this platform.
1030 archobjs=''
1031 archname=''
1032 : Possible local include directories to search.
1033 : Set locincpth to "" in a hint file to defeat local include searches.
1034 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
1035 locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
1036 :
1037 : no include file wanted by default
1038 inclwanted=''
1039
1040 groupstype=''
1041 libnames=''
1042 : change the next line if compiling for Xenix/286 on Xenix/386
1043 xlibpth='/usr/lib/386 /lib/386'
1044 : Possible local library directories to search.
1045 loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
1046 loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
1047
1048 : general looking path for locating libraries
1049 glibpth="/lib /usr/lib $xlibpth"
1050 glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
1051 test -f /usr/shlib/libc.so && glibpth="/usr/shlib $glibpth"
1052 test -f /shlib/libc.so     && glibpth="/shlib $glibpth"
1053
1054 : Private path used by Configure to find libraries.  Its value
1055 : is prepended to libpth. This variable takes care of special
1056 : machines, like the mips.  Usually, it should be empty.
1057 plibpth=''
1058
1059 : default library list
1060 libswanted=''
1061 : some systems want to use only the non-versioned libso:s
1062 ignore_versioned_solibs=''
1063 archname64=''
1064 ccflags_uselargefiles=''
1065 ldflags_uselargefiles=''
1066 libswanted_uselargefiles=''
1067 : set usemultiplicity on the Configure command line to enable multiplicity.
1068 : set usesocks on the Configure command line to enable socks.
1069 : set usethreads on the Configure command line to enable threads.
1070 usereentrant='undef'
1071 : full support for void wanted by default
1072 defvoidused=15
1073
1074 : List of libraries we want.
1075 : If anyone needs -lnet, put it in a hint file.
1076 libswanted='sfio socket bind inet nsl nm ndbm gdbm dbm db malloc dl'
1077 libswanted="$libswanted dld ld sun m c cposix posix"
1078 libswanted="$libswanted ndir dir crypt sec"
1079 libswanted="$libswanted ucb bsd BSD PW x iconv util"
1080 : We probably want to search /usr/shlib before most other libraries.
1081 : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
1082 glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
1083 glibpth="/usr/shlib $glibpth"
1084 : Do not use vfork unless overridden by a hint file.
1085 usevfork=false
1086
1087 : Find the basic shell for Bourne shell scripts
1088 case "$sh" in
1089 '')
1090         case "$SYSTYPE" in
1091         *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
1092         *) xxx='/bin/sh';;
1093         esac
1094         if test -f "$xxx"; then
1095                 sh="$xxx"
1096         else
1097                 : Build up a list and do a single loop so we can 'break' out.
1098                 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1099                 for xxx in sh bash ksh pdksh ash; do
1100                         for p in $pth; do
1101                                 try="$try ${p}/${xxx}"
1102                         done
1103                 done
1104                 for xxx in $try; do
1105                         if test -f "$xxx"; then
1106                                 sh="$xxx";
1107                                 break
1108                         elif test -f "$xxx.exe"; then
1109                                 sh="$xxx";
1110                                 break
1111                         fi
1112                 done
1113         fi
1114         ;;
1115 esac
1116
1117 case "$sh" in
1118 '')     cat <<EOM >&2
1119 $me:  Fatal Error:  I can't find a Bourne Shell anywhere.  
1120
1121 Usually it's in /bin/sh.  How did you even get this far?
1122 Please contact me (Perl Maintainers) at perlbug@perl.org and 
1123 we'll try to straighten this all out.
1124 EOM
1125         exit 1
1126         ;;
1127 esac
1128
1129 : see if sh knows # comments
1130 if `$sh -c '#' >/dev/null 2>&1`; then
1131         shsharp=true
1132         spitshell=cat
1133         xcat=/bin/cat
1134         test -f $xcat || xcat=/usr/bin/cat
1135         echo "#!$xcat" >sharp
1136         $eunicefix sharp
1137         chmod +x sharp
1138         ./sharp > today
1139         if test -s today; then
1140                 sharpbang='#!'
1141         else
1142                 echo "#! $xcat" > sharp
1143                 $eunicefix sharp
1144                 chmod +x sharp
1145                 ./sharp > today
1146                 if test -s today; then
1147                         sharpbang='#! '
1148                 else
1149                         sharpbang=': use '
1150                 fi
1151         fi
1152 else
1153         echo " "
1154         echo "Your $sh doesn't grok # comments--I will strip them later on."
1155         shsharp=false
1156         cd ..
1157         echo "exec grep -v '^[  ]*#'" >spitshell
1158         chmod +x spitshell
1159         $eunicefix spitshell
1160         spitshell=`pwd`/spitshell
1161         cd UU
1162         echo "I presume that if # doesn't work, #! won't work either!"
1163         sharpbang=': use '
1164 fi
1165 rm -f sharp today
1166
1167 : figure out how to guarantee sh startup
1168 case "$startsh" in
1169 '') startsh=${sharpbang}${sh} ;;
1170 *)
1171 esac
1172 cat >sharp <<EOSS
1173 $startsh
1174 set abc
1175 test "$?abc" != 1
1176 EOSS
1177
1178 chmod +x sharp
1179 $eunicefix sharp
1180 if ./sharp; then
1181         : echo "Yup, it does."
1182 else
1183         echo "Hmm... '$startsh' does not guarantee sh startup..."
1184         echo "You may have to fix up the shell scripts to make sure $sh runs them."
1185 fi
1186 rm -f sharp
1187
1188
1189 : Save command line options in file UU/cmdline.opt for later use in
1190 : generating config.sh.
1191 cat > cmdline.opt <<EOSH
1192 # Configure command line arguments.
1193 config_arg0='$0'
1194 config_args='$*'
1195 config_argc=$#
1196 EOSH
1197 argn=1
1198 args_exp=''
1199 args_sep=''
1200 for arg in "$@"; do
1201         cat >>cmdline.opt <<EOSH
1202 config_arg$argn='$arg'
1203 EOSH
1204         # Extreme backslashitis: replace each ' by '"'"'
1205         cat <<EOC | sed -e "s/'/'"'"'"'"'"'"'/g" > cmdl.opt
1206 $arg
1207 EOC
1208         arg_exp=`cat cmdl.opt`
1209         args_exp="$args_exp$args_sep'$arg_exp'"
1210         argn=`expr $argn + 1`
1211         args_sep=' '
1212 done
1213 # args_exp is good for restarting self: eval "set X $args_exp"; shift; $0 "$@"
1214 # used by ./hints/os2.sh
1215 rm -f cmdl.opt
1216
1217 : produce awk script to parse command line options
1218 cat >options.awk <<'EOF'
1219 BEGIN {
1220         optstr = "A:dD:eEf:hKOrsSU:V";  # getopt-style specification
1221
1222         len = length(optstr);
1223         for (i = 1; i <= len; i++) {
1224                 c = substr(optstr, i, 1);
1225                 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
1226                 if (a == ":") {
1227                         arg[c] = 1;
1228                         i++;
1229                 }
1230                 opt[c] = 1;
1231         }
1232 }
1233 {
1234         expect = 0;
1235         str = $0;
1236         if (substr(str, 1, 1) != "-") {
1237                 printf("'%s'\n", str);
1238                 next;
1239         }
1240         len = length($0);
1241         for (i = 2; i <= len; i++) {
1242                 c = substr(str, i, 1);
1243                 if (!opt[c]) {
1244                         printf("-%s\n", substr(str, i));
1245                         next;
1246                 }
1247                 printf("-%s\n", c);
1248                 if (arg[c]) {
1249                         if (i < len)
1250                                 printf("'%s'\n", substr(str, i + 1));
1251                         else
1252                                 expect = 1;
1253                         next;
1254                 }
1255         }
1256 }
1257 END {
1258         if (expect)
1259                 print "?";
1260 }
1261 EOF
1262
1263 : process the command line options
1264 set X `for arg in "$@"; do echo "X$arg"; done |
1265         sed -e s/X// | awk -f options.awk`
1266 eval "set $*"
1267 shift
1268 rm -f options.awk
1269
1270 : set up default values
1271 fastread=''
1272 reuseval=false
1273 config_sh=''
1274 alldone=''
1275 error=''
1276 silent=''
1277 extractsh=''
1278 override=''
1279 knowitall=''
1280 rm -f optdef.sh posthint.sh
1281 cat >optdef.sh <<EOS
1282 $startsh
1283 EOS
1284
1285
1286 : option parsing
1287 while test $# -gt 0; do
1288         case "$1" in
1289         -d) shift; fastread=yes;;
1290         -e) shift; alldone=cont;;
1291         -f)
1292                 shift
1293                 cd ..
1294                 if test -r "$1"; then
1295                         config_sh="$1"
1296                 else
1297                         echo "$me: cannot read config file $1." >&2
1298                         error=true
1299                 fi
1300                 cd UU
1301                 shift;;
1302         -h) shift; error=true;;
1303         -r) shift; reuseval=true;;
1304         -s) shift; silent=true; realsilent=true;;
1305         -E) shift; alldone=exit;;
1306         -K) shift; knowitall=true;;
1307         -O) shift; override=true;;
1308         -S) shift; silent=true; extractsh=true;;
1309         -D)
1310                 shift
1311                 case "$1" in
1312                 *=)
1313                         echo "$me: use '-U symbol=', not '-D symbol='." >&2
1314                         echo "$me: ignoring -D $1" >&2
1315                         ;;
1316                 *=*) echo "$1" | \
1317                                 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1318                 *) echo "$1='define'" >> optdef.sh;;
1319                 esac
1320                 shift
1321                 ;;
1322         -U)
1323                 shift
1324                 case "$1" in
1325                 *=) echo "$1" >> optdef.sh;;
1326                 *=*)
1327                         echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1328                         echo "$me: ignoring -U $1" >&2
1329                         ;;
1330                 *) echo "$1='undef'" >> optdef.sh;;
1331                 esac
1332                 shift
1333                 ;;
1334         -A)
1335             shift
1336             xxx=''
1337             yyy="$1"
1338             zzz=''
1339             uuu=undef
1340             case "$yyy" in
1341             *=*) zzz=`echo $yyy|sed 's!=.*!!'`
1342                  case "$zzz" in
1343                  *:*) zzz='' ;;
1344                  *)   xxx=append
1345                       zzz=" "`echo $yyy|sed 's!^[^=]*=!!'` 
1346                       yyy=`echo $yyy|sed 's!=.*!!'` ;;
1347                  esac
1348                  ;;
1349             esac
1350             case "$xxx" in
1351             '')  case "$yyy" in
1352                  *:*) xxx=`echo $yyy|sed 's!:.*!!'`
1353                       yyy=`echo $yyy|sed 's!^[^:]*:!!'`
1354                       zzz=`echo $yyy|sed 's!^[^=]*=!!'`
1355                       yyy=`echo $yyy|sed 's!=.*!!'` ;;
1356                  *)   xxx=`echo $yyy|sed 's!:.*!!'`
1357                       yyy=`echo $yyy|sed 's!^[^:]*:!!'` ;;
1358                  esac
1359                  ;;       
1360             esac
1361             case "$xxx" in
1362             append)
1363                 echo "$yyy=\"\${$yyy}$zzz\""    >> posthint.sh ;;
1364             clear)
1365                 echo "$yyy=''"                  >> posthint.sh ;;
1366             define)
1367                 case "$zzz" in
1368                 '') zzz=define ;;
1369                 esac
1370                 echo "$yyy='$zzz'"              >> posthint.sh ;;
1371             eval)
1372                 echo "eval \"$yyy=$zzz\""       >> posthint.sh ;;
1373             prepend)
1374                 echo "$yyy=\"$zzz\${$yyy}\""    >> posthint.sh ;;
1375             undef)
1376                 case "$zzz" in
1377                 '') zzz="$uuu" ;;
1378                 esac
1379                 echo "$yyy=$zzz"                >> posthint.sh ;;
1380             *)  echo "$me: unknown -A command '$xxx', ignoring -A $1" >&2 ;;
1381             esac
1382             shift
1383             ;;
1384         -V) echo "$me generated by metaconfig 3.0 PL70." >&2
1385             exit 0;;
1386         --) break;;
1387         -*) echo "$me: unknown option $1" >&2; shift; error=true;;
1388         *) break;;
1389         esac
1390 done
1391
1392 case "$error" in
1393 true)
1394         cat >&2 <<EOM
1395 Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
1396                  [-U symbol] [-U symbol=] [-A command:symbol...]
1397   -d : use defaults for all answers.
1398   -e : go on without questioning past the production of config.sh.
1399   -f : specify an alternate default configuration file.
1400   -h : print this help message and exit (with an error status).
1401   -r : reuse C symbols value if possible (skips costly nm extraction).
1402   -s : silent mode, only echoes questions and essential information.
1403   -D : define symbol to have some value:
1404          -D symbol         symbol gets the value 'define'
1405          -D symbol=value   symbol gets the value 'value'
1406   -E : stop at the end of questions, after having produced config.sh.
1407   -K : do not use unless you know what you are doing.
1408   -O : let -D and -U override definitions from loaded configuration file.
1409   -S : perform variable substitutions on all .SH files (can mix with -f)
1410   -U : undefine symbol:
1411          -U symbol    symbol gets the value 'undef'
1412          -U symbol=   symbol gets completely empty
1413   -A : manipulate symbol after the platform specific hints have been applied:
1414          -A symbol=value                append " "value to symbol
1415          -A append:symbol=value         append value to symbol
1416          -A define:symbol=value         define symbol to have value
1417          -A clear:symbol                define symbol to be ''
1418          -A define:symbol               define symbol to be 'define'
1419          -A eval:symbol=value           define symbol to be eval of value
1420          -A prepend:symbol=value        prepend value to symbol
1421          -A undef:symbol                define symbol to be 'undef'
1422          -A undef:symbol=               define symbol to be ''
1423   -V : print version number and exit (with a zero status).
1424 EOM
1425         exit 1
1426         ;;
1427 esac
1428
1429 : Sanity checks
1430 case "$fastread$alldone" in
1431 yescont|yesexit) ;;
1432 *)
1433         case "$extractsh" in
1434         true) ;;
1435         *)
1436                 if test ! -t 0; then
1437                         echo "Say 'sh Configure', not 'sh <Configure'"
1438                         exit 1
1439                 fi
1440                 ;;
1441         esac
1442         ;;
1443 esac
1444
1445 exec 4>&1
1446 case "$silent" in
1447 true) exec 1>/dev/null;;
1448 esac
1449
1450 : run the defines and the undefines, if any, but leave the file out there...
1451 touch optdef.sh
1452 . ./optdef.sh
1453 : create the posthint manipulation script and leave the file out there...
1454 touch posthint.sh
1455
1456 : set package name
1457 package=perl5
1458 first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1459 last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1460 case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1461 ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1462 *) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1463 esac
1464
1465 : Some greps do not return status, grrr.
1466 echo "grimblepritz" >grimble
1467 if grep blurfldyick grimble >/dev/null 2>&1 ; then
1468         contains=contains
1469 elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1470         contains=grep
1471 else
1472         contains=contains
1473 fi
1474 rm -f grimble
1475 : the following should work in any shell
1476 case "$contains" in
1477 contains*)
1478         echo " "
1479         echo "AGH!  Grep doesn't return a status.  Attempting remedial action."
1480         cat >contains <<'EOSS'
1481 grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1482 EOSS
1483 chmod +x contains
1484 esac
1485
1486 : Find the path to the source tree
1487 case "$src" in
1488 '') case "$0" in
1489     */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`
1490          case "$src" in
1491          /*)    ;;
1492          .)     ;;
1493          *)     src=`cd ../$src && pwd` ;;
1494          esac
1495          ;;
1496     *)   src='.';;
1497     esac;;
1498 esac
1499 case "$src" in
1500 '')     src=/
1501         rsrc=/
1502         ;;
1503 /*) rsrc="$src";;
1504 *) rsrc="../$src";;
1505 esac
1506 if test -f $rsrc/Configure && \
1507         $contains "^package=$package$" $rsrc/Configure >/dev/null 2>&1
1508 then
1509    : found it, so we are ok.
1510 else
1511         rsrc=''
1512         for src in . .. ../.. ../../.. ../../../..; do
1513                 if test -f ../$src/Configure && \
1514                         $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1515                 then
1516                         rsrc=../$src
1517                         break
1518                 fi
1519         done
1520 fi
1521 case "$rsrc" in
1522 '')
1523         cat <<EOM >&4
1524
1525 Sorry, I can't seem to locate the source dir for $package.  Please start
1526 Configure with an explicit path -- i.e. /some/path/Configure.
1527
1528 EOM
1529         exit 1
1530         ;;
1531 ../.)   rsrc='..';;
1532 *)
1533         echo " "
1534         echo "Sources for $package found in \"$src\"." >&4
1535         ;;
1536 esac
1537
1538 : script used to extract .SH files with variable substitutions
1539 cat >extract <<'EOS'
1540 PERL_CONFIG_SH=true
1541 echo "Doing variable substitutions on .SH files..."
1542 if test -f MANIFEST; then
1543         set x `awk '{print $1}' < MANIFEST | grep '\.SH$'`
1544 else
1545         echo "(Looking for .SH files under the source directory.)"
1546         set x `(cd $src; find . -name "*.SH" -print)`
1547 fi
1548 shift
1549 case $# in
1550 0) set x `(cd $src; echo *.SH)`; shift;;
1551 esac
1552 if test ! -f $src/$1; then
1553         shift
1554 fi
1555 mkdir_p='
1556 name=$1;
1557 create="";
1558 while test $name; do
1559         if test ! -d "$name"; then
1560                 create="$name $create";
1561                 name=`echo $name | sed -e "s|^[^/]*$||"`;
1562                 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
1563         else
1564                 name="";
1565         fi;
1566 done;
1567 for file in $create; do
1568         mkdir $file;
1569 done
1570 '
1571 for file in $*; do
1572         case "$src" in
1573         ".")
1574                 case "$file" in
1575                 */*)
1576                         dir=`expr X$file : 'X\(.*\)/'`
1577                         file=`expr X$file : 'X.*/\(.*\)'`
1578                         (cd $dir && . ./$file)
1579                         ;;
1580                 *)
1581                         . ./$file
1582                         ;;
1583                 esac
1584                 ;;
1585         *)
1586                 case "$file" in
1587                 */*)
1588                         dir=`expr X$file : 'X\(.*\)/'`
1589                         file=`expr X$file : 'X.*/\(.*\)'`
1590                         (set x $dir; shift; eval $mkdir_p)
1591                         sh <$src/$dir/$file
1592                         ;;
1593                 *)
1594                         sh <$src/$file
1595                         ;;
1596                 esac
1597                 ;;
1598         esac
1599 done
1600 if test -f $src/config_h.SH; then
1601         if test ! -f config.h; then
1602         : oops, they left it out of MANIFEST, probably, so do it anyway.
1603         . $src/config_h.SH
1604         fi
1605 fi
1606 EOS
1607
1608 : extract files and exit if asked to do so
1609 case "$extractsh" in
1610 true)
1611         case "$realsilent" in
1612         true) ;;
1613         *) exec 1>&4;;
1614         esac
1615         case "$config_sh" in
1616         '') config_sh='config.sh';;
1617         esac
1618         echo " "
1619         echo "Fetching answers from $config_sh..."
1620         cd ..
1621         . $config_sh
1622         test "$override" && . ./optdef.sh
1623         echo " "
1624         . UU/extract
1625         rm -rf UU
1626         echo "Extraction done."
1627         exit 0
1628         ;;
1629 esac
1630
1631 : Eunice requires " " instead of "", can you believe it
1632 echo " "
1633 : Here we go...
1634 echo "Beginning of configuration questions for $package."
1635
1636 trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1637
1638 : first determine how to suppress newline on echo command
1639 echo " "
1640 echo "Checking echo to see how to suppress newlines..."
1641 (echo "hi there\c" ; echo " ") >.echotmp
1642 if $contains c .echotmp >/dev/null 2>&1 ; then
1643         echo "...using -n."
1644         n='-n'
1645         c=''
1646 else
1647         cat <<'EOM'
1648 ...using \c
1649 EOM
1650         n=''
1651         c='\c'
1652 fi
1653 echo $n "The star should be here-->$c"
1654 echo '*'
1655 rm -f .echotmp
1656
1657 : Now test for existence of everything in MANIFEST
1658 echo " "
1659 if test -f $rsrc/MANIFEST; then
1660         echo "First let's make sure your kit is complete.  Checking..." >&4
1661         awk '$1 !~ /PACK[A-Z]+/ {print $1}' $rsrc/MANIFEST | split -50
1662         rm -f missing
1663         tmppwd=`pwd`
1664         for filelist in x??; do
1665                 (cd $rsrc; ls `cat $tmppwd/$filelist` >/dev/null 2>>$tmppwd/missing)
1666         done
1667         if test -s missing; then
1668                 cat missing >&4
1669                 cat >&4 <<'EOM'
1670
1671 THIS PACKAGE SEEMS TO BE INCOMPLETE.
1672
1673 You have the option of continuing the configuration process, despite the
1674 distinct possibility that your kit is damaged, by typing 'y'es.  If you
1675 do, don't blame me if something goes wrong.  I advise you to type 'n'o
1676 and contact the author (perlbug@perl.org).
1677
1678 EOM
1679                 echo $n "Continue? [n] $c" >&4
1680                 read ans
1681                 case "$ans" in
1682                 y*)
1683                         echo "Continuing..." >&4
1684                         rm -f missing
1685                         ;;
1686                 *)
1687                         echo "ABORTING..." >&4
1688                         kill $$
1689                         ;;
1690                 esac
1691         else
1692                 echo "Looks good..."
1693         fi
1694 else
1695         echo "There is no MANIFEST file.  I hope your kit is complete !"
1696 fi
1697 rm -f missing x??
1698
1699 echo " "
1700 : Find the appropriate value for a newline for tr
1701 if test -n "$DJGPP"; then
1702        trnl='\012'
1703 fi
1704 if test X"$trnl" = X; then
1705         case "`echo foo|tr '\n' x 2>/dev/null`" in
1706         foox) trnl='\n' ;;
1707         esac
1708 fi
1709 if test X"$trnl" = X; then
1710         case "`echo foo|tr '\012' x 2>/dev/null`" in
1711         foox) trnl='\012' ;;
1712         esac
1713 fi
1714 if test X"$trnl" = X; then
1715         cat <<EOM >&2
1716
1717 $me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
1718
1719 EOM
1720         exit 1
1721 fi
1722
1723 : compute the number of columns on the terminal for proper question formatting
1724 case "$COLUMNS" in
1725 '') COLUMNS='80';;
1726 esac
1727
1728 : set up the echo used in my read
1729 myecho="case \"\$xxxm\" in
1730 '') echo $n \"\$rp $c\" >&4;;
1731 *) case \"\$rp\" in
1732         '') echo $n \"[\$xxxm] $c\";;
1733         *)
1734                 if test \`echo \"\$rp [\$xxxm]  \" | wc -c\` -ge $COLUMNS; then
1735                         echo \"\$rp\" >&4
1736                         echo $n \"[\$xxxm] $c\" >&4
1737                 else
1738                         echo $n \"\$rp [\$xxxm] $c\" >&4
1739                 fi
1740                 ;;
1741         esac;;
1742 esac"
1743
1744 : now set up to do reads with possible shell escape and default assignment
1745 cat <<EOSC >myread
1746 $startsh
1747 xxxm=\$dflt
1748 $myecho
1749 ans='!'
1750 case "\$fastread" in
1751 yes) case "\$dflt" in
1752         '') ;;
1753         *) ans='';
1754                 case "\$silent-\$rp" in
1755                 true-) ;;
1756                 *) echo " " >&4;;
1757                 esac;;
1758         esac;;
1759 *) case "\$silent" in
1760         true) case "\$rp" in
1761                 '') ans='';;
1762                 esac;;
1763         esac;;
1764 esac
1765 while expr "X\$ans" : "X!" >/dev/null; do
1766         read answ
1767         set x \$xxxm
1768         shift
1769         aok=''; eval "ans=\\"\$answ\\"" && aok=y
1770         case  "\$answ" in
1771         "!")
1772                 sh 1>&4
1773                 echo " "
1774                 $myecho
1775                 ;;
1776         !*)
1777                 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
1778                 shift
1779                 sh 1>&4 -c "\$*"
1780                 echo " "
1781                 $myecho
1782                 ;;
1783         "\$ans")
1784                 case "\$ans" in
1785                 \\&*)
1786                         set x \`expr "X\$ans" : "X&\(.*\)\$"\`
1787                         shift
1788                         case "\$1" in
1789                         -d)
1790                                 fastread=yes
1791                                 echo "(OK, I'll run with -d after this question.)" >&4
1792                                 ;;
1793                         -*)
1794                                 echo "*** Sorry, \$1 not supported yet." >&4
1795                                 ;;
1796                         esac
1797                         $myecho
1798                         ans=!
1799                         ;;
1800                 esac;;
1801         *)
1802                 case "\$aok" in
1803                 y)
1804                         echo "*** Substitution done -- please confirm."
1805                         xxxm="\$ans"
1806                         ans=\`echo $n "\$ans$c" | tr '$trnl' ' '\`
1807                         xxxm="\$ans"
1808                         ans=!
1809                         ;;
1810                 *)
1811                         echo "*** Error -- try again."
1812                         ans=!
1813                         ;;
1814                 esac
1815                 $myecho
1816                 ;;
1817         esac
1818         case "\$ans\$xxxm\$nostick" in
1819         '')
1820                 ans=!
1821                 $myecho
1822                 ;;
1823         esac
1824 done
1825 case "\$ans" in
1826 '') ans="\$xxxm";;
1827 esac
1828 EOSC
1829
1830 : create .config dir to save info across Configure sessions
1831 test -d ../.config || mkdir ../.config
1832 cat >../.config/README <<EOF
1833 This directory created by Configure to save information that should
1834 persist across sessions for $package.
1835
1836 You may safely delete it if you wish.
1837 EOF
1838
1839 xversion=`awk '/define[         ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
1840 case "$usedevel" in
1841 $define|true|[yY]*) ;;
1842 *) case "$xversion" in
1843    *[13579])
1844         cat >&4 <<EOH
1845 *** WHOA THERE!!! ***
1846
1847     This is an UNSTABLE DEVELOPMENT release.
1848     The version of this $package distribution is $xversion, that is, odd,
1849     (as opposed to even) and that signifies a development release.
1850     If you want a maintenance release, you want an even-numbered version.
1851
1852     Do ***NOT*** install this into production use.
1853     Data corruption and crashes are possible.
1854
1855     It is most seriously suggested that you do not continue any further
1856     unless you want to help in developing and debugging Perl.
1857
1858     If you *still* want to build perl, you can answer 'y' now,
1859     or pass -Dusedevel to Configure.
1860
1861 EOH
1862         rp='Do you really want to continue?'
1863         dflt='n'
1864         . ./myread
1865         case "$ans" in
1866         [yY]) echo >&4 "Okay, continuing."
1867               usedevel="$define" ;;
1868         *) echo >&4 "Okay, bye."
1869            exit 1
1870            ;;
1871         esac
1872         ;;
1873     esac
1874     ;;
1875 esac
1876 case "$usedevel" in
1877 $define|true|[yY]*)
1878         case "$versiononly" in
1879         '') versiononly="$define" ;;
1880         esac
1881         case "$installusrbinperl" in
1882         '') installusrbinperl="$undef" ;;
1883         esac
1884         ;;
1885 esac
1886
1887 : general instructions
1888 needman=true
1889 firsttime=true
1890 user=`(logname) 2>/dev/null`
1891 case "$user" in
1892 '') user=`whoami 2>&1`;;
1893 esac
1894 if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
1895         firsttime=false
1896         echo " "
1897         rp='Would you like to see the instructions?'
1898         dflt=n
1899         . ./myread
1900         case "$ans" in
1901         [yY]*) ;;
1902         *) needman=false;;
1903         esac
1904 fi
1905 if $needman; then
1906         cat <<EOH
1907
1908 This installation shell script will examine your system and ask you questions
1909 to determine how the perl5 package should be installed. If you get
1910 stuck on a question, you may use a ! shell escape to start a subshell or
1911 execute a command.  Many of the questions will have default answers in square
1912 brackets; typing carriage return will give you the default.
1913
1914 On some of the questions which ask for file or directory names you are allowed
1915 to use the ~name construct to specify the login directory belonging to "name",
1916 even if you don't have a shell which knows about that.  Questions where this is
1917 allowed will be marked "(~name ok)".
1918
1919 EOH
1920         rp=''
1921         dflt='Type carriage return to continue'
1922         . ./myread
1923         cat <<'EOH'
1924
1925 The prompter used in this script allows you to use shell variables and
1926 backticks in your answers.  You may use $1, $2, etc...  to refer to the words
1927 in the default answer, as if the default line was a set of arguments given to a
1928 script shell.  This means you may also use $* to repeat the whole default line,
1929 so you do not have to re-type everything to add something to the default.
1930
1931 Everytime there is a substitution, you will have to confirm.  If there is an
1932 error (e.g. an unmatched backtick), the default answer will remain unchanged
1933 and you will be prompted again.
1934
1935 If you are in a hurry, you may run 'Configure -d'.  This will bypass nearly all
1936 the questions and use the computed defaults (or the previous answers if there
1937 was already a config.sh file). Type 'Configure -h' for a list of options.
1938 You may also start interactively and then answer '& -d' at any prompt to turn
1939 on the non-interactive behaviour for the remainder of the execution.
1940
1941 EOH
1942         . ./myread
1943         cat <<EOH
1944
1945 Much effort has been expended to ensure that this shell script will run on any
1946 Unix system.  If despite that it blows up on yours, your best bet is to edit
1947 Configure and run it again.  If you can't run Configure for some reason,
1948 you'll have to generate a config.sh file by hand.  Whatever problems you
1949 have, let me (perlbug@perl.org) know how I blew it.
1950
1951 This installation script affects things in two ways:
1952
1953 1) it may do direct variable substitutions on some of the files included
1954    in this kit.
1955 2) it builds a config.h file for inclusion in C programs.  You may edit
1956    any of these files as the need arises after running this script.
1957
1958 If you make a mistake on a question, there is no easy way to back up to it
1959 currently.  The easiest thing to do is to edit config.sh and rerun all the SH
1960 files.  Configure will offer to let you do this before it runs the SH files.
1961
1962 EOH
1963         dflt='Type carriage return to continue'
1964         . ./myread
1965         case "$firsttime" in
1966         true) echo $user >>../.config/instruct;;
1967         esac
1968 fi
1969
1970 : find out where common programs are
1971 echo " "
1972 echo "Locating common programs..." >&4
1973 cat <<EOSC >loc
1974 $startsh
1975 case \$# in
1976 0) exit 1;;
1977 esac
1978 thing=\$1
1979 shift
1980 dflt=\$1
1981 shift
1982 for dir in \$*; do
1983         case "\$thing" in
1984         .)
1985         if test -d \$dir/\$thing; then
1986                 echo \$dir
1987                 exit 0
1988         fi
1989         ;;
1990         *)
1991         for thisthing in \$dir/\$thing; do
1992                 : just loop through to pick last item
1993         done
1994         if test -f \$thisthing; then
1995                 echo \$thisthing
1996                 exit 0
1997         elif test -f \$dir/\$thing.exe; then
1998                 if test -n "$DJGPP"; then
1999                         echo \$dir/\$thing.exe
2000                 else
2001                         : on Eunice apparently
2002                         echo \$dir/\$thing
2003                 fi
2004                 exit 0
2005         fi
2006         ;;
2007         esac
2008 done
2009 echo \$dflt
2010 exit 1
2011 EOSC
2012 chmod +x loc
2013 $eunicefix loc
2014 loclist="
2015 awk
2016 cat
2017 chmod
2018 comm
2019 cp
2020 echo
2021 expr
2022 grep
2023 ls
2024 make
2025 mkdir
2026 rm
2027 sed
2028 sort
2029 touch
2030 tr
2031 uniq
2032 "
2033 trylist="
2034 Mcc
2035 ar
2036 bison
2037 byacc
2038 cpp
2039 csh
2040 date
2041 egrep
2042 gzip
2043 less
2044 ln
2045 more
2046 nm
2047 nroff
2048 pg
2049 test
2050 uname
2051 zip
2052 "
2053 pth=`echo $PATH | sed -e "s/$p_/ /g"`
2054 pth="$pth /lib /usr/lib"
2055 for file in $loclist; do
2056         eval xxx=\$$file
2057         case "$xxx" in
2058         /*|?:[\\/]*)
2059                 if test -f "$xxx"; then
2060                         : ok
2061                 else
2062                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2063                         xxx=`./loc $file $file $pth`
2064                 fi
2065                 ;;
2066         '') xxx=`./loc $file $file $pth`;;
2067         *) xxx=`./loc $xxx $xxx $pth`;;
2068         esac
2069         eval $file=$xxx
2070         eval _$file=$xxx
2071         case "$xxx" in
2072         /*)
2073                 echo $file is in $xxx.
2074                 ;;
2075         ?:[\\/]*)
2076                 echo $file is in $xxx.
2077                 ;;
2078         *)
2079                 echo "I don't know where '$file' is, and my life depends on it." >&4
2080                 echo "Go find a public domain implementation or fix your PATH setting!" >&4
2081                 exit 1
2082                 ;;
2083         esac
2084 done
2085 echo " "
2086 echo "Don't worry if any of the following aren't found..."
2087 say=offhand
2088 for file in $trylist; do
2089         eval xxx=\$$file
2090         case "$xxx" in
2091         /*|?:[\\/]*)
2092                 if test -f "$xxx"; then
2093                         : ok
2094                 else
2095                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2096                         xxx=`./loc $file $file $pth`
2097                 fi
2098                 ;;
2099         '') xxx=`./loc $file $file $pth`;;
2100         *) xxx=`./loc $xxx $xxx $pth`;;
2101         esac
2102         eval $file=$xxx
2103         eval _$file=$xxx
2104         case "$xxx" in
2105         /*)
2106                 echo $file is in $xxx.
2107                 ;;
2108         ?:[\\/]*)
2109                 echo $file is in $xxx.
2110                 ;;
2111         *)
2112                 echo "I don't see $file out there, $say."
2113                 say=either
2114                 ;;
2115         esac
2116 done
2117 case "$egrep" in
2118 egrep)
2119         echo "Substituting grep for egrep."
2120         egrep=$grep
2121         ;;
2122 esac
2123 case "$ln" in
2124 ln)
2125         echo "Substituting cp for ln."
2126         ln=$cp
2127         ;;
2128 esac
2129 case "$test" in
2130 test)
2131         echo "Hopefully test is built into your sh."
2132         ;;
2133 *)
2134         if `sh -c "PATH= test true" >/dev/null 2>&1`; then
2135                 echo "Using the test built into your sh."
2136                 test=test
2137                 _test=test
2138         fi
2139         ;;
2140 esac
2141 case "$echo" in
2142 echo)
2143         echo "Hopefully echo is built into your sh."
2144         ;;
2145 '') ;;
2146 *)
2147         echo " "
2148 echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
2149         $echo $n "hi there$c" >foo1
2150         echo $n "hi there$c" >foo2
2151         if cmp foo1 foo2 >/dev/null 2>&1; then
2152                 echo "They are compatible.  In fact, they may be identical."
2153         else
2154                 case "$n" in
2155                 '-n') n='' c='\c';;
2156                 *) n='-n' c='';;
2157                 esac
2158                 cat <<FOO
2159 They are not compatible!  You are probably running ksh on a non-USG system.
2160 I'll have to use $echo instead of the builtin, since Bourne shell doesn't
2161 have echo built in and we may have to run some Bourne shell scripts.  That
2162 means I'll have to use '$n$c' to suppress newlines now.  Life is ridiculous.
2163
2164 FOO
2165                 $echo $n "The star should be here-->$c"
2166                 $echo "*"
2167         fi
2168         $rm -f foo1 foo2
2169         ;;
2170 esac
2171
2172 cat <<EOS >checkcc
2173 $startsh
2174 EOS
2175 cat <<'EOSC' >>checkcc
2176 case "$cc" in
2177 '') ;;
2178 *)  $rm -f try try.*
2179     $cat >try.c <<EOM
2180 int main(int argc, char *argv[]) {
2181   return 0;
2182 }
2183 EOM
2184     if $cc -o try $ccflags $ldflags try.c; then
2185        :
2186     else
2187         echo "Uh-oh, the C compiler '$cc' doesn't seem to be working." >&4
2188         despair=yes
2189         trygcc=yes
2190         case "$cc" in
2191         *gcc*) trygcc=no ;;
2192         esac
2193         case "`$cc -v -c try.c 2>&1`" in
2194         *gcc*) trygcc=no ;;
2195         esac
2196         if $test X"$trygcc" = Xyes; then
2197             if gcc -o try -c try.c; then
2198                 echo " "
2199                 echo "You seem to have a working gcc, though." >&4
2200                 rp="Would you like to use it?"
2201                 dflt=y
2202                 if $test -f myread; then
2203                     . ./myread
2204                 else
2205                     if $test -f UU/myread; then
2206                         . ./UU/myread
2207                     else
2208                         echo "Cannot find myread, sorry.  Aborting." >&2
2209                         exit 1
2210                     fi
2211                 fi  
2212                 case "$ans" in
2213                 [yY]*) cc=gcc; ccname=gcc; ccflags=''; despair=no ;;
2214                 esac
2215             fi
2216         fi
2217         if $test X"$despair" = Xyes; then
2218             $cat >&4 <<EOM
2219 You need to find a working C compiler.
2220 Either (purchase and) install the C compiler supplied by your OS vendor,
2221 or for a free C compiler try http://gcc.gnu.org/
2222 I cannot continue any further, aborting.
2223 EOM
2224             exit 1
2225         fi
2226     fi
2227     $rm -f try try.*
2228     ;;
2229 esac
2230 EOSC
2231
2232 : determine whether symbolic links are supported
2233 echo " "
2234 $touch blurfl
2235 if $ln -s blurfl sym > /dev/null 2>&1 ; then
2236         echo "Symbolic links are supported." >&4
2237         lns="$ln -s"
2238 else
2239         echo "Symbolic links are NOT supported." >&4
2240         lns="$ln"
2241 fi
2242 $rm -f blurfl sym
2243
2244 : determine whether symbolic links are supported
2245 echo " "
2246 case "$lns" in
2247 *"ln -s")
2248         echo "Checking how to test for symbolic links..." >&4
2249         $lns blurfl sym
2250         if $test "X$issymlink" = X; then
2251                 sh -c "PATH= test -h sym" >/dev/null 2>&1
2252                 if test $? = 0; then
2253                         issymlink="test -h"
2254                 fi              
2255         fi
2256         if $test "X$issymlink" = X; then
2257                 if  $test -h >/dev/null 2>&1; then
2258                         issymlink="$test -h"
2259                         echo "Your builtin 'test -h' may be broken, I'm using external '$test -h'." >&4
2260                 fi              
2261         fi
2262         if $test "X$issymlink" = X; then
2263                 if $test -L sym 2>/dev/null; then
2264                         issymlink="$test -L"
2265                 fi
2266         fi
2267         if $test "X$issymlink" != X; then
2268                 echo "You can test for symbolic links with '$issymlink'." >&4
2269         else
2270                 echo "I do not know how you can test for symbolic links." >&4
2271         fi
2272         $rm -f blurfl sym
2273         ;;
2274 *)      echo "No symbolic links, so not testing for their testing..." >&4
2275         ;;
2276 esac
2277 echo " "
2278
2279
2280 case "$mksymlinks" in
2281 $define|true|[yY]*)
2282         case "$src" in
2283         ''|'.') echo "Cannot create symlinks in the original directory." >&4
2284                 exit 1
2285                 ;;
2286         *)      case "$lns:$issymlink" in
2287                 *"ln -s:"*"test -"?)
2288                         echo "Creating the symbolic links..." >&4
2289                         echo "(First creating the subdirectories...)" >&4
2290                         cd ..
2291                         awk '{print $1}' $src/MANIFEST | grep / | sed 's:/[^/]*$::' | sort -u | while true; do
2292                                 read directory
2293                                 test -z "$directory" && break
2294                                 mkdir -p $directory
2295                         done
2296                         # Sanity check 1.
2297                         if test ! -d t/base; then
2298                                 echo "Failed to create the subdirectories.  Aborting." >&4
2299                                 exit 1
2300                         fi
2301                         echo "(Then creating the symlinks...)" >&4
2302                         awk '{print $1}' $src/MANIFEST | while true; do
2303                                 read filename
2304                                 test -z "$filename" && break
2305                                 if test -f $filename; then
2306                                         if $issymlink $filename; then
2307                                                 rm -f $filename
2308                                         fi
2309                                 fi
2310                                 if test -f $filename; then
2311                                         echo "$filename already exists, not symlinking."
2312                                 else
2313                                         ln -s $src/$filename $filename
2314                                 fi
2315                         done
2316                         # Sanity check 2.
2317                         if test ! -f t/base/lex.t; then
2318                                 echo "Failed to create the symlinks (t/base/lex.t missing).  Aborting." >&4
2319                                 exit 1
2320                         fi
2321                         cd UU
2322                         ;;
2323                 *)      echo "(I cannot figure out how to do symbolic links, ignoring mksymlinks)." >&4
2324                         ;;
2325                 esac
2326                 ;;
2327         esac
2328         ;;
2329 esac
2330
2331
2332 case "$usecrosscompile" in
2333 $define|true|[yY]*)
2334         $echo "Cross-compiling..."
2335         croak=''
2336         case "$cc" in
2337         *-*-gcc) # A cross-compiling gcc, probably.
2338             targetarch=`$echo $cc|$sed 's/-gcc$//'`
2339             ar=$targetarch-ar
2340             # leave out ld, choosing it is more complex
2341             nm=$targetarch-nm
2342             ranlib=$targetarch-ranlib
2343             $echo 'extern int foo;' > try.c
2344             set X `$cc -v -E try.c 2>&1 | $awk '/^#include </,/^End of search /'|$grep '/include'`
2345             shift
2346             if $test $# -gt 0; then
2347                 incpth="$incpth $*"
2348                 incpth="`$echo $incpth|$sed 's/^ //'`"
2349                 echo "Guessing incpth '$incpth'." >&4
2350                 for i in $*; do
2351                     j="`$echo $i|$sed 's,/include$,/lib,'`"
2352                     if $test -d $j; then
2353                         libpth="$libpth $j"
2354                     fi
2355                 done   
2356                 libpth="`$echo $libpth|$sed 's/^ //'`"
2357                 echo "Guessing libpth '$libpth'." >&4
2358             fi
2359             $rm -f try.c
2360             ;;
2361         esac
2362         case "$targetarch" in
2363         '') echo "Targetarch not defined." >&4; croak=y ;;
2364         *)  echo "Using targetarch $targetarch." >&4 ;;
2365         esac
2366         case "$incpth" in
2367         '') echo "Incpth not defined." >&4; croak=y ;;
2368         *)  echo "Using incpth '$incpth'." >&4 ;;
2369         esac
2370         case "$libpth" in
2371         '') echo "Libpth not defined." >&4; croak=y ;;
2372         *)  echo "Using libpth '$libpth'." >&4 ;;
2373         esac
2374         case "$usrinc" in
2375         '') for i in $incpth; do
2376                 if $test -f $i/errno.h -a -f $i/stdio.h -a -f $i/time.h; then
2377                     usrinc=$i
2378                     echo "Guessing usrinc $usrinc." >&4
2379                     break
2380                 fi
2381             done
2382             case "$usrinc" in
2383             '') echo "Usrinc not defined." >&4; croak=y ;;
2384             esac
2385             ;;
2386         *)  echo "Using usrinc $usrinc." >&4 ;;
2387         esac
2388         case "$targethost" in
2389         '') echo "Targethost not defined." >&4; croak=y ;;
2390         *)  echo "Using targethost $targethost." >&4
2391         esac
2392         locincpth=' '
2393         loclibpth=' '
2394         case "$croak" in
2395         y) echo "Cannot continue, aborting." >&4; exit 1 ;;
2396         esac
2397         case "$src" in
2398         /*) run=$src/Cross/run
2399             targetmkdir=$src/Cross/mkdir
2400             to=$src/Cross/to
2401             from=$src/Cross/from
2402             ;;
2403         *)  pwd=`$test -f ../Configure & cd ..; pwd`
2404             run=$pwd/Cross/run
2405             targetmkdir=$pwd/Cross/mkdir
2406             to=$pwd/Cross/to
2407             from=$pwd/Cross/from
2408             ;;
2409         esac
2410         case "$targetrun" in
2411         '') targetrun=ssh ;;
2412         esac
2413         case "$targetto" in
2414         '') targetto=scp ;;
2415         esac
2416         case "$targetfrom" in
2417         '') targetfrom=scp ;;
2418         esac
2419         run=$run-$targetrun
2420         to=$to-$targetto
2421         from=$from-$targetfrom
2422         case "$targetdir" in
2423         '')  targetdir=/tmp
2424              echo "Guessing targetdir $targetdir." >&4
2425              ;;
2426         esac
2427         case "$targetuser" in
2428         '')  targetuser=root
2429              echo "Guessing targetuser $targetuser." >&4
2430              ;;
2431         esac
2432         case "$targetfrom" in
2433         scp)    q=-q ;;
2434         *)      q='' ;;
2435         esac
2436         case "$targetrun" in
2437         ssh|rsh)
2438             cat >$run <<EOF
2439 #!/bin/sh
2440 case "\$1" in
2441 -cwd)
2442   shift
2443   cwd=\$1
2444   shift
2445   ;;
2446 esac
2447 case "\$cwd" in
2448 '') cwd=$targetdir ;;
2449 esac
2450 exe=\$1
2451 shift
2452 if $test ! -f \$exe.xok; then
2453   $to \$exe
2454   $touch \$exe.xok
2455 fi
2456 $targetrun -l $targetuser $targethost "cd \$cwd && ./\$exe \$@"
2457 EOF
2458             ;;
2459         *)  echo "Unknown targetrun '$targetrun'" >&4
2460             exit 1
2461             ;;
2462         esac
2463         case "$targetmkdir" in
2464         */Cross/mkdir)
2465             cat >$targetmkdir <<EOF
2466 #!/bin/sh
2467 $targetrun -l $targetuser $targethost "mkdir -p \$@"
2468 EOF
2469             $chmod a+rx $targetmkdir
2470             ;;
2471         *)  echo "Unknown targetmkdir '$targetmkdir'" >&4
2472             exit 1
2473             ;;
2474         esac
2475         case "$targetto" in
2476         scp|rcp)
2477             cat >$to <<EOF
2478 #!/bin/sh
2479 for f in \$@
2480 do
2481   case "\$f" in
2482   /*)
2483     $targetmkdir \`dirname \$f\`
2484     $targetto $q \$f $targetuser@$targethost:\$f            || exit 1
2485     ;;
2486   *)
2487     $targetmkdir $targetdir/\`dirname \$f\`
2488     $targetto $q \$f $targetuser@$targethost:$targetdir/\$f || exit 1
2489     ;;
2490   esac
2491 done
2492 exit 0
2493 EOF
2494             ;;
2495         cp) cat >$to <<EOF
2496 #!/bin/sh
2497 for f in \$@
2498 do
2499   case "\$f" in
2500   /*)
2501     $mkdir -p $targetdir/\`dirname \$f\`
2502     $cp \$f $targetdir/\$f || exit 1
2503     ;;
2504   *)
2505     $targetmkdir $targetdir/\`dirname \$f\`
2506     $cp \$f $targetdir/\$f || exit 1
2507     ;;
2508   esac
2509 done
2510 exit 0
2511 EOF
2512             ;;
2513         *)  echo "Unknown targetto '$targetto'" >&4
2514             exit 1
2515             ;;
2516         esac
2517         case "$targetfrom" in
2518         scp|rcp)
2519           cat >$from <<EOF
2520 #!/bin/sh
2521 for f in \$@
2522 do
2523   $rm -f \$f
2524   $targetfrom $q $targetuser@$targethost:$targetdir/\$f . || exit 1
2525 done
2526 exit 0
2527 EOF
2528             ;;
2529         cp) cat >$from <<EOF
2530 #!/bin/sh
2531 for f in \$@
2532 do
2533   $rm -f \$f
2534   cp $targetdir/\$f . || exit 1
2535 done
2536 exit 0
2537 EOF
2538             ;;
2539         *)  echo "Unknown targetfrom '$targetfrom'" >&4
2540             exit 1
2541             ;;
2542         esac
2543         if $test ! -f $run; then
2544             echo "Target 'run' script '$run' not found." >&4
2545         else
2546             $chmod a+rx $run
2547         fi
2548         if $test ! -f $to; then
2549             echo "Target 'to' script '$to' not found." >&4
2550         else
2551             $chmod a+rx $to
2552         fi
2553         if $test ! -f $from; then
2554             echo "Target 'from' script '$from' not found." >&4
2555         else
2556             $chmod a+rx $from
2557         fi
2558         if $test ! -f $run -o ! -f $to -o ! -f $from; then
2559             exit 1
2560         fi
2561         cat >&4 <<EOF
2562 Using '$run' for remote execution,
2563 and '$from' and '$to'
2564 for remote file transfer.
2565 EOF
2566         ;;
2567 *)      run=''
2568         to=:
2569         from=:
2570         usecrosscompile='undef'
2571         targetarch=''
2572         ;;
2573 esac
2574
2575 : see whether [:lower:] and [:upper:] are supported character classes
2576 echo " "
2577 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
2578 ABYZ)
2579         echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
2580         up='[:upper:]'
2581         low='[:lower:]'
2582         ;;
2583 *)      # There is a discontinuity in EBCDIC between 'I' and 'J'
2584         # (0xc9 and 0xd1), therefore that is a nice testing point.
2585         if test "X$up" = X -o "X$low" = X; then
2586             case "`echo IJ | $tr '[I-J]' '[i-j]' 2>/dev/null`" in
2587             ij) up='[A-Z]'
2588                 low='[a-z]'
2589                 ;;
2590             esac
2591         fi
2592         if test "X$up" = X -o "X$low" = X; then
2593             case "`echo IJ | $tr I-J i-j 2>/dev/null`" in
2594             ij) up='A-Z'
2595                 low='a-z'
2596                 ;;
2597             esac
2598         fi
2599         if test "X$up" = X -o "X$low" = X; then
2600             case "`echo IJ | od -x 2>/dev/null`" in
2601             *C9D1*|*c9d1*)
2602                 echo "Hey, this might be EBCDIC." >&4
2603                 if test "X$up" = X -o "X$low" = X; then
2604                     case "`echo IJ | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
2605                     ij) up='[A-IJ-RS-Z]'
2606                         low='[a-ij-rs-z]'
2607                         ;;
2608                     esac
2609                 fi
2610                 if test "X$up" = X -o "X$low" = X; then
2611                     case "`echo IJ | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
2612                     ij) up='A-IJ-RS-Z'
2613                         low='a-ij-rs-z'
2614                         ;;
2615                     esac
2616                 fi
2617                 ;;
2618             esac
2619         fi
2620 esac
2621 case "`echo IJ | $tr \"$up\" \"$low\" 2>/dev/null`" in
2622 ij)
2623     echo "Using $up and $low to convert case." >&4
2624     ;;
2625 *)
2626     echo "I don't know how to translate letters from upper to lower case." >&4
2627     echo "Your tr is not acting any way I know of." >&4
2628     exit 1
2629     ;;
2630 esac
2631 : set up the translation script tr, must be called with ./tr of course
2632 cat >tr <<EOSC
2633 $startsh
2634 case "\$1\$2" in
2635 '[A-Z][a-z]') exec $tr '$up' '$low';;
2636 '[a-z][A-Z]') exec $tr '$low' '$up';;
2637 esac
2638 exec $tr "\$@"
2639 EOSC
2640 chmod +x tr
2641 $eunicefix tr
2642
2643 : Try to determine whether config.sh was made on this system
2644 case "$config_sh" in
2645 '')
2646 myuname=`$uname -a 2>/dev/null`
2647 $test -z "$myuname" && myuname=`hostname 2>/dev/null`
2648 # tr '[A-Z]' '[a-z]' would not work in EBCDIC
2649 # because the A-Z/a-z are not consecutive.
2650 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
2651         ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
2652 newmyuname="$myuname"
2653 dflt=n
2654 case "$knowitall" in
2655 '')
2656         if test -f ../config.sh; then
2657                 if $contains myuname= ../config.sh >/dev/null 2>&1; then
2658                         eval "`grep myuname= ../config.sh`"
2659                 fi
2660                 if test "X$myuname" = "X$newmyuname"; then
2661                         dflt=y
2662                 fi
2663         fi
2664         ;;
2665 *) dflt=y;;
2666 esac
2667
2668 : Get old answers from old config file if Configure was run on the
2669 : same system, otherwise use the hints.
2670 hint=default
2671 cd ..
2672 if test -f config.sh; then
2673         echo " "
2674         rp="I see a config.sh file.  Shall I use it to set the defaults?"
2675         . UU/myread
2676         case "$ans" in
2677         n*|N*) echo "OK, I'll ignore it."
2678                 mv config.sh config.sh.old
2679                 myuname="$newmyuname"
2680                 ;;
2681         *)  echo "Fetching default answers from your old config.sh file..." >&4
2682                 tmp_n="$n"
2683                 tmp_c="$c"
2684                 tmp_sh="$sh"
2685                 . ./config.sh
2686                 cp config.sh UU
2687                 n="$tmp_n"
2688                 c="$tmp_c"
2689                 : Older versions did not always set $sh.  Catch re-use of such
2690                 : an old config.sh.
2691                 case "$sh" in
2692                 '') sh="$tmp_sh" ;;
2693                 esac
2694                 hint=previous
2695                 ;;
2696         esac
2697 fi
2698 . ./UU/checkcc
2699 if test ! -f config.sh; then
2700         $cat <<EOM
2701
2702 First time through, eh?  I have some defaults handy for some systems
2703 that need some extra help getting the Configure answers right:
2704
2705 EOM
2706         (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/   /g' >&4
2707         dflt=''
2708         : Half the following guesses are probably wrong... If you have better
2709         : tests or hints, please send them to perlbug@perl.org
2710         : The metaconfig authors would also appreciate a copy...
2711         $test -f /irix && osname=irix
2712         $test -f /xenix && osname=sco_xenix
2713         $test -f /dynix && osname=dynix
2714         $test -f /dnix && osname=dnix
2715         $test -f /lynx.os && osname=lynxos
2716         $test -f /unicos && osname=unicos && osvers=`$uname -r`
2717         $test -f /unicosmk && osname=unicosmk && osvers=`$uname -r`
2718         $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
2719         $test -f /bin/mips && /bin/mips && osname=mips
2720         $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
2721                 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
2722         $test -d /usr/apollo/bin && osname=apollo
2723         $test -f /etc/saf/_sactab && osname=svr4
2724         $test -d /usr/include/minix && osname=minix
2725         if $test -d /MachTen -o -d /MachTen_Folder; then
2726                 osname=machten
2727                 if $test -x /sbin/version; then
2728                         osvers=`/sbin/version | $awk '{print $2}' |
2729                         $sed -e 's/[A-Za-z]$//'`
2730                 elif $test -x /usr/etc/version; then
2731                         osvers=`/usr/etc/version | $awk '{print $2}' |
2732                         $sed -e 's/[A-Za-z]$//'`
2733                 else
2734                         osvers="$2.$3"
2735                 fi
2736         fi
2737
2738         $test -f /sys/posix.dll &&
2739                 $test -f /usr/bin/what &&
2740                 set X `/usr/bin/what /sys/posix.dll` &&
2741                 $test "$3" = UWIN &&
2742                 osname=uwin &&
2743                 osvers="$5"
2744
2745         if $test -f $uname; then
2746                 set X $myuname
2747                 shift
2748
2749                 case "$5" in
2750                 fps*) osname=fps ;;
2751                 mips*)
2752                         case "$4" in
2753                         umips) osname=umips ;;
2754                         *) osname=mips ;;
2755                         esac;;
2756                 [23]100) osname=mips ;;
2757                 next*) osname=next ;;
2758                 i386*)
2759                         tmp=`/bin/uname -X 2>/dev/null|awk '/3\.2v[45]/{ print $(NF) }'`
2760                         if $test "$tmp" != "" -a "$3" = "3.2" -a -f '/etc/systemid'; then
2761                                 osname='sco'
2762                                 osvers=$tmp
2763                         elif $test -f /etc/kconfig; then
2764                                 osname=isc
2765                                 if test "$lns" = "$ln -s"; then
2766                                         osvers=4
2767                                 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
2768                                         osvers=3
2769                                 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
2770                                         osvers=2
2771                                 fi
2772                         fi
2773                         tmp=''
2774                         ;;
2775                 pc*)
2776                         if test -n "$DJGPP"; then
2777                                 osname=dos
2778                                 osvers=djgpp
2779                         fi
2780                         ;;
2781                 esac
2782
2783                 case "$1" in
2784                 aix) osname=aix
2785                         tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
2786                         case "$tmp" in
2787                         'not found') osvers="$4"."$3" ;;
2788                         '<3240'|'<>3240') osvers=3.2.0 ;;
2789                         '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
2790                         '=3250'|'>3250') osvers=3.2.5 ;;
2791                         *) osvers=$tmp;;
2792                         esac
2793                         ;;
2794                 bsd386) osname=bsd386
2795                         osvers=`$uname -r`
2796                         ;;
2797                 cygwin*) osname=cygwin
2798                         osvers="$3"
2799                         ;;
2800                 *dc.osx) osname=dcosx
2801                         osvers="$3"
2802                         ;;
2803                 dnix) osname=dnix
2804                         osvers="$3"
2805                         ;;
2806                 domainos) osname=apollo
2807                         osvers="$3"
2808                         ;;
2809                 dgux) osname=dgux 
2810                         osvers="$3"
2811                         ;;
2812                 dynixptx*) osname=dynixptx
2813                         osvers=`echo "$4"|sed 's/^v//'`
2814                         ;;
2815                 freebsd) osname=freebsd 
2816                         osvers="$3" ;;
2817                 genix) osname=genix ;;
2818                 hp*) osname=hpux 
2819                         osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
2820                         ;;
2821                 irix*) osname=irix
2822                         case "$3" in
2823                         4*) osvers=4 ;;
2824                         5*) osvers=5 ;;
2825                         *)      osvers="$3" ;;
2826                         esac
2827                         ;;
2828                 linux) osname=linux
2829                         case "$3" in
2830                         *)      osvers="$3" ;;
2831                         esac
2832                         ;;
2833                 MiNT) osname=mint
2834                         ;;
2835                 netbsd*) osname=netbsd
2836                         osvers="$3"
2837                         ;;
2838                 news-os) osvers="$3"
2839                         case "$3" in
2840                         4*) osname=newsos4 ;;
2841                         *) osname=newsos ;;
2842                         esac
2843                         ;;
2844                 next*) osname=next ;;
2845                 nonstop-ux) osname=nonstopux ;;
2846                 POSIX-BC | posix-bc ) osname=posix-bc
2847                         osvers="$3"
2848                         ;;
2849                 powerux | power_ux | powermax_os | powermaxos | \
2850                 powerunix | power_unix) osname=powerux
2851                         osvers="$3"
2852                         ;;
2853                 qnx) osname=qnx
2854                         osvers="$4"
2855                         ;;
2856                 solaris) osname=solaris
2857                         case "$3" in
2858                         5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2859                         *)      osvers="$3" ;;
2860                         esac
2861                         ;;
2862                 sunos) osname=sunos
2863                         case "$3" in
2864                         5*) osname=solaris
2865                                 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2866                         *)      osvers="$3" ;;
2867                         esac
2868                         ;;
2869                 titanos) osname=titanos
2870                         case "$3" in
2871                         1*) osvers=1 ;;
2872                         2*) osvers=2 ;;
2873                         3*) osvers=3 ;;
2874                         4*) osvers=4 ;;
2875                         *)      osvers="$3" ;;
2876                         esac
2877                         ;;
2878                 ultrix) osname=ultrix
2879                         osvers="$3"
2880                         ;;
2881                 osf1|mls+)      case "$5" in
2882                                 alpha)
2883                                         osname=dec_osf
2884                                         osvers=`sizer -v | awk '{print $3}' |  tr '[A-Z]' '[a-z]' | sed 's/^[xvt]//'`
2885                                         case "$osvers" in
2886                                         [1-9].[0-9]*) ;;
2887                                         *) osvers=`echo "$3" | sed 's/^[xvt]//'` ;;
2888                                         esac
2889                                         ;;
2890                         hp*)    osname=hp_osf1  ;;
2891                         mips)   osname=mips_osf1 ;;
2892                         esac
2893                         ;;
2894                 unixware) osname=svr5
2895                         osvers="$4"
2896                         ;;
2897                 uts) osname=uts
2898                         osvers="$3"
2899                         ;;
2900                 $2) case "$osname" in
2901                         *isc*) ;;
2902                         *freebsd*) ;;
2903                         svr*)
2904                                 : svr4.x or possibly later
2905                                 case "svr$3" in 
2906                                 ${osname}*)
2907                                         osname=svr$3
2908                                         osvers=$4
2909                                         ;;
2910                                 esac
2911                                 case "$osname" in
2912                                 svr4.0)
2913                                         : Check for ESIX
2914                                         if test -f /stand/boot ; then
2915                                                 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
2916                                                 if test -n "$INITPROG" -a -f "$INITPROG"; then
2917                         isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
2918                                                         if test -n "$isesix"; then
2919                                                                 osname=esix4
2920                                                         fi
2921                                                 fi
2922                                         fi
2923                                         ;;
2924                                 esac
2925                                 ;;
2926                         *)      if test -f /etc/systemid; then
2927                                         osname=sco
2928                                         set `echo $3 | $sed 's/\./ /g'` $4
2929                                         if $test -f $src/hints/sco_$1_$2_$3.sh; then
2930                                                 osvers=$1.$2.$3
2931                                         elif $test -f $src/hints/sco_$1_$2.sh; then
2932                                                 osvers=$1.$2
2933                                         elif $test -f $src/hints/sco_$1.sh; then
2934                                                 osvers=$1
2935                                         fi
2936                                 else
2937                                         case "$osname" in
2938                                         '') : Still unknown.  Probably a generic Sys V.
2939                                                 osname="sysv"
2940                                                 osvers="$3"
2941                                                 ;;
2942                                         esac
2943                                 fi
2944                                 ;;
2945                         esac
2946                         ;;
2947                 *)      case "$osname" in
2948                         '') : Still unknown.  Probably a generic BSD.
2949                                 osname="$1"
2950                                 osvers="$3"
2951                                 ;;
2952                         esac
2953                         ;;
2954                 esac
2955         else
2956                 if test -f /vmunix -a -f $src/hints/news_os.sh; then
2957                         (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
2958                         if $contains news-os UU/kernel.what >/dev/null 2>&1; then
2959                                 osname=news_os
2960                         fi
2961                         $rm -f UU/kernel.what
2962                 elif test -d c:/.; then
2963                         set X $myuname
2964                         osname=os2
2965                         osvers="$5"
2966                 fi
2967         fi
2968         
2969         case "$targetarch" in
2970         '') ;;
2971         *)  hostarch=$osname
2972             osname=`echo $targetarch|sed 's,^[^-]*-,,'`
2973             osvers=''
2974             ;;
2975         esac
2976
2977         : Now look for a hint file osname_osvers, unless one has been
2978         : specified already.
2979         case "$hintfile" in
2980         ''|' ')
2981                 file=`echo "${osname}_${osvers}" | $sed -e 's%\.%_%g' -e 's%_$%%'`
2982                 : Also try without trailing minor version numbers.
2983                 xfile=`echo $file | $sed -e 's%_[^_]*$%%'`
2984                 xxfile=`echo $xfile | $sed -e 's%_[^_]*$%%'`
2985                 xxxfile=`echo $xxfile | $sed -e 's%_[^_]*$%%'`
2986                 xxxxfile=`echo $xxxfile | $sed -e 's%_[^_]*$%%'`
2987                 case "$file" in
2988                 '') dflt=none ;;
2989                 *)  case "$osvers" in
2990                         '') dflt=$file
2991                                 ;;
2992                         *)  if $test -f $src/hints/$file.sh ; then
2993                                         dflt=$file
2994                                 elif $test -f $src/hints/$xfile.sh ; then
2995                                         dflt=$xfile
2996                                 elif $test -f $src/hints/$xxfile.sh ; then
2997                                         dflt=$xxfile
2998                                 elif $test -f $src/hints/$xxxfile.sh ; then
2999                                         dflt=$xxxfile
3000                                 elif $test -f $src/hints/$xxxxfile.sh ; then
3001                                         dflt=$xxxxfile
3002                                 elif $test -f "$src/hints/${osname}.sh" ; then
3003                                         dflt="${osname}"
3004                                 else
3005                                         dflt=none
3006                                 fi
3007                                 ;;
3008                         esac
3009                         ;;
3010                 esac
3011                 if $test -f Policy.sh ; then
3012                         case "$dflt" in
3013                         *Policy*) ;;
3014                         none) dflt="Policy" ;;
3015                         *) dflt="Policy $dflt" ;;
3016                         esac
3017                 fi
3018                 ;;
3019         *)
3020                 dflt=`echo $hintfile | $sed 's/\.sh$//'`
3021                 ;;
3022         esac
3023
3024         if $test -f Policy.sh ; then
3025                 $cat <<EOM
3026
3027 There's also a Policy hint file available, which should make the
3028 site-specific (policy) questions easier to answer.
3029 EOM
3030
3031         fi
3032
3033         $cat <<EOM
3034
3035 You may give one or more space-separated answers, or "none" if appropriate.
3036 A well-behaved OS will have no hints, so answering "none" or just "Policy"
3037 is a good thing.  DO NOT give a wrong version or a wrong OS.
3038
3039 EOM
3040
3041         rp="Which of these apply, if any?"
3042         . UU/myread
3043         tans=$ans
3044         for file in $tans; do
3045                 if $test X$file = XPolicy -a -f Policy.sh; then
3046                         . Policy.sh
3047                         $cat Policy.sh >> UU/config.sh
3048                 elif $test -f $src/hints/$file.sh; then
3049                         . $src/hints/$file.sh
3050                         $cat $src/hints/$file.sh >> UU/config.sh
3051                 elif $test X"$tans" = X -o X"$tans" = Xnone ; then
3052                         : nothing
3053                 else
3054                         : Give one chance to correct a possible typo.
3055                         echo "$file.sh does not exist"
3056                         dflt=$file
3057                         rp="hint to use instead?"
3058                         . UU/myread
3059                         for file in $ans; do
3060                                 if $test -f "$src/hints/$file.sh"; then
3061                                         . $src/hints/$file.sh
3062                                         $cat $src/hints/$file.sh >> UU/config.sh
3063                                 elif $test X$ans = X -o X$ans = Xnone ; then
3064                                         : nothing
3065                                 else
3066                                         echo "$file.sh does not exist -- ignored."
3067                                 fi
3068                         done
3069                 fi
3070         done
3071
3072         hint=recommended
3073         : Remember our hint file for later.
3074         if $test -f "$src/hints/$file.sh" ; then
3075                 hintfile="$file"
3076         else
3077                 hintfile=''
3078         fi
3079 fi
3080 cd UU
3081 ;;
3082 *)
3083         echo " "
3084         echo "Fetching default answers from $config_sh..." >&4
3085         tmp_n="$n"
3086         tmp_c="$c"
3087         cd ..
3088         cp $config_sh config.sh 2>/dev/null
3089         chmod +w config.sh
3090         . ./config.sh
3091         cd UU
3092         cp ../config.sh .
3093         n="$tmp_n"
3094         c="$tmp_c"
3095         hint=previous
3096         ;;
3097 esac
3098 test "$override" && . ./optdef.sh
3099
3100 : Restore computed paths
3101 for file in $loclist $trylist; do
3102         eval $file="\$_$file"
3103 done
3104
3105 cat << EOM
3106
3107 Configure uses the operating system name and version to set some defaults.
3108 The default value is probably right if the name rings a bell. Otherwise,
3109 since spelling matters for me, either accept the default or answer "none"
3110 to leave it blank.
3111
3112 EOM
3113 case "$osname" in
3114         ''|' ')
3115                 case "$hintfile" in
3116                 ''|' '|none) dflt=none ;;
3117                 *)  dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
3118                 esac
3119                 ;;
3120         *) dflt="$osname" ;;
3121 esac
3122 rp="Operating system name?"
3123 . ./myread
3124 case "$ans" in
3125 none)  osname='' ;;
3126 *) osname=`echo "$ans" | $sed -e 's/[   ][      ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
3127 esac
3128 echo " "
3129 case "$osvers" in
3130         ''|' ')
3131                 case "$hintfile" in
3132                 ''|' '|none) dflt=none ;;
3133                 *)      dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
3134                         dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
3135                         case "$dflt" in
3136                         ''|' ') dflt=none ;;
3137                         esac
3138                         ;;
3139                 esac
3140                 ;;
3141         *) dflt="$osvers" ;;
3142 esac
3143 rp="Operating system version?"
3144 . ./myread
3145 case "$ans" in
3146 none)  osvers='' ;;
3147 *) osvers="$ans" ;;
3148 esac
3149
3150
3151 . ./posthint.sh
3152
3153 : who configured the system
3154 cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
3155 cf_by=`(logname) 2>/dev/null`
3156 case "$cf_by" in
3157 "")
3158         cf_by=`(whoami) 2>/dev/null`
3159         case "$cf_by" in
3160         "") cf_by=unknown ;;
3161         esac ;;
3162 esac
3163
3164 : set up the script used to warn in case of inconsistency
3165 cat <<EOS >whoa
3166 $startsh
3167 EOS
3168 cat <<'EOSC' >>whoa
3169 dflt=y
3170 echo " "
3171 echo "*** WHOA THERE!!! ***" >&4
3172 echo "    The $hint value for \$$var on this machine was \"$was\"!" >&4
3173 rp="    Keep the $hint value?"
3174 . ./myread
3175 case "$ans" in
3176 y) td=$was; tu=$was;;
3177 esac
3178 EOSC
3179
3180 : function used to set $1 to $val
3181 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
3182 case "$val$was" in
3183 $define$undef) . ./whoa; eval "$var=\$td";;
3184 $undef$define) . ./whoa; eval "$var=\$tu";;
3185 *) eval "$var=$val";;
3186 esac'
3187
3188 case "$usethreads" in
3189 $define|true|[yY]*)     dflt='y';;
3190 *) dflt='n';;
3191 esac
3192 cat <<EOM
3193
3194 Perl can be built to take advantage of threads on some systems.
3195 To do so, Configure can be run with -Dusethreads.
3196
3197 Note that threading is a highly experimental feature, and
3198 some known race conditions still remain.  If you choose to try
3199 it, be very sure to not actually deploy it for production
3200 purposes.  README.threads has more details, and is required
3201 reading if you enable threads.
3202
3203 If this doesn't make any sense to you, just accept the default '$dflt'.
3204 EOM
3205 rp='Build a threading Perl?'
3206 . ./myread
3207 case "$ans" in
3208 y|Y)    val="$define" ;;
3209 *)      val="$undef" ;;
3210 esac
3211 set usethreads
3212 eval $setvar
3213
3214 case "$usethreads" in
3215 $define)
3216         $cat <<EOM
3217
3218 As of 5.5.640, Perl has two different internal threading implementations,
3219 the 5.005 version (5005threads) and an interpreter-based version
3220 (ithreads) that has one interpreter per thread.  Both are very 
3221 experimental.  This arrangement exists to help developers work out
3222 which one is better.
3223
3224 If you're a casual user, you probably don't want interpreter-threads
3225 at this time.  There doesn't yet exist a way to create threads from
3226 within Perl in this model, i.e., "use Thread;" will NOT work.
3227 EOM
3228         : Default to ithreads unless overridden on command line or with
3229         : old config.sh
3230         dflt='y'
3231         case "$use5005threads" in
3232                 $define|true|[yY]*) dflt='n';;
3233         esac
3234         case "$useithreads" in
3235                 $undef|false|[nN]*) dflt='n';;
3236         esac
3237         rp='Use interpreter-based ithreads?'
3238         . ./myread
3239         case "$ans" in
3240         y|Y)    val="$define" ;;
3241         *)      val="$undef" ;;
3242         esac
3243         set useithreads
3244         eval $setvar
3245         : Now set use5005threads to the opposite value.
3246         case "$useithreads" in
3247         $define) val="$undef" ;;
3248         *) val="$define" ;;
3249         esac
3250         set use5005threads
3251         eval $setvar
3252         ;;
3253 *)
3254         useithreads="$undef"
3255         use5005threads="$undef"
3256         ;;
3257 esac
3258
3259 case "$useithreads$use5005threads" in
3260 "$define$define")
3261         $cat >&4 <<EOM
3262
3263 You cannot have both the ithreads and the 5.005 threads enabled
3264 at the same time.  Disabling the 5.005 threads since they are
3265 much less stable than the ithreads.
3266
3267 EOM
3268         use5005threads="$undef"
3269         ;;
3270 esac
3271
3272 case "$d_oldpthreads" in
3273 '')     : Configure tests would be welcome here.  For now, assume undef.
3274         val="$undef" ;;
3275 *)      val="$d_oldpthreads" ;;
3276 esac
3277 set d_oldpthreads
3278 eval $setvar
3279
3280
3281 case "$usethreads" in
3282 "$define"|true|[yY]*)
3283 : Look for a hint-file generated 'call-back-unit'.  If the
3284 : user has specified that a threading perl is to be built,
3285 : we may need to set or change some other defaults.
3286         if $test -f usethreads.cbu; then
3287                 echo "Your platform has some specific hints for threaded builds, using them..."
3288                 . ./usethreads.cbu
3289         else
3290                 $cat <<EOM
3291 (Your platform doesn't have any specific hints for threaded builds.
3292  Assuming POSIX threads, then.)
3293 EOM
3294         fi
3295         ;;
3296 esac
3297
3298 cat <<EOM
3299
3300 Perl can be built so that multiple Perl interpreters can coexist
3301 within the same Perl executable.
3302 EOM
3303
3304 case "$useithreads" in
3305 $define)
3306         cat <<EOM
3307 This multiple interpreter support is required for interpreter-based threads.
3308 EOM
3309         val="$define"
3310         ;;
3311 *)      case "$usemultiplicity" in
3312         $define|true|[yY]*)     dflt='y';;
3313         *) dflt='n';;
3314         esac
3315         echo " "
3316         echo "If this doesn't make any sense to you, just accept the default '$dflt'."
3317         rp='Build Perl for multiplicity?'
3318         . ./myread
3319         case "$ans" in
3320         y|Y)    val="$define" ;;
3321         *)      val="$undef" ;;
3322         esac
3323         ;;
3324 esac
3325 set usemultiplicity
3326 eval $setvar
3327
3328
3329 case "$usemorebits" in
3330 "$define"|true|[yY]*)
3331         use64bitint="$define"
3332         uselongdouble="$define"
3333         usemorebits="$define"
3334         ;;
3335 *)      usemorebits="$undef"
3336         ;;
3337 esac
3338
3339 : make some quick guesses about what we are up against
3340 echo " "
3341 $echo $n "Hmm...  $c"
3342 echo exit 1 >bsd
3343 echo exit 1 >usg
3344 echo exit 1 >v7
3345 echo exit 1 >osf1
3346 echo exit 1 >eunice
3347 echo exit 1 >xenix
3348 echo exit 1 >venix
3349 echo exit 1 >os2
3350 d_bsd="$undef"
3351 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
3352 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
3353 then
3354         echo "Looks kind of like an OSF/1 system, but we'll see..."
3355         echo exit 0 >osf1
3356 elif test `echo abc | $tr a-z A-Z` = Abc ; then
3357         xxx=`./loc addbib blurfl $pth`
3358         if $test -f $xxx; then
3359         echo "Looks kind of like a USG system with BSD features, but we'll see..."
3360                 echo exit 0 >bsd
3361                 echo exit 0 >usg
3362         else
3363                 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
3364                         echo "Looks kind of like an extended USG system, but we'll see..."
3365                 else
3366                         echo "Looks kind of like a USG system, but we'll see..."
3367                 fi
3368                 echo exit 0 >usg
3369         fi
3370 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
3371         echo "Looks kind of like a BSD system, but we'll see..."
3372         d_bsd="$define"
3373         echo exit 0 >bsd
3374 else
3375         echo "Looks kind of like a Version 7 system, but we'll see..."
3376         echo exit 0 >v7
3377 fi
3378 case "$eunicefix" in
3379 *unixtovms*)
3380         $cat <<'EOI'
3381 There is, however, a strange, musty smell in the air that reminds me of
3382 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
3383 EOI
3384         echo exit 0 >eunice
3385         d_eunice="$define"
3386 : it so happens the Eunice I know will not run shell scripts in Unix format
3387         ;;
3388 *)
3389         echo " "
3390         echo "Congratulations.  You aren't running Eunice."
3391         d_eunice="$undef"
3392         ;;
3393 esac
3394 : Detect OS2.  The p_ variable is set above in the Head.U unit.
3395 : Note that this also -- wrongly -- detects e.g. dos-djgpp, which also uses
3396 : semicolon as a patch separator
3397 case "$p_" in
3398 :) ;;
3399 *)
3400         $cat <<'EOI'
3401 I have the feeling something is not exactly right, however...don't tell me...
3402 lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
3403 (Or you may be running DOS with DJGPP.)
3404 EOI
3405         echo exit 0 >os2
3406         ;;
3407 esac
3408 if test -f /xenix; then
3409         echo "Actually, this looks more like a XENIX system..."
3410         echo exit 0 >xenix
3411         d_xenix="$define"
3412 else
3413         echo " "
3414         echo "It's not Xenix..."
3415         d_xenix="$undef"
3416 fi
3417 chmod +x xenix
3418 $eunicefix xenix
3419 if test -f /venix; then
3420         echo "Actually, this looks more like a VENIX system..."
3421         echo exit 0 >venix
3422 else
3423         echo " "
3424         if ./xenix; then
3425                 : null
3426         else
3427                 echo "Nor is it Venix..."
3428         fi
3429 fi
3430 chmod +x bsd usg v7 osf1 eunice xenix venix os2
3431 $eunicefix bsd usg v7 osf1 eunice xenix venix os2
3432 $rm -f foo
3433
3434 case "$cc" in
3435 '') dflt=cc;;
3436 *) dflt="$cc";;
3437 esac
3438 rp="Use which C compiler?"
3439 . ./myread
3440 cc="$ans"
3441 : Look for a hint-file generated 'call-back-unit'.  Now that the
3442 : user has specified the compiler, we may need to set or change some
3443 : other defaults.
3444 if $test -f cc.cbu; then
3445     . ./cc.cbu
3446 fi
3447 . ./checkcc
3448
3449 echo " "
3450 echo "Checking for GNU cc in disguise and/or its version number..." >&4
3451 $cat >try.c <<EOM
3452 #include <stdio.h>
3453 int main() {
3454 #ifdef __GNUC__
3455 #ifdef __VERSION__
3456         printf("%s\n", __VERSION__);
3457 #else
3458         printf("%s\n", "1");
3459 #endif
3460 #endif
3461         exit(0);
3462 }
3463 EOM
3464 if $cc -o try $ccflags $ldflags try.c; then
3465         gccversion=`$run ./try`
3466         case "$gccversion" in
3467         '') echo "You are not using GNU cc." ;;
3468         *)  echo "You are using GNU cc $gccversion."
3469             ccname=gcc  
3470             ;;
3471         esac
3472 else
3473         echo " "
3474         echo "*** WHOA THERE!!! ***" >&4
3475         echo "    Your C compiler \"$cc\" doesn't seem to be working!" >&4
3476         case "$knowitall" in
3477         '')
3478         echo "    You'd better start hunting for one and let me know about it." >&4
3479                 exit 1
3480                 ;;
3481         esac
3482 fi
3483 $rm -f try try.*
3484 case "$gccversion" in
3485 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3486 esac
3487 case "$gccversion" in
3488 '') gccosandvers='' ;;
3489 *) gccshortvers=`echo "$gccversion"|sed 's/ .*//'`
3490    gccosandvers=`$cc -v 2>&1|grep '/specs$'|sed "s!.*/[^-/]*-[^-/]*-\([^-/]*\)/$gccshortvers/specs!\1!"`
3491    gccshortvers=''
3492    case "$gccosandvers" in
3493    $osname) gccosandvers='' ;; # linux gccs seem to have no linux osvers, grr
3494    $osname$osvers) ;; # looking good
3495    $osname*) cat <<EOM >&4
3496
3497 *** WHOA THERE!!! ***
3498
3499     Your gcc has not been compiled for the exact release of
3500     your operating system ($gccosandvers versus $osname$osvers).
3501
3502     In general it is a good idea to keep gcc synchronized with
3503     the operating system because otherwise serious problems
3504     may ensue when trying to compile software, like Perl.
3505
3506     I'm trying to be optimistic here, though, and will continue.
3507     If later during the configuration and build icky compilation
3508     problems appear (headerfile conflicts being the most common
3509     manifestation), I suggest reinstalling the gcc to match
3510     your operating system release.
3511
3512 EOM
3513       ;;
3514    *) gccosandvers='' ;; # failed to parse, better be silent
3515    esac
3516    ;;
3517 esac
3518 case "$ccname" in
3519 '') ccname="$cc" ;;
3520 esac
3521
3522
3523 : decide how portable to be.  Allow command line overrides.
3524 case "$d_portable" in
3525 "$undef") ;;
3526 *)      d_portable="$define" ;;
3527 esac
3528
3529 : set up shell script to do ~ expansion
3530 cat >filexp <<EOSS
3531 $startsh
3532 : expand filename
3533 case "\$1" in
3534  ~/*|~)
3535         echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
3536         ;;
3537  ~*)
3538         if $test -f /bin/csh; then
3539                 /bin/csh -f -c "glob \$1"
3540                 failed=\$?
3541                 echo ""
3542                 exit \$failed
3543         else
3544                 name=\`$expr x\$1 : '..\([^/]*\)'\`
3545                 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
3546                 if $test ! -d "\$dir"; then
3547                         me=\`basename \$0\`
3548                         echo "\$me: can't locate home directory for: \$name" >&2
3549                         exit 1
3550                 fi
3551                 case "\$1" in
3552                 */*)
3553                         echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
3554                         ;;
3555                 *)
3556                         echo \$dir
3557                         ;;
3558                 esac
3559         fi
3560         ;;
3561 *)
3562         echo \$1
3563         ;;
3564 esac
3565 EOSS
3566 chmod +x filexp
3567 $eunicefix filexp
3568
3569 : now set up to get a file name
3570 cat <<EOS >getfile
3571 $startsh
3572 EOS
3573 cat <<'EOSC' >>getfile
3574 tilde=''
3575 fullpath=''
3576 already=''
3577 skip=''
3578 none_ok=''
3579 exp_file=''
3580 nopath_ok=''
3581 orig_rp="$rp"
3582 orig_dflt="$dflt"
3583 case "$gfpth" in
3584 '') gfpth='.' ;;
3585 esac
3586
3587 case "$fn" in
3588 *\(*)
3589         expr $fn : '.*(\(.*\)).*' | $tr ',' $trnl >getfile.ok
3590         fn=`echo $fn | sed 's/(.*)//'`
3591         ;;
3592 esac
3593
3594 case "$fn" in
3595 *:*)
3596         loc_file=`expr $fn : '.*:\(.*\)'`
3597         fn=`expr $fn : '\(.*\):.*'`
3598         ;;
3599 esac
3600
3601 case "$fn" in
3602 *~*) tilde=true;;
3603 esac
3604 case "$fn" in
3605 */*) fullpath=true;;
3606 esac
3607 case "$fn" in
3608 *+*) skip=true;;
3609 esac
3610 case "$fn" in
3611 *n*) none_ok=true;;
3612 esac
3613 case "$fn" in
3614 *e*) exp_file=true;;
3615 esac
3616 case "$fn" in
3617 *p*) nopath_ok=true;;
3618 esac
3619
3620 case "$fn" in
3621 *f*) type='File';;
3622 *d*) type='Directory';;
3623 *l*) type='Locate';;
3624 esac
3625
3626 what="$type"
3627 case "$what" in
3628 Locate) what='File';;
3629 esac
3630
3631 case "$exp_file" in
3632 '')
3633         case "$d_portable" in
3634         "$define") ;;
3635         *) exp_file=true;;
3636         esac
3637         ;;
3638 esac
3639
3640 cd ..
3641 while test "$type"; do
3642         redo=''
3643         rp="$orig_rp"
3644         dflt="$orig_dflt"
3645         case "$tilde" in
3646         true) rp="$rp (~name ok)";;
3647         esac
3648         . UU/myread
3649         if test -f UU/getfile.ok && \
3650                 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
3651         then
3652                 value="$ans"
3653                 ansexp="$ans"
3654                 break
3655         fi
3656         case "$ans" in
3657         none)
3658                 value=''
3659                 ansexp=''
3660                 case "$none_ok" in
3661                 true) type='';;
3662                 esac
3663                 ;;
3664         *)
3665                 case "$tilde" in
3666                 '') value="$ans"
3667                         ansexp="$ans";;
3668                 *)
3669                         value=`UU/filexp $ans`
3670                         case $? in
3671                         0)
3672                                 if test "$ans" != "$value"; then
3673                                         echo "(That expands to $value on this system.)"
3674                                 fi
3675                                 ;;
3676                         *) value="$ans";;
3677                         esac
3678                         ansexp="$value"
3679                         case "$exp_file" in
3680                         '') value="$ans";;
3681                         esac
3682                         ;;
3683                 esac
3684                 case "$fullpath" in
3685                 true)
3686                         case "$ansexp" in
3687                         /*) value="$ansexp" ;;
3688                         [a-zA-Z]:/*) value="$ansexp" ;;
3689                         *)
3690                                 redo=true
3691                                 case "$already" in
3692                                 true)
3693                                 echo "I shall only accept a full path name, as in /bin/ls." >&4
3694                                 echo "Use a ! shell escape if you wish to check pathnames." >&4
3695                                         ;;
3696                                 *)
3697                                 echo "Please give a full path name, starting with slash." >&4
3698                                         case "$tilde" in
3699                                         true)
3700                                 echo "Note that using ~name is ok provided it expands well." >&4
3701                                                 already=true
3702                                                 ;;
3703                                         esac
3704                                 esac
3705                                 ;;
3706                         esac
3707                         ;;
3708                 esac
3709                 case "$redo" in
3710                 '')
3711                         case "$type" in
3712                         File)
3713                                 for fp in $gfpth; do
3714                                         if test "X$fp" = X.; then
3715                                             pf="$ansexp"
3716                                         else    
3717                                             pf="$fp/$ansexp"
3718                                         fi
3719                                         if test -f "$pf"; then
3720                                                 type=''
3721                                         elif test -r "$pf" || (test -h "$pf") >/dev/null 2>&1
3722                                         then
3723                                                 echo "($value is not a plain file, but that's ok.)"
3724                                                 type=''
3725                                         fi
3726                                         if test X"$type" = X; then
3727                                             value="$pf"
3728                                             break
3729                                         fi
3730                                 done
3731                                 ;;
3732                         Directory)
3733                                 for fp in $gfpth; do
3734                                         if test "X$fp" = X.; then
3735                                             dir="$ans"
3736                                             direxp="$ansexp"
3737                                         else    
3738                                             dir="$fp/$ansexp"
3739                                             direxp="$fp/$ansexp"
3740                                         fi
3741                                         if test -d "$direxp"; then
3742                                                 type=''
3743                                                 value="$dir"
3744                                                 break
3745                                         fi
3746                                 done
3747                                 ;;
3748                         Locate)
3749                                 if test -d "$ansexp"; then
3750                                         echo "(Looking for $loc_file in directory $value.)"
3751                                         value="$value/$loc_file"
3752                                         ansexp="$ansexp/$loc_file"
3753                                 fi
3754                                 if test -f "$ansexp"; then
3755                                         type=''
3756                                 fi
3757                                 case "$nopath_ok" in
3758                                 true)   case "$value" in
3759                                         */*) ;;
3760                                         *)      echo "Assuming $value will be in people's path."
3761                                                 type=''
3762                                                 ;;
3763                                         esac
3764                                         ;;
3765                                 esac
3766                                 ;;
3767                         esac
3768
3769                         case "$skip" in
3770                         true) type='';
3771                         esac
3772
3773                         case "$type" in
3774                         '') ;;
3775                         *)
3776                                 if test "$fastread" = yes; then
3777                                         dflt=y
3778                                 else
3779                                         dflt=n
3780                                 fi
3781                                 rp="$what $value doesn't exist.  Use that name anyway?"
3782                                 . UU/myread
3783                                 dflt=''
3784                                 case "$ans" in
3785                                 y*) type='';;
3786                                 *) echo " ";;
3787                                 esac
3788                                 ;;
3789                         esac
3790                         ;;
3791                 esac
3792                 ;;
3793         esac
3794 done
3795 cd UU
3796 ans="$value"
3797 rp="$orig_rp"
3798 dflt="$orig_dflt"
3799 rm -f getfile.ok
3800 test "X$gfpthkeep" != Xy && gfpth=""
3801 EOSC
3802
3803 : What should the include directory be ?
3804 echo " "
3805 $echo $n "Hmm...  $c"
3806 dflt='/usr/include'
3807 incpath=''
3808 mips_type=''
3809 if $test -f /bin/mips && /bin/mips; then
3810         echo "Looks like a MIPS system..."
3811         $cat >usr.c <<'EOCP'
3812 #ifdef SYSTYPE_BSD43
3813 /bsd43
3814 #endif
3815 EOCP
3816         if cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
3817                 dflt='/bsd43/usr/include'
3818                 incpath='/bsd43'
3819                 mips_type='BSD 4.3'
3820         else
3821                 mips_type='System V'
3822         fi
3823         $rm -f usr.c usr.out
3824         echo "and you're compiling with the $mips_type compiler and libraries."
3825         xxx_prompt=y
3826         echo "exit 0" >mips
3827 else
3828         echo "Doesn't look like a MIPS system."
3829         xxx_prompt=n
3830         echo "exit 1" >mips
3831 fi
3832 chmod +x mips
3833 $eunicefix mips
3834 case "$usrinc" in
3835 '') ;;
3836 *) dflt="$usrinc";;
3837 esac
3838 case "$xxx_prompt" in
3839 y)      fn=d/
3840         echo " "
3841         rp='Where are the include files you want to use?'
3842         . ./getfile
3843         usrinc="$ans"
3844         ;;
3845 *)      usrinc="$dflt"
3846         ;;
3847 esac
3848
3849 : see how we invoke the C preprocessor
3850 echo " "
3851 echo "Now, how can we feed standard input to your C preprocessor..." >&4
3852 cat <<'EOT' >testcpp.c
3853 #define ABC abc
3854 #define XYZ xyz
3855 ABC.XYZ
3856 EOT
3857 cd ..
3858 if test ! -f cppstdin; then
3859         if test "X$osname" = "Xaix" -a "X$gccversion" = X; then
3860                 # AIX cc -E doesn't show the absolute headerfile
3861                 # locations but we'll cheat by using the -M flag.
3862                 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
3863         else
3864                 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
3865         fi
3866 else
3867         echo "Keeping your $hint cppstdin wrapper."
3868 fi
3869 chmod 755 cppstdin
3870 wrapper=`pwd`/cppstdin
3871 ok='false'
3872 cd UU
3873
3874 if $test "X$cppstdin" != "X" && \
3875         $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
3876         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3877 then
3878         echo "You used to use $cppstdin $cppminus so we'll use that again."
3879         case "$cpprun" in
3880         '') echo "But let's see if we can live without a wrapper..." ;;
3881         *)
3882                 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
3883                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3884                 then
3885                         echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
3886                         ok='true'
3887                 else
3888                         echo "(However, $cpprun $cpplast does not work, let's see...)"
3889                 fi
3890                 ;;
3891         esac
3892 else
3893         case "$cppstdin" in
3894         '') ;;
3895         *)
3896                 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
3897                 ;;
3898         esac
3899 fi
3900
3901 if $ok; then
3902         : nothing
3903 elif echo 'Maybe "'"$cc"' -E" will work...'; \
3904         $cc -E <testcpp.c >testcpp.out 2>&1; \
3905         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3906         echo "Yup, it does."
3907         x_cpp="$cc -E"
3908         x_minus='';
3909 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
3910         $cc -E - <testcpp.c >testcpp.out 2>&1; \
3911         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3912         echo "Yup, it does."
3913         x_cpp="$cc -E"
3914         x_minus='-';
3915 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
3916         $cc -P <testcpp.c >testcpp.out 2>&1; \
3917         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3918         echo "Yipee, that works!"
3919         x_cpp="$cc -P"
3920         x_minus='';
3921 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
3922         $cc -P - <testcpp.c >testcpp.out 2>&1; \
3923         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3924         echo "At long last!"
3925         x_cpp="$cc -P"
3926         x_minus='-';
3927 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
3928         $cpp <testcpp.c >testcpp.out 2>&1; \
3929         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3930         echo "It works!"
3931         x_cpp="$cpp"
3932         x_minus='';
3933 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
3934         $cpp - <testcpp.c >testcpp.out 2>&1; \
3935         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3936         echo "Hooray, it works!  I was beginning to wonder."
3937         x_cpp="$cpp"
3938         x_minus='-';
3939 elif echo 'Uh-uh.  Time to get fancy.  Trying a wrapper...'; \
3940         $wrapper <testcpp.c >testcpp.out 2>&1; \
3941         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3942         x_cpp="$wrapper"
3943         x_minus=''
3944         echo "Eureka!"
3945 else
3946         dflt=''
3947         rp="No dice.  I can't find a C preprocessor.  Name one:"
3948         . ./myread
3949         x_cpp="$ans"
3950         x_minus=''
3951         $x_cpp <testcpp.c >testcpp.out 2>&1
3952         if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3953                 echo "OK, that will do." >&4
3954         else
3955 echo "Sorry, I can't get that to work.  Go find one and rerun Configure." >&4
3956                 exit 1
3957         fi
3958 fi
3959
3960 case "$ok" in
3961 false)
3962         cppstdin="$x_cpp"
3963         cppminus="$x_minus"
3964         cpprun="$x_cpp"
3965         cpplast="$x_minus"
3966         set X $x_cpp
3967         shift
3968         case "$1" in
3969         "$cpp")
3970                 echo "Perhaps can we force $cc -E using a wrapper..."
3971                 if $wrapper <testcpp.c >testcpp.out 2>&1; \
3972                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3973                 then
3974                         echo "Yup, we can."
3975                         cppstdin="$wrapper"
3976                         cppminus='';
3977                 else
3978                         echo "Nope, we'll have to live without it..."
3979                 fi
3980                 ;;
3981         esac
3982         case "$cpprun" in
3983         "$wrapper")
3984                 cpprun=''
3985                 cpplast=''
3986                 ;;
3987         esac
3988         ;;
3989 esac
3990
3991 case "$cppstdin" in
3992 "$wrapper"|'cppstdin') ;;
3993 *) $rm -f $wrapper;;
3994 esac
3995 $rm -f testcpp.c testcpp.out
3996
3997 : Set private lib path
3998 case "$plibpth" in
3999 '') if ./mips; then
4000                 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
4001         fi;;
4002 esac
4003 case "$libpth" in
4004 ' ') dlist='';;
4005 '') dlist="$loclibpth $plibpth $glibpth";;
4006 *) dlist="$libpth";;
4007 esac
4008
4009 : Now check and see which directories actually exist, avoiding duplicates
4010 libpth=''
4011 for xxx in $dlist
4012 do
4013     if $test -d $xxx; then
4014                 case " $libpth " in
4015                 *" $xxx "*) ;;
4016                 *) libpth="$libpth $xxx";;
4017                 esac
4018     fi
4019 done
4020 $cat <<'EOM'
4021
4022 Some systems have incompatible or broken versions of libraries.  Among
4023 the directories listed in the question below, please remove any you
4024 know not to be holding relevant libraries, and add any that are needed.
4025 Say "none" for none.
4026
4027 EOM
4028 case "$libpth" in
4029 '') dflt='none';;
4030 *)
4031         set X $libpth
4032         shift
4033         dflt=${1+"$@"}
4034         ;;
4035 esac
4036 rp="Directories to use for library searches?"
4037 . ./myread
4038 case "$ans" in
4039 none) libpth=' ';;
4040 *) libpth="$ans";;
4041 esac
4042
4043 : compute shared library extension
4044 case "$so" in
4045 '')
4046         if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
4047                 dflt='sl'
4048         else
4049                 dflt='so'
4050         fi
4051         ;;
4052 *) dflt="$so";;
4053 esac
4054 $cat <<EOM
4055
4056 On some systems, shared libraries may be available.  Answer 'none' if
4057 you want to suppress searching of shared libraries for the remainder
4058 of this configuration.
4059
4060 EOM
4061 rp='What is the file extension used for shared libraries?'
4062 . ./myread
4063 so="$ans"
4064
4065 : Define several unixisms.
4066 : Hints files or command line option can be used to override them.
4067 : The convoluted testing is in case hints files set either the old
4068 : or the new name.
4069 case "$_exe" in
4070 '')     case "$exe_ext" in
4071     '') ;;
4072         *)      _exe="$exe_ext" ;;
4073         esac
4074         ;;
4075 esac
4076 case "$_a" in
4077 '')     case "$lib_ext" in
4078     '') _a='.a';;
4079         *)      _a="$lib_ext" ;;
4080         esac
4081         ;;
4082 esac
4083 case "$_o" in
4084 '') case "$obj_ext" in
4085         '')     _o='.o';;
4086         *)      _o="$obj_ext";;
4087         esac
4088         ;;
4089 esac
4090 case "$p_" in
4091 '') case "$path_sep" in
4092         '')     p_=':';;
4093         *)      p_="$path_sep";;
4094         esac
4095         ;;
4096 esac
4097 exe_ext=$_exe
4098 lib_ext=$_a
4099 obj_ext=$_o
4100 path_sep=$p_
4101
4102 : Which makefile gets called first.  This is used by make depend.
4103 case "$firstmakefile" in
4104 '') firstmakefile='makefile';;
4105 esac
4106
4107 case "$usesocks" in
4108 $define|true|[yY]*)     dflt='y';;
4109 *) dflt='n';;
4110 esac
4111 cat <<EOM
4112
4113 Perl can be built to use the SOCKS proxy protocol library.  To do so,
4114 Configure must be run with -Dusesocks.  If you use SOCKS you also need
4115 to use the PerlIO abstraction layer, this will be implicitly selected.
4116
4117 If this doesn't make any sense to you, just accept the default '$dflt'.
4118 EOM
4119 rp='Build Perl for SOCKS?'
4120 . ./myread
4121 case "$ans" in
4122 y|Y)    val="$define" ;;     
4123 *)      val="$undef" ;;
4124 esac
4125 set usesocks
4126 eval $setvar
4127
4128 case "$usesocks" in
4129 $define|true|[yY]*) useperlio="$define";;
4130 esac
4131
4132 : Looking for optional libraries
4133 echo " "
4134 echo "Checking for optional libraries..." >&4
4135 case "$libs" in
4136 ' '|'') dflt='';;
4137 *) dflt="$libs";;
4138 esac
4139 case "$libswanted" in
4140 '') libswanted='c_s';;
4141 esac
4142 case "$usesocks" in
4143 "$define") libswanted="$libswanted socks5 socks5_sh" ;;
4144 esac
4145 libsfound=''
4146 libsfiles=''
4147 libsdirs=''
4148 libspath=''
4149 for thisdir in $libpth $xlibpth; do
4150   test -d $thisdir && libspath="$libspath $thisdir"
4151 done
4152 for thislib in $libswanted; do
4153         for thisdir in $libspath; do
4154             xxx=''
4155             if $test ! -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
4156                 xxx=`ls $thisdir/lib$thislib.$so.[0-9] 2>/dev/null|tail -1`
4157                 $test -f "$xxx" && eval $libscheck
4158                 $test -f "$xxx" && libstyle=shared
4159             fi
4160             if test ! -f "$xxx"; then
4161                 xxx=$thisdir/lib$thislib.$so
4162                 $test -f "$xxx" && eval $libscheck
4163                 $test -f "$xxx" && libstyle=shared
4164             fi  
4165             if test ! -f "$xxx"; then
4166                 xxx=$thisdir/lib$thislib$_a
4167                 $test -f "$xxx" && eval $libscheck
4168                 $test -f "$xxx" && libstyle=static
4169             fi
4170             if test ! -f "$xxx"; then
4171                 xxx=$thisdir/$thislib$_a
4172                 $test -f "$xxx" && eval $libscheck
4173                 $test -f "$xxx" && libstyle=static
4174             fi
4175             if test ! -f "$xxx"; then
4176                 xxx=$thisdir/lib${thislib}_s$_a
4177                 $test -f "$xxx" && eval $libscheck
4178                 $test -f "$xxx" && libstyle=static
4179                 $test -f "$xxx" && thislib=${thislib}_s
4180             fi
4181             if test ! -f "$xxx"; then
4182                 xxx=$thisdir/Slib$thislib$_a
4183                 $test -f "$xxx" && eval $libscheck
4184                 $test -f "$xxx" && libstyle=static
4185             fi
4186             if $test -f "$xxx"; then
4187                 case "$libstyle" in
4188                 shared) echo "Found -l$thislib (shared)." ;;
4189                 static) echo "Found -l$thislib." ;;
4190                 *)      echo "Found -l$thislib ($libstyle)." ;;
4191                 esac
4192                 case " $dflt " in
4193                 *"-l$thislib "*);;
4194                 *) dflt="$dflt -l$thislib"
4195                    libsfound="$libsfound $xxx"
4196                    yyy=`basename $xxx`
4197                    libsfiles="$libsfiles $yyy"
4198                    yyy=`echo $xxx|$sed -e "s%/$yyy\\$%%"`
4199                    case " $libsdirs " in
4200                    *" $yyy "*) ;;
4201                    *) libsdirs="$libsdirs $yyy" ;;
4202                    esac
4203                    ;;
4204                 esac
4205                 break
4206             fi  
4207         done
4208         if $test ! -f "$xxx"; then
4209             echo "No -l$thislib."
4210         fi
4211 done
4212 set X $dflt
4213 shift
4214 dflt="$*"
4215 case "$libs" in
4216 '') dflt="$dflt";;
4217 *) dflt="$libs";;
4218 esac
4219 case "$dflt" in
4220 ' '|'') dflt='none';;
4221 esac
4222
4223 $cat <<EOM
4224
4225 In order to compile $package on your machine, a number of libraries
4226 are usually needed.  Include any other special libraries here as well.
4227 Say "none" for none.  The default list is almost always right.
4228 EOM
4229
4230 echo " "
4231 rp="What libraries to use?"
4232 . ./myread
4233 case "$ans" in
4234 none) libs=' ';;
4235 *) libs="$ans";;
4236 esac
4237
4238 : determine optimization, if desired, or use for debug flag also
4239 case "$optimize" in
4240 ' '|$undef) dflt='none';;
4241 '') dflt='-O';;
4242 *) dflt="$optimize";;
4243 esac
4244 $cat <<EOH
4245
4246 By default, $package compiles with the -O flag to use the optimizer.
4247 Alternately, you might want to use the symbolic debugger, which uses
4248 the -g flag (on traditional Unix systems).  Either flag can be
4249 specified here.  To use neither flag, specify the word "none".
4250
4251 EOH
4252 rp="What optimizer/debugger flag should be used?"
4253 . ./myread
4254 optimize="$ans"
4255 case "$optimize" in
4256 'none') optimize=" ";;
4257 esac
4258
4259 dflt=''
4260 : We will not override a previous value, but we might want to
4261 : augment a hint file
4262 case "$hint" in
4263 default|recommended)
4264         case "$gccversion" in
4265         1*) dflt='-fpcc-struct-return' ;;
4266         esac
4267         case "$optimize" in
4268         *-g*) dflt="$dflt -DDEBUGGING";;
4269         esac
4270         case "$gccversion" in
4271         2*) if test -d /etc/conf/kconfig.d &&
4272                         $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
4273                 then
4274                         dflt="$dflt -posix"
4275                 fi
4276                 ;;
4277         esac
4278         case "$gccversion" in
4279         1*) ;;
4280         2.[0-8]*) ;;
4281         ?*)     echo " "
4282                 echo "Checking if your compiler accepts -fno-strict-aliasing" 2>&1
4283                 echo 'int main(void) { return 0; }' > gcctest.c
4284                 if $cc -O2 -fno-strict-aliasing -o gcctest gcctest.c; then
4285                         echo "Yes, it does." 2>&1
4286                         case "$ccflags" in
4287                         *strict-aliasing*) 
4288                                 echo "Leaving current flags $ccflags alone." 2>&1
4289                                 ;;
4290                         *) dflt="$dflt -fno-strict-aliasing" ;;
4291                         esac
4292                 else
4293                         echo "Nope, it doesn't, but that's ok." 2>&1
4294                 fi
4295                 ;;
4296         esac
4297         ;;
4298 esac
4299
4300 case "$mips_type" in
4301 *BSD*|'') inclwanted="$locincpth $usrinc";;
4302 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
4303 esac
4304 for thisincl in $inclwanted; do
4305         if $test -d $thisincl; then
4306                 if $test x$thisincl != x$usrinc; then
4307                         case "$dflt" in
4308                         *" -I$thisincl "*);;
4309                         *) dflt="$dflt -I$thisincl ";;
4310                         esac
4311                 fi
4312         fi
4313 done
4314
4315 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
4316         xxx=true;
4317 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
4318         xxx=true;
4319 else
4320         xxx=false;
4321 fi;
4322 if $xxx; then
4323         case "$dflt" in
4324         *$2*);;
4325         *) dflt="$dflt -D$2";;
4326         esac;
4327 fi'
4328
4329 set signal.h LANGUAGE_C; eval $inctest
4330
4331 case "$usesocks" in
4332 $define)
4333         ccflags="$ccflags -DSOCKS"
4334         ;;
4335 esac
4336
4337 case "$hint" in
4338 default|recommended) dflt="$ccflags $dflt" ;;
4339 *) dflt="$ccflags";;
4340 esac
4341
4342 case "$dflt" in
4343 ''|' ') dflt=none;;
4344 esac
4345
4346 $cat <<EOH
4347
4348 Your C compiler may want other flags.  For this question you should include
4349 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
4350 but you should NOT include libraries or ld flags like -lwhatever.  If you
4351 want $package to honor its debug switch, you should include -DDEBUGGING here.
4352 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
4353
4354 To use no flags, specify the word "none".
4355
4356 EOH
4357 set X $dflt
4358 shift
4359 dflt=${1+"$@"}
4360 rp="Any additional cc flags?"
4361 . ./myread
4362 case "$ans" in
4363 none) ccflags='';;
4364 *) ccflags="$ans";;
4365 esac
4366
4367 : the following weeds options from ccflags that are of no interest to cpp
4368 case "$cppflags" in
4369 '') cppflags="$ccflags" ;;
4370 *)  cppflags="$cppflags $ccflags" ;;
4371 esac
4372 case "$gccversion" in
4373 1*) cppflags="$cppflags -D__GNUC__"
4374 esac
4375 case "$mips_type" in
4376 '');;
4377 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
4378 esac
4379 case "$cppflags" in
4380 '');;
4381 *)
4382         echo " "
4383         echo "Let me guess what the preprocessor flags are..." >&4
4384         set X $cppflags
4385         shift
4386         cppflags=''
4387         $cat >cpp.c <<'EOM'
4388 #define BLURFL foo
4389
4390 BLURFL xx LFRULB
4391 EOM
4392         previous=''
4393         for flag in $*
4394         do
4395                 case "$flag" in
4396                 -*) ftry="$flag";;
4397                 *) ftry="$previous $flag";;
4398                 esac
4399                 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
4400                         >cpp1.out 2>/dev/null && \
4401                         $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
4402                         >cpp2.out 2>/dev/null && \
4403                         $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
4404                         $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
4405                 then
4406                         cppflags="$cppflags $ftry"
4407                         previous=''
4408                 else
4409                         previous="$flag"
4410                 fi
4411         done
4412         set X $cppflags
4413         shift
4414         cppflags=${1+"$@"}
4415         case "$cppflags" in
4416         *-*)  echo "They appear to be: $cppflags";;
4417         esac
4418         $rm -f cpp.c cpp?.out
4419         ;;
4420 esac
4421
4422 : flags used in final linking phase
4423 case "$ldflags" in
4424 '') if ./venix; then
4425                 dflt='-i -z'
4426         else
4427                 dflt=''
4428         fi
4429         case "$ccflags" in
4430         *-posix*) dflt="$dflt -posix" ;;
4431         esac
4432         ;;
4433 *) dflt="$ldflags";;
4434 esac
4435
4436 : Try to guess additional flags to pick up local libraries.
4437 for thislibdir in $libpth; do
4438         case " $loclibpth " in
4439         *" $thislibdir "*)
4440                 case "$dflt " in 
4441                 *"-L$thislibdir "*) ;;
4442                 *)  dflt="$dflt -L$thislibdir" ;;
4443                 esac
4444                 ;;
4445         esac
4446 done
4447
4448 case "$dflt" in
4449 '') dflt='none' ;;
4450 esac
4451
4452 $cat <<EOH
4453
4454 Your C linker may need flags.  For this question you should
4455 include -L/whatever and any other flags used by the C linker, but you
4456 should NOT include libraries like -lwhatever.
4457
4458 Make sure you include the appropriate -L/path flags if your C linker
4459 does not normally search all of the directories you specified above,
4460 namely
4461         $libpth
4462 To use no flags, specify the word "none".
4463
4464 EOH
4465
4466 rp="Any additional ld flags (NOT including libraries)?"
4467 . ./myread
4468 case "$ans" in
4469 none) ldflags='';;
4470 *) ldflags="$ans";;
4471 esac
4472 rmlist="$rmlist pdp11"
4473
4474 : coherency check
4475 echo " "
4476 echo "Checking your choice of C compiler and flags for coherency..." >&4
4477 $cat > try.c <<'EOF'
4478 #include <stdio.h>
4479 int main() { printf("Ok\n"); exit(0); }
4480 EOF
4481 set X $cc -o try $optimize $ccflags $ldflags try.c $libs
4482 shift
4483 $cat >try.msg <<'EOM'
4484 I've tried to compile and run the following simple program:
4485
4486 EOM
4487 $cat try.c >> try.msg
4488
4489 $cat >> try.msg <<EOM
4490
4491 I used the command:
4492
4493         $*
4494         $run ./try
4495
4496 and I got the following output:
4497
4498 EOM
4499 dflt=y
4500 if $sh -c "$cc -o try $optimize $ccflags $ldflags try.c $libs" >>try.msg 2>&1; then
4501         if $sh -c "$run ./try" >>try.msg 2>&1; then
4502                 xxx=`$run ./try`
4503                 case "$xxx" in
4504                 "Ok") dflt=n ;;
4505                 *)      echo 'The program compiled OK, but produced no output.' >> try.msg
4506                         case " $libs " in
4507                         *" -lsfio "*)
4508                                 cat >> try.msg <<'EOQS'
4509 If $libs contains -lsfio, and sfio is mis-configured, then it
4510 sometimes (apparently) runs and exits with a 0 status, but with no
4511 output!  It may have to do with sfio's use of _exit vs. exit.
4512
4513 EOQS
4514                                 rp="You have a big problem.  Shall I abort Configure"
4515                                 dflt=y
4516                                 ;;
4517                         esac
4518                         ;;
4519                 esac
4520         else
4521                 echo "The program compiled OK, but exited with status $?." >>try.msg
4522                 rp="You have a problem.  Shall I abort Configure"
4523                 dflt=y
4524         fi
4525 else
4526         echo "I can't compile the test program." >>try.msg
4527         rp="You have a BIG problem.  Shall I abort Configure"
4528         dflt=y
4529 fi
4530 case "$dflt" in
4531 y)
4532         $cat try.msg >&4
4533         case "$knowitall" in
4534         '')
4535                 echo "(The supplied flags or libraries might be incorrect.)"
4536                 ;;
4537         *) dflt=n;;
4538         esac
4539         echo " "
4540         . ./myread
4541         case "$ans" in
4542         n*|N*) ;;
4543         *)      echo "Ok.  Stopping Configure." >&4
4544                 exit 1
4545                 ;;
4546         esac
4547         ;;
4548 n) echo "OK, that should do.";;
4549 esac
4550 $rm -f try try.* core
4551
4552 : define a shorthand compile call
4553 compile='
4554 mc_file=$1;
4555 shift;
4556 $cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs > /dev/null 2>&1;'
4557 : define a shorthand compile call for compilations that should be ok.
4558 compile_ok='
4559 mc_file=$1;
4560 shift;
4561 $cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs;'
4562
4563 : check for lengths of integral types
4564 echo " "
4565 case "$intsize" in
4566 '')
4567         echo "Checking to see how big your integers are..." >&4
4568         $cat >try.c <<'EOCP'
4569 #include <stdio.h>
4570 int main()
4571 {
4572         printf("intsize=%d;\n", (int)sizeof(int));
4573         printf("longsize=%d;\n", (int)sizeof(long));
4574         printf("shortsize=%d;\n", (int)sizeof(short));
4575         exit(0);
4576 }
4577 EOCP
4578         set try
4579         if eval $compile_ok && $run ./try > /dev/null; then
4580                 eval `$run ./try`
4581                 echo "Your integers are $intsize bytes long."
4582                 echo "Your long integers are $longsize bytes long."
4583                 echo "Your short integers are $shortsize bytes long."
4584         else
4585                 $cat >&4 <<EOM
4586 !
4587 Help! I can't compile and run the intsize test program: please enlighten me!
4588 (This is probably a misconfiguration in your system or libraries, and
4589 you really ought to fix it.  Still, I'll try anyway.)
4590 !
4591 EOM
4592                 dflt=4
4593                 rp="What is the size of an integer (in bytes)?"
4594                 . ./myread
4595                 intsize="$ans"
4596                 dflt=$intsize
4597                 rp="What is the size of a long integer (in bytes)?"
4598                 . ./myread
4599                 longsize="$ans"
4600                 dflt=2
4601                 rp="What is the size of a short integer (in bytes)?"
4602                 . ./myread
4603                 shortsize="$ans"
4604         fi
4605         ;;
4606 esac
4607 $rm -f try try.*
4608
4609 : check for void type
4610 echo " "
4611 echo "Checking to see how well your C compiler groks the void type..." >&4
4612 case "$voidflags" in
4613 '')
4614         $cat >try.c <<'EOCP'
4615 #if TRY & 1
4616 void sub() {
4617 #else
4618 sub() {
4619 #endif
4620         extern void moo();      /* function returning void */
4621         void (*goo)();          /* ptr to func returning void */
4622 #if TRY & 8
4623         void *hue;              /* generic ptr */
4624 #endif
4625 #if TRY & 2
4626         void (*foo[10])();
4627 #endif
4628
4629 #if TRY & 4
4630         if(goo == moo) {
4631                 exit(0);
4632         }
4633 #endif
4634         exit(0);
4635 }
4636 int main() { sub(); }
4637 EOCP
4638         if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
4639                 voidflags=$defvoidused
4640         echo "Good.  It appears to support void to the level $package wants.">&4
4641                 if $contains warning .out >/dev/null 2>&1; then
4642                         echo "However, you might get some warnings that look like this:"
4643                         $cat .out
4644                 fi
4645         else
4646 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
4647                 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
4648                         echo "It supports 1..."
4649                         if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
4650                                 echo "It also supports 2..."
4651                                 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
4652                                         voidflags=7
4653                                         echo "And it supports 4 but not 8 definitely."
4654                                 else
4655                                         echo "It doesn't support 4..."
4656                                         if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
4657                                                 voidflags=11
4658                                                 echo "But it supports 8."
4659                                         else
4660                                                 voidflags=3
4661                                                 echo "Neither does it support 8."
4662                                         fi
4663                                 fi
4664                         else
4665                                 echo "It does not support 2..."
4666                                 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
4667                                         voidflags=13
4668                                         echo "But it supports 4 and 8."
4669                                 else
4670                                         if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
4671                                                 voidflags=5
4672                                                 echo "And it supports 4 but has not heard about 8."
4673                                         else
4674                                                 echo "However it supports 8 but not 4."
4675                                         fi
4676                                 fi
4677                         fi
4678                 else
4679                         echo "There is no support at all for void."
4680                         voidflags=0
4681                 fi
4682         fi
4683 esac
4684 case "$voidflags" in
4685 "$defvoidused") ;;
4686 *)      $cat >&4 <<'EOM'
4687   Support flag bits are:
4688     1: basic void declarations.
4689     2: arrays of pointers to functions returning void.
4690     4: operations between pointers to and addresses of void functions.
4691     8: generic void pointers.
4692 EOM
4693         dflt="$voidflags";
4694         rp="Your void support flags add up to what?"
4695         . ./myread
4696         voidflags="$ans"
4697         ;;
4698 esac
4699 $rm -f try.* .out
4700
4701 : check for length of pointer
4702 echo " "
4703 case "$ptrsize" in
4704 '')
4705         echo "Checking to see how big your pointers are..." >&4
4706         if test "$voidflags" -gt 7; then
4707                 echo '#define VOID_PTR char *' > try.c
4708         else
4709                 echo '#define VOID_PTR void *' > try.c
4710         fi
4711         $cat >>try.c <<'EOCP'
4712 #include <stdio.h>
4713 int main()
4714 {
4715     printf("%d\n", (int)sizeof(VOID_PTR));
4716     exit(0);
4717 }
4718 EOCP
4719         set try
4720         if eval $compile_ok; then
4721                 ptrsize=`$run ./try`
4722                 echo "Your pointers are $ptrsize bytes long."
4723         else
4724                 dflt='4'
4725                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
4726                 rp="What is the size of a pointer (in bytes)?"
4727                 . ./myread
4728                 ptrsize="$ans"
4729         fi
4730         ;;
4731 esac
4732 $rm -f try.c try
4733
4734 : check for long long
4735 echo " "
4736 echo "Checking to see if you have long long..." >&4
4737 echo 'int main() { long long x = 7; return 0; }' > try.c
4738 set try
4739 if eval $compile; then
4740         val="$define"
4741         echo "You have long long."
4742 else
4743         val="$undef"
4744         echo "You do not have long long."
4745 fi
4746 $rm try.*
4747 set d_longlong
4748 eval $setvar
4749
4750 : check for length of long long
4751 case "${d_longlong}${longlongsize}" in
4752 $define)
4753         echo " "
4754         echo "Checking to see how big your long longs are..." >&4
4755         $cat >try.c <<'EOCP'
4756 #include <stdio.h>
4757 int main()
4758 {
4759     printf("%d\n", (int)sizeof(long long));
4760     return(0);
4761 }
4762 EOCP
4763         set try
4764         if eval $compile_ok; then
4765                 longlongsize=`$run ./try`
4766                 echo "Your long longs are $longlongsize bytes long."
4767         else
4768                 dflt='8'
4769                 echo " "
4770                 echo "(I can't seem to compile the test program.  Guessing...)"
4771                 rp="What is the size of a long long (in bytes)?"
4772                 . ./myread
4773                 longlongsize="$ans"
4774         fi
4775         if $test "X$longsize" = "X$longlongsize"; then
4776                 echo "(That isn't any different from an ordinary long.)"
4777         fi      
4778         ;;
4779 esac
4780 $rm -f try.* try
4781
4782 : determine filename position in cpp output
4783 echo " "
4784 echo "Computing filename position in cpp output for #include directives..." >&4
4785 echo '#include <stdio.h>' > foo.c
4786 $cat >fieldn <<EOF
4787 $startsh
4788 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
4789 $grep '^[       ]*#.*stdio\.h' | \
4790 while read cline; do
4791         pos=1
4792         set \$cline
4793         while $test \$# -gt 0; do
4794                 if $test -r \`echo \$1 | $tr -d '"'\`; then
4795                         echo "\$pos"
4796                         exit 0
4797                 fi
4798                 shift
4799                 pos=\`expr \$pos + 1\`
4800         done
4801 done
4802 EOF
4803 chmod +x fieldn
4804 fieldn=`./fieldn`
4805 $rm -f foo.c fieldn
4806 case $fieldn in
4807 '') pos='???';;
4808 1) pos=first;;
4809 2) pos=second;;
4810 3) pos=third;;
4811 *) pos="${fieldn}th";;
4812 esac
4813 echo "Your cpp writes the filename in the $pos field of the line."
4814
4815 : locate header file
4816 $cat >findhdr <<EOF
4817 $startsh
4818 wanted=\$1
4819 name=''
4820 for usrincdir in $usrinc
4821 do
4822         if test -f \$usrincdir/\$wanted; then
4823                 echo "\$usrincdir/\$wanted"
4824                 exit 0
4825         fi
4826 done
4827 awkprg='{ print \$$fieldn }'
4828 echo "#include <\$wanted>" > foo\$\$.c
4829 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
4830 $grep "^[       ]*#.*\$wanted" | \
4831 while read cline; do
4832         name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
4833         case "\$name" in
4834         *[/\\\\]\$wanted) echo "\$name"; exit 1;;
4835         *[\\\\/]\$wanted) echo "\$name"; exit 1;;
4836         *) exit 2;;
4837         esac;
4838 done;
4839 #
4840 # status = 0: grep returned 0 lines, case statement not executed
4841 # status = 1: headerfile found
4842 # status = 2: while loop executed, no headerfile found
4843 #
4844 status=\$?
4845 $rm -f foo\$\$.c;
4846 if test \$status -eq 1; then
4847         exit 0;
4848 fi
4849 exit 1
4850 EOF
4851 chmod +x findhdr
4852
4853 : define an alternate in-header-list? function
4854 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
4855 cont=true; xxf="echo \"<\$1> found.\" >&4";
4856 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
4857 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
4858 esac;
4859 case $# in 4) instead=instead;; *) instead="at last";; esac;
4860 while $test "$cont"; do
4861         xxx=`./findhdr $1`
4862         var=$2; eval "was=\$$2";
4863         if $test "$xxx" && $test -r "$xxx";
4864         then eval $xxf;
4865         eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
4866                 cont="";
4867         else eval $xxnf;
4868         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
4869         set $yyy; shift; shift; yyy=$@;
4870         case $# in 0) cont="";;
4871         2) xxf="echo \"but I found <\$1> $instead.\" >&4";
4872                 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
4873         *) xxf="echo \"but I found <\$1\> instead.\" >&4";
4874                 xxnf="echo \"there is no <\$1>, ...\" >&4";;
4875         esac;
4876 done;
4877 while $test "$yyy";
4878 do set $yyy; var=$2; eval "was=\$$2";
4879         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
4880         set $yyy; shift; shift; yyy=$@;
4881 done'
4882
4883 : see if inttypes.h is available
4884 : we want a real compile instead of Inhdr because some systems
4885 : have an inttypes.h which includes non-existent headers
4886 echo " "
4887 $cat >try.c <<EOCP
4888 #include <inttypes.h>
4889 int main() {
4890         static int32_t foo32 = 0x12345678;
4891 }
4892 EOCP
4893 set try
4894 if eval $compile; then
4895         echo "<inttypes.h> found." >&4
4896         val="$define"
4897 else
4898         echo "<inttypes.h> NOT found." >&4
4899         val="$undef"
4900 fi
4901 $rm -f try.c try
4902 set i_inttypes
4903 eval $setvar
4904
4905 : check for int64_t
4906 echo " "
4907 echo "Checking to see if you have int64_t..." >&4
4908 $cat >try.c <<EOCP
4909 #include <sys/types.h>
4910 #$i_inttypes I_INTTYPES
4911 #ifdef I_INTTYPES
4912 #include <inttypes.h>
4913 #endif
4914 int main() { int64_t x = 7; }
4915 EOCP
4916 set try
4917 if eval $compile; then
4918         val="$define"
4919         echo "You have int64_t."
4920 else
4921         val="$undef"
4922         echo "You do not have int64_t."
4923 fi
4924 $rm -f try try.*
4925 set d_int64_t
4926 eval $setvar
4927
4928
4929 echo " "
4930 echo "Checking which 64-bit integer type we could use..." >&4
4931
4932 case "$intsize" in
4933 8) val=int
4934    set quadtype
4935    eval $setvar
4936    val='"unsigned int"'
4937    set uquadtype
4938    eval $setvar
4939    quadkind=1
4940    ;;
4941 *) case "$longsize" in
4942    8) val=long
4943       set quadtype
4944       eval $setvar
4945       val='"unsigned long"'
4946       set uquadtype
4947       eval $setvar
4948       quadkind=2
4949       ;;
4950    *) case "$d_longlong:$longlongsize" in
4951       define:8)
4952         val='"long long"'
4953         set quadtype
4954         eval $setvar
4955         val='"unsigned long long"'
4956         set uquadtype
4957         eval $setvar
4958         quadkind=3
4959         ;;
4960       *) case "$d_int64_t" in
4961          define)
4962            val=int64_t
4963            set quadtype
4964            eval $setvar
4965            val=uint64_t
4966            set uquadtype
4967            eval $setvar
4968            quadkind=4
4969            ;;
4970          esac
4971          ;;
4972       esac
4973       ;;
4974    esac
4975    ;;
4976 esac
4977
4978 case "$quadtype" in
4979 '')     echo "Alas, no 64-bit integer types in sight." >&4
4980         d_quad="$undef"
4981         ;;
4982 *)      echo "We could use '$quadtype' for 64-bit integers." >&4
4983         d_quad="$define"
4984         ;;
4985 esac
4986
4987
4988 case "$uselonglong" in
4989 "$define"|true|[yY]*)
4990         cat <<EOM >&4
4991
4992 *** Configure -Duselonglong is deprecated, using -Duse64bitint instead.
4993 EOM
4994         use64bitint="$define"
4995         ;;
4996 esac                          
4997 case "$use64bits" in
4998 "$define"|true|[yY]*)
4999         cat <<EOM >&4
5000
5001 *** Configure -Duse64bits is deprecated, using -Duse64bitint instead.
5002 EOM
5003         use64bitint="$define"
5004         ;;
5005 esac                          
5006 case "$use64bitints" in
5007 "$define"|true|[yY]*)
5008         cat <<EOM >&4
5009
5010 *** There is no Configure -Duse64bitints, using -Duse64bitint instead.
5011 EOM
5012         use64bitint="$define"
5013         ;;
5014 esac                          
5015 case "$use64bitsint" in
5016 "$define"|true|[yY]*)
5017         cat <<EOM >&4
5018
5019 *** There is no Configure -Duse64bitsint, using -Duse64bitint instead.
5020 EOM
5021         use64bitint="$define"
5022         ;;
5023 esac                          
5024 case "$uselonglongs" in
5025 "$define"|true|[yY]*)
5026         cat <<EOM >&4
5027
5028 *** There is no Configure -Duselonglongs, using -Duse64bitint instead.
5029 EOM
5030         use64bitint="$define"
5031         ;;
5032 esac                          
5033 case "$use64bitsall" in
5034 "$define"|true|[yY]*)
5035         cat <<EOM >&4
5036
5037 *** There is no Configure -Duse64bitsall, using -Duse64bitall instead.
5038 EOM
5039         use64bitall="$define"
5040         ;;
5041 esac                          
5042
5043 case "$ccflags" in
5044 *-DUSE_LONG_LONG*|*-DUSE_64_BIT_INT*|*-DUSE_64_BIT_ALL*) use64bitint="$define";;
5045 esac
5046 case "$use64bitall" in
5047 "$define"|true|[yY]*) use64bitint="$define" ;;
5048 esac
5049
5050 case "$longsize" in
5051 8) cat <<EOM
5052
5053 You have natively 64-bit long integers.
5054 EOM
5055    val="$define"
5056    ;;
5057 *) case "$use64bitint" in
5058    "$define"|true|[yY]*) dflt='y';;
5059    *) dflt='n';;
5060    esac
5061    case "$d_quad" in
5062    "$define") ;;
5063    *) dflt='n' ;;
5064    esac
5065    cat <<EOM
5066
5067 Perl can be built to take advantage of 64-bit integer types
5068 on some systems.  To do so, Configure can be run with -Duse64bitint.
5069 Choosing this option will most probably introduce binary incompatibilities.
5070
5071 If this doesn't make any sense to you, just accept the default '$dflt'.
5072 (The default has been chosen based on your configuration.)
5073 EOM
5074    rp='Try to use 64-bit integers, if available?'
5075    . ./myread
5076    case "$ans" in
5077    [yY]*) val="$define" ;;
5078    *)     val="$undef"  ;;
5079    esac
5080    ;;
5081 esac
5082 set use64bitint
5083 eval $setvar
5084
5085 case "$use64bitall" in
5086 "$define"|true|[yY]*) dflt='y' ;;
5087 *) case "$longsize" in
5088    8) dflt='y' ;;
5089    *) dflt='n' ;;
5090    esac
5091    ;;
5092 esac    
5093 cat <<EOM
5094
5095 You may also choose to try maximal 64-bitness.  It means using as much
5096 64-bitness as possible on the platform.  This in turn means even more
5097 binary incompatibilities.  On the other hand, your platform may not
5098 have any more 64-bitness available than what you already have chosen.
5099
5100 If this doesn't make any sense to you, just accept the default '$dflt'.
5101 (The default has been chosen based on your configuration.)
5102 EOM
5103 rp='Try to use maximal 64-bit support, if available?'
5104 . ./myread
5105 case "$ans" in
5106 [yY]*) val="$define" ;;
5107 *)     val="$undef"  ;;
5108 esac
5109 set use64bitall
5110 eval $setvar
5111 case "$use64bitall" in
5112 "$define")
5113         case "$use64bitint" in
5114         "$undef")
5115                 cat <<EOM
5116
5117 Since you have chosen a maximally 64-bit build, I'm also turning on
5118 the use of 64-bit integers.
5119 EOM
5120                 use64bitint="$define" ;;
5121         esac
5122         ;;
5123 esac
5124
5125 case "$use64bitall" in
5126 "$define"|true|[yY]*)
5127         case "$ptrsize" in
5128         4)      cat <<EOM >&4
5129
5130 *** You have chosen a maximally 64-bit build, but your pointers
5131 *** are only 4 bytes wide, disabling maximal 64-bitness.
5132
5133 EOM
5134                 use64bitall="$undef"
5135                 case "$use64bitint" in
5136                 "$define"|true|[yY]*) ;;
5137                 *)      cat <<EOM >&4
5138
5139 *** Downgrading from maximal 64-bitness to using 64-bit integers.
5140
5141 EOM
5142                         use64bitint="$define"
5143                         ;;
5144                 esac
5145                 ;;
5146         esac
5147         ;;
5148 esac
5149
5150 case "$use64bitint" in
5151 "$define"|true|[yY]*)
5152 : Look for a hint-file generated 'call-back-unit'.  If the
5153 : user has specified that a 64-bit perl is to be built,
5154 : we may need to set or change some other defaults.
5155         if $test -f use64bitint.cbu; then
5156                 echo "Your platform has some specific hints for 64-bit integers, using them..."
5157                 . ./use64bitint.cbu
5158         fi
5159         case "$longsize" in
5160         4) case "$archname64" in
5161            '') archname64=64int ;;
5162            esac
5163            ;;
5164         esac
5165         ;;
5166 esac
5167
5168 case "$use64bitall" in
5169 "$define"|true|[yY]*)
5170 : Look for a hint-file generated 'call-back-unit'.  If the
5171 : user has specified that a maximally 64-bit perl is to be built,
5172 : we may need to set or change some other defaults.
5173         if $test -f use64bitall.cbu; then
5174                 echo "Your platform has some specific hints for 64-bit builds, using them..."
5175                 . ./use64bitall.cbu
5176         fi
5177         case "$longsize" in
5178         4) case "$archname64" in
5179            ''|64int) archname64=64all ;;
5180            esac
5181            ;;
5182         esac
5183         ;;
5184 esac
5185
5186 echo " "
5187 echo "Checking for GNU C Library..." >&4
5188 cat >try.c <<EOM
5189 #include <stdio.h>
5190 int main()
5191 {
5192 #ifdef __GLIBC__
5193     exit(0);
5194 #else
5195     exit(1);
5196 #endif
5197 }
5198 EOM
5199 set try
5200 if eval $compile_ok && $run ./try; then
5201         val="$define"
5202         echo "You are using the GNU C Library"
5203 else
5204         val="$undef"
5205         echo "You are not using the GNU C Library"
5206 fi
5207 $rm -f try try.*
5208 set d_gnulibc
5209 eval $setvar
5210
5211 : see if nm is to be used to determine whether a symbol is defined or not
5212 case "$usenm" in
5213 '')
5214         dflt=''
5215         case "$d_gnulibc" in
5216         "$define")
5217                 echo " "
5218                 echo "nm probably won't work on the GNU C Library." >&4
5219                 dflt=n
5220                 ;;
5221         esac
5222         case "$dflt" in
5223         '') 
5224                 if $test "$osname" = aix -a ! -f /lib/syscalls.exp; then
5225                         echo " "
5226                         echo "Whoops!  This is an AIX system without /lib/syscalls.exp!" >&4
5227                         echo "'nm' won't be sufficient on this sytem." >&4
5228                         dflt=n
5229                 fi
5230                 ;;
5231         esac
5232         case "$dflt" in
5233         '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
5234                 if $test $dflt -gt 20; then
5235                         dflt=y
5236                 else
5237                         dflt=n
5238                 fi
5239                 ;;
5240         esac
5241         ;;
5242 *)
5243         case "$usenm" in
5244         true|$define) dflt=y;;
5245         *) dflt=n;;
5246         esac
5247         ;;
5248 esac
5249 $cat <<EOM
5250
5251 I can use $nm to extract the symbols from your C libraries. This
5252 is a time consuming task which may generate huge output on the disk (up
5253 to 3 megabytes) but that should make the symbols extraction faster. The
5254 alternative is to skip the 'nm' extraction part and to compile a small
5255 test program instead to determine whether each symbol is present. If
5256 you have a fast C compiler and/or if your 'nm' output cannot be parsed,
5257 this may be the best solution.
5258
5259 You probably shouldn't let me use 'nm' if you are using the GNU C Library.
5260
5261 EOM
5262 rp="Shall I use $nm to extract C symbols from the libraries?"
5263 . ./myread
5264 case "$ans" in
5265 [Nn]*) usenm=false;;
5266 *) usenm=true;;
5267 esac
5268
5269 runnm=$usenm
5270 case "$reuseval" in
5271 true) runnm=false;;
5272 esac
5273
5274 : nm options which may be necessary
5275 case "$nm_opt" in
5276 '') if $test -f /mach_boot; then
5277                 nm_opt=''       # Mach
5278         elif $test -d /usr/ccs/lib; then
5279                 nm_opt='-p'     # Solaris (and SunOS?)
5280         elif $test -f /dgux; then
5281                 nm_opt='-p'     # DG-UX
5282         elif $test -f /lib64/rld; then
5283                 nm_opt='-p'     # 64-bit Irix
5284         else
5285                 nm_opt=''
5286         fi;;
5287 esac
5288
5289 : nm options which may be necessary for shared libraries but illegal
5290 : for archive libraries.  Thank you, Linux.
5291 case "$nm_so_opt" in
5292 '')     case "$myuname" in
5293         *linux*)
5294                 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
5295                         nm_so_opt='--dynamic'
5296                 fi
5297                 ;;
5298         esac
5299         ;;
5300 esac
5301
5302 case "$runnm" in
5303 true)
5304 : get list of predefined functions in a handy place
5305 echo " "
5306 case "$libc" in
5307 '') libc=unknown
5308         case "$libs" in
5309         *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
5310         esac
5311         ;;
5312 esac
5313 case "$libs" in
5314 '') ;;
5315 *)  for thislib in $libs; do
5316         case "$thislib" in
5317         -lc|-lc_s)
5318                 : Handle C library specially below.
5319                 ;;
5320         -l*)
5321                 thislib=`echo $thislib | $sed -e 's/^-l//'`
5322                 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
5323                         :
5324                 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
5325                         :
5326                 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
5327                         :
5328                 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
5329                         :
5330                 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
5331                         :
5332                 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
5333                         :
5334                 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
5335                         :
5336                 else
5337                         try=''
5338                 fi
5339                 libnames="$libnames $try"
5340                 ;;
5341         *) libnames="$libnames $thislib" ;;
5342         esac
5343         done
5344         ;;
5345 esac
5346 xxx=normal
5347 case "$libc" in
5348 unknown)
5349         set /lib/libc.$so
5350         for xxx in $libpth; do
5351                 $test -r $1 || set $xxx/libc.$so
5352                 : The messy sed command sorts on library version numbers.
5353                 $test -r $1 || \
5354                         set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
5355                         tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
5356                                 h
5357                                 s/[0-9][0-9]*/0000&/g
5358                                 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
5359                                 G
5360                                 s/\n/ /' | \
5361                          $sort | $sed -e 's/^.* //'`
5362                 eval set \$$#
5363         done
5364         $test -r $1 || set /usr/ccs/lib/libc.$so
5365         $test -r $1 || set /lib/libsys_s$_a
5366         ;;
5367 *)
5368         set blurfl
5369         ;;
5370 esac
5371 if $test -r "$1"; then
5372         echo "Your (shared) C library seems to be in $1."
5373         libc="$1"
5374 elif $test -r /lib/libc && $test -r /lib/clib; then
5375         echo "Your C library seems to be in both /lib/clib and /lib/libc."
5376         xxx=apollo
5377         libc='/lib/clib /lib/libc'
5378         if $test -r /lib/syslib; then
5379                 echo "(Your math library is in /lib/syslib.)"
5380                 libc="$libc /lib/syslib"
5381         fi
5382 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
5383         echo "Your C library seems to be in $libc, as you said before."
5384 elif $test -r $incpath/usr/lib/libc$_a; then
5385         libc=$incpath/usr/lib/libc$_a;
5386         echo "Your C library seems to be in $libc.  That's fine."
5387 elif $test -r /lib/libc$_a; then
5388         libc=/lib/libc$_a;
5389         echo "Your C library seems to be in $libc.  You're normal."
5390 else
5391         if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
5392                 :
5393         elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
5394                 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
5395         elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
5396                 :
5397         elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
5398                 :
5399         elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
5400                 :
5401         else
5402                 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
5403         fi
5404         if $test -r "$tans"; then
5405                 echo "Your C library seems to be in $tans, of all places."
5406                 libc=$tans
5407         else
5408                 libc='blurfl'
5409         fi
5410 fi
5411 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
5412         dflt="$libc"
5413         cat <<EOM
5414
5415 If the guess above is wrong (which it might be if you're using a strange
5416 compiler, or your machine supports multiple models), you can override it here.
5417
5418 EOM
5419 else
5420         dflt=''
5421         echo $libpth | $tr ' ' $trnl | $sort | $uniq > libpath
5422         cat >&4 <<EOM
5423 I can't seem to find your C library.  I've looked in the following places:
5424
5425 EOM
5426         $sed 's/^/      /' libpath
5427         cat <<EOM
5428
5429 None of these seems to contain your C library. I need to get its name...
5430
5431 EOM
5432 fi
5433 fn=f
5434 rp='Where is your C library?'
5435 . ./getfile
5436 libc="$ans"
5437
5438 echo " "
5439 echo $libc $libnames | $tr ' ' $trnl | $sort | $uniq > libnames
5440 set X `cat libnames`
5441 shift
5442 xxx=files
5443 case $# in 1) xxx=file; esac
5444 echo "Extracting names from the following $xxx for later perusal:" >&4
5445 echo " "
5446 $sed 's/^/      /' libnames >&4
5447 echo " "
5448 $echo $n "This may take a while...$c" >&4
5449
5450 for file in $*; do
5451         case $file in
5452         *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
5453         *) $nm $nm_opt $file 2>/dev/null;;
5454         esac
5455 done >libc.tmp
5456
5457 $echo $n ".$c"
5458 $grep fprintf libc.tmp > libc.ptf
5459 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
5460 xrun='eval "<libc.tmp $com >libc.list"; echo "done" >&4'
5461 xxx='[ADTSIW]'
5462 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx  *_[_.]*//p' -e 's/^.* $xxx  *//p'";\
5463         eval $xscan;\
5464         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5465                 eval $xrun
5466 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
5467         eval $xscan;\
5468         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5469                 eval $xrun
5470 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
5471         eval $xscan;\
5472         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5473                 eval $xrun
5474 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
5475         eval $xscan;\
5476         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5477                 eval $xrun
5478 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
5479         eval $xscan;\
5480         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5481                 eval $xrun
5482 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
5483         eval $xscan;\
5484         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5485                 eval $xrun
5486 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
5487                                 -e '/ file/d' -e 's/^\([^       ]*\).*/\1/p'";\
5488         eval $xscan;\
5489         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5490                 eval $xrun
5491 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
5492         eval $xscan;\
5493         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5494                 eval $xrun
5495 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
5496         eval $xscan;\
5497         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5498                 eval $xrun
5499 elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
5500         eval $xscan;\
5501         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5502                 eval $xrun
5503 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
5504         eval $xscan;\
5505         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5506                 eval $xrun
5507 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
5508         eval $xscan;\
5509         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5510                 eval $xrun
5511 elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
5512         eval $xscan;\
5513         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5514                 eval $xrun
5515 elif com="sed -n -e 's/^__.*//' -e 's/[       ]*D[    ]*[0-9]*.*//p'";\
5516         eval $xscan;\
5517         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5518                 eval $xrun
5519 else
5520         $nm -p $* 2>/dev/null >libc.tmp
5521         $grep fprintf libc.tmp > libc.ptf
5522         if com="$sed -n -e 's/^.* [ADTSIW]  *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
5523                 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
5524         then
5525                 nm_opt='-p'
5526                 eval $xrun
5527         else
5528                 echo " "
5529                 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
5530                 com=''
5531                 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
5532                         for thisname in $libnames $libc; do
5533                                 $ar t $thisname >>libc.tmp
5534                         done
5535                         $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
5536                         echo "Ok." >&4
5537                 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
5538                         # Repeat libc to extract forwarders to DLL entries too
5539                         for thisname in $libnames $libc; do
5540                                 $ar tv $thisname >>libc.tmp
5541                                 # Revision 50 of EMX has bug in $ar.
5542                                 # it will not extract forwarders to DLL entries
5543                                 # Use emximp which will extract exactly them.
5544                                 emximp -o tmp.imp $thisname \
5545                                     2>/dev/null && \
5546                                     $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
5547                                     < tmp.imp >>libc.tmp
5548                                 $rm tmp.imp
5549                         done
5550                         $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
5551                         echo "Ok." >&4
5552                 else
5553                         echo "$ar didn't seem to work right." >&4
5554                         echo "Maybe this is a Cray...trying bld instead..." >&4
5555                         if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
5556                         then
5557                                 for thisname in $libnames; do
5558                                         bld t $libnames | \
5559                                         $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
5560                                         $ar t $thisname >>libc.tmp
5561                                 done
5562                                 echo "Ok." >&4
5563                         else
5564                                 echo "That didn't work either.  Giving up." >&4
5565                                 exit 1
5566                         fi
5567                 fi
5568         fi
5569 fi
5570 nm_extract="$com"
5571 if $test -f /lib/syscalls.exp; then
5572         echo " "
5573         echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
5574         $sed -n 's/^\([^        ]*\)[   ]*syscall[0-9]*[        ]*$/\1/p' /lib/syscalls.exp >>libc.list
5575 fi
5576 ;;
5577 esac
5578 $rm -f libnames libpath
5579
5580 : is a C symbol defined?
5581 csym='tlook=$1;
5582 case "$3" in
5583 -v) tf=libc.tmp; tc=""; tdc="";;
5584 -a) tf=libc.tmp; tc="[0]"; tdc="[]";;
5585 *) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";;
5586 esac;
5587 tx=yes;
5588 case "$reuseval-$4" in
5589 true-) ;;
5590 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
5591 esac;
5592 case "$tx" in
5593 yes)
5594         case "$runnm" in
5595         true)
5596                 if $contains $tlook $tf >/dev/null 2>&1;
5597                 then tval=true;
5598                 else tval=false;
5599                 fi;;
5600         *)
5601                 echo "int main() { extern short $1$tdc; printf(\"%hd\", $1$tc); }" > t.c;
5602                 if $cc -o t $optimize $ccflags $ldflags t.c $libs >/dev/null 2>&1;
5603                 then tval=true;
5604                 else tval=false;
5605                 fi;
5606                 $rm -f t t.c;;
5607         esac;;
5608 *)
5609         case "$tval" in
5610         $define) tval=true;;
5611         *) tval=false;;
5612         esac;;
5613 esac;
5614 eval "$2=$tval"'
5615
5616 : define an is-in-libc? function
5617 inlibc='echo " "; td=$define; tu=$undef;
5618 sym=$1; var=$2; eval "was=\$$2";
5619 tx=yes;
5620 case "$reuseval$was" in
5621 true) ;;
5622 true*) tx=no;;
5623 esac;
5624 case "$tx" in
5625 yes)
5626         set $sym tres -f;
5627         eval $csym;
5628         case "$tres" in
5629         true)
5630                 echo "$sym() found." >&4;
5631                 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
5632         *)
5633                 echo "$sym() NOT found." >&4;
5634                 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
5635         esac;;
5636 *)
5637         case "$was" in
5638         $define) echo "$sym() found." >&4;;
5639         *) echo "$sym() NOT found." >&4;;
5640         esac;;
5641 esac'
5642
5643 : see if sqrtl exists
5644 set sqrtl d_sqrtl
5645 eval $inlibc
5646
5647 case "$ccflags" in
5648 *-DUSE_LONG_DOUBLE*|*-DUSE_MORE_BITS*) uselongdouble="$define" ;;
5649 esac
5650
5651 case "$uselongdouble" in
5652 $define|true|[yY]*)     dflt='y';;
5653 *) dflt='n';;
5654 esac
5655 cat <<EOM
5656
5657 Perl can be built to take advantage of long doubles which
5658 (if available) may give more accuracy and range for floating point numbers.
5659
5660 If this doesn't make any sense to you, just accept the default '$dflt'.
5661 EOM
5662 rp='Try to use long doubles if available?'
5663 . ./myread
5664 case "$ans" in
5665 y|Y)    val="$define"   ;;
5666 *)      val="$undef"    ;;
5667 esac
5668 set uselongdouble
5669 eval $setvar
5670
5671 case "$uselongdouble" in
5672 true|[yY]*) uselongdouble="$define" ;;
5673 esac
5674
5675 case "$uselongdouble" in
5676 $define)
5677 : Look for a hint-file generated 'call-back-unit'.  If the
5678 : user has specified that long doubles should be used,
5679 : we may need to set or change some other defaults.
5680         if $test -f uselongdouble.cbu; then
5681                 echo "Your platform has some specific hints for long doubles, using them..."
5682                 . ./uselongdouble.cbu
5683         else
5684                 $cat <<EOM
5685 (Your platform doesn't have any specific hints for long doubles.)
5686 EOM
5687         fi
5688         ;;
5689 esac
5690
5691 case "$uselongdouble:$d_sqrtl" in
5692 $define:$undef)
5693                 $cat <<EOM >&4
5694
5695 *** You requested the use of long doubles but you do not seem to have
5696 *** the mathematic functions for long doubles.  I'm disabling the use
5697 *** of long doubles.
5698
5699 EOM
5700         uselongdouble=$undef
5701         ;;
5702 esac
5703
5704 : check for length of double
5705 echo " "
5706 case "$doublesize" in
5707 '')
5708         echo "Checking to see how big your double precision numbers are..." >&4
5709         $cat >try.c <<'EOCP'
5710 #include <stdio.h>
5711 int main()
5712 {
5713     printf("%d\n", (int)sizeof(double));
5714     exit(0);
5715 }
5716 EOCP
5717         set try
5718         if eval $compile_ok; then
5719                 doublesize=`$run ./try`
5720                 echo "Your double is $doublesize bytes long."
5721         else
5722                 dflt='8'
5723                 echo "(I can't seem to compile the test program.  Guessing...)"
5724                 rp="What is the size of a double precision number (in bytes)?"
5725                 . ./myread
5726                 doublesize="$ans"
5727         fi
5728         ;;
5729 esac
5730 $rm -f try.c try
5731
5732 : check for long doubles
5733 echo " "
5734 echo "Checking to see if you have long double..." >&4
5735 echo 'int main() { long double x = 7.0; }' > try.c
5736 set try
5737 if eval $compile; then
5738         val="$define"
5739         echo "You have long double."
5740 else
5741         val="$undef"
5742         echo "You do not have long double."
5743 fi
5744 $rm try.*
5745 set d_longdbl
5746 eval $setvar
5747
5748 : check for length of long double
5749 case "${d_longdbl}${longdblsize}" in
5750 $define)
5751         echo " "
5752         echo "Checking to see how big your long doubles are..." >&4
5753         $cat >try.c <<'EOCP'
5754 #include <stdio.h>
5755 int main()
5756 {
5757         printf("%d\n", sizeof(long double));
5758 }
5759 EOCP
5760         set try
5761         set try
5762         if eval $compile; then
5763                 longdblsize=`$run ./try`
5764                 echo "Your long doubles are $longdblsize bytes long."
5765         else
5766                 dflt='8'
5767                 echo " "
5768                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
5769                 rp="What is the size of a long double (in bytes)?"
5770                 . ./myread
5771                 longdblsize="$ans"
5772         fi
5773         if $test "X$doublesize" = "X$longdblsize"; then
5774                 echo "(That isn't any different from an ordinary double.)"
5775         fi      
5776         ;;
5777 esac
5778 $rm -f try.* try
5779
5780 case "$useperlio" in
5781 $define|true|[yY]*|'')  dflt='y';;
5782 *) dflt='n';;
5783 esac
5784 cat <<EOM
5785
5786 Previous version of $package used the standard IO mechanisms as
5787 defined in <stdio.h>.  Versions 5.003_02 and later of $package allow
5788 alternate IO mechanisms via the PerlIO abstraction layer, but the
5789 stdio mechanism is still available if needed.  The abstraction layer
5790 can use AT&T's sfio (if you already have sfio installed) or regular stdio.
5791 Using PerlIO with sfio may cause problems with some extension modules.
5792
5793 If this doesn't make any sense to you, just accept the default '$dflt'.
5794 EOM
5795 rp='Use the PerlIO abstraction layer?'
5796 . ./myread
5797 case "$ans" in
5798 y|Y) 
5799         val="$define"
5800         ;;
5801 *)      
5802         echo "Ok, doing things the stdio way."
5803         val="$undef"
5804         ;;
5805 esac
5806 set useperlio
5807 eval $setvar 
5808
5809 case "$usesocks" in
5810 $define|true|[yY]*)
5811         case "$useperlio" in
5812         $define|true|[yY]*) ;;
5813         *)      cat >&4 <<EOM
5814
5815 You are using the SOCKS proxy protocol library which means that you
5816 should also use the PerlIO layer.  You may be headed for trouble.
5817
5818 EOM
5819                 ;;
5820         esac
5821         ;;
5822 esac
5823
5824         
5825 : determine the architecture name
5826 echo " "
5827 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
5828         tarch=`arch`"-$osname"
5829 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
5830         if uname -m > tmparch 2>&1 ; then
5831                 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
5832                         -e 's/$/'"-$osname/" tmparch`
5833         else
5834                 tarch="$osname"
5835         fi
5836         $rm -f tmparch
5837 else
5838         tarch="$osname"
5839 fi
5840 case "$myarchname" in
5841 ''|"$tarch") ;;
5842 *)
5843         echo "(Your architecture name used to be $myarchname.)"
5844         archname=''
5845         ;;
5846 esac
5847 case "$targetarch" in
5848 '') ;;
5849 *)  archname=`echo $targetarch|sed 's,^[^-]*-,,'` ;;
5850 esac
5851 myarchname="$tarch"
5852 case "$archname" in
5853 '') dflt="$tarch";;
5854 *) dflt="$archname";;
5855 esac
5856 rp='What is your architecture name'
5857 . ./myread
5858 archname="$ans"
5859 case "$usethreads" in
5860 $define)
5861         echo "Threads selected." >&4
5862         case "$archname" in
5863         *-thread*) echo "...and architecture name already has -thread." >&4
5864                 ;;
5865         *)      archname="$archname-thread"
5866                 echo "...setting architecture name to $archname." >&4
5867                 ;;
5868         esac
5869         ;;
5870 esac
5871 case "$usemultiplicity" in
5872 $define)
5873         echo "Multiplicity selected." >&4
5874         case "$archname" in
5875         *-multi*) echo "...and architecture name already has -multi." >&4
5876                 ;;
5877         *)      archname="$archname-multi"
5878                 echo "...setting architecture name to $archname." >&4
5879                 ;;
5880         esac
5881         ;;
5882 esac
5883 case "$use64bitint$use64bitall" in
5884 *"$define"*)
5885         case "$archname64" in
5886         '')
5887                 echo "This architecture is naturally 64-bit, not changing architecture name." >&4
5888                 ;;
5889         *)
5890                 case "$use64bitint" in
5891                 "$define") echo "64 bit integers selected." >&4 ;;
5892                 esac
5893                 case "$use64bitall" in
5894                 "$define") echo "Maximal 64 bitness selected." >&4 ;;
5895                 esac
5896                 case "$archname" in
5897                 *-$archname64*) echo "...and architecture name already has $archname64." >&4
5898                         ;;
5899                 *)      archname="$archname-$archname64"
5900                         echo "...setting architecture name to $archname." >&4
5901                         ;;
5902                 esac
5903                 ;;
5904         esac
5905 esac
5906 case "$uselongdouble" in
5907 $define)
5908         echo "Long doubles selected." >&4
5909         case "$longdblsize" in
5910         $doublesize)
5911                 "...but long doubles are equal to doubles, not changing architecture name." >&4
5912                 ;;
5913         *)
5914                 case "$archname" in
5915                 *-ld*) echo "...and architecture name already has -ld." >&4
5916                         ;;
5917                 *)      archname="$archname-ld"
5918                         echo "...setting architecture name to $archname." >&4
5919                         ;;
5920                 esac
5921                 ;;
5922         esac
5923         ;;
5924 esac
5925 case "$useperlio" in
5926 $define)
5927         echo "Perlio selected." >&4
5928         ;;
5929 *)
5930         echo "Perlio not selected, using stdio." >&4
5931         case "$archname" in
5932         *-stdio*) echo "...and architecture name already has -stdio." >&4
5933                 ;;
5934         *)      archname="$archname-stdio"
5935                 echo "...setting architecture name to $archname." >&4
5936                 ;;
5937         esac
5938         ;;
5939 esac
5940
5941 : determine root of directory hierarchy where package will be installed.
5942 case "$prefix" in
5943 '')
5944         dflt=`./loc . /usr/local /usr/local /local /opt /usr`
5945         ;;
5946 *)
5947         dflt="$prefix"
5948         ;;
5949 esac
5950 $cat <<EOM
5951
5952 By default, $package will be installed in $dflt/bin, manual pages
5953 under $dflt/man, etc..., i.e. with $dflt as prefix for all
5954 installation directories. Typically this is something like /usr/local.
5955 If you wish to have binaries under /usr/bin but other parts of the
5956 installation under /usr/local, that's ok: you will be prompted
5957 separately for each of the installation directories, the prefix being
5958 only used to set the defaults.
5959
5960 EOM
5961 fn=d~
5962 rp='Installation prefix to use?'
5963 . ./getfile
5964 oldprefix=''
5965 case "$prefix" in
5966 '') ;;
5967 *)
5968         case "$ans" in
5969         "$prefix") ;;
5970         *) oldprefix="$prefix";;
5971         esac
5972         ;;
5973 esac
5974 prefix="$ans"
5975 prefixexp="$ansexp"
5976
5977 case "$afsroot" in
5978 '')     afsroot=/afs ;;
5979 *)      afsroot=$afsroot ;;
5980 esac
5981
5982 : is AFS running?
5983 echo " "
5984 case "$afs" in
5985 $define|true)   afs=true ;;
5986 $undef|false)   afs=false ;;
5987 *)      if test -d $afsroot; then
5988                 afs=true
5989         else
5990                 afs=false
5991         fi
5992         ;;
5993 esac
5994 if $afs; then
5995         echo "AFS may be running... I'll be extra cautious then..." >&4
5996 else
5997         echo "AFS does not seem to be running..." >&4
5998 fi
5999
6000 : determine installation prefix for where package is to be installed.
6001 if $afs; then 
6002 $cat <<EOM
6003
6004 Since you are running AFS, I need to distinguish the directory in which
6005 files will reside from the directory in which they are installed (and from
6006 which they are presumably copied to the former directory by occult means).
6007
6008 EOM
6009         case "$installprefix" in
6010         '') dflt=`echo $prefix | sed 's#^/afs/#/afs/.#'`;;
6011         *) dflt="$installprefix";;
6012         esac
6013 else
6014 $cat <<EOM
6015
6016 In some special cases, particularly when building $package for distribution,
6017 it is convenient to distinguish between the directory in which files should 
6018 be installed from the directory ($prefix) in which they 
6019 will eventually reside.  For most users, these two directories are the same.
6020
6021 EOM
6022         case "$installprefix" in
6023         '') dflt=$prefix ;;
6024         *) dflt=$installprefix;;
6025         esac
6026 fi
6027 fn=d~
6028 rp='What installation prefix should I use for installing files?'
6029 . ./getfile
6030 installprefix="$ans"
6031 installprefixexp="$ansexp"
6032
6033 : set the prefixit variable, to compute a suitable default value
6034 prefixit='case "$3" in
6035 ""|none)
6036         case "$oldprefix" in
6037         "") eval "$1=\"\$$2\"";;
6038         *)
6039                 case "$3" in
6040                 "") eval "$1=";;
6041                 none)
6042                         eval "tp=\"\$$2\"";
6043                         case "$tp" in
6044                         ""|" ") eval "$1=\"\$$2\"";;
6045                         *) eval "$1=";;
6046                         esac;;
6047                 esac;;
6048         esac;;
6049 *)
6050         eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
6051         case "$tp" in
6052         --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
6053         /*-$oldprefix/*|\~*-$oldprefix/*)
6054                 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
6055         *) eval "$1=\"\$$2\"";;
6056         esac;;
6057 esac'
6058
6059 : get the patchlevel
6060 echo " "
6061 echo "Getting the current patchlevel..." >&4
6062 if $test -r $rsrc/patchlevel.h;then
6063         revision=`awk '/define[         ]+PERL_REVISION/ {print $3}' $rsrc/patchlevel.h`
6064         patchlevel=`awk '/define[       ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
6065         subversion=`awk '/define[       ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
6066         api_revision=`awk '/define[     ]+PERL_API_REVISION/ {print $3}' $rsrc/patchlevel.h`
6067         api_version=`awk '/define[      ]+PERL_API_VERSION/ {print $3}' $rsrc/patchlevel.h`
6068         api_subversion=`awk '/define[   ]+PERL_API_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
6069        perl_patchlevel=`grep ',"DEVEL[0-9][0-9]*"' $rsrc/patchlevel.h|sed 's/[^0-9]//g'`
6070 else
6071         revision=0
6072         patchlevel=0
6073         subversion=0
6074         api_revision=0
6075         api_version=0
6076         api_subversion=0
6077         perl_patchlevel=0
6078         $echo "(You do not have patchlevel.h.  Eek.)"
6079 fi
6080 if $test -r $rsrc/.patch ; then  
6081         if $test "`cat $rsrc/.patch`" -gt "$perl_patchlevel" ; then
6082                 perl_patchlevel=`cat $rsrc/.patch`
6083         fi
6084 fi
6085 : Define a handy string here to avoid duplication in myconfig.SH and configpm.
6086 version_patchlevel_string="version $patchlevel subversion $subversion"
6087 case "$perl_patchlevel" in
6088 0|'') ;;
6089 *) version_patchlevel_string="$version_patchlevel_string patch $perl_patchlevel" ;;
6090 esac
6091
6092 $echo "(You have $package $version_patchlevel_string.)"
6093
6094 case "$osname" in
6095 dos|vms)
6096         : XXX Should be a Configure test for double-dots in filenames.
6097         version=`echo $revision $patchlevel $subversion | \
6098                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
6099         api_versionstring=`echo $api_revision $api_version $api_subversion | \
6100                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
6101         ;;
6102 *)
6103         version=`echo $revision $patchlevel $subversion | \
6104                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
6105         api_versionstring=`echo $api_revision $api_version $api_subversion | \
6106                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
6107         ;;
6108 esac
6109 : Special case the 5.005_xx maintenance series, which used 5.005
6110 : without any subversion label as a subdirectory in $sitelib
6111 if test "${api_revision}${api_version}${api_subversion}" = "550"; then
6112         api_versionstring='5.005'
6113 fi
6114
6115 : determine installation style
6116 : For now, try to deduce it from prefix unless it is already set.
6117 : Reproduce behavior of 5.005 and earlier, maybe drop that in 5.7.
6118 case "$installstyle" in
6119 '')     case "$prefix" in
6120                 *perl*) dflt='lib';;
6121                 *) dflt='lib/perl5' ;;
6122         esac
6123         ;;
6124 *)      dflt="$installstyle" ;;
6125 esac
6126 : Probably not worth prompting for this since we prompt for all
6127 : the directories individually, and the prompt would be too long and
6128 : confusing anyway.
6129 installstyle=$dflt
6130
6131 : determine where private library files go
6132 : Usual default is /usr/local/lib/perl5/$version.
6133 : Also allow things like /opt/perl/lib/$version, since 
6134 : /opt/perl/lib/perl5... would be redundant.
6135 : The default "style" setting is made in installstyle.U
6136 case "$installstyle" in
6137 *lib/perl5*) set dflt privlib lib/$package/$version ;;
6138 *)       set dflt privlib lib/$version ;;
6139 esac
6140 eval $prefixit
6141 $cat <<EOM
6142
6143 There are some auxiliary files for $package that need to be put into a
6144 private library directory that is accessible by everyone.
6145
6146 EOM
6147 fn=d~+
6148 rp='Pathname where the private library files will reside?'
6149 . ./getfile
6150 privlib="$ans"
6151 privlibexp="$ansexp"
6152 : Change installation prefix, if necessary.
6153 if $test X"$prefix" != X"$installprefix"; then
6154         installprivlib=`echo $privlibexp | sed "s#^$prefix#$installprefix#"`
6155 else
6156         installprivlib="$privlibexp"
6157 fi
6158
6159 : set the prefixup variable, to restore leading tilda escape
6160 prefixup='case "$prefixexp" in
6161 "$prefix") ;;
6162 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
6163 esac'
6164
6165 : determine where public architecture dependent libraries go
6166 set archlib archlib
6167 eval $prefixit
6168 : privlib default is /usr/local/lib/$package/$version
6169 : archlib default is /usr/local/lib/$package/$version/$archname
6170 : privlib may have an optional trailing /share.
6171 tdflt=`echo $privlib | $sed 's,/share$,,'`
6172 tdflt=$tdflt/$archname
6173 case "$archlib" in
6174 '')     dflt=$tdflt
6175         ;;
6176 *)      dflt="$archlib"
6177     ;;
6178 esac
6179 $cat <<EOM
6180
6181 $spackage contains architecture-dependent library files.  If you are
6182 sharing libraries in a heterogeneous environment, you might store
6183 these files in a separate location.  Otherwise, you can just include
6184 them with the rest of the public library files.
6185
6186 EOM
6187 fn=d+~
6188 rp='Where do you want to put the public architecture-dependent libraries?'
6189 . ./getfile
6190 archlib="$ans"
6191 archlibexp="$ansexp"
6192 if $test X"$archlib" = X"$privlib"; then
6193         d_archlib="$undef"
6194 else
6195         d_archlib="$define"
6196 fi
6197 : Change installation prefix, if necessary.
6198 if $test X"$prefix" != X"$installprefix"; then
6199         installarchlib=`echo $archlibexp | sed "s#^$prefix#$installprefix#"`
6200 else
6201         installarchlib="$archlibexp"
6202 fi
6203
6204
6205 : Binary compatibility with 5.005 is not possible for builds
6206 : with advanced features
6207 case "$usethreads$usemultiplicity" in
6208 *define*)
6209         bincompat5005="$undef"
6210         d_bincompat5005="$undef"
6211         ;;
6212 *)      $cat <<EOM
6213
6214 This version of Perl can be compiled for binary compatibility with 5.005.
6215 If you decide to do so, you will be able to continue using most of the
6216 extensions that were compiled for Perl 5.005.
6217
6218 EOM
6219         case "$bincompat5005$d_bincompat5005" in
6220         *"$undef"*) dflt=n ;;
6221         *) dflt=y ;;
6222         esac
6223         rp='Binary compatibility with Perl 5.005?'
6224         . ./myread
6225         case "$ans" in
6226         y*) val="$define" ;;
6227         *)  val="$undef" ;;
6228         esac
6229         set d_bincompat5005
6230         eval $setvar
6231         case "$d_bincompat5005" in
6232         "$define")
6233                 bincompat5005="$define"
6234                 ;;
6235         *)      bincompat5005="$undef"
6236                 d_bincompat5005="$undef"
6237                 ;;
6238         esac
6239         ;;
6240 esac
6241
6242
6243 : see if setuid scripts can be secure
6244 $cat <<EOM
6245
6246 Some kernels have a bug that prevents setuid #! scripts from being
6247 secure.  Some sites have disabled setuid #! scripts because of this.
6248
6249 First let's decide if your kernel supports secure setuid #! scripts.
6250 (If setuid #! scripts would be secure but have been disabled anyway,
6251 don't say that they are secure if asked.)
6252
6253 EOM
6254
6255 val="$undef"
6256 if $test -d /dev/fd; then
6257         echo "#!$ls" >reflect
6258         chmod +x,u+s reflect
6259         ./reflect >flect 2>&1
6260         if $contains "/dev/fd" flect >/dev/null; then
6261                 echo "Congratulations, your kernel has secure setuid scripts!" >&4
6262                 val="$define"
6263         else
6264                 $cat <<EOM
6265 If you are not sure if they are secure, I can check but I'll need a
6266 username and password different from the one you are using right now.
6267 If you don't have such a username or don't want me to test, simply
6268 enter 'none'.
6269
6270 EOM
6271                 rp='Other username to test security of setuid scripts with?'
6272                 dflt='none'
6273                 . ./myread
6274                 case "$ans" in
6275                 n|none)
6276                         case "$d_suidsafe" in
6277                         '')     echo "I'll assume setuid scripts are *not* secure." >&4
6278                                 dflt=n;;
6279                         "$undef")
6280                                 echo "Well, the $hint value is *not* secure." >&4
6281                                 dflt=n;;
6282                         *)      echo "Well, the $hint value *is* secure." >&4
6283                                 dflt=y;;
6284                         esac
6285                         ;;
6286                 *)
6287                         $rm -f reflect flect
6288                         echo "#!$ls" >reflect
6289                         chmod +x,u+s reflect
6290                         echo >flect
6291                         chmod a+w flect
6292                         echo '"su" will (probably) prompt you for '"$ans's password."
6293                         su $ans -c './reflect >flect'
6294                         if $contains "/dev/fd" flect >/dev/null; then
6295                                 echo "Okay, it looks like setuid scripts are secure." >&4
6296                                 dflt=y
6297                         else
6298                                 echo "I don't think setuid scripts are secure." >&4
6299                                 dflt=n
6300                         fi
6301                         ;;
6302                 esac
6303                 rp='Does your kernel have *secure* setuid scripts?'
6304                 . ./myread
6305                 case "$ans" in
6306                 [yY]*)  val="$define";;
6307                 *)      val="$undef";;
6308                 esac
6309         fi
6310 else
6311         echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
6312         echo "(That's for file descriptors, not floppy disks.)"
6313         val="$undef"
6314 fi
6315 set d_suidsafe
6316 eval $setvar
6317
6318 $rm -f reflect flect
6319
6320 : now see if they want to do setuid emulation
6321 echo " "
6322 val="$undef"
6323 case "$d_suidsafe" in
6324 "$define")
6325         val="$undef"
6326         echo "No need to emulate SUID scripts since they are secure here." >& 4
6327         ;;
6328 *)
6329         $cat <<EOM
6330 Some systems have disabled setuid scripts, especially systems where
6331 setuid scripts cannot be secure.  On systems where setuid scripts have
6332 been disabled, the setuid/setgid bits on scripts are currently
6333 useless.  It is possible for $package to detect those bits and emulate
6334 setuid/setgid in a secure fashion.  This emulation will only work if
6335 setuid scripts have been disabled in your kernel.
6336
6337 EOM
6338         case "$d_dosuid" in
6339         "$define") dflt=y ;;
6340         *) dflt=n ;;
6341         esac
6342         rp="Do you want to do setuid/setgid emulation?"
6343         . ./myread
6344         case "$ans" in
6345         [yY]*)  val="$define";;
6346         *)      val="$undef";;
6347         esac
6348         ;;
6349 esac
6350 set d_dosuid
6351 eval $setvar
6352
6353 : see if this is a malloc.h system
6354 set malloc.h i_malloc
6355 eval $inhdr
6356
6357 : see if stdlib is available
6358 set stdlib.h i_stdlib
6359 eval $inhdr
6360
6361 : determine which malloc to compile in
6362 echo " "
6363 case "$usemymalloc" in
6364 [yY]*|true|$define)     dflt='y' ;;
6365 [nN]*|false|$undef)     dflt='n' ;;
6366 *)      case "$ptrsize" in
6367         4) dflt='y' ;;
6368         *) dflt='n' ;;
6369         esac
6370         ;;
6371 esac
6372 rp="Do you wish to attempt to use the malloc that comes with $package?"
6373 . ./myread
6374 usemymalloc="$ans"
6375 case "$ans" in
6376 y*|true)
6377         usemymalloc='y'
6378         mallocsrc='malloc.c'
6379         mallocobj="malloc$_o"
6380         d_mymalloc="$define"
6381         case "$libs" in
6382         *-lmalloc*)
6383                 : Remove malloc from list of libraries to use
6384                 echo "Removing unneeded -lmalloc from library list" >&4
6385                 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
6386                 shift
6387                 libs="$*"
6388                 echo "libs = $libs" >&4
6389                 ;;
6390         esac
6391         ;;
6392 *)
6393         usemymalloc='n'
6394         mallocsrc=''
6395         mallocobj=''
6396         d_mymalloc="$undef"
6397         ;;
6398 esac
6399
6400 : compute the return types of malloc and free
6401 echo " "
6402 $cat >malloc.c <<END
6403 #$i_malloc I_MALLOC
6404 #$i_stdlib I_STDLIB
6405 #include <stdio.h>
6406 #include <sys/types.h>
6407 #ifdef I_MALLOC
6408 #include <malloc.h>
6409 #endif
6410 #ifdef I_STDLIB
6411 #include <stdlib.h>
6412 #endif
6413 #ifdef TRY_MALLOC
6414 void *malloc();
6415 #endif
6416 #ifdef TRY_FREE
6417 void free();
6418 #endif
6419 END
6420 case "$malloctype" in
6421 '')
6422         if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
6423                 malloctype='void *'
6424         else
6425                 malloctype='char *'
6426         fi
6427         ;;
6428 esac
6429 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
6430
6431 case "$freetype" in
6432 '')
6433         if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
6434                 freetype='void'
6435         else
6436                 freetype='int'
6437         fi
6438         ;;
6439 esac
6440 echo "Your system uses $freetype free(), it would seem." >&4
6441 $rm -f malloc.[co]
6442 $cat <<EOM
6443
6444 After $package is installed, you may wish to install various
6445 add-on modules and utilities.  Typically, these add-ons will
6446 be installed under $prefix with the rest
6447 of this package.  However, you may wish to install such add-ons
6448 elsewhere under a different prefix.
6449
6450 If you do not wish to put everything under a single prefix, that's
6451 ok.  You will be prompted for the individual locations; this siteprefix
6452 is only used to suggest the defaults.
6453
6454 The default should be fine for most people.
6455
6456 EOM
6457 fn=d~+
6458 rp='Installation prefix to use for add-on modules and utilities?'
6459 : XXX Here might be another good place for an installstyle setting.
6460 case "$siteprefix" in
6461 '') dflt=$prefix ;;
6462 *)  dflt=$siteprefix ;;
6463 esac
6464 . ./getfile
6465 : XXX Prefixit unit does not yet support siteprefix and vendorprefix
6466 oldsiteprefix=''
6467 case "$siteprefix" in
6468 '') ;;
6469 *)      case "$ans" in
6470         "$prefix") ;;
6471         *) oldsiteprefix="$prefix";;
6472         esac
6473         ;;
6474 esac
6475 siteprefix="$ans"
6476 siteprefixexp="$ansexp"
6477
6478 : determine where site specific libraries go.
6479 : Usual default is /usr/local/lib/perl5/site_perl/$version
6480 : The default "style" setting is made in installstyle.U
6481 : XXX No longer works with Prefixit stuff.
6482 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6483 case "$sitelib" in
6484 '') case "$installstyle" in
6485         *lib/perl5*) dflt=$siteprefix/lib/$package/site_$prog/$version ;;
6486         *)       dflt=$siteprefix/lib/site_$prog/$version ;;
6487         esac
6488         ;;
6489 *)      dflt="$sitelib"
6490         ;;
6491 esac
6492 $cat <<EOM
6493
6494 The installation process will create a directory for
6495 site-specific extensions and modules.  Most users find it convenient
6496 to place all site-specific files in this directory rather than in the
6497 main distribution directory.
6498
6499 EOM
6500 fn=d~+
6501 rp='Pathname for the site-specific library files?'
6502 . ./getfile
6503 sitelib="$ans"
6504 sitelibexp="$ansexp"
6505 sitelib_stem=`echo "$sitelibexp" | sed "s,/$version$,,"`
6506 : Change installation prefix, if necessary.
6507 if $test X"$prefix" != X"$installprefix"; then
6508         installsitelib=`echo $sitelibexp | $sed "s#^$prefix#$installprefix#"`
6509 else
6510         installsitelib="$sitelibexp"
6511 fi
6512
6513 : determine where site specific architecture-dependent libraries go.
6514 : sitelib  default is /usr/local/lib/perl5/site_perl/$version
6515 : sitearch default is /usr/local/lib/perl5/site_perl/$version/$archname
6516 : sitelib may have an optional trailing /share.
6517 case "$sitearch" in
6518 '')     dflt=`echo $sitelib | $sed 's,/share$,,'`
6519         dflt="$dflt/$archname"
6520         ;;
6521 *)      dflt="$sitearch"
6522         ;;
6523 esac
6524 set sitearch sitearch none
6525 eval $prefixit
6526 $cat <<EOM
6527
6528 The installation process will also create a directory for
6529 architecture-dependent site-specific extensions and modules.
6530
6531 EOM
6532 fn=d~+
6533 rp='Pathname for the site-specific architecture-dependent library files?'
6534 . ./getfile
6535 sitearch="$ans"
6536 sitearchexp="$ansexp"
6537 : Change installation prefix, if necessary.
6538 if $test X"$prefix" != X"$installprefix"; then
6539         installsitearch=`echo $sitearchexp | sed "s#^$prefix#$installprefix#"`
6540 else
6541         installsitearch="$sitearchexp"
6542 fi
6543
6544 $cat <<EOM
6545
6546 The installation process will also create a directory for
6547 vendor-supplied add-ons.  Vendors who supply perl with their system
6548 may find it convenient to place all vendor-supplied files in this
6549 directory rather than in the main distribution directory.  This will
6550 ease upgrades between binary-compatible maintenance versions of perl.
6551
6552 Of course you may also use these directories in whatever way you see
6553 fit.  For example, you might use them to access modules shared over a
6554 company-wide network.
6555
6556 The default answer should be fine for most people.
6557 This causes further questions about vendor add-ons to be skipped
6558 and no vendor-specific directories will be configured for perl.
6559
6560 EOM
6561 rp='Do you want to configure vendor-specific add-on directories?'
6562 case "$usevendorprefix" in
6563 define|true|[yY]*) dflt=y ;;
6564 *)      : User may have set vendorprefix directly on Configure command line.
6565         case "$vendorprefix" in
6566         ''|' ') dflt=n ;;
6567         *)      dflt=y ;;
6568         esac
6569         ;;
6570 esac
6571 . ./myread
6572 case "$ans" in
6573 [yY]*)  fn=d~+
6574         rp='Installation prefix to use for vendor-supplied add-ons?'
6575         case "$vendorprefix" in
6576         '') dflt='' ;;
6577         *)  dflt=$vendorprefix ;;
6578         esac
6579         . ./getfile
6580         : XXX Prefixit unit does not yet support siteprefix and vendorprefix
6581         oldvendorprefix=''
6582         case "$vendorprefix" in
6583         '') ;;
6584         *)      case "$ans" in
6585                 "$prefix") ;;
6586                 *) oldvendorprefix="$prefix";;
6587                 esac
6588                 ;;
6589         esac
6590         usevendorprefix="$define"
6591         vendorprefix="$ans"
6592         vendorprefixexp="$ansexp"
6593         ;;
6594 *)      usevendorprefix="$undef"
6595         vendorprefix=''
6596         vendorprefixexp=''
6597         ;;
6598 esac
6599
6600 case "$vendorprefix" in
6601 '')     d_vendorlib="$undef"
6602         vendorlib=''
6603         vendorlibexp=''
6604         ;;
6605 *)      d_vendorlib="$define"
6606         : determine where vendor-supplied modules go.
6607         : Usual default is /usr/local/lib/perl5/vendor_perl/$version
6608         case "$vendorlib" in
6609         '')
6610                 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6611                 case "$installstyle" in
6612                 *lib/perl5*) dflt=$vendorprefix/lib/$package/vendor_$prog/$version ;;
6613                 *)           dflt=$vendorprefix/lib/vendor_$prog/$version ;;
6614                 esac
6615                 ;;
6616         *)      dflt="$vendorlib"
6617                 ;;
6618         esac
6619         fn=d~+
6620         rp='Pathname for the vendor-supplied library files?'
6621         . ./getfile
6622         vendorlib="$ans"
6623         vendorlibexp="$ansexp"
6624         ;;
6625 esac
6626 vendorlib_stem=`echo "$vendorlibexp" | sed "s,/$version$,,"`
6627 : Change installation prefix, if necessary.
6628 if $test X"$prefix" != X"$installprefix"; then
6629         installvendorlib=`echo $vendorlibexp | $sed "s#^$prefix#$installprefix#"`
6630 else
6631         installvendorlib="$vendorlibexp"
6632 fi
6633
6634 case "$vendorprefix" in
6635 '')     d_vendorarch="$undef"
6636         vendorarch=''
6637         vendorarchexp=''
6638         ;;
6639 *)      d_vendorarch="$define"
6640         : determine where vendor-supplied architecture-dependent libraries go.
6641         : vendorlib  default is /usr/local/lib/perl5/vendor_perl/$version
6642         : vendorarch default is /usr/local/lib/perl5/vendor_perl/$version/$archname
6643         : vendorlib may have an optional trailing /share.
6644         case "$vendorarch" in
6645         '')     dflt=`echo $vendorlib | $sed 's,/share$,,'`
6646                 dflt="$dflt/$archname"
6647                 ;;
6648         *)      dflt="$vendorarch" ;;
6649         esac
6650         fn=d~+
6651         rp='Pathname for vendor-supplied architecture-dependent files?'
6652         . ./getfile
6653         vendorarch="$ans"
6654         vendorarchexp="$ansexp"
6655         ;;
6656 esac
6657 : Change installation prefix, if necessary.
6658 if $test X"$prefix" != X"$installprefix"; then
6659         installvendorarch=`echo $vendorarchexp | sed "s#^$prefix#$installprefix#"`
6660 else
6661         installvendorarch="$vendorarchexp"
6662 fi
6663
6664 : Final catch-all directories to search
6665 $cat <<EOM
6666
6667 Lastly, you can have perl look in other directories for extensions and
6668 modules in addition to those already specified.
6669 These directories will be searched after 
6670         $sitearch 
6671         $sitelib 
6672 EOM
6673 test X"$vendorlib" != "X" && echo '     ' $vendorlib
6674 test X"$vendorarch" != "X" && echo '    ' $vendorarch
6675 echo ' '
6676 case "$otherlibdirs" in
6677 ''|' ') dflt='none' ;;
6678 *)      dflt="$otherlibdirs" ;;
6679 esac
6680 $cat <<EOM
6681 Enter a colon-separated set of extra paths to include in perl's @INC
6682 search path, or enter 'none' for no extra paths.
6683
6684 EOM
6685
6686 rp='Colon-separated list of additional directories for perl to search?'
6687 . ./myread
6688 case "$ans" in
6689 ' '|''|none)    otherlibdirs=' ' ;;     
6690 *)      otherlibdirs="$ans" ;;
6691 esac
6692 case "$otherlibdirs" in
6693 ' ') val=$undef ;;
6694 *)      val=$define ;;
6695 esac
6696 set d_perl_otherlibdirs
6697 eval $setvar
6698
6699 : Cruising for prototypes
6700 echo " "
6701 echo "Checking out function prototypes..." >&4
6702 $cat >prototype.c <<'EOCP'
6703 int main(int argc, char *argv[]) {
6704         exit(0);}
6705 EOCP
6706 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
6707         echo "Your C compiler appears to support function prototypes."
6708         val="$define"
6709 else
6710         echo "Your C compiler doesn't seem to understand function prototypes."
6711         val="$undef"
6712 fi
6713 set prototype
6714 eval $setvar
6715 $rm -f prototype*
6716
6717 case "$prototype" in
6718 "$define") ;;
6719 *)      ansi2knr='ansi2knr'
6720         echo " "
6721         cat <<EOM >&4
6722
6723 $me:  FATAL ERROR:
6724 This version of $package can only be compiled by a compiler that 
6725 understands function prototypes.  Unfortunately, your C compiler 
6726         $cc $ccflags
6727 doesn't seem to understand them.  Sorry about that.
6728
6729 If GNU cc is available for your system, perhaps you could try that instead.  
6730
6731 Eventually, we hope to support building Perl with pre-ANSI compilers.
6732 If you would like to help in that effort, please contact <perlbug@perl.org>.
6733
6734 Aborting Configure now.
6735 EOM
6736         exit 2
6737         ;;
6738 esac
6739
6740 : determine where public executables go
6741 echo " "
6742 set dflt bin bin
6743 eval $prefixit
6744 fn=d~
6745 rp='Pathname where the public executables will reside?'
6746 . ./getfile
6747 if $test "X$ansexp" != "X$binexp"; then
6748         installbin=''
6749 fi
6750 bin="$ans"
6751 binexp="$ansexp"
6752 : Change installation prefix, if necessary.
6753 : XXX Bug? -- ignores Configure -Dinstallprefix setting.
6754 if $test X"$prefix" != X"$installprefix"; then
6755         installbin=`echo $binexp | sed "s#^$prefix#$installprefix#"`
6756 else
6757         installbin="$binexp"
6758 fi
6759
6760 echo " "
6761 case "$extras" in
6762 '') dflt='n';;
6763 *) dflt='y';;
6764 esac
6765 cat <<EOM
6766 Perl can be built with extra modules or bundles of modules which
6767 will be fetched from the CPAN and installed alongside Perl.
6768
6769 Notice that you will need access to the CPAN; either via the Internet,
6770 or a local copy, for example a CD-ROM or a local CPAN mirror.  (You will
6771 be asked later to configure the CPAN.pm module which will in turn do
6772 the installation of the rest of the extra modules or bundles.)
6773
6774 Notice also that if the modules require any external software such as
6775 libraries (the libz library for the Compress::Zlib module, for example)
6776 you *NEED* to have any such external software already installed, this
6777 configuration process will not install such things for you.
6778
6779 If this doesn't make any sense to you, just accept the default '$dflt'.
6780 EOM
6781 rp='Install any extra modules (y or n) ?'
6782 . ./myread
6783 case "$ans" in
6784 y|Y)
6785         cat <<EOM
6786
6787 Please list any extra modules or bundles to be installed from CPAN,
6788 with spaces between the names.  The names can be in any format the
6789 'install' command of CPAN.pm will understand.  (Answer 'none' the
6790 quotes, to install no extra modules or bundles.)
6791 EOM
6792         rp='Extras?'
6793         dflt="$extras"
6794         . ./myread
6795         extras="$ans"
6796 esac
6797 case "$extras" in
6798 ''|'none')
6799         val=''
6800         $rm -f ../extras.lst
6801         ;;
6802 *)      echo "(Saving the list of extras for later...)"
6803         echo $extras > ../extras.lst
6804         val="$extras"
6805         ;;
6806 esac
6807 set extras
6808 eval $setvar
6809 echo " "
6810
6811 : Find perl5.005 or later.
6812 echo "Looking for a previously installed perl5.005 or later... "
6813 case "$perl5" in
6814 '')     for tdir in `echo "$binexp$path_sep$PATH" | $sed "s/$path_sep/ /g"`; do
6815                 : Check if this perl is recent and can load a simple module
6816                 if $test -x $tdir/perl$exe_ext && $tdir/perl -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6817                         perl5=$tdir/perl
6818                         break;
6819                 elif $test -x $tdir/perl5$exe_ext && $tdir/perl5 -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6820                         perl5=$tdir/perl5
6821                         break;
6822                 fi
6823         done
6824         ;;
6825 *)      perl5="$perl5"
6826         ;;
6827 esac
6828 case "$perl5" in
6829 '')     echo "None found.  That's ok.";;
6830 *)      echo "Using $perl5." ;;
6831 esac
6832
6833 : Determine list of previous versions to include in @INC
6834 $cat > getverlist <<EOPL
6835 #!$perl5 -w
6836 use File::Basename;
6837 \$api_versionstring = "$api_versionstring";
6838 \$version = "$version";
6839 \$stem = "$sitelib_stem";
6840 \$archname = "$archname";
6841 EOPL
6842         $cat >> getverlist <<'EOPL'
6843 # Can't have leading @ because metaconfig interprets it as a command!
6844 ;@inc_version_list=();
6845 # XXX Redo to do opendir/readdir? 
6846 if (-d $stem) {
6847     chdir($stem);
6848     ;@candidates = glob("5.*");
6849 }
6850 else {
6851     ;@candidates = ();
6852 }
6853
6854 # XXX ToDo:  These comparisons must be reworked when two-digit
6855 # subversions come along, so that 5.7.10 compares as greater than
6856 # 5.7.3!  By that time, hope that 5.6.x is sufficiently
6857 # widespread that we can use the built-in version vectors rather
6858 # than reinventing them here.  For 5.6.0, however, we must
6859 # assume this script will likely be run by 5.005_0x.  --AD 1/2000.
6860 foreach $d (@candidates) {
6861     if ($d lt $version) {
6862         if ($d ge $api_versionstring) {
6863             unshift(@inc_version_list, grep { -d } "$d/$archname", $d);
6864         }
6865         elsif ($d ge "5.005") {
6866             unshift(@inc_version_list, grep { -d } $d);
6867         }
6868     }
6869     else {
6870         # Skip newer version.  I.e. don't look in
6871         # 5.7.0 if we're installing 5.6.1.
6872     }
6873 }
6874
6875 if (@inc_version_list) {
6876     print join(' ', @inc_version_list);
6877 }
6878 else {
6879     # Blank space to preserve value for next Configure run.
6880     print " ";
6881 }
6882 EOPL
6883 chmod +x getverlist
6884 case "$inc_version_list" in
6885 '')     if test -x "$perl5$exe_ext"; then
6886                 dflt=`$perl5 getverlist`
6887         else
6888                 dflt='none'
6889         fi
6890         ;;
6891 $undef) dflt='none' ;;
6892 *)  eval dflt=\"$inc_version_list\" ;;
6893 esac
6894 case "$dflt" in
6895 ''|' ') dflt=none ;;
6896 esac
6897 case "$dflt" in
6898 5.005) case "$bincompat5005" in
6899        $define|true|[yY]*) ;;
6900        *) dflt=none ;;
6901        esac
6902        ;;
6903 esac
6904 $cat <<'EOM'
6905
6906 In order to ease the process of upgrading, this version of perl 
6907 can be configured to use modules built and installed with earlier 
6908 versions of perl that were installed under $prefix.  Specify here
6909 the list of earlier versions that this version of perl should check.
6910 If Configure detected no earlier versions of perl installed under
6911 $prefix, then the list will be empty.  Answer 'none' to tell perl
6912 to not search earlier versions.
6913
6914 The default should almost always be sensible, so if you're not sure,
6915 just accept the default.
6916 EOM
6917
6918 rp='List of earlier versions to include in @INC?'
6919 . ./myread
6920 case "$ans" in
6921 [Nn]one|''|' ') inc_version_list=' ' ;;
6922 *) inc_version_list="$ans" ;;
6923 esac
6924 case "$inc_version_list" in
6925 ''|' ') 
6926         inc_version_list_init='0';;
6927 *)      inc_version_list_init=`echo $inc_version_list |
6928                 $sed -e 's/^/"/' -e 's/ /","/g' -e 's/$/",0/'`
6929         ;;
6930 esac
6931 $rm -f getverlist
6932
6933 : determine whether to install perl also as /usr/bin/perl
6934
6935 echo " "
6936 if $test -d /usr/bin -a "X$installbin" != X/usr/bin; then
6937         $cat <<EOM
6938 Many scripts expect perl to be installed as /usr/bin/perl.
6939 I can install the perl you are about to compile also as /usr/bin/perl
6940 (in addition to $installbin/perl).
6941 EOM
6942         case "$installusrbinperl" in
6943         "$undef"|[nN]*) dflt='n';;
6944         *)              dflt='y';;
6945         esac
6946         rp="Do you want to install perl as /usr/bin/perl?"
6947         . ./myread
6948         case "$ans" in
6949         [yY]*)  val="$define";;
6950         *)      val="$undef" ;;
6951         esac
6952 else
6953         val="$undef"
6954 fi
6955 set installusrbinperl
6956 eval $setvar
6957
6958 : see if dld is available
6959 set dld.h i_dld
6960 eval $inhdr
6961
6962 : see if dlopen exists
6963 xxx_runnm="$runnm"
6964 runnm=false
6965 set dlopen d_dlopen
6966 eval $inlibc
6967 runnm="$xxx_runnm"
6968
6969 : determine which dynamic loading, if any, to compile in
6970 echo " "
6971 dldir="ext/DynaLoader"
6972 case "$usedl" in
6973 $define|y|true)
6974         dflt='y'
6975         usedl="$define"
6976         ;;
6977 $undef|n|false)
6978         dflt='n'
6979         usedl="$undef"
6980         ;;
6981 *) 
6982         dflt='n'
6983         case "$d_dlopen" in
6984             $define) dflt='y' ;;
6985         esac
6986         case "$i_dld" in
6987             $define) dflt='y' ;;
6988         esac
6989         : Does a dl_xxx.xs file exist for this operating system
6990         $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
6991         ;;
6992 esac
6993 rp="Do you wish to use dynamic loading?"
6994 . ./myread
6995 usedl="$ans"
6996 case "$ans" in
6997 y*) usedl="$define"
6998         case "$dlsrc" in
6999         '')
7000                 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
7001                         dflt="$dldir/dl_${osname}.xs"
7002                 elif $test "$d_dlopen" = "$define" ; then
7003                         dflt="$dldir/dl_dlopen.xs"
7004                 elif $test "$i_dld" = "$define" ; then
7005                         dflt="$dldir/dl_dld.xs"
7006                 else
7007                         dflt=''
7008                 fi
7009                 ;;
7010         *)      dflt="$dldir/$dlsrc"
7011                 ;;
7012         esac
7013     echo "The following dynamic loading files are available:"
7014         : Can not go over to $dldir because getfile has path hard-coded in.
7015         tdir=`pwd`; cd $rsrc; $ls -C $dldir/dl*.xs; cd $tdir
7016         rp="Source file to use for dynamic loading"
7017         fn="fne"
7018         gfpth="$src"
7019         . ./getfile
7020         usedl="$define"
7021         : emulate basename
7022         dlsrc=`echo $ans | $sed -e 's%.*/\([^/]*\)$%\1%'`
7023
7024         $cat << EOM
7025
7026 Some systems may require passing special flags to $cc -c to
7027 compile modules that will be used to create a shared library.
7028 To use no flags, say "none".
7029
7030 EOM
7031     case "$cccdlflags" in
7032     '') case "$gccversion" in
7033                 '') case "$osname" in
7034                         hpux)   dflt='+z' ;;
7035                         next)   dflt='none' ;;
7036                         irix*)  dflt='-KPIC' ;;
7037                         svr4*|esix*|solaris|nonstopux) dflt='-KPIC' ;;
7038                         sunos)  dflt='-pic' ;;
7039                         *)      dflt='none' ;;
7040                     esac
7041                         ;;
7042                 *)  case "$osname" in
7043                         darwin) dflt='none' ;;
7044                         svr4*|esix*|solaris|nonstopux) dflt='-fPIC' ;;
7045                         *)      dflt='-fpic' ;;
7046                     esac ;;
7047             esac ;;
7048         ' ') dflt='none' ;;
7049     *)  dflt="$cccdlflags" ;;
7050     esac
7051     rp="Any special flags to pass to $cc -c to compile shared library modules?"
7052     . ./myread
7053     case "$ans" in
7054     none) cccdlflags=' ' ;;
7055     *) cccdlflags="$ans" ;;
7056     esac
7057
7058     cat << EOM
7059
7060 Some systems use ld to create libraries that can be dynamically loaded,
7061 while other systems (such as those using ELF) use $cc.
7062
7063 EOM
7064         case "$ld" in
7065         '')     $cat >try.c <<'EOM'
7066 /* Test for whether ELF binaries are produced */
7067 #include <fcntl.h>
7068 #include <stdlib.h>
7069 int main() {
7070         char b[4];
7071         int i = open("a.out",O_RDONLY);
7072         if(i == -1) 
7073                 exit(1); /* fail */
7074         if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
7075                 exit(0); /* succeed (yes, it's ELF) */
7076         else
7077                 exit(1); /* fail */
7078 }
7079 EOM
7080                 if $cc $ccflags $ldflags try.c >/dev/null 2>&1 && $run ./a.out; then
7081                         cat <<EOM
7082 You appear to have ELF support.  I'll use $cc to build dynamic libraries.
7083 EOM
7084                         dflt="$cc"
7085                 else
7086                         echo "I'll use ld to build dynamic libraries."
7087                         dflt='ld'
7088                 fi
7089                 rm -f try.c a.out
7090                 ;;
7091         *)      dflt="$ld"
7092                 ;;
7093         esac
7094
7095     rp="What command should be used to create dynamic libraries?"
7096     . ./myread
7097         ld="$ans"
7098
7099     cat << EOM
7100
7101 Some systems may require passing special flags to $ld to create a
7102 library that can be dynamically loaded.  If your ld flags include
7103 -L/other/path options to locate libraries outside your loader's normal
7104 search path, you may need to specify those -L options here as well.  To
7105 use no flags, say "none".
7106
7107 EOM
7108     case "$lddlflags" in
7109     '') case "$osname" in
7110                         beos) dflt='-nostart' ;;
7111                         hpux) dflt='-b';
7112                               case "$gccversion" in
7113                               '') dflt="$dflt +vnocompatwarnings" ;;
7114                               esac
7115                               ;;        
7116                         linux|irix*)    dflt='-shared' ;;
7117                         next)  dflt='none' ;;
7118                         solaris) dflt='-G' ;;
7119                         sunos) dflt='-assert nodefinitions' ;;
7120                         svr4*|esix*|nonstopux) dflt="-G $ldflags" ;;
7121                 *)     dflt='none' ;;
7122                         esac
7123                         ;;
7124     *) dflt="$lddlflags" ;;
7125     esac
7126
7127         : Try to guess additional flags to pick up local libraries.
7128         : Be careful not to append to a plain 'none'
7129         case "$dflt" in
7130         none) dflt='' ;;
7131         esac
7132         for thisflag in $ldflags; do
7133                 case "$thisflag" in
7134                 -L*|-R*)
7135                         case " $dflt " in
7136                         *" $thisflag "*) ;;
7137                         *) dflt="$dflt $thisflag" ;;
7138                         esac
7139                         ;;
7140                 esac
7141         done
7142
7143         case "$dflt" in
7144         ''|' ') dflt='none' ;;
7145         esac
7146
7147     rp="Any special flags to pass to $ld to create a dynamically loaded library?"
7148     . ./myread
7149     case "$ans" in
7150     none) lddlflags=' ' ;;
7151     *) lddlflags="$ans" ;;
7152     esac
7153
7154         cat <<EOM
7155
7156 Some systems may require passing special flags to $cc to indicate that
7157 the resulting executable will use dynamic linking.  To use no flags,
7158 say "none".
7159
7160 EOM
7161     case "$ccdlflags" in
7162     '') case "$osname" in
7163                 hpux)   dflt='-Wl,-E' ;;
7164                 linux)  dflt='-rdynamic' ;;
7165                 next)   dflt='none' ;;
7166                 sunos)  dflt='none' ;;
7167                 *)      dflt='none' ;;
7168             esac ;;
7169     ' ')  dflt='none' ;;
7170     *)  dflt="$ccdlflags" ;;
7171     esac
7172     rp="Any special flags to pass to $cc to use dynamic linking?"
7173     . ./myread
7174     case "$ans" in
7175     none) ccdlflags=' ' ;;
7176     *) ccdlflags="$ans" ;;
7177     esac
7178     ;;
7179 *)  usedl="$undef"
7180         ld='ld'
7181     dlsrc='dl_none.xs'
7182     lddlflags=''
7183     ccdlflags=''
7184     ;;
7185 esac
7186
7187 also=''
7188 case "$usedl" in
7189 $undef)
7190         # No dynamic loading being used, so don't bother even to prompt.
7191         useshrplib='false'
7192         ;;
7193 *)      case "$useshrplib" in
7194         '')     case "$osname" in
7195                 svr4*|nonstopux|dgux|dynixptx|esix|powerux|beos|cygwin*)
7196                         dflt=y
7197                         also='Building a shared libperl is required for dynamic loading to work on your system.'
7198                         ;;
7199                 next*)
7200                         case "$osvers" in
7201                         4*)     dflt=y
7202                                 also='Building a shared libperl is needed for MAB support.'
7203                                 ;;
7204                         *)      dflt=n
7205                                 ;;
7206                         esac
7207                         ;;
7208                 *)      dflt=n
7209                         ;;
7210                 esac
7211                 ;;
7212         $define|true|[Yy]*)
7213                 dflt=y
7214                 ;;
7215         *)      dflt=n
7216                 ;;
7217         esac
7218         $cat << EOM
7219
7220 The perl executable is normally obtained by linking perlmain.c with
7221 libperl${_a}, any static extensions (usually just DynaLoader), and
7222 any other libraries needed on this system (such as -lm, etc.).  Since
7223 your system supports dynamic loading, it is probably possible to build
7224 a shared libperl.$so.  If you will have more than one executable linked
7225 to libperl.$so, this will significantly reduce the size of each
7226 executable, but it may have a noticeable affect on performance.  The
7227 default is probably sensible for your system.
7228 $also
7229
7230 EOM
7231         rp="Build a shared libperl.$so (y/n)"
7232         . ./myread
7233         case "$ans" in
7234         true|$define|[Yy]*)
7235                 useshrplib='true'  ;;
7236         *)      useshrplib='false' ;;
7237         esac
7238         ;;
7239 esac
7240
7241 case "$useshrplib" in
7242 true)
7243         case "$libperl" in
7244         '')
7245                 # Figure out a good name for libperl.so.  Since it gets stored in
7246                 # a version-specific architecture-dependent library, the version
7247                 # number isn't really that important, except for making cc/ld happy.
7248                 #
7249                 # A name such as libperl.so.3.1
7250                 majmin="libperl.$so.$patchlevel.$subversion"
7251                 # A name such as libperl.so.301
7252                 majonly=`echo $patchlevel $subversion |
7253                         $awk '{printf "%d%02d", $1, $2}'`
7254                 majonly=libperl.$so.$majonly
7255                 # I'd prefer to keep the os-specific stuff here to a minimum, and
7256                 # rely on figuring it out from the naming of libc.
7257                 case "${osname}${osvers}" in
7258                 next4*)
7259                         dflt=libperl.5.$so
7260                         # XXX How handle the --version stuff for MAB?
7261                         ;;
7262                 linux*)  # ld won't link with a bare -lperl otherwise.
7263                         dflt=libperl.$so
7264                         ;;
7265                 cygwin*) # include version
7266                         dflt=`echo libperl$version | sed -e 's/\./_/g'`$lib_ext
7267                         ;;
7268                 *)      # Try to guess based on whether libc has major.minor.
7269                         case "$libc" in
7270                         *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
7271                         *libc.$so.[0-9]*) dflt=$majonly ;;
7272                         *)      dflt=libperl.$so ;;
7273                         esac
7274                         ;;
7275                 esac
7276                 ;;
7277         *)      dflt=$libperl
7278                 ;;
7279         esac
7280         cat << EOM
7281
7282 I need to select a good name for the shared libperl.  If your system uses
7283 library names with major and minor numbers, then you might want something
7284 like $majmin.  Alternatively, if your system uses a single version
7285 number for shared libraries, then you might want to use $majonly.
7286 Or, your system might be quite happy with a simple libperl.$so.
7287
7288 Since the shared libperl will get installed into a version-specific
7289 architecture-dependent directory, the version number of the shared perl
7290 library probably isn't important, so the default should be o.k.
7291
7292 EOM
7293         rp='What name do you want to give to the shared libperl?'
7294         . ./myread
7295         libperl=$ans
7296         echo "Ok, I'll use $libperl"
7297         ;;
7298 *)
7299         libperl="libperl${_a}"
7300         ;;
7301 esac
7302
7303 # Detect old use of shrpdir via undocumented Configure -Dshrpdir
7304 case "$shrpdir" in
7305 '') ;;
7306 *)      $cat >&4 <<EOM
7307 WARNING:  Use of the shrpdir variable for the installation location of
7308 the shared $libperl is not supported.  It was never documented and
7309 will not work in this version.  Let me (perlbug@perl.org)
7310 know of any problems this may cause.
7311
7312 EOM
7313         case "$shrpdir" in
7314         "$archlibexp/CORE")
7315                 $cat >&4 <<EOM
7316 But your current setting of $shrpdir is
7317 the default anyway, so it's harmless.
7318 EOM
7319                 ;;
7320         *)
7321                 $cat >&4 <<EOM
7322 Further, your current attempted setting of $shrpdir
7323 conflicts with the value of $archlibexp/CORE
7324 that installperl will use.
7325 EOM
7326                 ;;
7327         esac
7328         ;;
7329 esac
7330
7331 # How will the perl executable find the installed shared $libperl?
7332 # Add $xxx to ccdlflags.
7333 # If we can't figure out a command-line option, use $shrpenv to
7334 # set env LD_RUN_PATH.  The main perl makefile uses this.
7335 shrpdir=$archlibexp/CORE
7336 xxx=''
7337 tmp_shrpenv=''
7338 if "$useshrplib"; then
7339     case "$osname" in 
7340         aix)
7341                 # We'll set it in Makefile.SH...
7342                 ;;
7343         solaris|netbsd)
7344                 xxx="-R $shrpdir"
7345                 ;;
7346         freebsd)
7347                 xxx="-Wl,-R$shrpdir"
7348                 ;;
7349         linux|irix*|dec_osf)
7350                 xxx="-Wl,-rpath,$shrpdir"
7351                 ;;
7352         next)
7353                 # next doesn't like the default...
7354                 ;;
7355         beos)
7356                 # beos doesn't like the default, either.
7357                 ;;
7358         hpux*)
7359                 # hpux doesn't like the default, either.
7360                 tmp_shrpenv="env LDOPTS=\"+s +b${shrpdir}\""
7361                 ;;
7362         *)
7363                 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
7364                 ;;
7365         esac
7366         case "$xxx" in
7367         '') ;;
7368         *)      
7369                 # Only add $xxx if it isn't already in ccdlflags.
7370                 case " $ccdlflags " in
7371                 *" $xxx "*)     ;;
7372                 *)      ccdlflags="$ccdlflags $xxx"
7373                         cat <<EOM >&4
7374
7375 Adding $xxx to the flags
7376 passed to $ld so that the perl executable will find the 
7377 installed shared $libperl.
7378
7379 EOM
7380                         ;;
7381                 esac
7382                 ;;
7383         esac
7384 fi
7385 # Fix ccdlflags in AIX for building external extensions.
7386 # (For building Perl itself bare -bE:perl.exp is needed,
7387 #  Makefile.SH takes care of this.)
7388 case "$osname" in
7389 aix) ccdlflags="$ccdlflags -bE:$installarchlib/CORE/perl.exp" ;;
7390 esac
7391 # Respect a hint or command-line value.
7392 case "$shrpenv" in
7393 '') shrpenv="$tmp_shrpenv" ;;
7394 esac
7395 case "$ldlibpthname" in
7396 '')     ldlibpthname=LD_LIBRARY_PATH ;;
7397 none)   ldlibpthname='' ;;
7398 esac
7399
7400 : determine where manual pages are on this system
7401 echo " "
7402 case "$sysman" in
7403 '') 
7404         syspath='/usr/share/man/man1 /usr/man/man1'
7405         syspath="$syspath /usr/man/mann /usr/man/manl /usr/man/local/man1"
7406         syspath="$syspath /usr/man/u_man/man1"
7407         syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
7408         syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
7409         syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
7410         sysman=`./loc . /usr/man/man1 $syspath`
7411         ;;
7412 esac
7413 if $test -d "$sysman"; then
7414         echo "System manual is in $sysman." >&4
7415 else
7416         echo "Could not find manual pages in source form." >&4
7417 fi
7418
7419 : determine where manual pages go
7420 set man1dir man1dir none
7421 eval $prefixit
7422 $cat <<EOM
7423
7424 $spackage has manual pages available in source form.
7425 EOM
7426 case "$nroff" in
7427 nroff)
7428         echo "However, you don't have nroff, so they're probably useless to you."
7429         case "$man1dir" in
7430         '') man1dir="none";;
7431         esac;;
7432 esac
7433 echo "If you don't want the manual sources installed, answer 'none'."
7434 case "$man1dir" in
7435 ' ') dflt=none
7436         ;;
7437 '')
7438         lookpath="$prefixexp/share/man/man1"
7439         lookpath="$lookpath $prefixexp/man/man1 $prefixexp/man/l_man/man1"
7440         lookpath="$lookpath $prefixexp/man/p_man/man1"
7441         lookpath="$lookpath $prefixexp/man/u_man/man1"
7442         lookpath="$lookpath $prefixexp/man/man.1"
7443         case "$sysman" in
7444         */?_man*)       dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
7445         *)      dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
7446         esac
7447         set dflt
7448         eval $prefixup
7449         ;;
7450 *)  dflt="$man1dir"
7451         ;;
7452 esac
7453 echo " "
7454 fn=dn+~
7455 rp="Where do the main $spackage manual pages (source) go?"
7456 . ./getfile
7457 if $test "X$man1direxp" != "X$ansexp"; then
7458         installman1dir=''
7459 fi
7460 man1dir="$ans"
7461 man1direxp="$ansexp"
7462 case "$man1dir" in
7463 '')     man1dir=' '
7464         installman1dir='';;
7465 esac
7466
7467 : Change installation prefix, if necessary.
7468 if $test X"$prefix" != X"$installprefix"; then
7469         installman1dir=`echo $man1direxp | $sed "s#^$prefix#$installprefix#"`
7470 else
7471         installman1dir="$man1direxp"
7472 fi
7473
7474 : What suffix to use on installed man pages
7475
7476 case "$man1dir" in
7477 ' ')
7478         man1ext='0'
7479         ;;
7480 *)
7481         rp="What suffix should be used for the main $spackage man pages?"
7482         case "$man1ext" in
7483         '')     case "$man1dir" in
7484                 *1)  dflt=1 ;;
7485                 *1p) dflt=1p ;;
7486                 *1pm) dflt=1pm ;;
7487                 *l) dflt=l;;
7488                 *n) dflt=n;;
7489                 *o) dflt=o;;
7490                 *p) dflt=p;;
7491                 *C) dflt=C;;
7492                 *L) dflt=L;;
7493                 *L1) dflt=L1;;
7494                 *) dflt=1;;
7495                 esac
7496                 ;;
7497         *)      dflt="$man1ext";;
7498         esac
7499         . ./myread
7500         man1ext="$ans"
7501         ;;
7502 esac
7503
7504 : see if we can have long filenames
7505 echo " "
7506 first=123456789abcdef
7507 $rm -f $first
7508 if (echo hi >$first) 2>/dev/null; then
7509         if $test -f 123456789abcde; then
7510                 echo 'You cannot have filenames longer than 14 characters.  Sigh.' >&4
7511                 val="$undef"
7512         else
7513                 echo 'You can have filenames longer than 14 characters.'>&4
7514                 val="$define"
7515         fi
7516 else
7517         $cat <<'EOM'
7518 You can't have filenames longer than 14 chars.
7519 You can't even think about them!
7520 EOM
7521         val="$undef"
7522 fi 
7523 set d_flexfnam
7524 eval $setvar
7525 $rm -rf 123456789abcde*
7526
7527 : determine where library module manual pages go
7528 set man3dir man3dir none
7529 eval $prefixit
7530 $cat <<EOM
7531
7532 $spackage has manual pages for many of the library modules.
7533 EOM
7534
7535 case "$nroff" in
7536 nroff)
7537         $cat <<'EOM'
7538 However, you don't have nroff, so they're probably useless to you.
7539 EOM
7540         case "$man3dir" in
7541         '') man3dir="none";;
7542         esac;;
7543 esac
7544
7545 case "$d_flexfnam" in
7546 undef)
7547         $cat <<'EOM'
7548 However, your system can't handle the long file names like File::Basename.3. 
7549 EOM
7550         case "$man3dir" in
7551         '') man3dir="none";;
7552         esac;;
7553 esac
7554
7555 echo "If you don't want the manual sources installed, answer 'none'."
7556 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
7557 case "$man3dir" in
7558 '')     dflt=`echo "$man1dir" | $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'`
7559         if $test -d "$privlib/man/man3"; then
7560                 cat <<EOM >&4
7561
7562 WARNING:  Previous versions of perl installed man3 pages into
7563 $privlib/man/man3.  This version will suggest a 
7564 new default of $dflt.  
7565 EOM
7566                 tdflt=$dflt
7567                 dflt='n'
7568                 rp='Do you wish to preserve the old behavior?(y/n)'
7569                 . ./myread
7570                 case "$ans" in
7571                 y*) dflt="$privlib/man/man3" ;;
7572                 *)  dflt=$tdflt ;;
7573                 esac
7574     fi
7575         ;;
7576 *)      dflt="$man3dir" ;;
7577 esac
7578 case "$dflt" in
7579 ' ') dflt=none ;;
7580 esac
7581 echo " "
7582 fn=dn+~
7583 rp="Where do the $package library man pages (source) go?"
7584 . ./getfile
7585 man3dir="$ans"
7586 man3direxp="$ansexp"
7587 case "$man3dir" in
7588 '')     man3dir=' '
7589         installman3dir='';;
7590 esac
7591
7592 : Change installation prefix, if necessary.
7593 if $test X"$prefix" != X"$installprefix"; then
7594         installman3dir=`echo $man3direxp | $sed "s#^$prefix#$installprefix#"`
7595 else
7596         installman3dir="$man3direxp"
7597 fi
7598
7599 : What suffix to use on installed man pages
7600 case "$man3dir" in
7601 ' ')
7602         man3ext='0'
7603         ;;
7604 *)
7605         rp="What suffix should be used for the $package library man pages?"
7606         case "$man3ext" in
7607         '')     case "$man3dir" in
7608                 *3)  dflt=3 ;;
7609                 *3p) dflt=3p ;;
7610                 *3pm) dflt=3pm ;;
7611                 *l) dflt=l;;
7612                 *n) dflt=n;;
7613                 *o) dflt=o;;
7614                 *p) dflt=p;;
7615                 *C) dflt=C;;
7616                 *L) dflt=L;;
7617                 *L3) dflt=L3;;
7618                 *) dflt=3;;
7619                 esac
7620                 ;;
7621         *)      dflt="$man3ext";;
7622         esac
7623         . ./myread
7624         man3ext="$ans"
7625         ;;
7626 esac
7627
7628 : see if we have to deal with yellow pages, now NIS.
7629 if $test -d /usr/etc/yp || $test -d /etc/yp; then
7630         if $test -f /usr/etc/nibindd; then
7631                 echo " "
7632                 echo "I'm fairly confident you're on a NeXT."
7633                 echo " "
7634                 rp='Do you get the hosts file via NetInfo?'
7635                 dflt=y
7636                 case "$hostcat" in
7637                 nidump*) ;;
7638                 '') ;;
7639                 *) dflt=n;;
7640                 esac
7641                 . ./myread
7642                 case "$ans" in
7643                 y*) hostcat='nidump hosts .';;
7644                 *)      case "$hostcat" in
7645                         nidump*) hostcat='';;
7646                         esac
7647                         ;;
7648                 esac
7649         fi
7650         case "$hostcat" in
7651         nidump*) ;;
7652         *)
7653                 case "$hostcat" in
7654                 *ypcat*) dflt=y;;
7655                 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
7656                                 dflt=y
7657                         else
7658                                 dflt=n
7659                         fi;;
7660                 *) dflt=n;;
7661                 esac
7662                 echo " "
7663                 rp='Are you getting the hosts file via yellow pages?'
7664                 . ./myread
7665                 case "$ans" in
7666                 y*) hostcat='ypcat hosts';;
7667                 *) hostcat='cat /etc/hosts';;
7668                 esac
7669                 ;;
7670         esac
7671 fi
7672 case "$hostcat" in
7673 '') test -f /etc/hosts && hostcat='cat /etc/hosts';;
7674 esac
7675 case "$groupcat" in
7676 '') test -f /etc/group && groupcat='cat /etc/group';;
7677 esac
7678 case "$passcat" in
7679 '') test -f /etc/passwd && passcat='cat /etc/passwd';;
7680 esac
7681
7682 : now get the host name
7683 echo " "
7684 echo "Figuring out host name..." >&4
7685 case "$myhostname" in
7686 '') cont=true
7687         echo 'Maybe "hostname" will work...'
7688         if tans=`sh -c hostname 2>&1` ; then
7689                 myhostname=$tans
7690                 phostname=hostname
7691                 cont=''
7692         fi
7693         ;;
7694 *) cont='';;
7695 esac
7696 if $test "$cont"; then
7697         if ./xenix; then
7698                 echo 'Oh, dear.  Maybe "/etc/systemid" is the key...'
7699                 if tans=`cat /etc/systemid 2>&1` ; then
7700                         myhostname=$tans
7701                         phostname='cat /etc/systemid'
7702                         echo "Whadyaknow.  Xenix always was a bit strange..."
7703                         cont=''
7704                 fi
7705         elif $test -r /etc/systemid; then
7706                 echo "(What is a non-Xenix system doing with /etc/systemid?)"
7707         fi
7708 fi
7709 if $test "$cont"; then
7710         echo 'No, maybe "uuname -l" will work...'
7711         if tans=`sh -c 'uuname -l' 2>&1` ; then
7712                 myhostname=$tans
7713                 phostname='uuname -l'
7714         else
7715                 echo 'Strange.  Maybe "uname -n" will work...'
7716                 if tans=`sh -c 'uname -n' 2>&1` ; then
7717                         myhostname=$tans
7718                         phostname='uname -n'
7719                 else
7720                         echo 'Oh well, maybe I can mine it out of whoami.h...'
7721                         if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
7722                                 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
7723                                 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
7724                         else
7725                                 case "$myhostname" in
7726                                 '') echo "Does this machine have an identity crisis or something?"
7727                                         phostname='';;
7728                                 *)
7729                                         echo "Well, you said $myhostname before..."
7730                                         phostname='echo $myhostname';;
7731                                 esac
7732                         fi
7733                 fi
7734         fi
7735 fi
7736 : you do not want to know about this
7737 set $myhostname
7738 myhostname=$1
7739
7740 : verify guess
7741 if $test "$myhostname" ; then
7742         dflt=y
7743         rp='Your host name appears to be "'$myhostname'".'" Right?"
7744         . ./myread
7745         case "$ans" in
7746         y*) ;;
7747         *) myhostname='';;
7748         esac
7749 fi
7750
7751 : bad guess or no guess
7752 while $test "X$myhostname" = X ; do
7753         dflt=''
7754         rp="Please type the (one word) name of your host:"
7755         . ./myread
7756         myhostname="$ans"
7757 done
7758
7759 : translate upper to lower if necessary
7760 case "$myhostname" in
7761 *[A-Z]*)
7762         echo "(Normalizing case in your host name)"
7763         myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
7764         ;;
7765 esac
7766
7767 case "$myhostname" in
7768 *.*)
7769         dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
7770         myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
7771         echo "(Trimming domain name from host name--host name is now $myhostname)"
7772         ;;
7773 *) case "$mydomain" in
7774         '')
7775                 {
7776                         test "X$hostcat" = "Xypcat hosts" &&
7777                         ypmatch "$myhostname" hosts 2>/dev/null |\
7778                                 $sed -e 's/[     ]*#.*//; s/$/ /' > hosts && \
7779                         $test -s hosts
7780                 } || {
7781                         test "X$hostcat" != "X" &&
7782                         $hostcat | $sed -n -e "s/[       ]*#.*//; s/\$/ /
7783                                         /[       ]$myhostname[  . ]/p" > hosts
7784                 }
7785                 tmp_re="[       . ]"
7786                 if $test -f hosts; then
7787                         $test x`$awk "/[0-9].*[  ]$myhostname$tmp_re/ { sum++ }
7788                              END { print sum }" hosts` = x1 || tmp_re="[         ]"
7789                         dflt=.`$awk "/[0-9].*[   ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
7790                                 hosts | $sort | $uniq | \
7791                                 $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
7792                         case `$echo X$dflt` in
7793                         X*\ *)  echo "(Several hosts in the database matched hostname)"
7794                                 dflt=.
7795                                 ;;
7796                         X.) echo "(You do not have fully-qualified names in the hosts database)"
7797                                 ;;
7798                         esac
7799                 else
7800                         echo "(I cannot locate a hosts database anywhere)"
7801                         dflt=.
7802                 fi
7803                 case "$dflt" in
7804                 .)
7805                         tans=`./loc resolv.conf X /etc /usr/etc`
7806                         if $test -f "$tans"; then
7807                                 echo "(Attempting domain name extraction from $tans)"
7808                                 dflt=.`$sed -n -e 's/   / /g' \
7809                                   -e 's/^search  *\([^ ]*\).*/\1/p' $tans \
7810                                   | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
7811                                 case "$dflt" in
7812                                 .) dflt=.`$sed -n -e 's/        / /g' \
7813                                      -e 's/^domain  *\([^ ]*\).*/\1/p' $tans \
7814                                      | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
7815                                         ;;
7816                                 esac
7817                         fi
7818                         ;;
7819                 esac
7820                 case "$dflt" in
7821                 .) echo "(No help from resolv.conf either -- attempting clever guess)"
7822                         dflt=.`sh -c domainname 2>/dev/null`
7823                         case "$dflt" in
7824                         '') dflt='.';;
7825                         .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
7826                         esac
7827                         ;;
7828                 esac
7829                 case "$dflt$osname" in
7830                 .os390) echo "(Attempting domain name extraction from //'SYS1.TCPPARMS(TCPDATA)')"
7831                         dflt=.`awk '/^DOMAINORIGIN/ {print $2}' "//'SYS1.TCPPARMS(TCPDATA)'" 2>/dev/null`
7832                         ;;
7833                 esac
7834                 case "$dflt" in
7835                 .) echo "(Lost all hope -- silly guess then)"
7836                         dflt='.uucp'
7837                         ;;
7838                 esac
7839                 $rm -f hosts
7840                 ;;
7841         *) dflt="$mydomain";;
7842         esac;;
7843 esac
7844 echo " "
7845 rp="What is your domain name?"
7846 . ./myread
7847 tans="$ans"
7848 case "$ans" in
7849 '') ;;
7850 .*) ;;
7851 *) tans=".$tans";;
7852 esac
7853 mydomain="$tans"
7854
7855 : translate upper to lower if necessary
7856 case "$mydomain" in
7857 *[A-Z]*)
7858         echo "(Normalizing case in your domain name)"
7859         mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
7860         ;;
7861 esac
7862
7863 : a little sanity check here
7864 case "$phostname" in
7865 '') ;;
7866 *)
7867         case `$phostname | ./tr '[A-Z]' '[a-z]'` in
7868         $myhostname$mydomain|$myhostname) ;;
7869         *)
7870                 case "$phostname" in
7871                 sed*)
7872                         echo "(That doesn't agree with your whoami.h file, by the way.)"
7873                         ;;
7874                 *)
7875                         echo "(That doesn't agree with your $phostname command, by the way.)"
7876                         ;;
7877                 esac
7878         ;;
7879         esac
7880         ;;
7881 esac
7882
7883 $cat <<EOM
7884
7885 I need to get your e-mail address in Internet format if possible, i.e.
7886 something like user@host.domain. Please answer accurately since I have
7887 no easy means to double check it. The default value provided below
7888 is most probably close to reality but may not be valid from outside
7889 your organization...
7890
7891 EOM
7892 cont=x
7893 while test "$cont"; do
7894         case "$cf_email" in
7895         '') dflt="$cf_by@$myhostname$mydomain";;
7896         *) dflt="$cf_email";;
7897         esac
7898         rp='What is your e-mail address?'
7899         . ./myread
7900         cf_email="$ans"
7901         case "$cf_email" in
7902         *@*.*) cont='' ;;
7903         *)
7904                 rp='Address does not look like an Internet one.  Use it anyway?'
7905                 case "$fastread" in
7906                 yes) dflt=y ;;
7907                 *) dflt=n ;;
7908                 esac
7909                 . ./myread
7910                 case "$ans" in
7911                 y*) cont='' ;;
7912                 *) echo " " ;;
7913                 esac
7914                 ;;
7915         esac
7916 done
7917
7918 $cat <<EOM
7919
7920 If you or somebody else will be maintaining perl at your site, please
7921 fill in the correct e-mail address here so that they may be contacted
7922 if necessary. Currently, the "perlbug" program included with perl
7923 will send mail to this address in addition to perlbug@perl.org. You may
7924 enter "none" for no administrator.
7925
7926 EOM
7927 case "$perladmin" in
7928 '') dflt="$cf_email";;
7929 *) dflt="$perladmin";;
7930 esac
7931 rp='Perl administrator e-mail address'
7932 . ./myread
7933 perladmin="$ans"
7934
7935 : determine whether to only install version-specific parts.
7936 echo " "
7937 $cat <<EOM
7938 Do you want to install only the version-specific parts of the perl
7939 distribution?  Usually you do *not* want to do this.
7940 EOM
7941 case "$versiononly" in
7942 "$define"|[Yy]*|true) dflt='y' ;;
7943 *) dflt='n';
7944 esac
7945 rp="Do you want to install only the version-specific parts of perl?"
7946 . ./myread
7947 case "$ans" in
7948 [yY]*)  val="$define";;
7949 *)      val="$undef" ;;
7950 esac
7951 set versiononly
7952 eval $setvar
7953
7954 : figure out how to guarantee perl startup
7955 case "$startperl" in
7956 '')
7957         case "$sharpbang" in
7958         *!)
7959                 $cat <<EOH
7960
7961 I can use the #! construct to start perl on your system. This will
7962 make startup of perl scripts faster, but may cause problems if you
7963 want to share those scripts and perl is not in a standard place
7964 ($binexp/perl) on all your platforms. The alternative is to force
7965 a shell by starting the script with a single ':' character.
7966
7967 EOH
7968                 case "$versiononly" in
7969                 "$define")      dflt="$binexp/perl$version";;  
7970                 *)              dflt="$binexp/perl";;
7971                 esac
7972                 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
7973                 . ./myread
7974                 case "$ans" in
7975                 none)   startperl=": # use perl";;
7976                 *)      startperl="#!$ans"
7977                         if $test 30 -lt `echo "$ans" | wc -c`; then
7978                                 $cat >&4 <<EOM
7979
7980 WARNING:  Some systems limit the #! command to 32 characters.
7981 If you experience difficulty running Perl scripts with #!, try
7982 installing Perl in a directory with a shorter pathname.
7983
7984 EOM
7985                         fi ;;
7986                 esac
7987                 ;;
7988         *) startperl=": # use perl"
7989                 ;;
7990         esac
7991         ;;
7992 esac
7993 echo "I'll use $startperl to start perl scripts."
7994
7995 : figure best path for perl in scripts
7996 case "$perlpath" in
7997 '')
7998         perlpath="$binexp/perl"
7999         case "$startperl" in
8000         *!*) ;;
8001         *)
8002                 $cat <<EOH
8003
8004 I will use the "eval 'exec'" idiom to start Perl on your system.
8005 I can use the full path of your Perl binary for this purpose, but
8006 doing so may cause problems if you want to share those scripts and
8007 Perl is not always in a standard place ($binexp/perl).
8008
8009 EOH
8010                 dflt="$binexp/perl"
8011                 rp="What path shall I use in \"eval 'exec'\"?"
8012                 . ./myread
8013                 perlpath="$ans"
8014                 ;;
8015         esac
8016         ;;
8017 esac
8018 case "$startperl" in
8019 *!*)    ;;
8020 *)      echo "I'll use $perlpath in \"eval 'exec'\"" ;;
8021 esac
8022
8023 : determine where public executable scripts go
8024 set scriptdir scriptdir
8025 eval $prefixit
8026 case "$scriptdir" in
8027 '')
8028         dflt="$bin"
8029         : guess some guesses
8030         $test -d /usr/share/scripts && dflt=/usr/share/scripts
8031         $test -d /usr/share/bin     && dflt=/usr/share/bin
8032         $test -d /usr/local/script  && dflt=/usr/local/script
8033         $test -d /usr/local/scripts && dflt=/usr/local/scripts
8034         $test -d $prefixexp/script  && dflt=$prefixexp/script
8035         set dflt
8036         eval $prefixup
8037         ;;
8038 *)  dflt="$scriptdir"
8039         ;;
8040 esac
8041 $cat <<EOM
8042  
8043 Some installations have a separate directory just for executable scripts so
8044 that they can mount it across multiple architectures but keep the scripts in
8045 one spot.  You might, for example, have a subdirectory of /usr/share for this.
8046 Or you might just lump your scripts in with all your other executables.
8047  
8048 EOM
8049 fn=d~
8050 rp='Where do you keep publicly executable scripts?'
8051 . ./getfile
8052 if $test "X$ansexp" != "X$scriptdirexp"; then
8053         installscript=''
8054 fi
8055 scriptdir="$ans"
8056 scriptdirexp="$ansexp"
8057 : Change installation prefix, if necessary.
8058 if $test X"$prefix" != X"$installprefix"; then
8059         installscript=`echo $scriptdirexp | sed "s#^$prefix#$installprefix#"`
8060 else
8061         installscript="$scriptdirexp"
8062 fi
8063
8064 : determine where add-on public executables go
8065 case "$sitebin" in
8066 '')     dflt=$siteprefix/bin ;;
8067 *)      dflt=$sitebin ;;
8068 esac
8069 fn=d~
8070 rp='Pathname where the add-on public executables should be installed?'
8071 . ./getfile
8072 sitebin="$ans"
8073 sitebinexp="$ansexp"
8074 : Change installation prefix, if necessary.
8075 if $test X"$prefix" != X"$installprefix"; then
8076         installsitebin=`echo $sitebinexp | sed "s#^$prefix#$installprefix#"`
8077 else
8078         installsitebin="$sitebinexp"
8079 fi
8080
8081 : define an is-a-typedef? function
8082 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
8083 case "$inclist" in
8084 "") inclist="sys/types.h";;
8085 esac;
8086 eval "varval=\$$var";
8087 case "$varval" in
8088 "")
8089         $rm -f temp.c;
8090         for inc in $inclist; do
8091                 echo "#include <$inc>" >>temp.c;
8092         done;
8093         echo "#ifdef $type" >> temp.c;
8094         echo "printf(\"We have $type\");" >> temp.c;
8095         echo "#endif" >> temp.c;
8096         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
8097         if $contains $type temp.E >/dev/null 2>&1; then
8098                 eval "$var=\$type";
8099         else
8100                 eval "$var=\$def";
8101         fi;
8102         $rm -f temp.?;;
8103 *) eval "$var=\$varval";;
8104 esac'
8105
8106 : define an is-a-typedef? function that prompts if the type is not available.
8107 typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
8108 case "$inclist" in
8109 "") inclist="sys/types.h";;
8110 esac;
8111 eval "varval=\$$var";
8112 case "$varval" in
8113 "")
8114         $rm -f temp.c;
8115         for inc in $inclist; do
8116                 echo "#include <$inc>" >>temp.c;
8117         done;
8118         echo "#ifdef $type" >> temp.c;
8119         echo "printf(\"We have $type\");" >> temp.c;
8120         echo "#endif" >> temp.c;
8121         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
8122         echo " " ;
8123         echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
8124         if $contains $type temp.E >/dev/null 2>&1; then
8125                 echo "$type found." >&4;
8126                 eval "$var=\$type";
8127         else
8128                 echo "$type NOT found." >&4;
8129                 dflt="$def";
8130                 . ./myread ;
8131                 eval "$var=\$ans";
8132         fi;
8133         $rm -f temp.?;;
8134 *) eval "$var=\$varval";;
8135 esac'
8136
8137 : see what type lseek is declared as in the kernel
8138 rp="What is the type used for lseek's offset on this system?"
8139 set off_t lseektype long stdio.h sys/types.h
8140 eval $typedef_ask
8141
8142 echo " "
8143 echo "Checking to see how big your file offsets are..." >&4
8144 $cat >try.c <<EOCP
8145 #include <sys/types.h>
8146 #include <stdio.h>
8147 int main()
8148 {
8149     printf("%d\n", (int)sizeof($lseektype));
8150     return(0); 
8151 }
8152 EOCP
8153 set try
8154 if eval $compile_ok; then
8155         lseeksize=`$run ./try`
8156         echo "Your file offsets are $lseeksize bytes long."
8157 else
8158         dflt=$longsize
8159         echo " "
8160         echo "(I can't seem to compile the test program.  Guessing...)"
8161         rp="What is the size of your file offsets (in bytes)?"
8162         . ./myread
8163         lseeksize="$ans"
8164 fi
8165 $rm -f try.c try
8166
8167 : see what type file positions are declared as in the library
8168 rp="What is the type for file position used by fsetpos()?"
8169 set fpos_t fpostype long stdio.h sys/types.h
8170 eval $typedef_ask
8171
8172 echo " "
8173 case "$fpostype" in
8174 *_t) zzz="$fpostype"    ;;
8175 *)   zzz="fpos_t"       ;;
8176 esac
8177 echo "Checking the size of $zzz..." >&4 
8178 cat > try.c <<EOCP
8179 #include <sys/types.h>
8180 #include <stdio.h>
8181 int main() {
8182     printf("%d\n", (int)sizeof($fpostype));
8183     exit(0);
8184 }
8185 EOCP
8186 set try
8187 if eval $compile_ok; then
8188         yyy=`$run ./try`
8189         case "$yyy" in
8190         '')     fpossize=4
8191                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
8192                 ;;
8193         *)      fpossize=$yyy
8194                 echo "Your $zzz is $fpossize bytes long."
8195                 ;;
8196         esac
8197 else
8198         dflt="$longsize"
8199         echo " " >&4
8200         echo "(I can't compile the test program.  Guessing...)" >&4
8201         rp="What is the size of your file positions (in bytes)?"
8202         . ./myread
8203         fpossize="$ans"
8204 fi
8205
8206
8207
8208 # Backward compatibility (uselfs is deprecated).
8209 case "$uselfs" in
8210 "$define"|true|[yY]*)
8211         cat <<EOM >&4
8212
8213 *** Configure -Duselfs is deprecated, using -Duselargefiles instead.
8214 EOM
8215         uselargefiles="$define"
8216         ;;
8217 esac                          
8218
8219 case "$lseeksize:$fpossize" in
8220 8:8) cat <<EOM
8221
8222 You can have files larger than 2 gigabytes.
8223 EOM
8224    val="$define" ;;
8225 *)    case "$uselargefiles" in
8226    "$undef"|false|[nN]*) dflt='n' ;;
8227    *)   dflt='y' ;;
8228    esac
8229    cat <<EOM
8230
8231 Perl can be built to understand large files (files larger than 2 gigabytes)
8232 on some systems.  To do so, Configure can be run with -Duselargefiles.
8233
8234 If this doesn't make any sense to you, just accept the default '$dflt'.
8235 EOM
8236    rp='Try to understand large files, if available?'
8237    . ./myread
8238    case "$ans" in
8239    y|Y)         val="$define" ;;
8240    *)           val="$undef"  ;;
8241    esac
8242    ;;
8243 esac
8244 set uselargefiles
8245 eval $setvar
8246 case "$uselargefiles" in
8247 "$define")
8248 : Look for a hint-file generated 'call-back-unit'.  If the
8249 : user has specified that a large files perl is to be built,
8250 : we may need to set or change some other defaults.
8251         if $test -f uselargefiles.cbu; then
8252                 echo "Your platform has some specific hints for large file builds, using them..."
8253                 . ./uselargefiles.cbu
8254                 echo " "
8255                 echo "Rechecking to see how big your file offsets are..." >&4
8256                 $cat >try.c <<EOCP
8257 #include <sys/types.h>
8258 #include <stdio.h>
8259 int main()
8260 {
8261     printf("%d\n", (int)sizeof($lseektype));
8262     return(0); 
8263 }
8264 EOCP
8265                 set try
8266                 if eval $compile_ok; then
8267                         lseeksize=`$run ./try`
8268                         $echo "Your file offsets are now $lseeksize bytes long."
8269                 else
8270                         dflt="$lseeksize"
8271                         echo " "
8272                         echo "(I can't seem to compile the test program.  Guessing...)"
8273                         rp="What is the size of your file offsets (in bytes)?"
8274                         . ./myread
8275                         lseeksize="$ans"
8276                 fi
8277                 case "$fpostype" in
8278                 *_t) zzz="$fpostype"    ;;
8279                 *)   zzz="fpos_t"       ;;
8280                 esac
8281                 $echo $n "Rechecking the size of $zzz...$c" >&4 
8282                 $cat > try.c <<EOCP
8283 #include <sys/types.h>
8284 #include <stdio.h>
8285 int main() {
8286     printf("%d\n", (int)sizeof($fpostype));
8287     exit(0);
8288 }
8289 EOCP
8290                 set try
8291                 if eval $compile_ok; then
8292                         yyy=`$run ./try`
8293                         dflt="$lseeksize"
8294                         case "$yyy" in
8295                         '')     echo " "
8296                                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
8297                                 ;;
8298                         *)      fpossize=$yyy
8299                                 echo " $fpossize bytes." >&4
8300                                 ;;
8301                         esac
8302                 else
8303                         dflt="$fpossize"
8304                         echo " "
8305                         echo "(I can't compile the test program.  Guessing...)" >&4
8306                         rp="What is the size of your file positions (in bytes)?"
8307                         . ./myread
8308                         fpossize="$ans"
8309                 fi
8310                 $rm -f try.c try
8311         fi
8312         ;;
8313 esac
8314
8315 case "$vendorprefix" in
8316 '')     d_vendorbin="$undef"
8317         vendorbin=''
8318         vendorbinexp=''
8319         ;;
8320 *)      d_vendorbin="$define"
8321         : determine where vendor-supplied executables go.
8322         case "$vendorbin" in
8323         '') dflt=$vendorprefix/bin ;;
8324         *)      dflt="$vendorbin" ;;
8325         esac
8326         fn=d~+
8327         rp='Pathname for the vendor-supplied executables directory?'
8328         . ./getfile
8329         vendorbin="$ans"
8330         vendorbinexp="$ansexp"
8331         ;;
8332 esac
8333 : Change installation prefix, if necessary.
8334 if $test X"$prefix" != X"$installprefix"; then
8335         installvendorbin=`echo $vendorbinexp | $sed "s#^$prefix#$installprefix#"`
8336 else
8337         installvendorbin="$vendorbinexp"
8338 fi
8339
8340 : see if qgcvt exists
8341 set qgcvt d_qgcvt
8342 eval $inlibc
8343
8344 echo " "
8345
8346 if $test X"$d_longdbl" = X"$define"; then
8347
8348 echo "Checking how to print long doubles..." >&4
8349
8350 if $test X"$sPRIfldbl" = X -a X"$doublesize" = X"$longdblsize"; then
8351         $cat >try.c <<'EOCP'
8352 #include <sys/types.h>
8353 #include <stdio.h>
8354 int main() {
8355   double d = 123.456;
8356   printf("%.3f\n", d);
8357 }
8358 EOCP
8359         set try
8360         if eval $compile; then
8361                 yyy=`$run ./try`
8362                 case "$yyy" in
8363                 123.456)
8364                         sPRIfldbl='"f"'; sPRIgldbl='"g"'; sPRIeldbl='"e"';
8365                         sPRIFUldbl='"F"'; sPRIGUldbl='"G"'; sPRIEUldbl='"E"';
8366                         echo "We will use %f."
8367                         ;;
8368                 esac
8369         fi
8370 fi
8371
8372 if $test X"$sPRIfldbl" = X; then
8373         $cat >try.c <<'EOCP'
8374 #include <sys/types.h>
8375 #include <stdio.h>
8376 int main() {
8377   long double d = 123.456;
8378   printf("%.3Lf\n", d);
8379 }
8380 EOCP
8381         set try
8382         if eval $compile; then
8383                 yyy=`$run ./try`
8384                 case "$yyy" in
8385                 123.456)
8386                         sPRIfldbl='"Lf"'; sPRIgldbl='"Lg"'; sPRIeldbl='"Le"';
8387                         sPRIFUldbl='"LF"'; sPRIGUldbl='"LG"'; sPRIEUldbl='"LE"';
8388                         echo "We will use %Lf."
8389                         ;;
8390                 esac
8391         fi
8392 fi
8393
8394 if $test X"$sPRIfldbl" = X; then
8395         $cat >try.c <<'EOCP'
8396 #include <sys/types.h>
8397 #include <stdio.h>
8398 int main() {
8399   long double d = 123.456;
8400   printf("%.3llf\n", d);
8401 }
8402 EOCP
8403         set try
8404         if eval $compile; then
8405                 yyy=`$run ./try`
8406                 case "$yyy" in
8407                 123.456)
8408                         sPRIfldbl='"llf"'; sPRIgldbl='"llg"'; sPRIeldbl='"lle"';
8409                         sPRIFUldbl='"llF"'; sPRIGUldbl='"llG"'; sPRIEUldbl='"llE"';
8410                         echo "We will use %llf."
8411                         ;;
8412                 esac
8413         fi
8414 fi
8415
8416 if $test X"$sPRIfldbl" = X; then
8417         $cat >try.c <<'EOCP'
8418 #include <sys/types.h>
8419 #include <stdio.h>
8420 int main() {
8421   long double d = 123.456;
8422   printf("%.3lf\n", d);
8423 }
8424 EOCP
8425         set try
8426         if eval $compile; then
8427                 yyy=`$run ./try`
8428                 case "$yyy" in
8429                 123.456)
8430                         sPRIfldbl='"lf"'; sPRIgldbl='"lg"'; sPRIeldbl='"le"';
8431                         sPRIFUldbl='"lF"'; sPRIGUldbl='"lG"'; sPRIEUldbl='"lE"';
8432                         echo "We will use %lf."
8433                         ;;
8434                 esac
8435         fi
8436 fi
8437
8438 if $test X"$sPRIfldbl" = X; then
8439         echo "Cannot figure out how to print long doubles." >&4
8440 else
8441         sSCNfldbl=$sPRIfldbl    # expect consistency
8442 fi
8443
8444 $rm -f try try.*
8445
8446 fi # d_longdbl
8447
8448 case "$sPRIfldbl" in
8449 '')     d_PRIfldbl="$undef"; d_PRIgldbl="$undef"; d_PRIeldbl="$undef"; 
8450         d_PRIFUldbl="$undef"; d_PRIGUldbl="$undef"; d_PRIEUldbl="$undef"; 
8451         d_SCNfldbl="$undef";
8452         ;;
8453 *)      d_PRIfldbl="$define"; d_PRIgldbl="$define"; d_PRIeldbl="$define"; 
8454         d_PRIFUldbl="$define"; d_PRIGUldbl="$define"; d_PRIEUldbl="$define"; 
8455         d_SCNfldbl="$define";
8456         ;;
8457 esac
8458
8459 : Check how to convert floats to strings.
8460 echo " "
8461 echo "Checking for an efficient way to convert floats to strings."
8462 echo " " > try.c
8463 case "$uselongdouble" in
8464 "$define") echo "#define USE_LONG_DOUBLE" >>try.c ;;
8465 esac
8466 case "$d_longdbl" in
8467 "$define") echo "#define HAS_LONG_DOUBLE" >>try.c ;;
8468 esac
8469 case "$d_PRIgldbl" in
8470 "$define") echo "#define HAS_PRIgldbl"    >>try.c ;;
8471 esac
8472 $cat >>try.c <<EOP
8473 #ifdef TRY_gconvert
8474 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
8475 char *myname = "gconvert";
8476 #endif
8477 #ifdef TRY_gcvt
8478 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
8479 char *myname = "gcvt";
8480 #endif
8481 #ifdef TRY_qgcvt
8482 #define Gconvert(x,n,t,b) qgcvt((x),(n),(b))
8483 char *myname = "qgcvt";
8484 #define DOUBLETYPE long double
8485 #endif
8486 #ifdef TRY_sprintf
8487 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE) && defined(HAS_PRIgldbl)
8488 #define Gconvert(x,n,t,b) sprintf((b),"%.*"$sPRIgldbl,(n),(x))
8489 #else
8490 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
8491 #endif
8492 char *myname = "sprintf";
8493 #endif
8494
8495 #ifndef DOUBLETYPE
8496 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
8497 #define DOUBLETYPE long double
8498 #else
8499 #define DOUBLETYPE double
8500 #endif
8501 #endif
8502
8503 #include <stdio.h>
8504
8505 #define I_STDLIB $i_stdlib
8506 #ifdef I_STDLIB
8507 #include <stdlib.h>
8508 #endif
8509
8510 int
8511 checkit(expect, got)
8512 char *expect;
8513 char *got;
8514 {
8515     if (strcmp(expect, got)) {
8516                 printf("%s oddity:  Expected %s, got %s\n",
8517                         myname, expect, got);
8518                 exit(1);
8519         }
8520 }
8521
8522 int main()
8523
8524         char buf[64]; 
8525         buf[63] = '\0';
8526
8527         /* This must be 1st test on (which?) platform */
8528         /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
8529         Gconvert((DOUBLETYPE)0.1, 8, 0, buf);
8530         checkit("0.1", buf);
8531
8532         Gconvert((DOUBLETYPE)1.0, 8, 0, buf); 
8533         checkit("1", buf);
8534
8535         Gconvert((DOUBLETYPE)1.1, 8, 0, buf); 
8536         checkit("1.1", buf);
8537
8538         Gconvert((DOUBLETYPE)1.01, 8, 0, buf); 
8539         checkit("1.01", buf);
8540
8541         Gconvert((DOUBLETYPE)1.001, 8, 0, buf); 
8542         checkit("1.001", buf);
8543
8544         Gconvert((DOUBLETYPE)1.0001, 8, 0, buf); 
8545         checkit("1.0001", buf);
8546
8547         Gconvert((DOUBLETYPE)1.00001, 8, 0, buf); 
8548         checkit("1.00001", buf);
8549
8550         Gconvert((DOUBLETYPE)1.000001, 8, 0, buf); 
8551         checkit("1.000001", buf);
8552
8553         Gconvert((DOUBLETYPE)0.0, 8, 0, buf); 
8554         checkit("0", buf);
8555
8556         Gconvert((DOUBLETYPE)-1.0, 8, 0, buf); 
8557         checkit("-1", buf);
8558
8559         /* Some Linux gcvt's give 1.e+5 here. */
8560         Gconvert((DOUBLETYPE)100000.0, 8, 0, buf); 
8561         checkit("100000", buf);
8562         
8563         /* Some Linux gcvt's give -1.e+5 here. */
8564         Gconvert((DOUBLETYPE)-100000.0, 8, 0, buf); 
8565         checkit("-100000", buf);
8566
8567         Gconvert((DOUBLETYPE)123.456, 8, 0, buf); 
8568         checkit("123.456", buf);
8569
8570         /* Testing of 1e+129 in bigintpm.t must not get extra '.' here. */
8571         Gconvert((DOUBLETYPE)1e30, 8, 0, buf);
8572         if (strlen(buf) > 5)
8573             checkit("1e+030", buf); /* for Microsoft */
8574         else
8575             checkit("1e+30", buf);
8576
8577         exit(0);
8578 }
8579 EOP
8580 case "$d_Gconvert" in
8581 gconvert*) xxx_list='gconvert gcvt sprintf' ;;
8582 gcvt*) xxx_list='gcvt gconvert sprintf' ;;
8583 sprintf*) xxx_list='sprintf gconvert gcvt' ;;
8584 *) xxx_list='gconvert gcvt sprintf' ;;
8585 esac
8586
8587 case "$d_longdbl$uselongdouble$d_PRIgldbl" in
8588 "$define$define$define")
8589     # for long doubles prefer first qgcvt, then sprintf
8590     xxx_list="`echo $xxx_list|sed s/sprintf//`" 
8591     xxx_list="sprintf $xxx_list"
8592     case "$d_qgcvt" in
8593     "$define") xxx_list="qgcvt $xxx_list" ;;
8594     esac
8595     ;;
8596 esac
8597
8598 for xxx_convert in $xxx_list; do
8599         echo "Trying $xxx_convert..."
8600         $rm -f try try$_o
8601         set try -DTRY_$xxx_convert
8602         if eval $compile; then
8603                 echo "$xxx_convert() found." >&4
8604                 if $run ./try; then
8605                         echo "I'll use $xxx_convert to convert floats into a string." >&4
8606                         break;
8607                 else
8608                         echo "...But $xxx_convert didn't work as I expected."
8609                 fi
8610         else
8611                 echo "$xxx_convert NOT found." >&4
8612         fi
8613 done
8614         
8615 case "$xxx_convert" in
8616 gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
8617 gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
8618 qgcvt) d_Gconvert='qgcvt((x),(n),(b))' ;;
8619 *) case "$uselongdouble$d_longdbl$d_PRIgldbl" in
8620    "$define$define$define")
8621       d_Gconvert="sprintf((b),\"%.*\"$sPRIgldbl,(n),(x))" ;;
8622    *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
8623    esac
8624    ;;  
8625 esac
8626
8627 : see if _fwalk exists
8628 set fwalk d__fwalk
8629 eval $inlibc
8630
8631 : Initialize h_fcntl
8632 h_fcntl=false
8633
8634 : Initialize h_sysfile
8635 h_sysfile=false
8636
8637 : access call always available on UNIX
8638 set access d_access
8639 eval $inlibc
8640
8641 : locate the flags for 'access()'
8642 case "$d_access" in
8643 "$define")
8644         echo " "
8645         $cat >access.c <<'EOCP'
8646 #include <sys/types.h>
8647 #ifdef I_FCNTL
8648 #include <fcntl.h>
8649 #endif
8650 #ifdef I_SYS_FILE
8651 #include <sys/file.h>
8652 #endif
8653 #ifdef I_UNISTD
8654 #include <unistd.h>
8655 #endif
8656 int main() {
8657         exit(R_OK);
8658 }
8659 EOCP
8660         : check sys/file.h first, no particular reason here
8661         if $test `./findhdr sys/file.h` && \
8662                 $cc -o access $cppflags -DI_SYS_FILE access.c >/dev/null 2>&1 ; then
8663                 h_sysfile=true;
8664                 echo "<sys/file.h> defines the *_OK access constants." >&4
8665         elif $test `./findhdr fcntl.h` && \
8666                 $cc -o access $cppflags -DI_FCNTL access.c >/dev/null 2>&1 ; then
8667                 h_fcntl=true;
8668                 echo "<fcntl.h> defines the *_OK access constants." >&4
8669         elif $test `./findhdr unistd.h` && \
8670                 $cc -o access $cppflags -DI_UNISTD access.c >/dev/null 2>&1 ; then
8671                 echo "<unistd.h> defines the *_OK access constants." >&4
8672         else
8673                 echo "I can't find the four *_OK access constants--I'll use mine." >&4
8674         fi
8675         ;;
8676 esac
8677 $rm -f access*
8678
8679 : see if accessx exists
8680 set accessx d_accessx
8681 eval $inlibc
8682
8683 : see if alarm exists
8684 set alarm d_alarm
8685 eval $inlibc
8686
8687 : see if atolf exists
8688 set atolf d_atolf
8689 eval $inlibc
8690
8691 : see if atoll exists
8692 set atoll d_atoll
8693 eval $inlibc
8694
8695 : Look for GNU-cc style attribute checking
8696 echo " "
8697 echo "Checking whether your compiler can handle __attribute__ ..." >&4
8698 $cat >attrib.c <<'EOCP'
8699 #include <stdio.h>
8700 void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn));
8701 EOCP
8702 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
8703         if $contains 'warning' attrib.out >/dev/null 2>&1; then
8704                 echo "Your C compiler doesn't fully support __attribute__."
8705                 val="$undef"
8706         else
8707                 echo "Your C compiler supports __attribute__."
8708                 val="$define"
8709         fi
8710 else
8711         echo "Your C compiler doesn't seem to understand __attribute__ at all."
8712         val="$undef"
8713 fi
8714 set d_attribut
8715 eval $setvar
8716 $rm -f attrib*
8717
8718 : see if bcmp exists
8719 set bcmp d_bcmp
8720 eval $inlibc
8721
8722 : see if bcopy exists
8723 set bcopy d_bcopy
8724 eval $inlibc
8725
8726 : see if this is a unistd.h system
8727 set unistd.h i_unistd
8728 eval $inhdr
8729
8730 : see if getpgrp exists
8731 set getpgrp d_getpgrp
8732 eval $inlibc
8733
8734 case "$d_getpgrp" in
8735 "$define")
8736         echo " "
8737         echo "Checking to see which flavor of getpgrp is in use..."
8738         $cat >try.c <<EOP
8739 #$i_unistd I_UNISTD
8740 #include <sys/types.h>
8741 #ifdef I_UNISTD
8742 #  include <unistd.h>
8743 #endif
8744 int main()
8745 {
8746         if (getuid() == 0) {
8747                 printf("(I see you are running Configure as super-user...)\n");
8748                 setuid(1);
8749         }
8750 #ifdef TRY_BSD_PGRP
8751         if (getpgrp(1) == 0)
8752                 exit(0);
8753 #else
8754         if (getpgrp() > 0)
8755                 exit(0);
8756 #endif
8757         exit(1);
8758 }
8759 EOP
8760         if $cc -o try -DTRY_BSD_PGRP $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
8761                 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
8762                 val="$define"
8763         elif $cc -o try $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
8764                 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
8765                 val="$undef"
8766         else
8767                 echo "I can't seem to compile and run the test program."
8768                 if ./usg; then
8769                         xxx="a USG one, i.e. you use getpgrp()."
8770                 else
8771                         # SVR4 systems can appear rather BSD-ish.
8772                         case "$i_unistd" in
8773                         $undef)
8774                                 xxx="a BSD one, i.e. you use getpgrp(pid)."
8775                                 val="$define"
8776                                 ;;
8777                         $define)
8778                                 xxx="probably a USG one, i.e. you use getpgrp()."
8779                                 val="$undef"
8780                                 ;;
8781                         esac
8782                 fi
8783                 echo "Assuming your getpgrp is $xxx" >&4
8784         fi
8785         ;;
8786 *) val="$undef";;
8787 esac
8788 set d_bsdgetpgrp
8789 eval $setvar
8790 $rm -f try try.*
8791
8792 : see if setpgrp exists
8793 set setpgrp d_setpgrp
8794 eval $inlibc
8795
8796 case "$d_setpgrp" in
8797 "$define")
8798         echo " "
8799         echo "Checking to see which flavor of setpgrp is in use..."
8800         $cat >try.c <<EOP
8801 #$i_unistd I_UNISTD
8802 #include <sys/types.h>
8803 #ifdef I_UNISTD
8804 #  include <unistd.h>
8805 #endif
8806 int main()
8807 {
8808         if (getuid() == 0) {
8809                 printf("(I see you are running Configure as super-user...)\n");
8810                 setuid(1);
8811         }
8812 #ifdef TRY_BSD_PGRP
8813         if (-1 == setpgrp(1, 1))
8814                 exit(0);
8815 #else
8816         if (setpgrp() != -1)
8817                 exit(0);
8818 #endif
8819         exit(1);
8820 }
8821 EOP
8822         if $cc -o try -DTRY_BSD_PGRP $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
8823                 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
8824                 val="$define"
8825         elif $cc -o try $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
8826                 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
8827                 val="$undef"
8828         else
8829                 echo "(I can't seem to compile and run the test program.)"
8830                 if ./usg; then
8831                         xxx="a USG one, i.e. you use setpgrp()."
8832                 else
8833                         # SVR4 systems can appear rather BSD-ish.
8834                         case "$i_unistd" in
8835                         $undef)
8836                                 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
8837                                 val="$define"
8838                                 ;;
8839                         $define)
8840                                 xxx="probably a USG one, i.e. you use setpgrp()."
8841                                 val="$undef"
8842                                 ;;
8843                         esac
8844                 fi
8845                 echo "Assuming your setpgrp is $xxx" >&4
8846         fi
8847         ;;
8848 *) val="$undef";;
8849 esac
8850 set d_bsdsetpgrp
8851 eval $setvar
8852 $rm -f try try.*
8853 : see if bzero exists
8854 set bzero d_bzero
8855 eval $inlibc
8856
8857 : see if signal is declared as pointer to function returning int or void
8858 echo " "
8859 xxx=`./findhdr signal.h`
8860 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
8861 if $contains 'int.*\*[  ]*signal' $$.tmp >/dev/null 2>&1 ; then
8862         echo "You have int (*signal())() instead of void." >&4
8863         val="$undef"
8864 elif $contains 'void.*\*[       ]*signal' $$.tmp >/dev/null 2>&1 ; then
8865         echo "You have void (*signal())()." >&4
8866         val="$define"
8867 elif $contains 'extern[         ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
8868         echo "You have int (*signal())() instead of void." >&4
8869         val="$undef"
8870 elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
8871         echo "You have void (*signal())()." >&4
8872         val="$define"
8873 else
8874         case "$d_voidsig" in
8875         '')
8876         echo "I can't determine whether signal handler returns void or int..." >&4
8877                 dflt=void
8878                 rp="What type does your signal handler return?"
8879                 . ./myread
8880                 case "$ans" in
8881                 v*) val="$define";;
8882                 *) val="$undef";;
8883                 esac;;
8884         "$define")
8885                 echo "As you already told me, signal handler returns void." >&4
8886                 val="$define"
8887                 ;;
8888         *)      echo "As you already told me, signal handler returns int." >&4
8889                 val="$undef"
8890                 ;;
8891         esac
8892 fi
8893 set d_voidsig
8894 eval $setvar
8895 case "$d_voidsig" in
8896 "$define") signal_t="void";;
8897 *) signal_t="int";;
8898 esac
8899 $rm -f $$.tmp
8900
8901 : check for ability to cast large floats to 32-bit ints.
8902 echo " "
8903 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
8904 if $test "$intsize" -ge 4; then
8905         xxx=int
8906 else
8907         xxx=long
8908 fi
8909 $cat >try.c <<EOCP
8910 #include <stdio.h>
8911 #include <sys/types.h>
8912 #include <signal.h>
8913 $signal_t blech(s) int s; { exit(3); }
8914 int main()
8915 {
8916         $xxx i32;
8917         double f, g;
8918         int result = 0;
8919         char str[16];
8920         signal(SIGFPE, blech);
8921
8922         /* Don't let compiler optimize the test away.  Store the number 
8923            in a writable string for gcc to pass to sscanf under HP/UX.
8924         */
8925         sprintf(str, "2147483647");
8926         sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
8927         g = 10 * f;
8928         i32  = ($xxx) g;
8929
8930         /* x86 processors will probably give 0x8000 0000, which is a
8931        sign change.  We don't want that.  We want to mimic SPARC
8932            behavior here, which is to preserve the sign and give
8933            back 0x7fff ffff.
8934         */
8935         if (i32 != ($xxx) f)
8936                 result |= 1;
8937         exit(result);
8938 }
8939 EOCP
8940 set try
8941 if eval $compile_ok; then
8942         $run ./try
8943         yyy=$?
8944 else
8945         echo "(I can't seem to compile the test program--assuming it can't)"
8946         yyy=1
8947 fi
8948 case "$yyy" in
8949 0)      val="$define"
8950         echo "Yup, it can."
8951         ;;
8952 *)      val="$undef"
8953         echo "Nope, it can't."
8954         ;;
8955 esac
8956 set d_casti32
8957 eval $setvar
8958 $rm -f try try.*
8959
8960 : check for ability to cast negative floats to unsigned
8961 echo " "
8962 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
8963 $cat >try.c <<EOCP
8964 #include <stdio.h>
8965 #include <sys/types.h>
8966 #include <signal.h>
8967 $signal_t blech(s) int s; { exit(7); }
8968 $signal_t blech_in_list(s) int s; { exit(4); }
8969 unsigned long dummy_long(p) unsigned long p; { return p; }
8970 unsigned int dummy_int(p) unsigned int p; { return p; }
8971 unsigned short dummy_short(p) unsigned short p; { return p; }
8972 int main()
8973 {
8974         double f;
8975         unsigned long along;
8976         unsigned int aint;
8977         unsigned short ashort;
8978         int result = 0;
8979         char str[16];
8980         
8981         /* Frustrate gcc-2.7.2's optimizer which failed this test with
8982            a direct f = -123. assignment.  gcc-2.8.0 reportedly
8983            optimized the whole file away
8984         */
8985         /* Store the number in a writable string for gcc to pass to 
8986            sscanf under HP/UX.
8987         */
8988         sprintf(str, "-123");
8989         sscanf(str, "%lf", &f);  /* f = -123.; */
8990
8991         signal(SIGFPE, blech);
8992         along = (unsigned long)f;
8993         aint = (unsigned int)f;
8994         ashort = (unsigned short)f;
8995         if (along != (unsigned long)-123)
8996                 result |= 1;
8997         if (aint != (unsigned int)-123)
8998                 result |= 1;
8999         if (ashort != (unsigned short)-123)
9000                 result |= 1;
9001         sprintf(str, "1073741824.");
9002         sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
9003         f = f + f;
9004         along = 0;
9005         along = (unsigned long)f;
9006         if (along != 0x80000000)
9007                 result |= 2;
9008         f -= 1.;
9009         along = 0;
9010         along = (unsigned long)f;
9011         if (along != 0x7fffffff)
9012                 result |= 1;
9013         f += 2.;
9014         along = 0;
9015         along = (unsigned long)f;
9016         if (along != 0x80000001)
9017                 result |= 2;
9018         if (result)
9019                 exit(result);
9020         signal(SIGFPE, blech_in_list);
9021         sprintf(str, "123.");
9022         sscanf(str, "%lf", &f);  /* f = 123.; */
9023         along = dummy_long((unsigned long)f);
9024         aint = dummy_int((unsigned int)f);
9025         ashort = dummy_short((unsigned short)f);
9026         if (along != (unsigned long)123)
9027                 result |= 4;
9028         if (aint != (unsigned int)123)
9029                 result |= 4;
9030         if (ashort != (unsigned short)123)
9031                 result |= 4;
9032         exit(result);
9033
9034 }
9035 EOCP
9036 set try
9037 if eval $compile_ok; then
9038         $run ./try
9039         castflags=$?
9040 else
9041         echo "(I can't seem to compile the test program--assuming it can't)"
9042         castflags=7
9043 fi
9044 case "$castflags" in
9045 0)      val="$define"
9046         echo "Yup, it can."
9047         ;;
9048 *)      val="$undef"
9049         echo "Nope, it can't."
9050         ;;
9051 esac
9052 set d_castneg
9053 eval $setvar
9054 $rm -f try.*
9055
9056 : see if vprintf exists
9057 echo " "
9058 if set vprintf val -f d_vprintf; eval $csym; $val; then
9059         echo 'vprintf() found.' >&4
9060         val="$define"
9061         $cat >try.c <<'EOF'
9062 #include <varargs.h>
9063
9064 int main() { xxx("foo"); }
9065
9066 xxx(va_alist)
9067 va_dcl
9068 {
9069         va_list args;
9070         char buf[10];
9071
9072         va_start(args);
9073         exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
9074 }
9075 EOF
9076         set try
9077         if eval $compile && $run ./try; then
9078                 echo "Your vsprintf() returns (int)." >&4
9079                 val2="$undef"
9080         else
9081                 echo "Your vsprintf() returns (char*)." >&4
9082                 val2="$define"
9083         fi
9084 else
9085         echo 'vprintf() NOT found.' >&4
9086                 val="$undef"
9087                 val2="$undef"
9088 fi
9089 $rm -f try try.*
9090 set d_vprintf
9091 eval $setvar
9092 val=$val2
9093 set d_charvspr
9094 eval $setvar
9095
9096 : see if chown exists
9097 set chown d_chown
9098 eval $inlibc
9099
9100 : see if chroot exists
9101 set chroot d_chroot
9102 eval $inlibc
9103
9104 : see if chsize exists
9105 set chsize d_chsize
9106 eval $inlibc
9107
9108 hasstruct='varname=$1; struct=$2; shift; shift;
9109 while $test $# -ge 2; do
9110         case "$1" in
9111         $define) echo "#include <$2>";;
9112         esac ;
9113     shift 2;
9114 done > try.c;
9115 echo "int main () { struct $struct foo; }" >> try.c;
9116 set try;
9117 if eval $compile; then
9118         val="$define";
9119 else
9120         val="$undef";
9121 fi;
9122 set $varname;
9123 eval $setvar;
9124 $rm -f try.c try.o'
9125
9126 : see if sys/types.h has to be included
9127 set sys/types.h i_systypes
9128 eval $inhdr
9129
9130 hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
9131 while $test $# -ge 2; do
9132         case "$1" in
9133         $define) echo "#include <$2>";;
9134         esac ;
9135     shift 2;
9136 done > try.c;
9137 echo "int main () { struct $struct foo; char* bar; bar = (char*)foo.$field; }" >> try.c;
9138 set try;
9139 if eval $compile; then
9140         val="$define";
9141 else
9142         val="$undef";
9143 fi;
9144 set $varname;
9145 eval $setvar;
9146 $rm -f try.c try.o'
9147
9148 socketlib=''
9149 sockethdr=''
9150 : see whether socket exists
9151 echo " "
9152 $echo $n "Hmm... $c" >&4
9153 if set socket val -f d_socket; eval $csym; $val; then
9154         echo "Looks like you have Berkeley networking support." >&4
9155         d_socket="$define"
9156         if set setsockopt val -f; eval $csym; $val; then
9157                 d_oldsock="$undef"
9158         else
9159                 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
9160                 d_oldsock="$define"
9161         fi
9162 else
9163         if $contains socklib libc.list >/dev/null 2>&1; then
9164                 echo "Looks like you have Berkeley networking support." >&4
9165                 d_socket="$define"
9166                 : we will have to assume that it supports the 4.2 BSD interface
9167                 d_oldsock="$undef"
9168         else
9169                 echo "You don't have Berkeley networking in libc$_a..." >&4
9170                 if test "X$d_socket" = "X$define"; then
9171                    echo "...but you seem to believe that you have sockets." >&4
9172                 else
9173                         for net in net socket
9174                         do
9175                                 if test -f /usr/lib/lib$net$_a; then
9176                                         ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) ||  \
9177                                         $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
9178                                         if $contains socket libc.list >/dev/null 2>&1; then
9179                                                 d_socket="$define"
9180                                                 socketlib="-l$net"
9181                                                 case "$net" in
9182                                                 net)
9183                                                         echo "...but the Wollongong group seems to have hacked it in." >&4
9184                                                         sockethdr="-I/usr/netinclude"
9185                                                         ;;
9186                                                 esac
9187                                                 echo "Found Berkeley sockets interface in lib$net." >& 4 
9188                                                 if $contains setsockopt libc.list >/dev/null 2>&1; then
9189                                                         d_oldsock="$undef"
9190                                                 else
9191                                                         echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
9192                                                         d_oldsock="$define"
9193                                                 fi
9194                                                 break
9195                                         fi
9196                                 fi
9197                         done
9198                         if test "X$d_socket" != "X$define"; then
9199                            echo "or anywhere else I see." >&4
9200                            d_socket="$undef"
9201                            d_oldsock="$undef"
9202                         fi
9203                 fi
9204         fi
9205 fi
9206
9207 : see if socketpair exists
9208 set socketpair d_sockpair
9209 eval $inlibc
9210
9211
9212 echo " "
9213 echo "Checking the availability of certain socket constants..." >& 4
9214 for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
9215         enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
9216         $cat >try.c <<EOF
9217 #include <sys/types.h>
9218 #include <sys/socket.h>
9219 int main() {
9220     int i = $ENUM;
9221 }
9222 EOF
9223         val="$undef"
9224         set try; if eval $compile; then
9225                 val="$define"
9226         fi
9227         set d_${enum}; eval $setvar
9228         $rm -f try.c try
9229 done
9230
9231 : see if this is a sys/uio.h system
9232 set sys/uio.h i_sysuio
9233 eval $inhdr
9234
9235
9236 echo " "
9237 echo "Checking to see if your system supports struct cmsghdr..." >&4
9238 set d_cmsghdr_s cmsghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
9239 eval $hasstruct
9240 case "$d_cmsghdr_s" in
9241 "$define")      echo "Yes, it does."   ;;
9242 *)              echo "No, it doesn't." ;;
9243 esac
9244
9245
9246 : check for const keyword
9247 echo " "
9248 echo 'Checking to see if your C compiler knows about "const"...' >&4
9249 $cat >const.c <<'EOCP'
9250 typedef struct spug { int drokk; } spug;
9251 int main()
9252 {
9253         const char *foo;
9254         const spug y;
9255 }
9256 EOCP
9257 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
9258         val="$define"
9259         echo "Yup, it does."
9260 else
9261         val="$undef"
9262         echo "Nope, it doesn't."
9263 fi
9264 set d_const
9265 eval $setvar
9266
9267 : see if crypt exists
9268 echo " "
9269 if set crypt val -f d_crypt; eval $csym; $val; then
9270         echo 'crypt() found.' >&4
9271         val="$define"
9272         cryptlib=''
9273 else
9274         cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
9275         if $test -z "$cryptlib"; then
9276                 cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
9277         else
9278                 cryptlib=-lcrypt
9279         fi
9280         if $test -z "$cryptlib"; then
9281                 cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
9282         else
9283                 cryptlib=-lcrypt
9284         fi
9285         if $test -z "$cryptlib"; then
9286                 cryptlib=`./loc libcrypt$_a "" $libpth`
9287         else
9288                 cryptlib=-lcrypt
9289         fi
9290         if $test -z "$cryptlib"; then
9291                 echo 'crypt() NOT found.' >&4
9292                 val="$undef"
9293         else
9294                 val="$define"
9295         fi
9296 fi
9297 set d_crypt
9298 eval $setvar
9299
9300 : get csh whereabouts
9301 case "$csh" in
9302 'csh') val="$undef" ;;
9303 *) val="$define" ;;
9304 esac
9305 set d_csh
9306 eval $setvar
9307 : Respect a hint or command line value for full_csh.
9308 case "$full_csh" in
9309 '') full_csh=$csh ;;
9310 esac
9311
9312 : see if cuserid exists
9313 set cuserid d_cuserid
9314 eval $inlibc
9315
9316 : see if this is a limits.h system
9317 set limits.h i_limits
9318 eval $inhdr
9319
9320 : see if this is a float.h system
9321 set float.h i_float
9322 eval $inhdr
9323
9324 : See if number of significant digits in a double precision number is known
9325 echo " "
9326 $cat >dbl_dig.c <<EOM
9327 #$i_limits I_LIMITS
9328 #$i_float I_FLOAT
9329 #ifdef I_LIMITS
9330 #include <limits.h>
9331 #endif
9332 #ifdef I_FLOAT
9333 #include <float.h>
9334 #endif
9335 #ifdef DBL_DIG
9336 printf("Contains DBL_DIG");
9337 #endif
9338 EOM
9339 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
9340 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
9341         echo "DBL_DIG found." >&4
9342         val="$define"
9343 else
9344         echo "DBL_DIG NOT found." >&4
9345         val="$undef"
9346 fi
9347 $rm -f dbl_dig.?
9348 set d_dbl_dig
9349 eval $setvar
9350
9351 hasproto='varname=$1; func=$2; shift; shift;
9352 while $test $# -ge 2; do
9353         case "$1" in
9354         $define) echo "#include <$2>";;
9355         esac ;
9356     shift 2;
9357 done > try.c;
9358 $cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
9359 if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
9360         echo "$func() prototype found.";
9361         val="$define";
9362 else
9363         echo "$func() prototype NOT found.";
9364         val="$undef";
9365 fi;
9366 set $varname;
9367 eval $setvar;
9368 $rm -f try.c tryout.c'
9369
9370 : see if dbm.h is available
9371 : see if dbmclose exists
9372 set dbmclose d_dbmclose
9373 eval $inlibc
9374
9375 case "$d_dbmclose" in
9376 $define)
9377         set dbm.h i_dbm
9378         eval $inhdr
9379         case "$i_dbm" in
9380         $define)
9381                 val="$undef"
9382                 set i_rpcsvcdbm
9383                 eval $setvar
9384                 ;;
9385         *)      set rpcsvc/dbm.h i_rpcsvcdbm
9386                 eval $inhdr
9387                 ;;
9388         esac
9389         ;;
9390 *)      echo "We won't be including <dbm.h>"
9391         val="$undef"
9392         set i_dbm
9393         eval $setvar
9394         val="$undef"
9395         set i_rpcsvcdbm
9396         eval $setvar
9397         ;;
9398 esac
9399
9400 : see if prototype for dbminit is available
9401 echo " "
9402 set d_dbminitproto dbminit $i_dbm dbm.h
9403 eval $hasproto
9404
9405 : see if difftime exists
9406 set difftime d_difftime
9407 eval $inlibc
9408
9409 : see if this is a dirent system
9410 echo " "
9411 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
9412         val="$define"
9413         echo "<dirent.h> found." >&4
9414 else
9415         val="$undef"
9416         if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
9417                 echo "<sys/dir.h> found." >&4
9418                 echo " "
9419         else
9420                 xinc=`./findhdr sys/ndir.h`
9421         fi
9422         echo "<dirent.h> NOT found." >&4
9423 fi
9424 set i_dirent
9425 eval $setvar
9426
9427 : Look for type of directory structure.
9428 echo " "
9429 $cppstdin $cppflags $cppminus < "$xinc" > try.c
9430
9431 case "$direntrytype" in
9432 ''|' ')
9433         case "$i_dirent" in
9434         $define) guess1='struct dirent' ;;
9435         *) guess1='struct direct'  ;;
9436         esac
9437         ;;
9438 *)      guess1="$direntrytype"
9439         ;;
9440 esac
9441
9442 case "$guess1" in
9443 'struct dirent') guess2='struct direct' ;;
9444 *) guess2='struct dirent' ;;
9445 esac
9446                 
9447 if $contains "$guess1" try.c >/dev/null 2>&1; then
9448         direntrytype="$guess1"
9449         echo "Your directory entries are $direntrytype." >&4
9450 elif $contains "$guess2" try.c >/dev/null 2>&1; then
9451         direntrytype="$guess2"
9452         echo "Your directory entries seem to be $direntrytype." >&4
9453 else
9454         echo "I don't recognize your system's directory entries." >&4
9455         rp="What type is used for directory entries on this system?"
9456         dflt="$guess1"
9457         . ./myread
9458         direntrytype="$ans"
9459 fi
9460 $rm -f try.c
9461
9462
9463 : see if the directory entry stores field length
9464 echo " "
9465 $cppstdin $cppflags $cppminus < "$xinc" > try.c
9466 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
9467         echo "Good, your directory entry keeps length information in d_namlen." >&4
9468         val="$define"
9469 else
9470         echo "Your directory entry does not know about the d_namlen field." >&4
9471         val="$undef"
9472 fi
9473 set d_dirnamlen
9474 eval $setvar
9475 $rm -f try.c
9476
9477 : see if dlerror exists
9478 xxx_runnm="$runnm"
9479 runnm=false
9480 set dlerror d_dlerror
9481 eval $inlibc
9482 runnm="$xxx_runnm"
9483
9484 : see if dlfcn is available
9485 set dlfcn.h i_dlfcn
9486 eval $inhdr
9487
9488 case "$usedl" in
9489 $define|y|true)
9490         $cat << EOM
9491
9492 On a few systems, the dynamically loaded modules that perl generates and uses
9493 will need a different extension than shared libs. The default will probably
9494 be appropriate.
9495
9496 EOM
9497         case "$dlext" in
9498         '')     dflt="$so" ;;
9499         *)      dflt="$dlext" ;;
9500         esac
9501         rp='What is the extension of dynamically loaded modules'
9502         . ./myread
9503         dlext="$ans"
9504         ;;
9505 *)
9506         dlext="none"
9507         ;;
9508 esac
9509
9510 : Check if dlsym need a leading underscore
9511 echo " "
9512 val="$undef"
9513
9514 case "$dlsrc" in
9515 dl_dlopen.xs)
9516         echo "Checking whether your dlsym() needs a leading underscore ..." >&4
9517         $cat >dyna.c <<'EOM'
9518 fred () { }
9519 EOM
9520
9521 $cat >fred.c<<EOM
9522
9523 #include <stdio.h>
9524 #$i_dlfcn I_DLFCN
9525 #ifdef I_DLFCN
9526 #include <dlfcn.h>      /* the dynamic linker include file for SunOS/Solaris */
9527 #else
9528 #include <sys/types.h>
9529 #include <nlist.h>
9530 #include <link.h>
9531 #endif
9532
9533 extern int fred() ;
9534
9535 int main()
9536 {
9537     void * handle ;
9538     void * symbol ;
9539 #ifndef RTLD_LAZY
9540     int mode = 1 ;
9541 #else
9542     int mode = RTLD_LAZY ;
9543 #endif
9544     handle = dlopen("./dyna.$dlext", mode) ;
9545     if (handle == NULL) {
9546         printf ("1\n") ;
9547         fflush (stdout) ;
9548         exit(0);
9549     }
9550     symbol = dlsym(handle, "fred") ;
9551     if (symbol == NULL) {
9552         /* try putting a leading underscore */
9553         symbol = dlsym(handle, "_fred") ;
9554         if (symbol == NULL) {
9555             printf ("2\n") ;
9556             fflush (stdout) ;
9557             exit(0);
9558         }
9559         printf ("3\n") ;
9560     }
9561     else
9562         printf ("4\n") ;
9563     fflush (stdout) ;
9564     exit(0);
9565 }
9566 EOM
9567         : Call the object file tmp-dyna.o in case dlext=o.
9568         if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 && 
9569                 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 && 
9570                 $ld -o dyna.$dlext $ldflags $lddlflags tmp-dyna${_o} > /dev/null 2>&1 && 
9571                 $cc -o fred $ccflags $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1 && $to dyna.$dlext; then
9572                 xxx=`$run ./fred`
9573                 case $xxx in
9574                 1)      echo "Test program failed using dlopen." >&4
9575                         echo "Perhaps you should not use dynamic loading." >&4;;
9576                 2)      echo "Test program failed using dlsym." >&4
9577                         echo "Perhaps you should not use dynamic loading." >&4;;
9578                 3)      echo "dlsym needs a leading underscore" >&4
9579                         val="$define" ;;
9580                 4)      echo "dlsym doesn't need a leading underscore." >&4;;
9581                 esac
9582         else
9583                 echo "I can't compile and run the test program." >&4
9584                 echo "I'm guessing that dlsym doesn't need a leading underscore." >&4
9585         fi
9586         ;;
9587 esac
9588                 
9589 $rm -f fred fred.? dyna.$dlext dyna.? tmp-dyna.?
9590
9591 set d_dlsymun
9592 eval $setvar
9593
9594 : see if prototype for drand48 is available
9595 echo " "
9596 set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
9597 eval $hasproto
9598
9599 : see if dup2 exists
9600 set dup2 d_dup2
9601 eval $inlibc
9602
9603 : see if eaccess exists
9604 set eaccess d_eaccess
9605 eval $inlibc
9606
9607 : see if endgrent exists
9608 set endgrent d_endgrent
9609 eval $inlibc
9610
9611 : see if endhostent exists
9612 set endhostent d_endhent
9613 eval $inlibc
9614
9615 : see if endnetent exists
9616 set endnetent d_endnent
9617 eval $inlibc
9618
9619 : see if endprotoent exists
9620 set endprotoent d_endpent
9621 eval $inlibc
9622
9623 : see if endpwent exists
9624 set endpwent d_endpwent
9625 eval $inlibc
9626
9627 : see if endservent exists
9628 set endservent d_endsent
9629 eval $inlibc
9630
9631 : Locate the flags for 'open()'
9632 echo " "
9633 $cat >try.c <<'EOCP'
9634 #include <sys/types.h>
9635 #ifdef I_FCNTL
9636 #include <fcntl.h>
9637 #endif
9638 #ifdef I_SYS_FILE
9639 #include <sys/file.h>
9640 #endif
9641 int main() {
9642         if(O_RDONLY);
9643 #ifdef O_TRUNC
9644         exit(0);
9645 #else
9646         exit(1);
9647 #endif
9648 }
9649 EOCP
9650 : check sys/file.h first to get FREAD on Sun
9651 if $test `./findhdr sys/file.h` && \
9652                 set try -DI_SYS_FILE && eval $compile; then
9653         h_sysfile=true;
9654         echo "<sys/file.h> defines the O_* constants..." >&4
9655         if $run ./try; then
9656                 echo "and you have the 3 argument form of open()." >&4
9657                 val="$define"
9658         else
9659                 echo "but not the 3 argument form of open().  Oh, well." >&4
9660                 val="$undef"
9661         fi
9662 elif $test `./findhdr fcntl.h` && \
9663                 set try -DI_FCNTL && eval $compile; then
9664         h_fcntl=true;
9665         echo "<fcntl.h> defines the O_* constants..." >&4
9666         if $run ./try; then
9667                 echo "and you have the 3 argument form of open()." >&4
9668                 val="$define"
9669         else
9670                 echo "but not the 3 argument form of open().  Oh, well." >&4
9671                 val="$undef"
9672         fi
9673 else
9674         val="$undef"
9675         echo "I can't find the O_* constant definitions!  You got problems." >&4
9676 fi
9677 set d_open3
9678 eval $setvar
9679 $rm -f try try.*
9680
9681 : see which of string.h or strings.h is needed
9682 echo " "
9683 strings=`./findhdr string.h`
9684 if $test "$strings" && $test -r "$strings"; then
9685         echo "Using <string.h> instead of <strings.h>." >&4
9686         val="$define"
9687 else
9688         val="$undef"
9689         strings=`./findhdr strings.h`
9690         if $test "$strings" && $test -r "$strings"; then
9691                 echo "Using <strings.h> instead of <string.h>." >&4
9692         else
9693                 echo "No string header found -- You'll surely have problems." >&4
9694         fi
9695 fi
9696 set i_string
9697 eval $setvar
9698 case "$i_string" in
9699 "$undef") strings=`./findhdr strings.h`;;
9700 *)        strings=`./findhdr string.h`;;
9701 esac
9702
9703 : check for non-blocking I/O stuff
9704 case "$h_sysfile" in
9705 true) echo "#include <sys/file.h>" > head.c;;
9706 *)
9707        case "$h_fcntl" in
9708        true) echo "#include <fcntl.h>" > head.c;;
9709        *) echo "#include <sys/fcntl.h>" > head.c;;
9710        esac
9711        ;;
9712 esac
9713 echo " "
9714 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
9715 case "$o_nonblock" in
9716 '')
9717         $cat head.c > try.c
9718         $cat >>try.c <<'EOCP'
9719 #include <stdio.h>
9720 #include <stdlib.h>
9721 int main() {
9722 #ifdef O_NONBLOCK
9723         printf("O_NONBLOCK\n");
9724         exit(0);
9725 #endif
9726 #ifdef O_NDELAY
9727         printf("O_NDELAY\n");
9728         exit(0);
9729 #endif
9730 #ifdef FNDELAY
9731         printf("FNDELAY\n");
9732         exit(0);
9733 #endif
9734         exit(0);
9735 }
9736 EOCP
9737         set try
9738         if eval $compile_ok; then
9739                 o_nonblock=`$run ./try`
9740                 case "$o_nonblock" in
9741                 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
9742                 *) echo "Seems like we can use $o_nonblock.";;
9743                 esac
9744         else
9745                 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
9746         fi
9747         ;;
9748 *) echo "Using $hint value $o_nonblock.";;
9749 esac
9750 $rm -f try try.* .out core
9751
9752 echo " "
9753 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
9754 case "$eagain" in
9755 '')
9756         $cat head.c > try.c
9757         $cat >>try.c <<EOCP
9758 #include <errno.h>
9759 #include <sys/types.h>
9760 #include <signal.h>
9761 #include <stdio.h> 
9762 #include <stdlib.h> 
9763 #define MY_O_NONBLOCK $o_nonblock
9764 #ifndef errno  /* XXX need better Configure test */
9765 extern int errno;
9766 #endif
9767 #$i_unistd I_UNISTD
9768 #ifdef I_UNISTD
9769 #include <unistd.h>
9770 #endif
9771 #$i_string I_STRING
9772 #ifdef I_STRING
9773 #include <string.h>
9774 #else
9775 #include <strings.h>
9776 #endif
9777 $signal_t blech(x) int x; { exit(3); }
9778 EOCP
9779         $cat >> try.c <<'EOCP'
9780 int main()
9781 {
9782         int pd[2];
9783         int pu[2];
9784         char buf[1];
9785         char string[100];
9786
9787         pipe(pd);       /* Down: child -> parent */
9788         pipe(pu);       /* Up: parent -> child */
9789         if (0 != fork()) {
9790                 int ret;
9791                 close(pd[1]);   /* Parent reads from pd[0] */
9792                 close(pu[0]);   /* Parent writes (blocking) to pu[1] */
9793 #ifdef F_SETFL
9794                 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
9795                         exit(1);
9796 #else
9797                 exit(4);
9798 #endif
9799                 signal(SIGALRM, blech);
9800                 alarm(5);
9801                 if ((ret = read(pd[0], buf, 1)) > 0)    /* Nothing to read! */
9802                         exit(2);
9803                 sprintf(string, "%d\n", ret);
9804                 write(2, string, strlen(string));
9805                 alarm(0);
9806 #ifdef EAGAIN
9807                 if (errno == EAGAIN) {
9808                         printf("EAGAIN\n");
9809                         goto ok;
9810                 }
9811 #endif
9812 #ifdef EWOULDBLOCK
9813                 if (errno == EWOULDBLOCK)
9814                         printf("EWOULDBLOCK\n");
9815 #endif
9816         ok:
9817                 write(pu[1], buf, 1);   /* Unblocks child, tell it to close our pipe */
9818                 sleep(2);                               /* Give it time to close our pipe */
9819                 alarm(5);
9820                 ret = read(pd[0], buf, 1);      /* Should read EOF */
9821                 alarm(0);
9822                 sprintf(string, "%d\n", ret);
9823                 write(3, string, strlen(string));
9824                 exit(0);
9825         }
9826
9827         close(pd[0]);                   /* We write to pd[1] */
9828         close(pu[1]);                   /* We read from pu[0] */
9829         read(pu[0], buf, 1);    /* Wait for parent to signal us we may continue */
9830         close(pd[1]);                   /* Pipe pd is now fully closed! */
9831         exit(0);                                /* Bye bye, thank you for playing! */
9832 }
9833 EOCP
9834         set try
9835         if eval $compile_ok; then
9836                 echo "$startsh" >mtry
9837                 echo "$run ./try >try.out 2>try.ret 3>try.err || exit 4" >>mtry
9838                 chmod +x mtry
9839                 ./mtry >/dev/null 2>&1
9840                 case $? in
9841                 0) eagain=`$cat try.out`;;
9842                 1) echo "Could not perform non-blocking setting!";;
9843                 2) echo "I did a successful read() for something that was not there!";;
9844                 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
9845                 4) echo "Could not find F_SETFL!";;
9846                 *) echo "Something terribly wrong happened during testing.";;
9847                 esac
9848                 rd_nodata=`$cat try.ret`
9849                 echo "A read() system call with no data present returns $rd_nodata."
9850                 case "$rd_nodata" in
9851                 0|-1) ;;
9852                 *)
9853                         echo "(That's peculiar, fixing that to be -1.)"
9854                         rd_nodata=-1
9855                         ;;
9856                 esac
9857                 case "$eagain" in
9858                 '')
9859                         echo "Forcing errno EAGAIN on read() with no data available."
9860                         eagain=EAGAIN
9861                         ;;
9862                 *)
9863                         echo "Your read() sets errno to $eagain when no data is available."
9864                         ;;
9865                 esac
9866                 status=`$cat try.err`
9867                 case "$status" in
9868                 0) echo "And it correctly returns 0 to signal EOF.";;
9869                 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
9870                 *) echo "However, your read() returns '$status' on EOF??";;
9871                 esac
9872                 val="$define"
9873                 if test "$status" = "$rd_nodata"; then
9874                         echo "WARNING: you can't distinguish between EOF and no data!"
9875                         val="$undef"
9876                 fi
9877         else
9878                 echo "I can't compile the test program--assuming errno EAGAIN will do."
9879                 eagain=EAGAIN
9880         fi
9881         set d_eofnblk
9882         eval $setvar
9883         ;;
9884 *)
9885         echo "Using $hint value $eagain."
9886         echo "Your read() returns $rd_nodata when no data is present."
9887         case "$d_eofnblk" in
9888         "$define") echo "And you can see EOF because read() returns 0.";;
9889         "$undef") echo "But you can't see EOF status from read() returned value.";;
9890         *)
9891                 echo "(Assuming you can't see EOF status from read anyway.)"
9892                 d_eofnblk=$undef
9893                 ;;
9894         esac
9895         ;;
9896 esac
9897 $rm -f try try.* .out core head.c mtry
9898
9899 : see if fchdir exists
9900 set fchdir d_fchdir
9901 eval $inlibc
9902
9903 : see if fchmod exists
9904 set fchmod d_fchmod
9905 eval $inlibc
9906
9907 : see if fchown exists
9908 set fchown d_fchown
9909 eval $inlibc
9910
9911 : see if this is an fcntl system
9912 set fcntl d_fcntl
9913 eval $inlibc
9914
9915 echo " "
9916 : See if fcntl-based locking works.
9917 $cat >try.c <<EOCP
9918 #include <stdlib.h>
9919 #include <unistd.h>
9920 #include <fcntl.h>
9921 #include <signal.h>
9922 $signal_t blech(x) int x; { exit(3); }
9923 int main() {
9924 #if defined(F_SETLK) && defined(F_SETLKW)
9925      struct flock flock;
9926      int retval, fd;
9927      fd = open("try.c", O_RDONLY);
9928      flock.l_type = F_RDLCK;
9929      flock.l_whence = SEEK_SET;
9930      flock.l_start = flock.l_len = 0;
9931      signal(SIGALRM, blech);
9932      alarm(10);
9933      retval = fcntl(fd, F_SETLK, &flock);
9934      close(fd);
9935      (retval < 0 ? exit(2) : exit(0));
9936 #else
9937      exit(2);
9938 #endif
9939 }
9940 EOCP
9941 echo "Checking if fcntl-based file locking works... "
9942 case "$d_fcntl" in
9943 "$define")
9944         set try
9945         if eval $compile_ok; then
9946                 if $run ./try; then
9947                         echo "Yes, it seems to work."
9948                         val="$define"
9949                 else
9950                         echo "Nope, it didn't work."
9951                         val="$undef"
9952                         case "$?" in
9953                         3) $cat >&4 <<EOM
9954 ***
9955 *** I had to forcibly timeout from fcntl(..., F_SETLK, ...).
9956 *** This is (almost) impossible.
9957 *** If your NFS lock daemons are not feeling well, something like
9958 *** this may happen, please investigate.  Cannot continue, aborting.
9959 ***
9960 EOM
9961                                 exit 1
9962                                 ;;
9963                         esac
9964                 fi
9965         else
9966                 echo "I'm unable to compile the test program, so I'll assume not."
9967                 val="$undef"
9968         fi
9969         ;;
9970 *) val="$undef";
9971         echo "Nope, since you don't even have fcntl()."
9972         ;;
9973 esac
9974 set d_fcntl_can_lock
9975 eval $setvar
9976 $rm -f try*
9977
9978
9979 : see if sys/select.h has to be included
9980 set sys/select.h i_sysselct
9981 eval $inhdr
9982
9983 : see if we should include time.h, sys/time.h, or both
9984 echo " "
9985 if test "X$timeincl" = X; then
9986         echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
9987         $echo $n "I'm now running the test program...$c"
9988         $cat >try.c <<'EOCP'
9989 #include <sys/types.h>
9990 #ifdef I_TIME
9991 #include <time.h>
9992 #endif
9993 #ifdef I_SYSTIME
9994 #ifdef SYSTIMEKERNEL
9995 #define KERNEL
9996 #endif
9997 #include <sys/time.h>
9998 #endif
9999 #ifdef I_SYSSELECT
10000 #include <sys/select.h>
10001 #endif
10002 int main()
10003 {
10004         struct tm foo;
10005 #ifdef S_TIMEVAL
10006         struct timeval bar;
10007 #endif
10008 #ifdef S_TIMEZONE
10009         struct timezone tzp;
10010 #endif
10011         if (foo.tm_sec == foo.tm_sec)
10012                 exit(0);
10013 #ifdef S_TIMEVAL
10014         if (bar.tv_sec == bar.tv_sec)
10015                 exit(0);
10016 #endif
10017         exit(1);
10018 }
10019 EOCP
10020         flags=''
10021         for s_timezone in '-DS_TIMEZONE' ''; do
10022         sysselect=''
10023         for s_timeval in '-DS_TIMEVAL' ''; do
10024         for i_systimek in '' '-DSYSTIMEKERNEL'; do
10025         for i_time in '' '-DI_TIME'; do
10026         for i_systime in '-DI_SYSTIME' ''; do
10027                 case "$flags" in
10028                 '') $echo $n ".$c"
10029                         set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
10030                         if eval $compile; then
10031                                 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
10032                                 shift
10033                                 flags="$*"
10034                                 echo " "
10035                                 $echo $n "Succeeded with $flags$c"
10036                         fi
10037                         ;;
10038                 esac
10039         done
10040         done
10041         done
10042         done
10043         done
10044         timeincl=''
10045         echo " "
10046         case "$flags" in
10047         *SYSTIMEKERNEL*) i_systimek="$define"
10048                 timeincl=`./findhdr sys/time.h`
10049                 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
10050         *) i_systimek="$undef";;
10051         esac
10052         case "$flags" in
10053         *I_TIME*) i_time="$define"
10054                 timeincl=`./findhdr time.h`" $timeincl"
10055                 echo "We'll include <time.h>." >&4;;
10056         *) i_time="$undef";;
10057         esac
10058         case "$flags" in
10059         *I_SYSTIME*) i_systime="$define"
10060                 timeincl=`./findhdr sys/time.h`" $timeincl"
10061                 echo "We'll include <sys/time.h>." >&4;;
10062         *) i_systime="$undef";;
10063         esac
10064         $rm -f try.c try
10065 fi
10066
10067 : check for fd_set items
10068 $cat <<EOM
10069
10070 Checking to see how well your C compiler handles fd_set and friends ...
10071 EOM
10072 $cat >try.c <<EOCP
10073 #$i_systime I_SYS_TIME
10074 #$i_sysselct I_SYS_SELECT
10075 #$d_socket HAS_SOCKET
10076 #include <sys/types.h>
10077 #ifdef HAS_SOCKET
10078 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
10079 #endif
10080 #ifdef I_SYS_TIME
10081 #include <sys/time.h>
10082 #endif
10083 #ifdef I_SYS_SELECT
10084 #include <sys/select.h>
10085 #endif
10086 int main() {
10087         fd_set fds;
10088
10089 #ifdef TRYBITS
10090         if(fds.fds_bits);
10091 #endif
10092
10093 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
10094         exit(0);
10095 #else
10096         exit(1);
10097 #endif
10098 }
10099 EOCP
10100 set try -DTRYBITS
10101 if eval $compile; then
10102         d_fds_bits="$define"
10103         d_fd_set="$define"
10104         echo "Well, your system knows about the normal fd_set typedef..." >&4
10105         if $run ./try; then
10106                 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
10107                 d_fd_macros="$define"
10108         else
10109                 $cat >&4 <<'EOM'
10110 but not the normal fd_set macros!  Gaaack!  I'll have to cover for you.
10111 EOM
10112                 d_fd_macros="$undef"
10113         fi
10114 else
10115         $cat <<'EOM'
10116 Hmm, your compiler has some difficulty with fd_set.  Checking further...
10117 EOM
10118         set try
10119         if eval $compile; then
10120                 d_fds_bits="$undef"
10121                 d_fd_set="$define"
10122                 echo "Well, your system has some sort of fd_set available..." >&4
10123                 if $run ./try; then
10124                         echo "and you have the normal fd_set macros." >&4
10125                         d_fd_macros="$define"
10126                 else
10127                         $cat <<'EOM'
10128 but not the normal fd_set macros!  Gross!  More work for me...
10129 EOM
10130                         d_fd_macros="$undef"
10131                 fi
10132         else
10133         echo "Well, you got zip.  That's OK, I can roll my own fd_set stuff." >&4
10134                 d_fd_set="$undef"
10135                 d_fds_bits="$undef"
10136                 d_fd_macros="$undef"
10137         fi
10138 fi
10139 $rm -f try try.*
10140
10141 : see if fgetpos exists
10142 set fgetpos d_fgetpos
10143 eval $inlibc
10144
10145 : see if flock exists
10146 set flock d_flock
10147 eval $inlibc
10148
10149 : see if this is a sys/file.h system
10150 val=''
10151 set sys/file.h val
10152 eval $inhdr
10153
10154 : do we need to include sys/file.h ?
10155 case "$val" in
10156 "$define")
10157         echo " "
10158         if $h_sysfile; then
10159                 val="$define"
10160                 echo "We'll be including <sys/file.h>." >&4
10161         else
10162                 val="$undef"
10163                 echo "We won't be including <sys/file.h>." >&4
10164         fi
10165         ;;
10166 *)
10167         h_sysfile=false
10168         ;;
10169 esac
10170 set i_sysfile
10171 eval $setvar
10172
10173 : see if prototype for flock is available
10174 echo " "
10175 set d_flockproto flock $i_sysfile sys/file.h
10176 eval $hasproto
10177
10178 : see if fork exists
10179 set fork d_fork
10180 eval $inlibc
10181
10182 : see if pathconf exists
10183 set pathconf d_pathconf
10184 eval $inlibc
10185
10186 : see if fpathconf exists
10187 set fpathconf d_fpathconf
10188 eval $inlibc
10189
10190
10191 : check for fpos64_t
10192 echo " "
10193 echo "Checking to see if you have fpos64_t..." >&4
10194 $cat >try.c <<EOCP
10195 #include <stdio.h>
10196 int main() { fpos64_t x = 7; }
10197 EOCP
10198 set try
10199 if eval $compile; then
10200         val="$define"
10201         echo "You have fpos64_t."
10202 else
10203         val="$undef"
10204         echo "You do not have fpos64_t."
10205         case "$fpossize" in
10206         8) echo "(Your fpos_t is 64 bits, so you could use that.)" ;;
10207         esac
10208 fi
10209 $rm -f try.* try
10210 set d_fpos64_t
10211 eval $setvar
10212
10213 : see if frexpl exists
10214 set frexpl d_frexpl
10215 eval $inlibc
10216
10217 : see if this is a sys/param system
10218 set sys/param.h i_sysparam
10219 eval $inhdr
10220
10221 : see if this is a sys/mount.h system
10222 set sys/mount.h i_sysmount
10223 eval $inhdr
10224
10225
10226 echo " "
10227 echo "Checking to see if your system supports struct fs_data..." >&4
10228 set d_fs_data_s fs_data $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h
10229 eval $hasstruct
10230 case "$d_fs_data_s" in
10231 "$define")      echo "Yes, it does."   ;;
10232 *)              echo "No, it doesn't." ;;
10233 esac
10234
10235 : see if fseeko exists
10236 set fseeko d_fseeko
10237 eval $inlibc
10238 case "$longsize" in
10239 8) echo "(Your long is 64 bits, so you could use fseek.)" ;;
10240 esac
10241
10242 : see if fsetpos exists
10243 set fsetpos d_fsetpos
10244 eval $inlibc
10245
10246
10247 : see if fstatfs exists
10248 set fstatfs d_fstatfs
10249 eval $inlibc
10250
10251
10252 : see if statvfs exists
10253 set statvfs d_statvfs
10254 eval $inlibc
10255
10256 : see if fstatvfs exists
10257 set fstatvfs d_fstatvfs
10258 eval $inlibc
10259
10260
10261 : see if fsync exists
10262 set fsync d_fsync
10263 eval $inlibc
10264
10265 : see if ftello exists
10266 set ftello d_ftello
10267 eval $inlibc
10268 case "$longsize" in
10269 8) echo "(Your long is 64 bits, so you could use ftell.)" ;;
10270 esac
10271
10272 : see if getcwd exists
10273 set getcwd d_getcwd
10274 eval $inlibc
10275
10276 : see if getespwnam exists
10277 set getespwnam d_getespwnam
10278 eval $inlibc
10279
10280
10281 : see if getfsstat exists
10282 set getfsstat d_getfsstat
10283 eval $inlibc
10284
10285 : see if getgrent exists
10286 set getgrent d_getgrent
10287 eval $inlibc
10288
10289 : see if gethostbyaddr exists
10290 set gethostbyaddr d_gethbyaddr
10291 eval $inlibc
10292
10293 : see if gethostbyname exists
10294 set gethostbyname d_gethbyname
10295 eval $inlibc
10296
10297 : see if gethostent exists
10298 set gethostent d_gethent
10299 eval $inlibc
10300
10301 : see how we will look up host name
10302 echo " "
10303 call=''
10304 if set gethostname val -f d_gethname; eval $csym; $val; then
10305         echo 'gethostname() found.' >&4
10306         d_gethname="$define"
10307         call=gethostname
10308 fi
10309 if set uname val -f d_uname; eval $csym; $val; then
10310         if ./xenix; then
10311                 $cat <<'EOM'
10312 uname() was found, but you're running xenix, and older versions of xenix
10313 have a broken uname(). If you don't really know whether your xenix is old
10314 enough to have a broken system call, use the default answer.
10315
10316 EOM
10317                 dflt=y
10318                 case "$d_uname" in
10319                 "$define") dflt=n;;
10320                 esac
10321                 rp='Is your uname() broken?'
10322                 . ./myread
10323                 case "$ans" in
10324                 n*) d_uname="$define"; call=uname;;
10325                 esac
10326         else
10327                 echo 'uname() found.' >&4
10328                 d_uname="$define"
10329                 case "$call" in
10330                 '') call=uname ;;
10331                 esac
10332         fi
10333 fi
10334 case "$d_gethname" in
10335 '') d_gethname="$undef";;
10336 esac
10337 case "$d_uname" in
10338 '') d_uname="$undef";;
10339 esac
10340 case "$d_uname$d_gethname" in
10341 *define*)
10342         dflt=n
10343         cat <<EOM
10344  
10345 Every now and then someone has a $call() that lies about the hostname
10346 but can't be fixed for political or economic reasons.  If you wish, I can
10347 pretend $call() isn't there and maybe compute hostname at run-time
10348 thanks to the '$phostname' command.
10349
10350 EOM
10351         rp="Shall I ignore $call() from now on?"
10352         . ./myread
10353         case "$ans" in
10354         y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
10355         esac;;
10356 esac
10357 case "$phostname" in
10358 '') aphostname='';;
10359 *) case "$aphostname" in
10360         /*) ;;
10361         *) set X $phostname
10362                 shift
10363                 file=$1
10364                 shift
10365                 file=`./loc $file $file $pth`
10366                 aphostname=`echo $file $*`
10367                 ;;
10368         esac
10369         ;;
10370 esac
10371 case "$d_uname$d_gethname" in
10372 *define*) ;;
10373 *)
10374         case "$phostname" in
10375         '')
10376                 echo "There will be no way for $package to get your hostname." >&4;;
10377         *)
10378         echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
10379                 ;;
10380         esac;;
10381 esac
10382 case "$d_phostname" in
10383 '') d_phostname="$undef";;
10384 esac
10385
10386 : see if this is a netdb.h system
10387 set netdb.h i_netdb
10388 eval $inhdr
10389
10390 : see if prototypes for various gethostxxx netdb.h functions are available
10391 echo " "
10392 set d_gethostprotos gethostent $i_netdb netdb.h
10393 eval $hasproto
10394
10395 : see if getitimer exists
10396 set getitimer d_getitimer
10397 eval $inlibc
10398
10399 : see if getlogin exists
10400 set getlogin d_getlogin
10401 eval $inlibc
10402
10403 : see if getmnt exists
10404 set getmnt d_getmnt
10405 eval $inlibc
10406
10407 : see if getmntent exists
10408 set getmntent d_getmntent
10409 eval $inlibc
10410
10411 : see if getnetbyaddr exists
10412 set getnetbyaddr d_getnbyaddr
10413 eval $inlibc
10414
10415 : see if getnetbyname exists
10416 set getnetbyname d_getnbyname
10417 eval $inlibc
10418
10419 : see if getnetent exists
10420 set getnetent d_getnent
10421 eval $inlibc
10422
10423 : see if prototypes for various getnetxxx netdb.h functions are available
10424 echo " "
10425 set d_getnetprotos getnetent $i_netdb netdb.h
10426 eval $hasproto
10427
10428 : see if getpagesize exists
10429 set getpagesize d_getpagsz
10430 eval $inlibc
10431
10432
10433 : see if getprotobyname exists
10434 set getprotobyname d_getpbyname
10435 eval $inlibc
10436
10437 : see if getprotobynumber exists
10438 set getprotobynumber d_getpbynumber
10439 eval $inlibc
10440
10441 : see if getprotoent exists
10442 set getprotoent d_getpent
10443 eval $inlibc
10444
10445 : see if getpgid exists
10446 set getpgid d_getpgid
10447 eval $inlibc
10448
10449 : see if getpgrp2 exists
10450 set getpgrp2 d_getpgrp2
10451 eval $inlibc
10452
10453 : see if getppid exists
10454 set getppid d_getppid
10455 eval $inlibc
10456
10457 : see if getpriority exists
10458 set getpriority d_getprior
10459 eval $inlibc
10460
10461 : see if prototypes for various getprotoxxx netdb.h functions are available
10462 echo " "
10463 set d_getprotoprotos getprotoent $i_netdb netdb.h
10464 eval $hasproto
10465
10466 : see if getprpwnam exists
10467 set getprpwnam d_getprpwnam
10468 eval $inlibc
10469
10470 : see if getpwent exists
10471 set getpwent d_getpwent
10472 eval $inlibc
10473
10474
10475 : see if getservbyname exists
10476 set getservbyname d_getsbyname
10477 eval $inlibc
10478
10479 : see if getservbyport exists
10480 set getservbyport d_getsbyport
10481 eval $inlibc
10482
10483 : see if getservent exists
10484 set getservent d_getsent
10485 eval $inlibc
10486
10487 : see if prototypes for various getservxxx netdb.h functions are available
10488 echo " "
10489 set d_getservprotos getservent $i_netdb netdb.h
10490 eval $hasproto
10491
10492 : see if getspnam exists
10493 set getspnam d_getspnam
10494 eval $inlibc
10495
10496 : see if gettimeofday or ftime exists
10497 set gettimeofday d_gettimeod
10498 eval $inlibc
10499 case "$d_gettimeod" in
10500 "$undef")
10501         set ftime d_ftime 
10502         eval $inlibc
10503         ;;
10504 *)
10505         val="$undef"; set d_ftime; eval $setvar
10506         ;;
10507 esac
10508 case "$d_gettimeod$d_ftime" in
10509 "$undef$undef")
10510         echo " "
10511         echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
10512         ;;
10513 esac
10514
10515 : see if this is an grp system
10516 set grp.h i_grp
10517 eval $inhdr
10518
10519 case "$i_grp" in
10520 $define)
10521         xxx=`./findhdr grp.h`
10522         $cppstdin $cppflags $cppminus < $xxx >$$.h
10523
10524         if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
10525                 val="$define"
10526         else
10527                 val="$undef"
10528         fi
10529         set d_grpasswd
10530         eval $setvar
10531
10532         $rm -f $$.h
10533         ;;
10534 *)
10535         val="$undef";
10536         set d_grpasswd; eval $setvar
10537         ;;
10538 esac
10539
10540 : see if hasmntopt exists
10541 set hasmntopt d_hasmntopt
10542 eval $inlibc
10543
10544 : see if this is a netinet/in.h or sys/in.h system
10545 set netinet/in.h i_niin sys/in.h i_sysin
10546 eval $inhdr
10547
10548 : see if arpa/inet.h has to be included
10549 set arpa/inet.h i_arpainet
10550 eval $inhdr
10551
10552 : see if htonl --and friends-- exists
10553 val=''
10554 set htonl val
10555 eval $inlibc
10556
10557 : Maybe they are macros.
10558 case "$val" in
10559 $undef)
10560         $cat >htonl.c <<EOM
10561 #include <stdio.h>
10562 #include <sys/types.h>
10563 #$i_niin I_NETINET_IN
10564 #$i_sysin I_SYS_IN
10565 #$i_arpainet I_ARPA_INET
10566 #ifdef I_NETINET_IN
10567 #include <netinet/in.h>
10568 #endif
10569 #ifdef I_SYS_IN
10570 #include <sys/in.h>
10571 #endif
10572 #ifdef I_ARPA_INET
10573 #include <arpa/inet.h>
10574 #endif
10575 #ifdef htonl
10576 printf("Defined as a macro.");
10577 #endif
10578 EOM
10579         $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
10580         if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
10581                 val="$define"
10582                 echo "But it seems to be defined as a macro." >&4
10583         fi
10584         $rm -f htonl.?
10585         ;;
10586 esac
10587 set d_htonl
10588 eval $setvar
10589
10590 : see if iconv exists
10591 set iconv d_iconv
10592 eval $inlibc
10593
10594 : index or strchr
10595 echo " "
10596 if set index val -f; eval $csym; $val; then
10597         if set strchr val -f d_strchr; eval $csym; $val; then
10598                 if $contains strchr "$strings" >/dev/null 2>&1 ; then
10599                         val="$define"
10600                         vali="$undef"
10601                         echo "strchr() found." >&4
10602                 else
10603                         val="$undef"
10604                         vali="$define"
10605                         echo "index() found." >&4
10606                 fi
10607         else
10608                 val="$undef"
10609                 vali="$define"
10610                 echo "index() found." >&4
10611         fi
10612 else
10613         if set strchr val -f d_strchr; eval $csym; $val; then
10614                 val="$define"
10615                 vali="$undef"
10616                 echo "strchr() found." >&4
10617         else
10618                 echo "No index() or strchr() found!" >&4
10619                 val="$undef"
10620                 vali="$undef"
10621         fi
10622 fi
10623 set d_strchr; eval $setvar
10624 val="$vali"
10625 set d_index; eval $setvar
10626
10627 : check whether inet_aton exists
10628 set inet_aton d_inetaton
10629 eval $inlibc
10630
10631 : Look for isascii
10632 echo " "
10633 $cat >isascii.c <<'EOCP'
10634 #include <stdio.h>
10635 #include <ctype.h>
10636 int main() {
10637         int c = 'A';
10638         if (isascii(c))
10639                 exit(0);
10640         else
10641                 exit(1);
10642 }
10643 EOCP
10644 set isascii
10645 if eval $compile; then
10646         echo "isascii() found." >&4
10647         val="$define"
10648 else
10649         echo "isascii() NOT found." >&4
10650         val="$undef"
10651 fi
10652 set d_isascii
10653 eval $setvar
10654 $rm -f isascii*
10655
10656 : see if isnan exists
10657 set isnan d_isnan
10658 eval $inlibc
10659
10660 : see if isnanl exists
10661 set isnanl d_isnanl
10662 eval $inlibc
10663
10664 : see if killpg exists
10665 set killpg d_killpg
10666 eval $inlibc
10667
10668 : see if lchown exists
10669 echo " "
10670 $cat > try.c <<'EOCP'
10671 /* System header to define __stub macros and hopefully few prototypes,
10672     which can conflict with char lchown(); below.  */
10673 #include <assert.h>
10674 /* Override any gcc2 internal prototype to avoid an error.  */
10675 /* We use char because int might match the return type of a gcc2
10676    builtin and then its argument prototype would still apply.  */
10677 char lchown();
10678 int main() {
10679     /*  The GNU C library defines this for functions which it implements
10680         to always fail with ENOSYS.  Some functions are actually named
10681         something starting with __ and the normal name is an alias.  */
10682 #if defined (__stub_lchown) || defined (__stub___lchown)
10683 choke me
10684 #else
10685 lchown();
10686 #endif
10687 ; return 0; }
10688 EOCP
10689 set try
10690 if eval $compile; then
10691     $echo "lchown() found." >&4
10692     val="$define"
10693 else
10694     $echo "lchown() NOT found." >&4
10695     val="$undef"
10696 fi
10697 set d_lchown
10698 eval $setvar
10699
10700 : See if number of significant digits in a double precision number is known
10701 echo " "
10702 $cat >ldbl_dig.c <<EOM
10703 #$i_limits I_LIMITS
10704 #$i_float I_FLOAT
10705 #ifdef I_LIMITS
10706 #include <limits.h>
10707 #endif
10708 #ifdef I_FLOAT
10709 #include <float.h>
10710 #endif
10711 #ifdef LDBL_DIG
10712 printf("Contains LDBL_DIG");
10713 #endif
10714 EOM
10715 $cppstdin $cppflags $cppminus < ldbl_dig.c >ldbl_dig.E 2>/dev/null
10716 if $contains 'LDBL_DIG' ldbl_dig.E >/dev/null 2>&1; then
10717         echo "LDBL_DIG found." >&4
10718         val="$define"
10719 else
10720         echo "LDBL_DIG NOT found." >&4
10721         val="$undef"
10722 fi
10723 $rm -f ldbl_dig.?
10724 set d_ldbl_dig
10725 eval $setvar
10726
10727 : see if link exists
10728 set link d_link
10729 eval $inlibc
10730
10731 : see if localeconv exists
10732 set localeconv d_locconv
10733 eval $inlibc
10734
10735 : see if lockf exists
10736 set lockf d_lockf
10737 eval $inlibc
10738
10739 : see if prototype for lseek is available
10740 echo " "
10741 set d_lseekproto lseek $i_systypes sys/types.h $i_unistd unistd.h
10742 eval $hasproto
10743
10744 : see if lstat exists
10745 set lstat d_lstat
10746 eval $inlibc
10747
10748 : see if madvise exists
10749 set madvise d_madvise
10750 eval $inlibc
10751
10752 : see if mblen exists
10753 set mblen d_mblen
10754 eval $inlibc
10755
10756 : see if mbstowcs exists
10757 set mbstowcs d_mbstowcs
10758 eval $inlibc
10759
10760 : see if mbtowc exists
10761 set mbtowc d_mbtowc
10762 eval $inlibc
10763
10764 : see if memchr exists
10765 set memchr d_memchr
10766 eval $inlibc
10767
10768 : see if memcmp exists
10769 set memcmp d_memcmp
10770 eval $inlibc
10771
10772 : see if memcpy exists
10773 set memcpy d_memcpy
10774 eval $inlibc
10775
10776 : see if memmove exists
10777 set memmove d_memmove
10778 eval $inlibc
10779
10780 : see if memset exists
10781 set memset d_memset
10782 eval $inlibc
10783
10784 : see if mkdir exists
10785 set mkdir d_mkdir
10786 eval $inlibc
10787
10788 : see if mkdtemp exists
10789 set mkdtemp d_mkdtemp
10790 eval $inlibc
10791
10792 : see if mkfifo exists
10793 set mkfifo d_mkfifo
10794 eval $inlibc
10795
10796 : see if mkstemp exists
10797 set mkstemp d_mkstemp
10798 eval $inlibc
10799
10800 : see if mkstemps exists
10801 set mkstemps d_mkstemps
10802 eval $inlibc
10803
10804 : see if mktime exists
10805 set mktime d_mktime
10806 eval $inlibc
10807
10808 : see if this is a sys/mman.h system
10809 set sys/mman.h i_sysmman
10810 eval $inhdr
10811
10812 : see if mmap exists
10813 set mmap d_mmap
10814 eval $inlibc
10815 : see what shmat returns
10816 : default to something harmless
10817 mmaptype='void *'
10818 case "$i_sysmman$d_mmap" in
10819 "$define$define")
10820         $cat >mmap.c <<'END'
10821 #include <sys/mman.h>
10822 void *mmap();
10823 END
10824         if $cc $ccflags -c mmap.c >/dev/null 2>&1; then
10825                 mmaptype='void *'
10826         else
10827                 mmaptype='caddr_t'
10828         fi
10829         echo "and it returns ($mmaptype)." >&4
10830         ;;
10831 esac
10832
10833
10834
10835 : see if modfl exists
10836 set modfl d_modfl
10837 eval $inlibc
10838
10839 d_modfl_pow32_bug="$undef"
10840
10841 case "$d_longdbl$d_modfl" in
10842 $define$define)
10843         $cat <<EOM
10844 Checking to see whether your modfl() is okay for large values...
10845 EOM
10846 $cat >try.c <<EOCP
10847 #include <math.h> 
10848 #include <stdio.h>
10849 int main() {
10850     long double nv = 4294967303.15;
10851     long double v, w;
10852     v = modfl(nv, &w);         
10853 #ifdef __GLIBC__
10854     printf("glibc");
10855 #endif
10856     printf(" %"$sPRIfldbl" %"$sPRIfldbl" %"$sPRIfldbl"\n", nv, v, w);
10857     return 0;
10858 }
10859 EOCP
10860         case "$osname:$gccversion" in
10861         aix:)   saveccflags="$ccflags"
10862                 ccflags="$ccflags -qlongdouble" ;; # to avoid core dump
10863         esac
10864         set try
10865         if eval $compile; then
10866                 foo=`$run ./try`
10867                 case "$foo" in
10868                 *" 4294967303.150000 1.150000 4294967302.000000")
10869                         echo >&4 "Your modfl() is broken for large values."
10870                         d_modfl_pow32_bug="$define"
10871                         case "$foo" in
10872                         glibc)  echo >&4 "You should upgrade your glibc to at least 2.2.2 to get a fixed modfl()."
10873                         ;;
10874                         esac
10875                         ;;
10876                 *" 4294967303.150000 0.150000 4294967303.000000")
10877                         echo >&4 "Your modfl() seems okay for large values."
10878                         ;;
10879                 *)      echo >&4 "I don't understand your modfl() at all."
10880                         d_modfl="$undef"
10881                         ;;
10882                 esac
10883                 $rm -f try.* try core core.try.*
10884         else
10885                 echo "I cannot figure out whether your modfl() is okay, assuming it isn't."
10886                 d_modfl="$undef"
10887         fi
10888         case "$osname:$gccversion" in
10889         aix:)   ccflags="$saveccflags" ;; # restore
10890         esac
10891         ;;
10892 esac
10893
10894 : see if mprotect exists
10895 set mprotect d_mprotect
10896 eval $inlibc
10897
10898 : see if msgctl exists
10899 set msgctl d_msgctl
10900 eval $inlibc
10901
10902 : see if msgget exists
10903 set msgget d_msgget
10904 eval $inlibc
10905
10906 : see if msgsnd exists
10907 set msgsnd d_msgsnd
10908 eval $inlibc
10909
10910 : see if msgrcv exists
10911 set msgrcv d_msgrcv
10912 eval $inlibc
10913
10914 : see how much of the 'msg*(2)' library is present.
10915 h_msg=true
10916 echo " "
10917 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
10918 *"$undef"*) h_msg=false;;
10919 esac
10920 case "$osname" in
10921 freebsd)
10922     case "`ipcs 2>&1`" in
10923     "SVID messages"*"not configured"*)
10924         echo "Your $osname does not have the msg*(2) configured." >&4
10925         h_msg=false
10926         val="$undef"
10927         set msgctl d_msgctl
10928         eval $setvar
10929         set msgget d_msgget
10930         eval $setvar
10931         set msgsnd d_msgsnd
10932         eval $setvar
10933         set msgrcv d_msgrcv
10934         eval $setvar
10935         ;;
10936     esac
10937     ;;
10938 esac
10939 : we could also check for sys/ipc.h ...
10940 if $h_msg && $test `./findhdr sys/msg.h`; then
10941         echo "You have the full msg*(2) library." >&4
10942         val="$define"
10943 else
10944         echo "You don't have the full msg*(2) library." >&4
10945         val="$undef"
10946 fi
10947 set d_msg
10948 eval $setvar
10949
10950
10951 echo " "
10952 echo "Checking to see if your system supports struct msghdr..." >&4
10953 set d_msghdr_s msghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
10954 eval $hasstruct
10955 case "$d_msghdr_s" in
10956 "$define")      echo "Yes, it does."   ;;
10957 *)              echo "No, it doesn't." ;;
10958 esac
10959
10960
10961 : see if msync exists
10962 set msync d_msync
10963 eval $inlibc
10964
10965 : see if munmap exists
10966 set munmap d_munmap
10967 eval $inlibc
10968
10969 : see if nice exists
10970 set nice d_nice
10971 eval $inlibc
10972
10973 : see if this is a langinfo.h system
10974 set langinfo.h i_langinfo
10975 eval $inhdr
10976
10977 : see if nl_langinfo exists
10978 set nl_langinfo d_nl_langinfo
10979 eval $inlibc
10980
10981 : check for length of character
10982 echo " "
10983 case "$charsize" in
10984 '')
10985         echo "Checking to see how big your characters are (hey, you never know)..." >&4
10986         $cat >try.c <<'EOCP'
10987 #include <stdio.h>
10988 int main()
10989 {
10990     printf("%d\n", (int)sizeof(char));
10991     exit(0);
10992 }
10993 EOCP
10994         set try
10995         if eval $compile_ok; then
10996                 dflt=`$run ./try`
10997         else
10998                 dflt='1'
10999                 echo "(I can't seem to compile the test program.  Guessing...)"
11000         fi
11001         ;;
11002 *)
11003         dflt="$charsize"
11004         ;;
11005 esac
11006 rp="What is the size of a character (in bytes)?"
11007 . ./myread
11008 charsize="$ans"
11009 $rm -f try.c try
11010
11011 : check for volatile keyword
11012 echo " "
11013 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
11014 $cat >try.c <<'EOCP'
11015 int main()
11016 {
11017         typedef struct _goo_struct goo_struct;
11018         goo_struct * volatile goo = ((goo_struct *)0);
11019         struct _goo_struct {
11020                 long long_int;
11021                 int reg_int;
11022                 char char_var;
11023         };
11024         typedef unsigned short foo_t;
11025         char *volatile foo;
11026         volatile int bar;
11027         volatile foo_t blech;
11028         foo = foo;
11029 }
11030 EOCP
11031 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
11032         val="$define"
11033         echo "Yup, it does."
11034 else
11035         val="$undef"
11036         echo "Nope, it doesn't."
11037 fi
11038 set d_volatile
11039 eval $setvar
11040 $rm -f try.*
11041
11042
11043 echo " "
11044 $echo "Choosing the C types to be used for Perl's internal types..." >&4
11045
11046 case "$use64bitint:$d_quad:$quadtype" in
11047 define:define:?*)
11048         ivtype="$quadtype"
11049         uvtype="$uquadtype"
11050         ivsize=8
11051         uvsize=8
11052         ;;
11053 *)      ivtype="long"
11054         uvtype="unsigned long"
11055         ivsize=$longsize
11056         uvsize=$longsize
11057         ;;
11058 esac
11059
11060 case "$uselongdouble:$d_longdbl" in
11061 define:define)
11062         nvtype="long double"
11063         nvsize=$longdblsize
11064         ;;
11065 *)      nvtype=double
11066         nvsize=$doublesize
11067         ;;
11068 esac
11069
11070 $echo "(IV will be "$ivtype", $ivsize bytes)"
11071 $echo "(UV will be "$uvtype", $uvsize bytes)"
11072 $echo "(NV will be "$nvtype", $nvsize bytes)"
11073
11074 $cat >try.c <<EOCP
11075 #$i_inttypes I_INTTYPES
11076 #ifdef I_INTTYPES
11077 #include <inttypes.h>
11078 #endif
11079 #include <stdio.h>
11080 int main() {
11081 #ifdef INT8
11082    int8_t i =  INT8_MAX;
11083   uint8_t u = UINT8_MAX;
11084   printf("int8_t\n");
11085 #endif
11086 #ifdef INT16
11087    int16_t i =  INT16_MAX;
11088   uint16_t i = UINT16_MAX;
11089   printf("int16_t\n");
11090 #endif
11091 #ifdef INT32
11092    int32_t i =  INT32_MAX;
11093   uint32_t u = UINT32_MAX;
11094   printf("int32_t\n");
11095 #endif
11096 }
11097 EOCP
11098
11099 case "$i8type" in
11100 '')     case "$charsize" in
11101         1)      i8type=char
11102                 u8type="unsigned char"
11103                 i8size=$charsize
11104                 u8size=$charsize
11105                 ;;
11106         esac
11107         ;;
11108 esac
11109 case "$i8type" in
11110 '')     set try -DINT8
11111         if eval $compile; then
11112                 case "`$run ./try`" in
11113                 int8_t) i8type=int8_t
11114                         u8type=uint8_t
11115                         i8size=1
11116                         u8size=1
11117                         ;;
11118                 esac
11119         fi
11120         ;;
11121 esac
11122 case "$i8type" in
11123 '')     if $test $charsize -ge 1; then
11124                 i8type=char
11125                 u8type="unsigned char"
11126                 i8size=$charsize
11127                 u8size=$charsize
11128         fi
11129         ;;
11130 esac
11131
11132 case "$i16type" in
11133 '')     case "$shortsize" in
11134         2)      i16type=short
11135                 u16type="unsigned short"
11136                 i16size=$shortsize
11137                 u16size=$shortsize
11138                 ;;
11139         esac
11140         ;;
11141 esac
11142 case "$i16type" in
11143 '')     set try -DINT16
11144         if eval $compile; then
11145                 case "`$run ./try`" in
11146                 int16_t)
11147                         i16type=int16_t
11148                         u16type=uint16_t
11149                         i16size=2
11150                         u16size=2
11151                         ;;
11152                 esac
11153         fi
11154         ;;
11155 esac
11156 case "$i16type" in
11157 '')     if $test $shortsize -ge 2; then
11158                 i16type=short
11159                 u16type="unsigned short"
11160                 i16size=$shortsize
11161                 u16size=$shortsize
11162         fi
11163         ;;
11164 esac
11165
11166 case "$i32type" in
11167 '')     case "$longsize" in
11168         4)      i32type=long
11169                 u32type="unsigned long"
11170                 i32size=$longsize
11171                 u32size=$longsize
11172                 ;;
11173         *)      case "$intsize" in
11174                 4)      i32type=int
11175                         u32type="unsigned int"
11176                         i32size=$intsize
11177                         u32size=$intsize
11178                         ;;
11179                 esac
11180                 ;;
11181         esac
11182         ;;
11183 esac
11184 case "$i32type" in
11185 '')     set try -DINT32
11186         if eval $compile; then
11187                 case "`$run ./try`" in
11188                 int32_t)
11189                         i32type=int32_t
11190                         u32type=uint32_t
11191                         i32size=4
11192                         u32size=4
11193                         ;;
11194                 esac
11195         fi
11196         ;;
11197 esac
11198 case "$i32type" in
11199 '')     if $test $intsize -ge 4; then
11200                 i32type=int
11201                 u32type="unsigned int"
11202                 i32size=$intsize
11203                 u32size=$intsize
11204         fi
11205         ;;
11206 esac
11207
11208 case "$i64type" in
11209 '')     case "$d_quad:$quadtype" in
11210         define:?*)
11211                 i64type="$quadtype"
11212                 u64type="$uquadtype"
11213                 i64size=8
11214                 u64size=8
11215                 ;;
11216         esac
11217         ;;
11218 esac
11219
11220 $echo "Checking how many bits of your UVs your NVs can preserve..." >&4
11221 : volatile so that the compiler has to store it out to memory.
11222 if test X"$d_volatile" = X"$define"; then
11223         volatile=volatile
11224 fi
11225 $cat <<EOP >try.c
11226 #include <stdio.h>
11227 #include <sys/types.h>
11228 #include <signal.h>
11229 #ifdef SIGFPE
11230 $volatile int bletched = 0;
11231 $signal_t blech(s) int s; { bletched = 1; }
11232 #endif
11233 int main() {
11234     $uvtype u = 0;
11235     $nvtype d;
11236     int     n = 8 * $uvsize;
11237     int     i;
11238 #ifdef SIGFPE
11239     signal(SIGFPE, blech);
11240 #endif
11241
11242     for (i = 0; i < n; i++) {
11243       u = u << 1 | ($uvtype)1;
11244       d = ($nvtype)u;
11245       if (($uvtype)d != u)
11246         break;
11247       if (d <= 0)
11248         break;
11249       d = ($nvtype)(u - 1);
11250       if (($uvtype)d != (u - 1))
11251         break;
11252 #ifdef SIGFPE
11253       if (bletched) {
11254         break;
11255 #endif
11256       } 
11257     }
11258     printf("%d\n", ((i == n) ? -n : i));
11259     exit(0);
11260 }
11261 EOP
11262 set try
11263
11264 d_nv_preserves_uv="$undef"
11265 if eval $compile; then
11266         d_nv_preserves_uv_bits="`$run ./try`"
11267 fi
11268 case "$d_nv_preserves_uv_bits" in
11269 \-[1-9]*)       
11270         d_nv_preserves_uv_bits=`expr 0 - $d_nv_preserves_uv_bits`
11271         $echo "Your NVs can preserve all $d_nv_preserves_uv_bits bits of your UVs."  2>&1
11272         d_nv_preserves_uv="$define"
11273         ;;
11274 [1-9]*) $echo "Your NVs can preserve only $d_nv_preserves_uv_bits bits of your UVs."  2>&1
11275         d_nv_preserves_uv="$undef" ;;
11276 *)      $echo "Can't figure out how many bits your NVs preserve." 2>&1
11277         d_nv_preserves_uv_bits="$undef" ;;
11278 esac
11279
11280 $rm -f try.* try
11281
11282
11283 : check for off64_t
11284 echo " "
11285 echo "Checking to see if you have off64_t..." >&4
11286 $cat >try.c <<EOCP
11287 #include <sys/types.h>
11288 #include <unistd.h>
11289 int main() { off64_t x = 7; }
11290 EOCP
11291 set try
11292 if eval $compile; then
11293         val="$define"
11294         echo "You have off64_t."
11295 else
11296         val="$undef"
11297         echo "You do not have off64_t."
11298         case "$lseeksize" in
11299         8) echo "(Your off_t is 64 bits, so you could use that.)" ;;
11300         esac
11301 fi
11302 $rm -f try.* try
11303 set d_off64_t
11304 eval $setvar
11305
11306 : see if POSIX threads are available
11307 set pthread.h i_pthread
11308 eval $inhdr
11309
11310
11311
11312
11313 : how to create joinable pthreads
11314 if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
11315         echo " "
11316         echo "Checking what constant to use for creating joinable pthreads..." >&4 
11317         $cat >try.c <<'EOCP'
11318 #include <pthread.h>
11319 int main() {
11320     int detachstate = JOINABLE;
11321 }
11322 EOCP
11323         set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
11324         if eval $compile; then
11325                 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
11326                 val="$undef" # Yes, undef.
11327                 set d_old_pthread_create_joinable
11328                 eval $setvar
11329                 val=""
11330                 set old_pthread_create_joinable
11331                 eval $setvar
11332         else
11333                 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
11334                 if eval $compile; then
11335                         echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
11336                         val="$define"
11337                         set d_old_pthread_create_joinable
11338                         eval $setvar
11339                         val=PTHREAD_CREATE_UNDETACHED
11340                         set old_pthread_create_joinable
11341                         eval $setvar
11342                 else            
11343                         set try -DJOINABLE=__UNDETACHED
11344                         if eval $compile; then
11345                                 echo "You seem to use __UNDETACHED." >&4
11346                                 val="$define"
11347                                 set d_old_pthread_create_joinable
11348                                 eval $setvar
11349                                 val=__UNDETACHED
11350                                 set old_pthread_create_joinable
11351                                 eval $setvar
11352                         else
11353                                 echo "Egads, nothing obvious found.  Guessing that you use 0." >&4
11354                                 val="$define"
11355                                 set d_old_pthread_create_joinable
11356                                 eval $setvar
11357                                 val=0
11358                                 set old_pthread_create_joinable
11359                                 eval $setvar
11360                         fi
11361                 fi
11362         fi
11363         $rm -f try try.*
11364 else
11365     d_old_pthread_create_joinable="$undef"
11366     old_pthread_create_joinable=""
11367 fi
11368
11369 : see if pause exists
11370 set pause d_pause
11371 eval $inlibc
11372
11373 : see if pipe exists
11374 set pipe d_pipe
11375 eval $inlibc
11376
11377 : see if poll exists
11378 set poll d_poll
11379 eval $inlibc
11380
11381 : see if pthread_atfork exists
11382 set pthread_atfork d_pthread_atfork
11383 eval $inlibc
11384
11385
11386 : see whether the various POSIXish _yields exist
11387 $cat >try.c <<EOP
11388 #include <pthread.h>
11389 #include <stdio.h>
11390 int main() {
11391 #ifdef SCHED_YIELD
11392         sched_yield();
11393 #else
11394 #ifdef PTHREAD_YIELD
11395         pthread_yield();
11396 #else
11397 #ifdef PTHREAD_YIELD_NULL
11398         pthread_yield(NULL);
11399 #endif
11400 #endif
11401 #endif
11402 }
11403 EOP
11404 : see if sched_yield exists
11405 set try -DSCHED_YIELD
11406 if eval $compile; then
11407     val="$define"
11408     sched_yield='sched_yield()'
11409 else
11410     val="$undef"
11411 fi
11412 case "$usethreads" in
11413 $define)
11414         case "$val" in
11415         $define) echo 'sched_yield() found.' >&4        ;;
11416         *)       echo 'sched_yield() NOT found.' >&4    ;;
11417         esac
11418 esac
11419 set d_sched_yield
11420 eval $setvar
11421
11422 : see if pthread_yield exists
11423 set try -DPTHREAD_YIELD
11424 if eval $compile; then
11425     val="$define"
11426     case "$sched_yield" in
11427     '') sched_yield='pthread_yield()' ;;
11428     esac
11429 else
11430     set try -DPTHREAD_YIELD_NULL
11431     if eval $compile; then
11432         val="$define"
11433         case "$sched_yield" in
11434         '') sched_yield='pthread_yield(NULL)' ;;
11435         esac
11436     else
11437         val="$undef"
11438     fi
11439 fi
11440 case "$usethreads" in
11441 $define)
11442         case "$val" in
11443         $define) echo 'pthread_yield() found.' >&4      ;;
11444         *)       echo 'pthread_yield() NOT found.' >&4  ;;
11445         esac
11446         ;;
11447 esac
11448 set d_pthread_yield
11449 eval $setvar
11450
11451 case "$sched_yield" in
11452 '') sched_yield=undef ;;
11453 esac
11454
11455 $rm -f try try.*
11456
11457 : see if this is a pwd.h system
11458 set pwd.h i_pwd
11459 eval $inhdr
11460
11461 case "$i_pwd" in
11462 $define)
11463         xxx=`./findhdr pwd.h`
11464         $cppstdin $cppflags $cppminus < $xxx >$$.h
11465
11466         if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
11467                 val="$define"
11468         else
11469                 val="$undef"
11470         fi
11471         set d_pwquota
11472         eval $setvar
11473
11474         if $contains 'pw_age' $$.h >/dev/null 2>&1; then
11475                 val="$define"
11476         else
11477                 val="$undef"
11478         fi
11479         set d_pwage
11480         eval $setvar
11481
11482         if $contains 'pw_change' $$.h >/dev/null 2>&1; then
11483                 val="$define"
11484         else
11485                 val="$undef"
11486         fi
11487         set d_pwchange
11488         eval $setvar
11489
11490         if $contains 'pw_class' $$.h >/dev/null 2>&1; then
11491                 val="$define"
11492         else
11493                 val="$undef"
11494         fi
11495         set d_pwclass
11496         eval $setvar
11497
11498         if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
11499                 val="$define"
11500         else
11501                 val="$undef"
11502         fi
11503         set d_pwexpire
11504         eval $setvar
11505
11506         if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
11507                 val="$define"
11508         else
11509                 val="$undef"
11510         fi
11511         set d_pwcomment
11512         eval $setvar
11513
11514         if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
11515                 val="$define"
11516         else
11517                 val="$undef"
11518         fi
11519         set d_pwgecos
11520         eval $setvar
11521
11522         if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
11523                 val="$define"
11524         else
11525                 val="$undef"
11526         fi
11527         set d_pwpasswd
11528         eval $setvar
11529
11530         $rm -f $$.h
11531         ;;
11532 *)
11533         val="$undef"; 
11534         set d_pwquota; eval $setvar
11535         set d_pwage; eval $setvar
11536         set d_pwchange; eval $setvar
11537         set d_pwclass; eval $setvar
11538         set d_pwexpire; eval $setvar
11539         set d_pwcomment; eval $setvar
11540         set d_pwgecos; eval $setvar
11541         set d_pwpasswd; eval $setvar
11542         ;;
11543 esac
11544
11545 : see if readdir and friends exist
11546 set readdir d_readdir
11547 eval $inlibc
11548 set seekdir d_seekdir
11549 eval $inlibc
11550 set telldir d_telldir
11551 eval $inlibc
11552 set rewinddir d_rewinddir
11553 eval $inlibc
11554
11555 : see if readlink exists
11556 set readlink d_readlink
11557 eval $inlibc
11558
11559 : see if readv exists
11560 set readv d_readv
11561 eval $inlibc
11562
11563 : see if recvmsg exists
11564 set recvmsg d_recvmsg
11565 eval $inlibc
11566
11567 : see if rename exists
11568 set rename d_rename
11569 eval $inlibc
11570
11571 : see if rmdir exists
11572 set rmdir d_rmdir
11573 eval $inlibc
11574
11575 : see if memory.h is available.
11576 val=''
11577 set memory.h val
11578 eval $inhdr
11579
11580 : See if it conflicts with string.h
11581 case "$val" in
11582 $define)
11583         case "$strings" in
11584         '') ;;
11585         *)
11586                 $cppstdin $cppflags $cppminus < $strings > mem.h
11587                 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
11588                         echo " "
11589                         echo "We won't be including <memory.h>."
11590                         val="$undef"
11591                 fi
11592                 $rm -f mem.h
11593                 ;;
11594         esac
11595 esac
11596 set i_memory
11597 eval $setvar
11598
11599 : can bcopy handle overlapping blocks?
11600 echo " "
11601 val="$undef"
11602 case "$d_memmove" in
11603 "$define") echo "I'll use memmove() instead of bcopy() for overlapping copies." ;;
11604 *)      case "$d_bcopy" in
11605         "$define")
11606                 echo "Checking to see if bcopy() can do overlapping copies..." >&4
11607                 $cat >try.c <<EOCP
11608 #$i_memory I_MEMORY
11609 #$i_stdlib I_STDLIB
11610 #$i_string I_STRING
11611 #$i_unistd I_UNISTD
11612 EOCP
11613         $cat >>try.c <<'EOCP'
11614 #include <stdio.h>
11615 #ifdef I_MEMORY
11616 #  include <memory.h>
11617 #endif
11618 #ifdef I_STDLIB
11619 #  include <stdlib.h>
11620 #endif
11621 #ifdef I_STRING
11622 #  include <string.h>
11623 #else
11624 #  include <strings.h>
11625 #endif
11626 #ifdef I_UNISTD
11627 #  include <unistd.h>  /* Needed for NetBSD */
11628 #endif
11629 int main()
11630 {
11631 char buf[128], abc[128];
11632 char *b;
11633 int len;
11634 int off;
11635 int align;
11636
11637 /* Copy "abcde..." string to char abc[] so that gcc doesn't
11638    try to store the string in read-only memory. */
11639 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
11640
11641 for (align = 7; align >= 0; align--) {
11642         for (len = 36; len; len--) {
11643                 b = buf+align;
11644                 bcopy(abc, b, len);
11645                 for (off = 1; off <= len; off++) {
11646                         bcopy(b, b+off, len);
11647                         bcopy(b+off, b, len);
11648                         if (bcmp(b, abc, len))
11649                                 exit(1);
11650                 }
11651         }
11652 }
11653 exit(0);
11654 }
11655 EOCP
11656                 set try
11657                 if eval $compile_ok; then
11658                         if ./try 2>/dev/null; then
11659                                 echo "Yes, it can."
11660                                 val="$define"
11661                         else
11662                                 echo "It can't, sorry."
11663                         fi
11664                 else
11665                         echo "(I can't compile the test program, so we'll assume not...)"
11666                 fi
11667                 ;;
11668         esac
11669         $rm -f try.* try core
11670         ;;
11671 esac
11672 set d_safebcpy
11673 eval $setvar
11674
11675 : can memcpy handle overlapping blocks?
11676 echo " "
11677 val="$undef"
11678 case "$d_memmove" in
11679 "$define") echo "I'll use memmove() instead of memcpy() for overlapping copies." ;;
11680 *)      case "$d_memcpy" in
11681         "$define")
11682                 echo "Checking to see if memcpy() can do overlapping copies..." >&4
11683                 $cat >try.c <<EOCP
11684 #$i_memory I_MEMORY
11685 #$i_stdlib I_STDLIB
11686 #$i_string I_STRING
11687 #$i_unistd I_UNISTD
11688 EOCP
11689         $cat >>try.c <<'EOCP'
11690 #include <stdio.h>
11691 #ifdef I_MEMORY
11692 #  include <memory.h>
11693 #endif
11694 #ifdef I_STDLIB
11695 #  include <stdlib.h>
11696 #endif
11697 #ifdef I_STRING
11698 #  include <string.h>
11699 #else
11700 #  include <strings.h>
11701 #endif
11702 #ifdef I_UNISTD
11703 #  include <unistd.h>  /* Needed for NetBSD */
11704 #endif
11705 int main()
11706 {
11707 char buf[128], abc[128];
11708 char *b;
11709 int len;
11710 int off;
11711 int align;
11712
11713 /* Copy "abcde..." string to char abc[] so that gcc doesn't
11714    try to store the string in read-only memory. */
11715 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
11716
11717 for (align = 7; align >= 0; align--) {
11718         for (len = 36; len; len--) {
11719                 b = buf+align;
11720                 memcpy(b, abc, len);
11721                 for (off = 1; off <= len; off++) {
11722                         memcpy(b+off, b, len);
11723                         memcpy(b, b+off, len);
11724                         if (memcmp(b, abc, len))
11725                                 exit(1);
11726                 }
11727         }
11728 }
11729 exit(0);
11730 }
11731 EOCP
11732                 set try
11733                 if eval $compile_ok; then
11734                         if ./try 2>/dev/null; then
11735                                 echo "Yes, it can."
11736                                 val="$define"
11737                         else
11738                                 echo "It can't, sorry."
11739                         fi
11740                 else
11741                         echo "(I can't compile the test program, so we'll assume not...)"
11742                 fi
11743                 ;;
11744         esac
11745         $rm -f try.* try core
11746         ;;
11747 esac
11748 set d_safemcpy
11749 eval $setvar
11750
11751 : can memcmp be trusted to compare relative magnitude?
11752 val="$undef"
11753 case "$d_memcmp" in
11754 "$define")
11755         echo " "
11756         echo "Checking if your memcmp() can compare relative magnitude..." >&4
11757         $cat >try.c <<EOCP
11758 #$i_memory I_MEMORY
11759 #$i_stdlib I_STDLIB
11760 #$i_string I_STRING
11761 #$i_unistd I_UNISTD
11762 EOCP
11763         $cat >>try.c <<'EOCP'
11764 #include <stdio.h>
11765 #ifdef I_MEMORY
11766 #  include <memory.h>
11767 #endif
11768 #ifdef I_STDLIB
11769 #  include <stdlib.h>
11770 #endif
11771 #ifdef I_STRING
11772 #  include <string.h>
11773 #else
11774 #  include <strings.h>
11775 #endif
11776 #ifdef I_UNISTD
11777 #  include <unistd.h>  /* Needed for NetBSD */
11778 #endif
11779 int main()
11780 {
11781 char a = -1;
11782 char b = 0;
11783 if ((a < b) && memcmp(&a, &b, 1) < 0)
11784         exit(1);
11785 exit(0);
11786 }
11787 EOCP
11788         set try
11789         if eval $compile_ok; then
11790                 if $run ./try 2>/dev/null; then
11791                         echo "Yes, it can."
11792                         val="$define"
11793                 else
11794                         echo "No, it can't (it uses signed chars)."
11795                 fi
11796         else
11797                 echo "(I can't compile the test program, so we'll assume not...)"
11798         fi
11799         ;;
11800 esac
11801 $rm -f try.* try core
11802 set d_sanemcmp
11803 eval $setvar
11804
11805 : see if prototype for sbrk is available
11806 echo " "
11807 set d_sbrkproto sbrk $i_unistd unistd.h
11808 eval $hasproto
11809
11810 : see if select exists
11811 set select d_select
11812 eval $inlibc
11813
11814 : see if semctl exists
11815 set semctl d_semctl
11816 eval $inlibc
11817
11818 : see if semget exists
11819 set semget d_semget
11820 eval $inlibc
11821
11822 : see if semop exists
11823 set semop d_semop
11824 eval $inlibc
11825
11826 : see how much of the 'sem*(2)' library is present.
11827 h_sem=true
11828 echo " "
11829 case "$d_semctl$d_semget$d_semop" in
11830 *"$undef"*) h_sem=false;;
11831 esac
11832 case "$osname" in
11833 freebsd)
11834     case "`ipcs 2>&1`" in
11835     "SVID messages"*"not configured"*)
11836         echo "Your $osname does not have the sem*(2) configured." >&4
11837         h_sem=false
11838         val="$undef"
11839         set semctl d_semctl
11840         eval $setvar
11841         set semget d_semget
11842         eval $setvar
11843         set semop d_semop
11844         eval $setvar
11845         ;;
11846     esac
11847     ;;
11848 esac
11849 : we could also check for sys/ipc.h ...
11850 if $h_sem && $test `./findhdr sys/sem.h`; then
11851         echo "You have the full sem*(2) library." >&4
11852         val="$define"
11853 else
11854         echo "You don't have the full sem*(2) library." >&4
11855         val="$undef"
11856 fi
11857 set d_sem
11858 eval $setvar
11859
11860 : see whether sys/sem.h defines union semun
11861 echo " "
11862 $cat > try.c <<'END'
11863 #include <sys/types.h>
11864 #include <sys/ipc.h>
11865 #include <sys/sem.h>
11866 int main () { union semun semun; semun.buf = 0; }
11867 END
11868 set try
11869 if eval $compile; then
11870     echo "You have union semun in <sys/sem.h>." >&4
11871     val="$define"
11872 else
11873     echo "You do not have union semun in <sys/sem.h>." >&4
11874     val="$undef"
11875 fi
11876 $rm -f try try.c try.h
11877 set d_union_semun
11878 eval $setvar
11879
11880 : see how to do semctl IPC_STAT
11881 case "$d_sem" in
11882 $define)
11883     : see whether semctl IPC_STAT can use union semun
11884     echo " "
11885     $cat > try.h <<END
11886 #ifndef S_IRUSR
11887 #   ifdef S_IREAD
11888 #       define S_IRUSR S_IREAD
11889 #       define S_IWUSR S_IWRITE
11890 #       define S_IXUSR S_IEXEC
11891 #   else
11892 #       define S_IRUSR 0400
11893 #       define S_IWUSR 0200
11894 #       define S_IXUSR 0100
11895 #   endif
11896 #   define S_IRGRP (S_IRUSR>>3)
11897 #   define S_IWGRP (S_IWUSR>>3)
11898 #   define S_IXGRP (S_IXUSR>>3)
11899 #   define S_IROTH (S_IRUSR>>6)
11900 #   define S_IWOTH (S_IWUSR>>6)
11901 #   define S_IXOTH (S_IXUSR>>6)
11902 #endif
11903 #ifndef S_IRWXU
11904 #   define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
11905 #   define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
11906 #   define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
11907 #endif
11908 END
11909
11910     $cat > try.c <<END
11911 #include <sys/types.h>
11912 #include <sys/ipc.h>
11913 #include <sys/sem.h>
11914 #include <sys/stat.h>
11915 #include <stdio.h>
11916 #include <errno.h>
11917 #include "try.h"
11918 #ifndef errno
11919 extern int errno;
11920 #endif
11921 #$d_union_semun HAS_UNION_SEMUN
11922 int main() {
11923     union semun
11924 #ifndef HAS_UNION_SEMUN
11925     {
11926         int val;
11927         struct semid_ds *buf;
11928         unsigned short *array;
11929     }
11930 #endif
11931     arg;
11932     int sem, st;
11933
11934 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
11935     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
11936     if (sem > -1) {
11937         struct semid_ds argbuf;
11938         arg.buf = &argbuf;
11939 #       ifdef IPC_STAT
11940         st = semctl(sem, 0, IPC_STAT, arg);
11941         if (st == 0)
11942             printf("semun\n");
11943         else
11944 #       endif /* IPC_STAT */
11945             printf("semctl IPC_STAT failed: errno = %d\n", errno);
11946 #       ifdef IPC_RMID
11947         if (semctl(sem, 0, IPC_RMID, arg) != 0)
11948 #       endif /* IPC_RMID */
11949             printf("semctl IPC_RMID failed: errno = %d\n", errno);
11950     } else
11951 #endif /* IPC_PRIVATE && ... */
11952         printf("semget failed: errno = %d\n", errno);
11953   return 0;
11954 }
11955 END
11956     val="$undef"
11957     set try
11958     if eval $compile; then
11959         xxx=`$run ./try`
11960         case "$xxx" in
11961         semun) val="$define" ;;
11962         esac
11963     fi
11964     $rm -f try try.c
11965     set d_semctl_semun
11966     eval $setvar
11967     case "$d_semctl_semun" in
11968     $define)
11969         echo "You can use union semun for semctl IPC_STAT." >&4
11970         also='also'
11971         ;;
11972     *)  echo "You cannot use union semun for semctl IPC_STAT." >&4
11973         also=''
11974         ;;
11975     esac
11976
11977     : see whether semctl IPC_STAT can use struct semid_ds pointer
11978     $cat > try.c <<'END'
11979 #include <sys/types.h>
11980 #include <sys/ipc.h>
11981 #include <sys/sem.h>
11982 #include <sys/stat.h>
11983 #include "try.h"
11984 #include <stdio.h>
11985 #include <errno.h>
11986 #ifndef errno
11987 extern int errno;
11988 #endif
11989 int main() {
11990     struct semid_ds arg;
11991     int sem, st;
11992
11993 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) &&  defined(S_IRWXO) && defined(IPC_CREAT)
11994     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
11995     if (sem > -1) {
11996 #       ifdef IPC_STAT
11997         st = semctl(sem, 0, IPC_STAT, &arg);
11998         if (st == 0)
11999             printf("semid_ds\n");
12000         else
12001 #       endif /* IPC_STAT */
12002             printf("semctl IPC_STAT failed: errno = %d\n", errno);
12003 #       ifdef IPC_RMID
12004         if (semctl(sem, 0, IPC_RMID, &arg) != 0)
12005 #       endif /* IPC_RMID */
12006             printf("semctl IPC_RMID failed: errno = %d\n", errno);
12007     } else
12008 #endif /* IPC_PRIVATE && ... */
12009         printf("semget failed: errno = %d\n", errno);
12010
12011     return 0;
12012 }
12013 END
12014     val="$undef"
12015     set try
12016     if eval $compile; then
12017         xxx=`$run ./try`
12018         case "$xxx" in
12019         semid_ds) val="$define" ;;
12020         esac
12021     fi
12022     $rm -f try try.c
12023     set d_semctl_semid_ds
12024     eval $setvar
12025     case "$d_semctl_semid_ds" in
12026     $define)
12027         echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
12028         ;;
12029     *)  echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
12030         ;;
12031     esac
12032     $rm -f try.h
12033     ;;
12034 *)  val="$undef"
12035
12036     # We do not have the full sem*(2) library, so assume we can not
12037     # use either.
12038
12039     set d_semctl_semun
12040     eval $setvar
12041
12042     set d_semctl_semid_ds
12043     eval $setvar
12044     ;;
12045 esac
12046
12047 : see if sendmsg exists
12048 set sendmsg d_sendmsg
12049 eval $inlibc
12050
12051 : see if setegid exists
12052 set setegid d_setegid
12053 eval $inlibc
12054
12055 : see if seteuid exists
12056 set seteuid d_seteuid
12057 eval $inlibc
12058
12059 : see if setgrent exists
12060 set setgrent d_setgrent
12061 eval $inlibc
12062
12063 : see if sethostent exists
12064 set sethostent d_sethent
12065 eval $inlibc
12066
12067 : see if setitimer exists
12068 set setitimer d_setitimer
12069 eval $inlibc
12070
12071 : see if setlinebuf exists
12072 set setlinebuf d_setlinebuf
12073 eval $inlibc
12074
12075 : see if setlocale exists
12076 set setlocale d_setlocale
12077 eval $inlibc
12078
12079 : see if setnetent exists
12080 set setnetent d_setnent
12081 eval $inlibc
12082
12083 : see if setprotoent exists
12084 set setprotoent d_setpent
12085 eval $inlibc
12086
12087 : see if setpgid exists
12088 set setpgid d_setpgid
12089 eval $inlibc
12090
12091 : see if setpgrp2 exists
12092 set setpgrp2 d_setpgrp2
12093 eval $inlibc
12094
12095 : see if setpriority exists
12096 set setpriority d_setprior
12097 eval $inlibc
12098
12099 : see if setproctitle exists
12100 set setproctitle d_setproctitle
12101 eval $inlibc
12102
12103 : see if setpwent exists
12104 set setpwent d_setpwent
12105 eval $inlibc
12106
12107 : see if setregid exists
12108 set setregid d_setregid
12109 eval $inlibc
12110 set setresgid d_setresgid
12111 eval $inlibc
12112
12113 : see if setreuid exists
12114 set setreuid d_setreuid
12115 eval $inlibc
12116 set setresuid d_setresuid
12117 eval $inlibc
12118
12119 : see if setrgid exists
12120 set setrgid d_setrgid
12121 eval $inlibc
12122
12123 : see if setruid exists
12124 set setruid d_setruid
12125 eval $inlibc
12126
12127 : see if setservent exists
12128 set setservent d_setsent
12129 eval $inlibc
12130
12131 : see if setsid exists
12132 set setsid d_setsid
12133 eval $inlibc
12134
12135 : see if setvbuf exists
12136 set setvbuf d_setvbuf
12137 eval $inlibc
12138
12139 : see if sfio.h is available
12140 set sfio.h i_sfio
12141 eval $inhdr
12142
12143
12144 : see if sfio library is available
12145 case "$i_sfio" in
12146 $define)
12147         val=''
12148         set sfreserve val
12149         eval $inlibc
12150         ;;
12151 *)
12152         val="$undef"
12153         ;;
12154 esac
12155 : Ok, but do we want to use it.
12156 case "$val" in
12157 $define)
12158         case "$usesfio" in
12159         true|$define|[yY]*) dflt='y';;
12160         *) dflt='n';;
12161         esac
12162         echo "$package can use the sfio library, but it is experimental."
12163         case "$useperlio" in
12164         "$undef")
12165             echo "For sfio also the PerlIO abstraction layer is needed."
12166             echo "Earlier you said you wouldn't want that."
12167             ;;
12168         esac
12169         rp="You seem to have sfio available, do you want to try using it?"
12170         . ./myread
12171         case "$ans" in
12172         y|Y)    echo "Ok, turning on both sfio and PerlIO, then."
12173                 useperlio="$define"
12174                 val="$define"
12175                 ;;
12176         *)      echo "Ok, avoiding sfio this time.  I'll use stdio instead."
12177                 val="$undef"
12178                 ;;
12179         esac
12180         ;;
12181 *)      case "$usesfio" in
12182         true|$define|[yY]*)
12183                 echo "Sorry, cannot find sfio on this machine." >&4
12184                 echo "Ignoring your setting of usesfio=$usesfio." >&4
12185                 val="$undef"
12186                 ;;
12187         esac
12188         ;;
12189 esac
12190 set d_sfio
12191 eval $setvar
12192 case "$d_sfio" in
12193 $define) usesfio='true';;
12194 *) usesfio='false';;
12195 esac
12196 case "$d_sfio" in
12197 $define) ;;
12198 *)      : Remove sfio from list of libraries to use
12199         case "$libs" in
12200         *-lsfio*)
12201                 echo "Removing unneeded -lsfio from library list" >&4
12202                 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
12203                 shift
12204                 libs="$*"
12205                 echo "libs = $libs" >&4
12206                 ;;
12207         esac
12208 ;;
12209 esac
12210
12211
12212 : see if shmctl exists
12213 set shmctl d_shmctl
12214 eval $inlibc
12215
12216 : see if shmget exists
12217 set shmget d_shmget
12218 eval $inlibc
12219
12220 : see if shmat exists
12221 set shmat d_shmat
12222 eval $inlibc
12223 : see what shmat returns
12224 case "$d_shmat" in
12225 "$define")
12226         $cat >shmat.c <<'END'
12227 #include <sys/shm.h>
12228 void *shmat();
12229 END
12230         if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
12231                 shmattype='void *'
12232         else
12233                 shmattype='char *'
12234         fi
12235         echo "and it returns ($shmattype)." >&4
12236         : see if a prototype for shmat is available
12237         xxx=`./findhdr sys/shm.h`
12238         $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
12239         if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
12240                 val="$define"
12241         else
12242                 val="$undef"
12243         fi
12244         $rm -f shmat.[co]
12245         ;;
12246 *)
12247         val="$undef"
12248         ;;
12249 esac
12250 set d_shmatprototype
12251 eval $setvar
12252
12253 : see if shmdt exists
12254 set shmdt d_shmdt
12255 eval $inlibc
12256
12257 : see how much of the 'shm*(2)' library is present.
12258 h_shm=true
12259 echo " "
12260 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
12261 *"$undef"*) h_shm=false;;
12262 esac
12263 case "$osname" in
12264 freebsd)
12265     case "`ipcs 2>&1`" in
12266     "SVID shared memory"*"not configured"*)
12267         echo "Your $osname does not have the shm*(2) configured." >&4
12268         h_shm=false
12269         val="$undef"
12270         set shmctl d_shmctl
12271         evat $setvar
12272         set shmget d_shmget
12273         evat $setvar
12274         set shmat d_shmat
12275         evat $setvar
12276         set shmdt d_shmdt
12277         evat $setvar
12278         ;;
12279     esac
12280     ;;
12281 esac
12282 : we could also check for sys/ipc.h ...
12283 if $h_shm && $test `./findhdr sys/shm.h`; then
12284         echo "You have the full shm*(2) library." >&4
12285         val="$define"
12286 else
12287         echo "You don't have the full shm*(2) library." >&4
12288         val="$undef"
12289 fi
12290 set d_shm
12291 eval $setvar
12292
12293 echo " "
12294 : see if we have sigaction
12295 if set sigaction val -f d_sigaction; eval $csym; $val; then
12296         echo 'sigaction() found.' >&4
12297         $cat > try.c <<'EOP'
12298 #include <stdio.h>
12299 #include <sys/types.h>
12300 #include <signal.h>
12301 int main()
12302 {
12303     struct sigaction act, oact;
12304     act.sa_flags = 0;
12305     oact.sa_handler = 0;
12306     /* so that act and oact are used */
12307     exit(act.sa_flags == 0 &&  oact.sa_handler == 0);
12308 }
12309 EOP
12310         set try
12311         if eval $compile_ok; then
12312                 val="$define"
12313         else
12314                 echo "But you don't seem to have a useable struct sigaction." >&4
12315                 val="$undef"
12316         fi
12317 else
12318         echo 'sigaction NOT found.' >&4
12319         val="$undef"
12320 fi
12321 set d_sigaction; eval $setvar
12322 $rm -f try try$_o try.c
12323
12324 : see if sigprocmask exists
12325 set sigprocmask d_sigprocmask
12326 eval $inlibc
12327
12328 : see if sigsetjmp exists
12329 echo " "
12330 case "$d_sigsetjmp" in
12331 '')
12332         $cat >try.c <<'EOP'
12333 #include <setjmp.h>
12334 sigjmp_buf env;
12335 int set = 1;
12336 int main()
12337 {
12338         if (sigsetjmp(env,1))
12339                 exit(set);
12340         set = 0;
12341         siglongjmp(env, 1);
12342         exit(1);
12343 }
12344 EOP
12345         set try
12346         if eval $compile; then
12347                 if $run ./try >/dev/null 2>&1; then
12348                         echo "POSIX sigsetjmp found." >&4
12349                         val="$define"
12350                 else
12351                         $cat >&4 <<EOM
12352 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
12353 I'll ignore them.
12354 EOM
12355                         val="$undef"
12356                 fi
12357         else
12358                 echo "sigsetjmp not found." >&4
12359                 val="$undef"
12360         fi
12361         ;;
12362 *) val="$d_sigsetjmp"
12363         case "$d_sigsetjmp" in
12364         $define) echo "POSIX sigsetjmp found." >&4;;
12365         $undef) echo "sigsetjmp not found." >&4;;
12366         esac
12367         ;;
12368 esac
12369 set d_sigsetjmp
12370 eval $setvar
12371 $rm -f try.c try
12372
12373 : see if sockatmark exists
12374 set sockatmark d_sockatmark
12375 eval $inlibc
12376
12377 : see if prototype for sockatmark is available
12378 echo " "
12379 set d_sockatmarkproto sockatmark $d_socket sys/socket.h
12380 eval $hasproto
12381
12382 : see if socks5_init exists
12383 set socks5_init d_socks5_init
12384 eval $inlibc
12385
12386 : see if prototype for setresgid is available
12387 echo " "
12388 set d_sresgproto setresgid $i_unistd unistd.h
12389 eval $hasproto
12390
12391 : see if prototype for setresuid is available
12392 echo " "
12393 set d_sresuproto setresuid $i_unistd unistd.h
12394 eval $hasproto
12395
12396 : see if sys/stat.h is available
12397 set sys/stat.h i_sysstat
12398 eval $inhdr
12399
12400
12401 : see if stat knows about block sizes
12402 echo " "
12403 echo "Checking to see if your struct stat has st_blocks field..." >&4
12404 set d_statblks stat st_blocks $i_sysstat sys/stat.h
12405 eval $hasfield
12406
12407
12408 : see if this is a sys/vfs.h system
12409 set sys/vfs.h i_sysvfs
12410 eval $inhdr
12411
12412
12413 : see if this is a sys/statfs.h system
12414 set sys/statfs.h i_sysstatfs
12415 eval $inhdr
12416
12417
12418 echo " "
12419 echo "Checking to see if your system supports struct statfs..." >&4
12420 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
12421 eval $hasstruct
12422 case "$d_statfs_s" in
12423 "$define")      echo "Yes, it does."   ;;
12424 *)              echo "No, it doesn't." ;;
12425 esac
12426
12427
12428
12429 : see if struct statfs knows about f_flags
12430 case "$d_statfs_s" in
12431 define) 
12432         echo " "
12433         echo "Checking to see if your struct statfs has f_flags field..." >&4
12434         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
12435         eval $hasfield
12436         ;;
12437 *)      val="$undef"
12438         set d_statfs_f_flags
12439         eval $setvar
12440         ;;
12441 esac
12442 case "$d_statfs_f_flags" in
12443 "$define")      echo "Yes, it does."   ;;
12444 *)              echo "No, it doesn't." ;;
12445 esac
12446
12447 : see if _ptr and _cnt from stdio act std
12448 echo " "
12449
12450 if $contains '_lbfsize' `./findhdr stdio.h` >/dev/null 2>&1 ; then
12451         echo "(Looks like you have stdio.h from BSD.)"
12452         case "$stdio_ptr" in
12453         '') stdio_ptr='((fp)->_p)'
12454                 ptr_lval=$define
12455                 ;;
12456         *)      ptr_lval=$d_stdio_ptr_lval;;
12457         esac
12458         case "$stdio_cnt" in
12459         '') stdio_cnt='((fp)->_r)'
12460                 cnt_lval=$define
12461                 ;;
12462         *)      cnt_lval=$d_stdio_cnt_lval;;
12463         esac
12464         case "$stdio_base" in
12465         '') stdio_base='((fp)->_ub._base ? (fp)->_ub._base : (fp)->_bf._base)';;
12466         esac
12467         case "$stdio_bufsiz" in
12468         '') stdio_bufsiz='((fp)->_ub._base ? (fp)->_ub._size : (fp)->_bf._size)';;
12469         esac
12470 elif $contains '_IO_fpos_t' `./findhdr stdio.h` `./findhdr libio.h` >/dev/null 2>&1 ; then
12471         echo "(Looks like you have stdio.h from Linux.)"
12472         case "$stdio_ptr" in
12473         '') stdio_ptr='((fp)->_IO_read_ptr)'
12474                 ptr_lval=$define
12475                 ;;
12476         *)      ptr_lval=$d_stdio_ptr_lval;;
12477         esac
12478         case "$stdio_cnt" in
12479         '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
12480                 cnt_lval=$undef
12481                 ;;
12482         *)      cnt_lval=$d_stdio_cnt_lval;;
12483         esac
12484         case "$stdio_base" in
12485         '') stdio_base='((fp)->_IO_read_base)';;
12486         esac
12487         case "$stdio_bufsiz" in
12488         '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
12489         esac
12490 else
12491         case "$stdio_ptr" in
12492         '') stdio_ptr='((fp)->_ptr)'
12493                 ptr_lval=$define
12494                 ;;
12495         *)      ptr_lval=$d_stdio_ptr_lval;;
12496         esac
12497         case "$stdio_cnt" in
12498         '') stdio_cnt='((fp)->_cnt)'
12499                 cnt_lval=$define
12500                 ;;
12501         *)      cnt_lval=$d_stdio_cnt_lval;;
12502         esac
12503         case "$stdio_base" in
12504         '') stdio_base='((fp)->_base)';;
12505         esac
12506         case "$stdio_bufsiz" in
12507         '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
12508         esac
12509 fi
12510
12511 : test whether _ptr and _cnt really work
12512 echo "Checking how std your stdio is..." >&4
12513 $cat >try.c <<EOP
12514 #include <stdio.h>
12515 #define FILE_ptr(fp)    $stdio_ptr
12516 #define FILE_cnt(fp)    $stdio_cnt
12517 int main() {
12518         FILE *fp = fopen("try.c", "r");
12519         char c = getc(fp);
12520         if (
12521                 18 <= FILE_cnt(fp) &&
12522                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
12523         )
12524                 exit(0);
12525         exit(1);
12526 }
12527 EOP
12528 val="$undef"
12529 set try
12530 if eval $compile && $to try.c; then
12531         if $run ./try; then
12532                 echo "Your stdio acts pretty std."
12533                 val="$define"
12534         else
12535                 echo "Your stdio isn't very std."
12536         fi
12537 else
12538         echo "Your stdio doesn't appear very std."
12539 fi
12540 $rm -f try.c try
12541 set d_stdstdio
12542 eval $setvar
12543
12544 : Can _ptr be used as an lvalue?
12545 case "$d_stdstdio$ptr_lval" in
12546 $define$define) val=$define ;;
12547 *) val=$undef ;;
12548 esac
12549 set d_stdio_ptr_lval
12550 eval $setvar
12551
12552 : Can _cnt be used as an lvalue?
12553 case "$d_stdstdio$cnt_lval" in
12554 $define$define) val=$define ;;
12555 *) val=$undef ;;
12556 esac
12557 set d_stdio_cnt_lval
12558 eval $setvar
12559
12560
12561 : test whether setting _ptr sets _cnt as a side effect
12562 d_stdio_ptr_lval_sets_cnt="$undef"
12563 d_stdio_ptr_lval_nochange_cnt="$undef"
12564 case "$d_stdio_ptr_lval$d_stdstdio" in
12565 $define$define)
12566         echo "Checking to see what happens if we set the stdio ptr..." >&4
12567 $cat >try.c <<EOP
12568 #include <stdio.h>
12569 /* Can we scream? */
12570 /* Eat dust sed :-) */
12571 /* In the buffer space, no one can hear you scream. */
12572 #define FILE_ptr(fp)    $stdio_ptr
12573 #define FILE_cnt(fp)    $stdio_cnt
12574 #include <sys/types.h>
12575 int main() {
12576         FILE *fp = fopen("try.c", "r");
12577         int c;
12578         char *ptr;
12579         size_t cnt;
12580         if (!fp) {
12581             puts("Fail even to read");
12582             exit(1);
12583         }
12584         c = getc(fp); /* Read away the first # */
12585         if (c == EOF) {
12586             puts("Fail even to read");
12587             exit(1);
12588         }
12589         if (!(
12590                 18 <= FILE_cnt(fp) &&
12591                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
12592         )) {
12593                 puts("Fail even to read");
12594                 exit (1);
12595         }
12596         ptr = (char*) FILE_ptr(fp);
12597         cnt = (size_t)FILE_cnt(fp);
12598
12599         FILE_ptr(fp) += 42;
12600
12601         if ((char*)FILE_ptr(fp) != (ptr + 42)) {
12602                 printf("Fail ptr check %p != %p", FILE_ptr(fp), (ptr + 42));
12603                 exit (1);
12604         }
12605         if (FILE_cnt(fp) <= 20) {
12606                 printf ("Fail (<20 chars to test)");
12607                 exit (1);
12608         }
12609         if (strncmp(FILE_ptr(fp), "Eat dust sed :-) */\n", 20) != 0) {
12610                 puts("Fail compare");
12611                 exit (1);
12612         }
12613         if (cnt == FILE_cnt(fp)) {
12614                 puts("Pass_unchanged");
12615                 exit (0);
12616         }       
12617         if (FILE_cnt(fp) == (cnt - 42)) {
12618                 puts("Pass_changed");
12619                 exit (0);
12620         }
12621         printf("Fail count was %d now %d\n", cnt, FILE_cnt(fp));
12622         return 1;
12623
12624 }
12625 EOP
12626         set try
12627         if eval $compile && $to try.c; then
12628                 case `$run ./try` in
12629                 Pass_changed)
12630                         echo "Increasing ptr in your stdio decreases cnt by the same amount.  Good." >&4
12631                         d_stdio_ptr_lval_sets_cnt="$define" ;;
12632                 Pass_unchanged)
12633                         echo "Increasing ptr in your stdio leaves cnt unchanged.  Good." >&4
12634                         d_stdio_ptr_lval_nochange_cnt="$define" ;;
12635                 Fail*)
12636                         echo "Increasing ptr in your stdio didn't do exactly what I expected.  We'll not be doing that then." >&4 ;;
12637                 *)
12638                         echo "It appears attempting to set ptr in your stdio is a bad plan." >&4 ;;
12639         esac
12640         else
12641                 echo "It seems we can't set ptr in your stdio.  Nevermind." >&4
12642         fi
12643         $rm -f try.c try
12644         ;;
12645 esac
12646
12647 : see if _base is also standard
12648 val="$undef"
12649 case "$d_stdstdio" in
12650 $define)
12651         $cat >try.c <<EOP
12652 #include <stdio.h>
12653 #define FILE_base(fp)   $stdio_base
12654 #define FILE_bufsiz(fp) $stdio_bufsiz
12655 int main() {
12656         FILE *fp = fopen("try.c", "r");
12657         char c = getc(fp);
12658         if (
12659                 19 <= FILE_bufsiz(fp) &&
12660                 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
12661         )
12662                 exit(0);
12663         exit(1);
12664 }
12665 EOP
12666         set try
12667         if eval $compile && $to try.c; then
12668                 if $run ./try; then
12669                         echo "And its _base field acts std."
12670                         val="$define"
12671                 else
12672                         echo "But its _base field isn't std."
12673                 fi
12674         else
12675                 echo "However, it seems to be lacking the _base field."
12676         fi
12677         $rm -f try.c try
12678         ;;
12679 esac
12680 set d_stdiobase
12681 eval $setvar
12682
12683 $cat >&4 <<EOM
12684 Checking how to access stdio streams by file descriptor number...
12685 EOM
12686 case "$stdio_stream_array" in
12687 '')     $cat >try.c <<EOCP
12688 #include <stdio.h>
12689 int main() {
12690   if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
12691     printf("yes\n");
12692 }
12693 EOCP
12694         for s in _iob __iob __sF
12695         do
12696                 set try -DSTDIO_STREAM_ARRAY=$s
12697                 if eval $compile; then
12698                         case "`$run ./try`" in
12699                         yes)    stdio_stream_array=$s; break ;;
12700                         esac
12701                 fi
12702         done
12703         $rm -f try.* try$exe_ext
12704 esac
12705 case "$stdio_stream_array" in
12706 '')     $cat >&4 <<EOM
12707 I can't figure out how to access stdio streams by file descriptor number.
12708 EOM
12709         d_stdio_stream_array="$undef"
12710         ;;
12711 *)      $cat >&4 <<EOM
12712 You can access stdio streams by file descriptor number by the $stdio_stream_array array.
12713 EOM
12714         d_stdio_stream_array="$define"
12715         ;;
12716 esac
12717
12718 : see if strcoll exists
12719 set strcoll d_strcoll
12720 eval $inlibc
12721
12722 : check for structure copying
12723 echo " "
12724 echo "Checking to see if your C compiler can copy structs..." >&4
12725 $cat >try.c <<'EOCP'
12726 int main()
12727 {
12728         struct blurfl {
12729                 int dyick;
12730         } foo, bar;
12731
12732         foo = bar;
12733 }
12734 EOCP
12735 if $cc -c try.c >/dev/null 2>&1 ; then
12736         val="$define"
12737         echo "Yup, it can."
12738 else
12739         val="$undef"
12740         echo "Nope, it can't."
12741 fi
12742 set d_strctcpy
12743 eval $setvar
12744 $rm -f try.*
12745
12746 : see if strerror and/or sys_errlist[] exist
12747 echo " "
12748 if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
12749     if set strerror val -f d_strerror; eval $csym; $val; then
12750                 echo 'strerror() found.' >&4
12751                 d_strerror="$define"
12752                 d_strerrm='strerror(e)'
12753                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
12754                         echo "(You also have sys_errlist[], so we could roll our own strerror.)" 
12755                         d_syserrlst="$define"
12756                 else
12757                         echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
12758                         d_syserrlst="$undef"
12759                 fi
12760     elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
12761                         $contains '#[   ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
12762                 echo 'strerror() found in string header.' >&4
12763                 d_strerror="$define"
12764                 d_strerrm='strerror(e)'
12765                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
12766                         echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
12767                                 d_syserrlst="$define"
12768                 else
12769                         echo "(You don't appear to have any sys_errlist[], how can this be?)"
12770                         d_syserrlst="$undef"
12771                 fi
12772     elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
12773                 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
12774                 d_strerror="$undef"
12775                 d_syserrlst="$define"
12776                 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
12777     else
12778                 echo 'strerror() and sys_errlist[] NOT found.' >&4
12779                 d_strerror="$undef"
12780                 d_syserrlst="$undef"
12781                 d_strerrm='"unknown"'
12782     fi
12783 fi
12784
12785 : see if strftime exists
12786 set strftime d_strftime
12787 eval $inlibc
12788
12789 : see if strtod exists
12790 set strtod d_strtod
12791 eval $inlibc
12792
12793 : see if strtol exists
12794 set strtol d_strtol
12795 eval $inlibc
12796
12797 : see if strtold exists
12798 set strtold d_strtold
12799 eval $inlibc
12800
12801 : see if strtoll exists
12802 set strtoll d_strtoll
12803 eval $inlibc
12804
12805 case "$d_longlong-$d_strtoll" in
12806 "$define-$define")
12807         $cat <<EOM
12808 Checking whether your strtoll() works okay...
12809 EOM
12810         $cat >try.c <<'EOCP'
12811 #include <errno.h>
12812 #ifdef __hpux
12813 #define strtoll __strtoll
12814 #endif
12815 #ifdef __EMX__
12816 #define strtoll _strtoll
12817 #endif
12818 #include <stdio.h>
12819 extern long long int strtoll(char *s, char **, int); 
12820 static int bad = 0;
12821 int check(char *s, long long ell, int een) {
12822         long long gll;
12823         errno = 0;
12824         gll = strtoll(s, 0, 10);
12825         if (!((gll == ell) && (errno == een)))
12826                 bad++;
12827 }
12828 int main() {
12829         check(" 1",                                      1LL, 0);
12830         check(" 0",                                      0LL, 0);
12831         check("-1",                                     -1LL, 0);
12832         check("-9223372036854775808", -9223372036854775808LL, 0);
12833         check("-9223372036854775808", -9223372036854775808LL, 0);
12834         check(" 9223372036854775807",  9223372036854775807LL, 0);
12835         check("-9223372036854775808", -9223372036854775808LL, 0);
12836         check(" 9223372036854775808",  9223372036854775807LL, ERANGE);
12837         check("-9223372036854775809", -9223372036854775808LL, ERANGE);
12838         if (!bad)
12839                 printf("ok\n");
12840 }
12841 EOCP
12842         set try
12843         if eval $compile; then
12844                 yyy=`$run ./try`
12845                 case "$yyy" in
12846                 ok) echo "Your strtoll() seems to be working okay." ;;
12847                 *) cat <<EOM >&4
12848 Your strtoll() doesn't seem to be working okay.
12849 EOM
12850                    d_strtoll="$undef"
12851                    ;;
12852                 esac
12853         else
12854                 echo "(I can't seem to compile the test program--assuming it doesn't)"
12855                 d_strtoll="$undef"
12856         fi
12857         ;;
12858 esac
12859
12860 : see if strtoq exists
12861 set strtoq d_strtoq
12862 eval $inlibc
12863
12864 : see if strtoul exists
12865 set strtoul d_strtoul
12866 eval $inlibc
12867
12868 case "$d_strtoul" in
12869 "$define")
12870         $cat <<EOM
12871 Checking whether your strtoul() works okay...
12872 EOM
12873         $cat >try.c <<'EOCP'
12874 #include <errno.h>
12875 #include <stdio.h>
12876 extern unsigned long int strtoul(char *s, char **, int); 
12877 static int bad = 0;
12878 void check(char *s, unsigned long eul, int een) {
12879         unsigned long gul;
12880         errno = 0;
12881         gul = strtoul(s, 0, 10);
12882         if (!((gul == eul) && (errno == een)))
12883                 bad++;
12884 }
12885 int main() {
12886         check(" 1", 1L, 0);
12887         check(" 0", 0L, 0);
12888 EOCP
12889         case "$longsize" in
12890         8)
12891             $cat >>try.c <<'EOCP'
12892         check("18446744073709551615", 18446744073709551615UL, 0);
12893         check("18446744073709551616", 18446744073709551615UL, ERANGE);
12894 #if 0 /* strtoul() for /^-/ strings is undefined. */
12895         check("-1", 18446744073709551615UL, 0);
12896         check("-18446744073709551614", 2, 0);
12897         check("-18446744073709551615", 1, 0);
12898         check("-18446744073709551616", 18446744073709551615UL, ERANGE);
12899         check("-18446744073709551617", 18446744073709551615UL, ERANGE);
12900 #endif
12901 EOCP
12902                 ;;
12903         4)
12904                     $cat >>try.c <<'EOCP'
12905         check("4294967295", 4294967295UL, 0);
12906         check("4294967296", 4294967295UL, ERANGE);
12907 #if 0 /* strtoul() for /^-/ strings is undefined. */
12908         check("-1", 4294967295UL, 0);
12909         check("-4294967294", 2, 0);
12910         check("-4294967295", 1, 0);
12911         check("-4294967296", 4294967295UL, ERANGE);
12912         check("-4294967297", 4294967295UL, ERANGE);
12913 #endif
12914 EOCP
12915                 ;;
12916         *)
12917 : Should we write these tests to be more portable by sprintf-ing
12918 : ~0 and then manipulating that char string as input for strtol?
12919                 ;;
12920         esac
12921         $cat >>try.c <<'EOCP'
12922         if (!bad)
12923                 printf("ok\n");
12924         return 0;
12925 }
12926 EOCP
12927         set try
12928         if eval $compile; then
12929                 case "`$run ./try`" in
12930                 ok) echo "Your strtoul() seems to be working okay." ;;
12931                 *) cat <<EOM >&4
12932 Your strtoul() doesn't seem to be working okay.
12933 EOM
12934                    d_strtoul="$undef"
12935                    ;;
12936                 esac
12937         fi
12938         ;;
12939 esac
12940
12941 : see if strtoull exists
12942 set strtoull d_strtoull
12943 eval $inlibc
12944
12945 case "$d_longlong-$d_strtoull" in
12946 "$define-$define")
12947         $cat <<EOM
12948 Checking whether your strtoull() works okay...
12949 EOM
12950         $cat >try.c <<'EOCP'
12951 #include <errno.h>
12952 #ifdef __hpux
12953 #define strtoull __strtoull
12954 #endif
12955 #include <stdio.h>
12956 extern unsigned long long int strtoull(char *s, char **, int); 
12957 static int bad = 0;
12958 int check(char *s, long long eull, int een) {
12959         long long gull;
12960         errno = 0;
12961         gull = strtoull(s, 0, 10);
12962         if (!((gull == eull) && (errno == een)))
12963                 bad++;
12964 }
12965 int main() {
12966         check(" 1",                                        1LL, 0);
12967         check(" 0",                                        0LL, 0);
12968         check("18446744073709551615",  18446744073709551615ULL, 0);
12969         check("18446744073709551616",  18446744073709551615ULL, ERANGE);
12970 #if 0 /* strtoull() for /^-/ strings is undefined. */
12971         check("-1",                    18446744073709551615ULL, 0);
12972         check("-18446744073709551614",                     2LL, 0);
12973         check("-18446744073709551615",                     1LL, 0);
12974         check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
12975         check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
12976 #endif
12977         if (!bad)
12978                 printf("ok\n");
12979 }
12980 EOCP
12981         set try
12982         if eval $compile; then
12983                 case "`$run ./try`" in
12984                 ok) echo "Your strtoull() seems to be working okay." ;;
12985                 *) cat <<EOM >&4
12986 Your strtoull() doesn't seem to be working okay.
12987 EOM
12988                    d_strtoull="$undef"
12989                    ;;
12990                 esac
12991         fi
12992         ;;
12993 esac
12994
12995 : see if strtouq exists
12996 set strtouq d_strtouq
12997 eval $inlibc
12998
12999 case "$d_strtouq" in
13000 "$define")
13001         $cat <<EOM
13002 Checking whether your strtouq() works okay...
13003 EOM
13004         $cat >try.c <<'EOCP'
13005 #include <errno.h>
13006 #include <stdio.h>
13007 extern unsigned long long int strtouq(char *s, char **, int); 
13008 static int bad = 0;
13009 void check(char *s, unsigned long long eull, int een) {
13010         unsigned long long gull;
13011         errno = 0;
13012         gull = strtouq(s, 0, 10);
13013         if (!((gull == eull) && (errno == een)))
13014                 bad++;
13015 }
13016 int main() {
13017         check(" 1",                                        1LL, 0);
13018         check(" 0",                                        0LL, 0);
13019         check("18446744073709551615",  18446744073709551615ULL, 0);
13020         check("18446744073709551616",  18446744073709551615ULL, ERANGE);
13021 #if 0 /* strtouq() for /^-/ strings is undefined. */
13022         check("-1",                    18446744073709551615ULL, 0);
13023         check("-18446744073709551614",                     2LL, 0);
13024         check("-18446744073709551615",                     1LL, 0);
13025         check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
13026         check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
13027 #endif
13028         if (!bad)
13029                 printf("ok\n");
13030         return 0;
13031 }
13032 EOCP
13033         set try
13034         if eval $compile; then
13035                 case "`$run ./try`" in
13036                 ok) echo "Your strtouq() seems to be working okay." ;;
13037                 *) cat <<EOM >&4
13038 Your strtouq() doesn't seem to be working okay.
13039 EOM
13040                    d_strtouq="$undef"
13041                    ;;
13042                 esac
13043         fi
13044         ;;
13045 esac
13046
13047 : see if strxfrm exists
13048 set strxfrm d_strxfrm
13049 eval $inlibc
13050
13051 : see if symlink exists
13052 set symlink d_symlink
13053 eval $inlibc
13054
13055 : see if syscall exists
13056 set syscall d_syscall
13057 eval $inlibc
13058
13059 : see if prototype for syscall is available
13060 echo " "
13061 set d_syscallproto syscall $i_unistd unistd.h
13062 eval $hasproto
13063
13064 : see if sysconf exists
13065 set sysconf d_sysconf
13066 eval $inlibc
13067
13068 : see if system exists
13069 set system d_system
13070 eval $inlibc
13071
13072 : see if tcgetpgrp exists
13073 set tcgetpgrp d_tcgetpgrp
13074 eval $inlibc
13075
13076 : see if tcsetpgrp exists
13077 set tcsetpgrp d_tcsetpgrp
13078 eval $inlibc
13079
13080 : see if prototype for telldir is available
13081 echo " "
13082 set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
13083 eval $hasproto
13084
13085 : see if this is a sys/times.h system
13086 set sys/times.h i_systimes
13087 eval $inhdr
13088
13089 : see if times exists
13090 echo " "
13091 if set times val -f d_times; eval $csym; $val; then
13092         echo 'times() found.' >&4
13093         d_times="$define"
13094         inc=''
13095         case "$i_systimes" in
13096         "$define") inc='sys/times.h';;
13097         esac
13098         rp="What is the type returned by times() on this system?"
13099         set clock_t clocktype long stdio.h sys/types.h $inc
13100         eval $typedef_ask
13101 else
13102         echo 'times() NOT found, hope that will do.' >&4
13103         d_times="$undef"
13104         clocktype='int'
13105 fi
13106
13107 : see if truncate exists
13108 set truncate d_truncate
13109 eval $inlibc
13110
13111 : see if tzname[] exists
13112 echo " "
13113 if set tzname val -a d_tzname; eval $csym; $val; then
13114         val="$define"
13115         echo 'tzname[] found.' >&4
13116 else
13117         val="$undef"
13118         echo 'tzname[] NOT found.' >&4
13119 fi
13120 set d_tzname
13121 eval $setvar
13122
13123 case "$osname" in
13124 next|rhapsody|darwin) multiarch="$define" ;;
13125 esac
13126 case "$multiarch" in
13127 ''|[nN]*) multiarch="$undef" ;;
13128 esac
13129
13130 : check for ordering of bytes in a long
13131 echo " "
13132 case "$usecrosscompile$multiarch" in
13133 *$define*)
13134         $cat <<EOM
13135 You seem to be either cross-compiling or doing a multiarchitecture build,
13136 skipping the byteorder check.
13137
13138 EOM
13139         byteorder='ffff'
13140         ;;
13141 *)
13142         case "$byteorder" in
13143         '')
13144                 $cat <<'EOM'
13145 In the following, larger digits indicate more significance.  A big-endian
13146 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
13147 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
13148 machines may have weird orders like 3412.  A Cray will report 87654321,
13149 an Alpha will report 12345678. If the test program works the default is
13150 probably right.
13151 I'm now running the test program...
13152 EOM
13153                 $cat >try.c <<'EOCP'
13154 #include <stdio.h>
13155 int main()
13156 {
13157         int i;
13158         union {
13159                 unsigned long l;
13160                 char c[sizeof(long)];
13161         } u;
13162
13163         if (sizeof(long) > 4)
13164                 u.l = (0x08070605L << 32) | 0x04030201L;
13165         else
13166                 u.l = 0x04030201L;
13167         for (i = 0; i < sizeof(long); i++)
13168                 printf("%c", u.c[i]+'0');
13169         printf("\n");
13170         exit(0);
13171 }
13172 EOCP
13173                 xxx_prompt=y
13174                 set try
13175                 if eval $compile && ./try > /dev/null; then
13176                         dflt=`$run ./try`
13177                         case "$dflt" in
13178                         [1-4][1-4][1-4][1-4]|12345678|87654321)
13179                                 echo "(The test program ran ok.)"
13180                                 echo "byteorder=$dflt"
13181                                 xxx_prompt=n
13182                         ;;
13183                         ????|????????) echo "(The test program ran ok.)" ;;
13184                         *) echo "(The test program didn't run right for some reason.)" ;;
13185                         esac
13186                 else
13187                         dflt='4321'
13188                         cat <<'EOM'
13189 (I can't seem to compile the test program.  Guessing big-endian...)
13190 EOM
13191                 fi
13192                 case "$xxx_prompt" in
13193                 y)
13194                         rp="What is the order of bytes in a long?"
13195                         . ./myread
13196                         byteorder="$ans"
13197                         ;;
13198                 *)      byteorder=$dflt
13199                         ;;
13200                 esac
13201                 ;;
13202         esac
13203         $rm -f try.c try
13204         ;;
13205 esac
13206
13207
13208 $cat <<EOM
13209
13210 Checking to see whether you can access character data unalignedly...
13211 EOM
13212 $cat >try.c <<EOCP
13213 #include <stdio.h>
13214 #define U32 $u32type
13215 #define BYTEORDER $byteorder
13216 int main() {
13217 #if BYTEORDER == 0x1234 || BYTEORDER == 0x4321
13218     U8 buf[] = "\0\0\0\1\0\0\0\0";
13219     U32 *up;
13220     int i;
13221
13222     if (sizeof(U32) != 4) {
13223         printf("sizeof(U32) is not 4, but %d\n", sizeof(U32));
13224         exit(1);
13225     }
13226
13227     fflush(stdout);
13228
13229     for (i = 0; i < 4; i++) {
13230         up = (U32*)(buf + i);
13231         if (! ((*up == 1 << (8*i)) ||   /* big-endian */
13232                (*up == 1 << (8*(3-i)))  /* little-endian */
13233               )
13234            )
13235         {
13236             printf("read failed (%x)\n", *up);
13237             exit(2);
13238         }
13239     }
13240
13241     /* write test */
13242     for (i = 0; i < 4; i++) {
13243         up = (U32*)(buf + i);
13244         *up = 0xBeef;
13245         if (*up != 0xBeef) {
13246             printf("write failed (%x)\n", *up);
13247             exit(3);
13248         }
13249     }
13250
13251     exit(0);
13252 #else
13253     printf("1\n");
13254     exit(1);
13255 #endif
13256     return 0;
13257 }
13258 EOCP
13259 set try
13260 if eval $compile_ok; then
13261         echo "(Testing for character data alignment may dump core.)" >&4
13262         $run ./try 2>&1 >/dev/null
13263         case "$?" in
13264         0)      cat >&4 <<EOM
13265 You can access character data pretty unalignedly.
13266 EOM
13267                 d_u32align="$undef"
13268                 ;;
13269         *)      cat >&4 <<EOM
13270 It seems that you must access character data in an aligned manner.
13271 EOM
13272                 d_u32align="$define"
13273                 ;;
13274         esac
13275         $rm -f core core.try.* try.core
13276 else
13277         rp='Can you access character data at unaligned addresses?'
13278         dflt='n'
13279         . ./myread
13280         case "$ans" in
13281         [yY]*)  d_u32align="$undef"  ;;
13282         *)      d_u32align="$define" ;;
13283         esac
13284 fi
13285
13286 : see if ualarm exists
13287 set ualarm d_ualarm
13288 eval $inlibc
13289
13290 : see if umask exists
13291 set umask d_umask
13292 eval $inlibc
13293
13294 : see if usleep exists
13295 set usleep d_usleep
13296 eval $inlibc
13297
13298 : see if prototype for usleep is available
13299 echo " "
13300 set d_usleepproto usleep $i_unistd unistd.h
13301 eval $hasproto
13302
13303 : see if ustat exists
13304 set ustat d_ustat
13305 eval $inlibc
13306
13307 : backward compatibility for d_hvfork
13308 if test X$d_hvfork != X; then
13309         d_vfork="$d_hvfork"
13310         d_hvfork=''
13311 fi
13312 : see if there is a vfork
13313 val=''
13314 set vfork val
13315 eval $inlibc
13316
13317 : Ok, but do we want to use it. vfork is reportedly unreliable in 
13318 : perl on Solaris 2.x, and probably elsewhere.
13319 case "$val" in
13320 $define)
13321         echo " "
13322         case "$usevfork" in
13323         false) dflt='n';;
13324         *) dflt='y';;
13325         esac
13326         cat <<'EOM'
13327  
13328 Perl can only use a vfork() that doesn't suffer from strict
13329 restrictions on calling functions or modifying global data in
13330 the child.  For example, glibc-2.1 contains such a vfork()
13331 that is unsuitable.  If your system provides a proper fork()
13332 call, chances are that you do NOT want perl to use vfork().
13333
13334 EOM
13335         rp="Do you still want to use vfork()?"
13336         . ./myread
13337         case "$ans" in
13338         y|Y) ;;
13339         *)
13340                 echo "Ok, we won't use vfork()."
13341                 val="$undef"
13342                 ;;
13343         esac
13344         ;;
13345 esac
13346 set d_vfork
13347 eval $setvar
13348 case "$d_vfork" in
13349 $define) usevfork='true';;
13350 *) usevfork='false';;
13351 esac
13352
13353 : see if this is an sysdir system
13354 set sys/dir.h i_sysdir
13355 eval $inhdr
13356
13357 : see if this is an sysndir system
13358 set sys/ndir.h i_sysndir
13359 eval $inhdr
13360
13361 : see if closedir exists
13362 set closedir d_closedir
13363 eval $inlibc
13364
13365 case "$d_closedir" in
13366 "$define")
13367         echo " "
13368         echo "Checking whether closedir() returns a status..." >&4
13369         cat > try.c <<EOM
13370 #$i_dirent I_DIRENT             /**/
13371 #$i_sysdir I_SYS_DIR            /**/
13372 #$i_sysndir I_SYS_NDIR          /**/
13373 #$i_systypes I_SYS_TYPES        /**/
13374
13375 #if defined(I_SYS_TYPES)
13376 #include <sys/types.h>
13377 #endif
13378 #if defined(I_DIRENT)
13379 #include <dirent.h>
13380 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
13381 #include <sys/dir.h>
13382 #endif
13383 #else
13384 #ifdef I_SYS_NDIR
13385 #include <sys/ndir.h>
13386 #else
13387 #ifdef I_SYS_DIR
13388 #ifdef hp9000s500
13389 #include <ndir.h>       /* may be wrong in the future */
13390 #else
13391 #include <sys/dir.h>
13392 #endif
13393 #endif
13394 #endif
13395 #endif 
13396 int main() { return closedir(opendir(".")); }
13397 EOM
13398         set try
13399         if eval $compile_ok; then
13400                 if $run ./try > /dev/null 2>&1 ; then
13401                         echo "Yes, it does."
13402                         val="$undef"
13403                 else
13404                         echo "No, it doesn't."
13405                         val="$define"
13406                 fi
13407         else
13408                 echo "(I can't seem to compile the test program--assuming it doesn't)"
13409                 val="$define"
13410         fi
13411         ;;
13412 *)
13413         val="$undef";
13414         ;;
13415 esac
13416 set d_void_closedir
13417 eval $setvar
13418 $rm -f try try.*
13419 : see if there is a wait4
13420 set wait4 d_wait4
13421 eval $inlibc
13422
13423 : see if waitpid exists
13424 set waitpid d_waitpid
13425 eval $inlibc
13426
13427 : see if wcstombs exists
13428 set wcstombs d_wcstombs
13429 eval $inlibc
13430
13431 : see if wctomb exists
13432 set wctomb d_wctomb
13433 eval $inlibc
13434
13435 : see if writev exists
13436 set writev d_writev
13437 eval $inlibc
13438
13439 : preserve RCS keywords in files with variable substitution, grrr
13440 Date='$Date'
13441 Id='$Id'
13442 Log='$Log'
13443 RCSfile='$RCSfile'
13444 Revision='$Revision'
13445
13446 : check for alignment requirements
13447 echo " "
13448 case "$usecrosscompile$multiarch" in
13449 *$define*)
13450         $cat <<EOM
13451 You seem to be either cross-compiling or doing a multiarchitecture build,
13452 skipping the memory alignment check.
13453
13454 EOM
13455         case "$alignbytes" in
13456         '') alignbytes=8 ;;
13457         esac
13458         ;;
13459 *)
13460         case "$alignbytes" in
13461         '') echo "Checking alignment constraints..." >&4
13462                 if $test "X$uselongdouble" = Xdefine -a "X$d_longdbl" = Xdefine; then
13463                         $cat >try.c <<'EOCP'
13464 typedef long double NV;
13465 EOCP
13466                 else
13467                         $cat >try.c <<'EOCP'
13468 typedef double NV;
13469 EOCP
13470                 fi
13471                 $cat >>try.c <<'EOCP'
13472 #include <stdio.h>
13473 struct foobar {
13474         char foo;
13475         NV bar;
13476 } try_algn;
13477 int main()
13478 {
13479     printf("%d\n", (int)((char *)&try_algn.bar - (char *)&try_algn.foo));
13480     return(0);
13481 }
13482 EOCP
13483                 set try
13484                 if eval $compile_ok; then
13485                         dflt=`$run ./try`
13486                 else
13487                         dflt='8'
13488                         echo "(I can't seem to compile the test program...)"
13489                 fi
13490                 ;;
13491         *) dflt="$alignbytes"
13492                 ;;
13493         esac
13494         rp="Doubles must be aligned on a how-many-byte boundary?"
13495         . ./myread
13496         alignbytes="$ans"
13497         $rm -f try.c try
13498         ;;
13499 esac
13500
13501
13502 : set the base revision
13503 baserev=5.0
13504
13505 : how do we catenate cpp tokens here?
13506 echo " "
13507 echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
13508 $cat >cpp_stuff.c <<'EOCP'
13509 #define RCAT(a,b)a/**/b
13510 #define ACAT(a,b)a ## b
13511 RCAT(Rei,ser)
13512 ACAT(Cir,cus)
13513 EOCP
13514 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
13515 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
13516         echo "Oh!  Smells like ANSI's been here." >&4
13517         echo "We can catify or stringify, separately or together!"
13518         cpp_stuff=42
13519 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
13520         echo "Ah, yes!  The good old days!" >&4
13521         echo "However, in the good old days we don't know how to stringify and"
13522         echo "catify at the same time."
13523         cpp_stuff=1
13524 else
13525         $cat >&4 <<EOM
13526 Hmm, I don't seem to be able to catenate tokens with your cpp.  You're going
13527 to have to edit the values of CAT[2-5] in config.h...
13528 EOM
13529         cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
13530 fi
13531 $rm -f cpp_stuff.*
13532
13533 : see if this is a db.h system
13534 set db.h i_db
13535 eval $inhdr
13536
13537 case "$i_db" in
13538 $define)
13539         : Check db version.
13540         echo " "
13541         echo "Checking Berkeley DB version ..." >&4
13542         $cat >try.c <<EOCP
13543 #$d_const HASCONST
13544 #ifndef HASCONST
13545 #define const
13546 #endif
13547 #include <sys/types.h>
13548 #include <stdio.h>
13549 #include <db.h>
13550 int main(int argc, char *argv[])
13551 {
13552 #ifdef DB_VERSION_MAJOR /* DB version >= 2 */
13553     int Major, Minor, Patch ;
13554     unsigned long Version ;
13555     (void)db_version(&Major, &Minor, &Patch) ;
13556     if (argc == 2) {
13557         printf("%d %d %d %d %d %d\n",
13558                DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH,
13559                Major, Minor, Patch);
13560         exit(0);
13561     }
13562     printf("You have Berkeley DB Version 2 or greater.\n");
13563
13564     printf("db.h is from Berkeley DB Version %d.%d.%d\n",
13565                 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
13566     printf("libdb is from Berkeley DB Version %d.%d.%d\n",
13567                 Major, Minor, Patch) ;
13568
13569     /* check that db.h & libdb are compatible */
13570     if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
13571         printf("db.h and libdb are incompatible.\n") ;
13572         exit(3);        
13573     }
13574
13575     printf("db.h and libdb are compatible.\n") ;
13576
13577     Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
13578                 + DB_VERSION_PATCH ;
13579
13580     /* needs to be >= 2.3.4 */
13581     if (Version < 2003004) {
13582     /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
13583         printf("Perl needs Berkeley DB 2.3.4 or greater.\n") ;
13584         exit(2);        
13585     }
13586
13587     exit(0);
13588 #else
13589 #if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
13590     if (argc == 2) {
13591         printf("1 0 0\n");
13592         exit(0);
13593     }
13594     printf("You have Berkeley DB Version 1.\n");
13595     exit(0);    /* DB version < 2: the coast is clear. */
13596 #else
13597     exit(1);    /* <db.h> not Berkeley DB? */
13598 #endif
13599 #endif
13600 }
13601 EOCP
13602         set try
13603         if eval $compile_ok && $run ./try; then
13604                 echo 'Looks OK.' >&4
13605                 set `$run ./try 1`
13606                 db_version_major=$1
13607                 db_version_minor=$2
13608                 db_version_patch=$3
13609         else
13610                 echo "I can't use Berkeley DB with your <db.h>.  I'll disable Berkeley DB." >&4
13611                 i_db=$undef
13612                 case " $libs " in
13613                 *"-ldb "*)
13614                         : Remove db from list of libraries to use
13615                         echo "Removing unusable -ldb from library list" >&4
13616                         set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
13617                         shift
13618                         libs="$*"
13619                         echo "libs = $libs" >&4
13620                         ;;
13621                 esac
13622         fi
13623         $rm -f try.*
13624         ;;
13625 esac
13626
13627 case "$i_db" in
13628 define)
13629         : Check the return type needed for hash 
13630         echo " "
13631         echo "Checking return type needed for hash for Berkeley DB ..." >&4
13632         $cat >try.c <<EOCP
13633 #$d_const HASCONST
13634 #ifndef HASCONST
13635 #define const
13636 #endif
13637 #include <sys/types.h>
13638 #include <db.h>
13639
13640 #ifndef DB_VERSION_MAJOR
13641 u_int32_t hash_cb (ptr, size)
13642 const void *ptr;
13643 size_t size;
13644 {
13645 }
13646 HASHINFO info;
13647 int main()
13648 {
13649         info.hash = hash_cb;
13650 }
13651 #endif
13652 EOCP
13653         if $cc $ccflags -c try.c >try.out 2>&1 ; then
13654                 if $contains warning try.out >>/dev/null 2>&1 ; then
13655                         db_hashtype='int'
13656                 else
13657                         db_hashtype='u_int32_t'
13658                 fi
13659         else
13660                 : XXX Maybe we should just give up here.
13661                 db_hashtype=u_int32_t
13662                 $cat try.out >&4
13663                 echo "Help:  I can't seem to compile the db test program." >&4
13664                 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
13665         fi
13666         $rm -f try.*
13667         echo "Your version of Berkeley DB uses $db_hashtype for hash."
13668         ;;
13669 *)      db_hashtype=u_int32_t
13670         ;;
13671 esac
13672 case "$i_db" in
13673 define)
13674         : Check the return type needed for prefix 
13675         echo " "
13676         echo "Checking return type needed for prefix for Berkeley DB ..." >&4
13677         cat >try.c <<EOCP
13678 #$d_const HASCONST
13679 #ifndef HASCONST
13680 #define const
13681 #endif
13682 #include <sys/types.h>
13683 #include <db.h>
13684
13685 #ifndef DB_VERSION_MAJOR
13686 size_t prefix_cb (key1, key2)
13687 const DBT *key1;
13688 const DBT *key2;
13689 {
13690 }
13691 BTREEINFO info;
13692 int main()
13693 {
13694         info.prefix = prefix_cb;
13695 }
13696 #endif
13697 EOCP
13698         if $cc $ccflags -c try.c  >try.out 2>&1 ; then
13699                 if $contains warning try.out >>/dev/null 2>&1 ; then
13700                         db_prefixtype='int'
13701                 else
13702                         db_prefixtype='size_t'
13703                 fi
13704         else
13705                 db_prefixtype='size_t'
13706                 : XXX Maybe we should just give up here.
13707                 $cat try.out >&4
13708                 echo "Help:  I can't seem to compile the db test program." >&4
13709                 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
13710         fi
13711         $rm -f try.*
13712         echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
13713         ;;
13714 *)      db_prefixtype='size_t'
13715         ;;
13716 esac
13717
13718
13719 : How can we generate normalized random numbers ?
13720 echo " "
13721 echo "Looking for a random number function..." >&4
13722 case "$randfunc" in
13723 '')
13724         if set drand48 val -f; eval $csym; $val; then
13725                 dflt="drand48"
13726                 echo "Good, found drand48()." >&4
13727         elif set random val -f; eval $csym; $val; then
13728                 dflt="random"
13729                 echo "OK, found random()." >&4
13730         else
13731                 dflt="rand"
13732                 echo "Yick, looks like I have to use rand()." >&4
13733         fi
13734         echo " "
13735         ;;
13736 *)
13737         dflt="$randfunc"
13738         ;;
13739 esac
13740 cont=true
13741
13742 case "$ccflags" in
13743 *-Dmy_rand=*|*-Dmy_srand=*)
13744         echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
13745         ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
13746         ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
13747         ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
13748         ;;
13749 esac
13750
13751 while $test "$cont"; do
13752         rp="Use which function to generate random numbers?"
13753         . ./myread
13754         if $test "$ans" = "$dflt"; then
13755                 : null
13756         else
13757                 randbits=''
13758         fi
13759         randfunc="$ans"
13760         if set $ans val -f; eval $csym; $val; then
13761                 cont=''
13762         else
13763                 dflt=y
13764                 rp="I cannot find function $ans. Use that name anyway?"
13765                 . ./myread
13766                 dflt=rand
13767                 case "$ans" in
13768                         [yY]*) cont='';;
13769                 esac
13770         fi
13771         case "$cont" in
13772         '')
13773                 case "$randfunc" in
13774                 drand48)
13775                         drand01="drand48()"
13776                         seedfunc="srand48"
13777                         randbits=48
13778                         randseedtype=long
13779                         ;;
13780                 rand|random)
13781                         case "$randbits" in
13782                         '')
13783 echo "Checking to see how many bits your $randfunc() function produces..." >&4
13784                                 $cat >try.c <<EOCP
13785 #$i_unistd I_UNISTD
13786 #$i_stdlib I_STDLIB
13787 #include <stdio.h>
13788 #ifdef I_UNISTD
13789 #  include <unistd.h>
13790 #endif
13791 #ifdef I_STDLIB
13792 #  include <stdlib.h>
13793 #endif
13794 int main()
13795 {
13796         register int i;
13797         register unsigned long tmp;
13798         register unsigned long max = 0L;
13799
13800         for (i = 1000; i; i--) {
13801                 tmp = (unsigned long) $randfunc();
13802                 if (tmp > max) max = tmp;
13803         }
13804         for (i = 0; max; i++)
13805                 max /= 2;
13806         printf("%d\n",i);
13807 }
13808 EOCP
13809                                 set try
13810                                 if eval $compile_ok; then
13811                                         dflt=`try`
13812                                 else
13813                                         dflt='?'
13814                                         echo "(I can't seem to compile the test program...)"
13815                                 fi
13816                                 ;;
13817                         *)
13818                                 dflt="$randbits"
13819                                 ;;
13820                         esac
13821                         rp="How many bits does your $randfunc() function produce?"
13822                         . ./myread
13823                         randbits="$ans"
13824                         $rm -f try.c try
13825                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
13826                         seedfunc="s$randfunc"
13827                         randseedtype=unsigned
13828                         ;;
13829                 *)
13830                         dflt="31"
13831                         rp="How many bits does your $randfunc() function produce?"
13832                         . ./myread
13833                         randbits="$ans"
13834                         seedfunc="s$randfunc"
13835                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
13836                         if set $seedfunc val -f; eval $csym; $val; then
13837                                 echo "(Using $seedfunc() to seed random generator)"
13838                         else
13839                                 echo "(Warning: no $seedfunc() to seed random generator)"
13840                                 seedfunc=rand
13841                         fi
13842                         randseedtype=unsigned
13843                         ;;
13844                 esac
13845                 ;;
13846         esac
13847 done
13848
13849 echo " "
13850 echo "Determining whether or not we are on an EBCDIC system..." >&4
13851 $cat >try.c <<'EOM'
13852 int main()
13853 {
13854   if ('M'==0xd4) return 0;
13855   return 1;
13856 }
13857 EOM
13858
13859 val=$undef
13860 set try
13861 if eval $compile_ok; then
13862         if $run ./try; then
13863                 echo "You seem to speak EBCDIC." >&4
13864                 val="$define"
13865         else
13866                 echo "Nope, no EBCDIC, probably ASCII or some ISO Latin. Or UTF-8." >&4
13867         fi
13868 else
13869         echo "I'm unable to compile the test program." >&4
13870         echo "I'll assume ASCII or some ISO Latin. Or UTF8." >&4
13871 fi
13872 $rm -f try try.*
13873 set ebcdic
13874 eval $setvar
13875
13876 echo " "
13877 $cat >&4 <<EOM
13878 Checking how to flush all pending stdio output...
13879 EOM
13880 # I only know how to find the first 32 possibly open files on SunOS.
13881 # See also hints/sunos_4_1.sh and util.c  --AD
13882 case "$osname" in
13883 sunos) $echo '#define PERL_FFLUSH_ALL_FOPEN_MAX 32' > try.c ;;
13884 esac
13885 $cat >>try.c <<EOCP
13886 #include <stdio.h>
13887 #$i_unistd I_UNISTD
13888 #ifdef I_UNISTD
13889 # include <unistd.h>
13890 #endif
13891 #$d_sysconf HAS_SYSCONF
13892 #$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY
13893 #ifdef HAS_STDIO_STREAM_ARRAY
13894 # define STDIO_STREAM_ARRAY $stdio_stream_array
13895 #endif
13896 int main() {
13897   FILE* p;
13898   unlink("try.out");
13899   p = fopen("try.out", "w");
13900 #ifdef TRY_FPUTC
13901   fputc('x', p);
13902 #else
13903 # ifdef TRY_FPRINTF
13904   fprintf(p, "x");
13905 # endif
13906 #endif
13907 #ifdef TRY_FFLUSH_NULL
13908   fflush(NULL);
13909 #endif
13910 #ifdef TRY_FFLUSH_ALL
13911   {
13912     long open_max = -1;
13913 # ifdef PERL_FFLUSH_ALL_FOPEN_MAX
13914     open_max = PERL_FFLUSH_ALL_FOPEN_MAX;
13915 # else
13916 #  if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
13917     open_max = sysconf(_SC_OPEN_MAX);
13918 #  else
13919 #   ifdef FOPEN_MAX
13920     open_max = FOPEN_MAX;
13921 #   else
13922 #    ifdef OPEN_MAX
13923     open_max = OPEN_MAX;
13924 #    else
13925 #     ifdef _NFILE
13926     open_max = _NFILE;
13927 #     endif
13928 #    endif
13929 #   endif
13930 #  endif
13931 # endif 
13932 # ifdef HAS_STDIO_STREAM_ARRAY
13933     if (open_max > 0) {
13934       long i;
13935       for (i = 0; i < open_max; i++)
13936             if (STDIO_STREAM_ARRAY[i]._file >= 0 &&
13937                 STDIO_STREAM_ARRAY[i]._file < open_max &&
13938                 STDIO_STREAM_ARRAY[i]._flag)
13939                 fflush(&STDIO_STREAM_ARRAY[i]);
13940     }   
13941   }
13942 # endif
13943 #endif
13944   _exit(42);
13945 }
13946 EOCP
13947 : first we have to find out how _not_ to flush
13948 $to try.c
13949 if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
13950     output=''
13951     set try -DTRY_FPUTC
13952     if eval $compile; then
13953             $run ./try 2>/dev/null
13954             code="$?"
13955             $from try.out
13956             if $test ! -s try.out -a "X$code" = X42; then
13957                 output=-DTRY_FPUTC
13958             fi
13959     fi
13960     case "$output" in
13961     '')
13962             set try -DTRY_FPRINTF
13963             if eval $compile; then
13964                     $run ./try 2>/dev/null
13965                     code="$?"
13966                     $from try.out
13967                     if $test ! -s try.out -a "X$code" = X42; then
13968                         output=-DTRY_FPRINTF
13969                     fi
13970             fi
13971         ;;
13972     esac
13973 fi
13974 : check for fflush NULL behaviour
13975 case "$fflushNULL" in
13976 '')     set try -DTRY_FFLUSH_NULL $output
13977         if eval $compile; then
13978                 $run ./try 2>/dev/null
13979                 code="$?"
13980                 $from try.out
13981                 if $test -s try.out -a "X$code" = X42; then
13982                         fflushNULL="`$cat try.out`"
13983                 else
13984                         if $test "X$code" != X42; then
13985                                 $cat >&4 <<EOM
13986 (If this test failed, don't worry, we'll try another method shortly.)
13987 EOM
13988                         fi
13989                 fi
13990         fi
13991         $rm -f core try.core core.try.*
13992         case "$fflushNULL" in
13993         x)      $cat >&4 <<EOM
13994 Your fflush(NULL) works okay for output streams.
13995 Let's see if it clobbers input pipes...
13996 EOM
13997 # As of mid-March 2000 all versions of Solaris appear to have a stdio
13998 # bug that improperly flushes the input end of pipes.  So we avoid the
13999 # autoflush on fork/system/exec support for now. :-(
14000 $cat >tryp.c <<EOCP
14001 #include <stdio.h>
14002 int
14003 main(int argc, char **argv)
14004 {
14005     char buf[1024];
14006     int i;
14007     char *bp = buf;
14008     while (1) {
14009         while ((i = getc(stdin)) != -1
14010                && (*bp++ = i) != '\n'
14011                && bp < &buf[1024])
14012         /* DO NOTHING */ ;
14013         *bp = '\0';
14014         fprintf(stdout, "%s", buf);
14015         fflush(NULL);
14016         if (i == -1)
14017             return 0;
14018         bp = buf;
14019     }
14020 }
14021 EOCP
14022                 fflushNULL="$define"
14023                 set tryp
14024                 if eval $compile; then
14025                     $rm -f tryp.out
14026                     $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
14027                     if cmp tryp.c tryp.out >/dev/null 2>&1; then
14028                        $cat >&4 <<EOM
14029 fflush(NULL) seems to behave okay with input streams.
14030 EOM
14031                         fflushNULL="$define"
14032                     else
14033                         $cat >&4 <<EOM
14034 Ouch, fflush(NULL) clobbers input pipes!  We will not use it.
14035 EOM
14036                         fflushNULL="$undef"
14037                     fi
14038                 fi
14039                 $rm -f core tryp.c tryp.core core.tryp.*
14040                 ;;
14041         '')     $cat >&4 <<EOM
14042 Your fflush(NULL) isn't working (contrary to ANSI C).
14043 EOM
14044                 fflushNULL="$undef"
14045                 ;;
14046         *)      $cat >&4 <<EOM
14047 Cannot figure out whether your fflush(NULL) works or not.
14048 I'm assuming it doesn't (contrary to ANSI C).
14049 EOM
14050                 fflushNULL="$undef"
14051                 ;;
14052         esac
14053         ;;
14054 $define|true|[yY]*)
14055         fflushNULL="$define"
14056         ;;
14057 *)
14058         fflushNULL="$undef"
14059         ;;
14060 esac
14061 : check explicit looping only if NULL did not work, and if the pipe
14062 : bug does not show up on an explicit flush too
14063 case "$fflushNULL" in
14064 "$undef")
14065         $cat >tryp.c <<EOCP
14066 #include <stdio.h>
14067 int
14068 main(int argc, char **argv)
14069 {
14070     char buf[1024];
14071     int i;
14072     char *bp = buf;
14073     while (1) {
14074         while ((i = getc(stdin)) != -1
14075                && (*bp++ = i) != '\n'
14076                && bp < &buf[1024])
14077         /* DO NOTHING */ ;
14078         *bp = '\0';
14079         fprintf(stdout, "%s", buf);
14080         fflush(stdin);
14081         if (i == -1)
14082             return 0;
14083         bp = buf;
14084     }
14085 }
14086 EOCP
14087         set tryp
14088         if eval $compile; then
14089             $rm -f tryp.out
14090             $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
14091             if cmp tryp.c tryp.out >/dev/null 2>&1; then
14092                $cat >&4 <<EOM
14093 Good, at least fflush(stdin) seems to behave okay when stdin is a pipe.
14094 EOM
14095                 : now check for fflushall behaviour
14096                 case "$fflushall" in
14097                 '')     set try -DTRY_FFLUSH_ALL $output
14098                         if eval $compile; then
14099                                 $cat >&4 <<EOM
14100 (Now testing the other method--but note that this also may fail.)
14101 EOM
14102                                 $run ./try 2>/dev/null
14103                                 code=$?
14104                                 $from try.out
14105                                 if $test -s try.out -a "X$code" = X42; then
14106                                         fflushall="`$cat try.out`"
14107                                 fi
14108                         fi
14109                         $rm -f core try.core core.try.*
14110                         case "$fflushall" in
14111                         x)      $cat >&4 <<EOM
14112 Whew. Flushing explicitly all the stdio streams works.
14113 EOM
14114                                 fflushall="$define"
14115                                 ;;
14116                         '')     $cat >&4 <<EOM
14117 Sigh. Flushing explicitly all the stdio streams doesn't work.
14118 EOM
14119                                 fflushall="$undef"
14120                                 ;;
14121                         *)      $cat >&4 <<EOM
14122 Cannot figure out whether flushing stdio streams explicitly works or not.
14123 I'm assuming it doesn't.
14124 EOM
14125                                 fflushall="$undef"
14126                                 ;;
14127                         esac
14128                         ;;
14129                 "$define"|true|[yY]*)
14130                         fflushall="$define"
14131                         ;;
14132                 *)
14133                         fflushall="$undef"
14134                         ;;
14135                 esac
14136             else
14137                 $cat >&4 <<EOM
14138 All is futile.  Even fflush(stdin) clobbers input pipes!
14139 EOM
14140                 fflushall="$undef"
14141             fi
14142         else
14143             fflushall="$undef"
14144         fi
14145         $rm -f core tryp.c tryp.core core.tryp.*
14146         ;;
14147 *)      fflushall="$undef"
14148         ;;
14149 esac
14150
14151 case "$fflushNULL$fflushall" in
14152 undefundef)
14153         $cat <<EOM
14154 OK, I give up.  I cannot figure out how to flush pending stdio output.
14155 We won't be flushing handles at all before fork/exec/popen.
14156 EOM
14157         ;;
14158 esac
14159 $rm -f try.* try$exe_ext
14160
14161 : Store the full pathname to the ar program for use in the C program
14162 : Respect a hint or command line value for full_ar.
14163 case "$full_ar" in
14164 '') full_ar=$ar ;;
14165 esac
14166
14167 : Store the full pathname to the sed program for use in the C program
14168 full_sed=$sed
14169
14170 : see what type gids are declared as in the kernel
14171 echo " "
14172 echo "Looking for the type for group ids returned by getgid()."
14173 set gid_t gidtype xxx stdio.h sys/types.h
14174 eval $typedef
14175 case "$gidtype" in
14176 xxx)
14177         xxx=`./findhdr sys/user.h`
14178         set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
14179         case $1 in
14180         unsigned) dflt="$1 $2" ;;
14181         *) dflt="$1" ;;
14182         esac
14183         ;;
14184 *) dflt="$gidtype";;
14185 esac
14186 case "$gidtype" in
14187 gid_t) echo "gid_t found." ;;
14188 *)      rp="What is the type for group ids returned by getgid()?"
14189         . ./myread
14190         gidtype="$ans"
14191         ;;
14192 esac
14193
14194 echo " "
14195 case "$gidtype" in
14196 *_t) zzz="$gidtype"     ;;
14197 *)   zzz="gid"          ;;
14198 esac
14199 echo "Checking the size of $zzz..." >&4 
14200 cat > try.c <<EOCP
14201 #include <sys/types.h>
14202 #include <stdio.h>
14203 int main() {
14204     printf("%d\n", (int)sizeof($gidtype));
14205     exit(0);
14206 }
14207 EOCP
14208 set try
14209 if eval $compile_ok; then
14210         yyy=`$run ./try`
14211         case "$yyy" in
14212         '')     gidsize=4
14213                 echo "(I can't execute the test program--guessing $gidsize.)" >&4
14214                 ;;
14215         *)      gidsize=$yyy
14216                 echo "Your $zzz is $gidsize bytes long."
14217                 ;;
14218         esac
14219 else
14220         gidsize=4
14221         echo "(I can't compile the test program--guessing $gidsize.)" >&4
14222 fi
14223
14224
14225 echo " "
14226 case "$gidtype" in
14227 *_t) zzz="$gidtype"     ;;
14228 *)   zzz="gid"          ;;
14229 esac
14230 echo "Checking the sign of $zzz..." >&4 
14231 cat > try.c <<EOCP
14232 #include <sys/types.h>
14233 #include <stdio.h>
14234 int main() {
14235         $gidtype foo = -1;
14236         if (foo < 0)
14237                 printf("-1\n");
14238         else
14239                 printf("1\n");
14240 }
14241 EOCP
14242 set try
14243 if eval $compile; then
14244         yyy=`$run ./try`
14245         case "$yyy" in
14246         '')     gidsign=1
14247                 echo "(I can't execute the test program--guessing unsigned.)" >&4
14248                 ;;
14249         *)      gidsign=$yyy
14250                 case "$gidsign" in
14251                  1) echo "Your $zzz is unsigned." ;;
14252                 -1) echo "Your $zzz is signed."   ;;
14253                 esac
14254                 ;;
14255         esac
14256 else
14257         gidsign=1
14258         echo "(I can't compile the test program--guessing unsigned.)" >&4
14259 fi
14260
14261
14262 echo " "
14263
14264 if $test X"$quadtype" != X; then
14265
14266 echo "Checking how to print 64-bit integers..." >&4
14267
14268 if $test X"$sPRId64" = X -a X"$quadtype" = Xint; then
14269         $cat >try.c <<'EOCP'
14270 #include <sys/types.h>
14271 #include <stdio.h>
14272 int main() {
14273   int q = 12345678901;
14274   printf("%ld\n", q);
14275 }
14276 EOCP
14277         set try
14278         if eval $compile; then
14279                 yyy=`$run ./try`
14280                 case "$yyy" in
14281                 12345678901)
14282                         sPRId64='"d"'; sPRIi64='"i"'; sPRIu64='"u"';
14283                         sPRIo64='"o"'; sPRIx64='"x"'; sPRIXU64='"X"';
14284                         echo "We will use %d."
14285                         ;;
14286                 esac
14287         fi
14288 fi
14289
14290 if $test X"$sPRId64" = X -a X"$quadtype" = Xlong; then
14291         $cat >try.c <<'EOCP'
14292 #include <sys/types.h>
14293 #include <stdio.h>
14294 int main() {
14295   long q = 12345678901;
14296   printf("%ld\n", q);
14297 }
14298 EOCP
14299         set try
14300         if eval $compile; then
14301                 yyy=`$run ./try`
14302                 case "$yyy" in
14303                 12345678901)
14304                         sPRId64='"ld"'; sPRIi64='"li"'; sPRIu64='"lu"';
14305                         sPRIo64='"lo"'; sPRIx64='"lx"'; sPRIXU64='"lX"';
14306                         echo "We will use %ld."
14307                         ;;
14308                 esac
14309         fi
14310 fi
14311
14312 if $test X"$sPRId64" = X -a X"$i_inttypes" = X"$define" -a X"$quadtype" = Xint64_t; then
14313         $cat >try.c <<'EOCP'
14314 #include <sys/types.h>
14315 #include <inttypes.h>
14316 #include <stdio.h>
14317 int main() {
14318   int64_t q = 12345678901;
14319   printf("%" PRId64 "\n", q);
14320 }
14321 EOCP
14322         set try
14323         if eval $compile; then
14324                 yyy=`$run ./try`
14325                 case "$yyy" in
14326                 12345678901)
14327                         sPRId64=PRId64; sPRIi64=PRIi64; sPRIu64=PRIu64;
14328                         sPRIo64=PRIo64; sPRIx64=PRIx64; sPRIXU64=PRIXU64;
14329                         echo "We will use the C9X style."
14330                         ;;
14331                 esac
14332         fi
14333 fi
14334
14335 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
14336         $cat >try.c <<EOCP
14337 #include <sys/types.h>
14338 #include <stdio.h>
14339 int main() {
14340   $quadtype q = 12345678901;
14341   printf("%Ld\n", q);
14342 }
14343 EOCP
14344         set try
14345         if eval $compile; then
14346                 yyy=`$run ./try`
14347                 case "$yyy" in
14348                 12345678901)
14349                         sPRId64='"Ld"'; sPRIi64='"Li"'; sPRIu64='"Lu"';
14350                         sPRIo64='"Lo"'; sPRIx64='"Lx"'; sPRIXU64='"LX"';
14351                         echo "We will use %Ld."
14352                         ;;
14353                 esac
14354         fi
14355 fi
14356
14357 if $test X"$sPRId64" = X -a X"$quadtype" = X"long long"; then
14358         $cat >try.c <<'EOCP'
14359 #include <sys/types.h>
14360 #include <stdio.h>
14361 int main() {
14362   long long q = 12345678901LL; /* AIX cc requires the LL suffix. */
14363   printf("%lld\n", q);
14364 }
14365 EOCP
14366         set try
14367         if eval $compile; then
14368                 yyy=`$run ./try`
14369                 case "$yyy" in
14370                 12345678901)
14371                         sPRId64='"lld"'; sPRIi64='"lli"'; sPRIu64='"llu"';
14372                         sPRIo64='"llo"'; sPRIx64='"llx"'; sPRIXU64='"llX"';
14373                         echo "We will use the %lld style."
14374                         ;;
14375                 esac
14376         fi
14377 fi
14378
14379 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
14380         $cat >try.c <<EOCP
14381 #include <sys/types.h>
14382 #include <stdio.h>
14383 int main() {
14384   $quadtype q = 12345678901;
14385   printf("%qd\n", q);
14386 }
14387 EOCP
14388         set try
14389         if eval $compile; then
14390                 yyy=`$run ./try`
14391                 case "$yyy" in
14392                 12345678901)
14393                         sPRId64='"qd"'; sPRIi64='"qi"'; sPRIu64='"qu"';
14394                         sPRIo64='"qo"'; sPRIx64='"qx"'; sPRIXU64='"qX"';
14395                         echo "We will use %qd."
14396                         ;;
14397                 esac
14398         fi
14399 fi
14400
14401 if $test X"$sPRId64" = X; then
14402         echo "Cannot figure out how to print 64-bit integers." >&4
14403 fi
14404
14405 $rm -f try try.*
14406
14407 fi
14408
14409 case "$sPRId64" in
14410 '')     d_PRId64="$undef"; d_PRIi64="$undef"; d_PRIu64="$undef"; 
14411         d_PRIo64="$undef"; d_PRIx64="$undef"; d_PRIXU64="$undef"; 
14412         ;;
14413 *)      d_PRId64="$define"; d_PRIi64="$define"; d_PRIu64="$define"; 
14414         d_PRIo64="$define"; d_PRIx64="$define"; d_PRIXU64="$define"; 
14415         ;;
14416 esac
14417
14418
14419 echo " "
14420 $echo "Checking the format strings to be used for Perl's internal types..." >&4
14421
14422 if $test X"$ivsize" = X8; then
14423         ivdformat="$sPRId64"
14424         uvuformat="$sPRIu64"
14425         uvoformat="$sPRIo64"
14426         uvxformat="$sPRIx64"
14427         uvXUformat="$sPRIXU64"
14428 else
14429         if $test X"$ivsize" = X"$longsize"; then
14430                 ivdformat='"ld"'
14431                 uvuformat='"lu"'
14432                 uvoformat='"lo"'
14433                 uvxformat='"lx"'
14434                 uvXUformat='"lX"'
14435         else
14436                 if $test X"$ivsize" = X"$intsize"; then
14437                         ivdformat='"d"'
14438                         uvuformat='"u"'
14439                         uvoformat='"o"'
14440                         uvxformat='"x"'
14441                         uvXUformat='"X"'
14442                 else
14443                         : far out
14444                         if $test X"$ivsize" = X"$shortsize"; then
14445                                 ivdformat='"hd"'
14446                                 uvuformat='"hu"'
14447                                 uvoformat='"ho"'
14448                                 uvxformat='"hx"'
14449                                 uvXUformat='"hX"'
14450                         fi
14451                 fi
14452         fi
14453 fi
14454
14455 if $test X"$uselongdouble" = X"$define" -a X"$d_longdbl" = X"$define" -a X"$d_PRIgldbl" = X"$define"; then
14456         nveformat="$sPRIeldbl"
14457         nvfformat="$sPRIfldbl"
14458         nvgformat="$sPRIgldbl"
14459         nvEUformat="$sPRIEUldbl"
14460         nvFUformat="$sPRIFUldbl"
14461         nvGUformat="$sPRIGUldbl"
14462 else
14463         nveformat='"e"'
14464         nvfformat='"f"'
14465         nvgformat='"g"'
14466         nvEUformat='"E"'
14467         nvFUformat='"F"'
14468         nvGUformat='"G"'
14469 fi
14470
14471 case "$ivdformat" in
14472 '') echo "$0: Fatal: failed to find format strings, cannot continue." >& 4
14473     exit 1
14474     ;;
14475 esac
14476
14477
14478 echo " "
14479 $echo "Checking the format string to be used for gids..." >&4
14480
14481 case "$gidsign" in
14482 -1)     if $test X"$gidsize" = X"$ivsize"; then
14483                 gidformat="$ivdformat"
14484         else
14485                 if $test X"$gidsize" = X"$longsize"; then
14486                         gidformat='"ld"'
14487                 else
14488                         if $test X"$gidsize" = X"$intsize"; then
14489                                 gidformat='"d"'
14490                         else
14491                                 if $test X"$gidsize" = X"$shortsize"; then
14492                                         gidformat='"hd"'
14493                                 fi
14494                         fi
14495                 fi
14496         fi
14497         ;;
14498 *)      if $test X"$gidsize" = X"$uvsize"; then
14499                 gidformat="$uvuformat"
14500         else
14501                 if $test X"$gidsize" = X"$longsize"; then
14502                         gidformat='"lu"'
14503                 else
14504                         if $test X"$gidsize" = X"$intsize"; then
14505                                 gidformat='"u"'
14506                         else
14507                                 if $test X"$gidsize" = X"$shortsize"; then
14508                                         gidformat='"hu"'
14509                                 fi
14510                         fi
14511                 fi
14512         fi
14513         ;;
14514 esac
14515
14516 : see if getgroups exists
14517 set getgroups d_getgrps
14518 eval $inlibc
14519
14520 : see if setgroups exists
14521 set setgroups d_setgrps
14522 eval $inlibc
14523
14524
14525 : Find type of 2nd arg to 'getgroups()' and 'setgroups()'
14526 echo " "
14527 case "$d_getgrps$d_setgrps" in
14528 *define*)
14529         case "$groupstype" in
14530         '') dflt="$gidtype" ;;
14531         *)  dflt="$groupstype" ;;
14532         esac
14533         $cat <<EOM
14534 What type of pointer is the second argument to getgroups() and setgroups()?
14535 Usually this is the same as group ids, $gidtype, but not always.
14536
14537 EOM
14538         rp='What type pointer is the second argument to getgroups() and setgroups()?'
14539         . ./myread
14540         groupstype="$ans"
14541         ;;
14542 *)  groupstype="$gidtype";;
14543 esac
14544
14545 echo " "
14546 echo "Checking if your $make program sets \$(MAKE)..." >&4
14547 case "$make_set_make" in
14548 '')
14549         $sed 's/^X //' > testmake.mak << 'EOF'
14550 Xall:
14551 X       @echo 'maketemp="$(MAKE)"'
14552 EOF
14553         case "`$make -f testmake.mak 2>/dev/null`" in
14554         *maketemp=*) make_set_make='#' ;;
14555         *)      make_set_make="MAKE=$make" ;;
14556         esac
14557         $rm -f testmake.mak
14558         ;;
14559 esac
14560 case "$make_set_make" in
14561 '#') echo "Yup, it does.";;
14562 *) echo "Nope, it doesn't.";;
14563 esac
14564
14565 : see what type is used for mode_t
14566 rp="What is the type used for file modes for system calls (e.g. fchmod())?"
14567 set mode_t modetype int stdio.h sys/types.h
14568 eval $typedef_ask
14569
14570 : see if stdarg is available
14571 echo " "
14572 if $test `./findhdr stdarg.h`; then
14573         echo "<stdarg.h> found." >&4
14574         valstd="$define"
14575 else
14576         echo "<stdarg.h> NOT found." >&4
14577         valstd="$undef"
14578 fi
14579
14580 : see if varags is available
14581 echo " "
14582 if $test `./findhdr varargs.h`; then
14583         echo "<varargs.h> found." >&4
14584 else
14585         echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
14586 fi
14587
14588 : set up the varargs testing programs
14589 $cat > varargs.c <<EOP
14590 #ifdef I_STDARG
14591 #include <stdarg.h>
14592 #endif
14593 #ifdef I_VARARGS
14594 #include <varargs.h>
14595 #endif
14596
14597 #ifdef I_STDARG
14598 int f(char *p, ...)
14599 #else
14600 int f(va_alist)
14601 va_dcl
14602 #endif
14603 {
14604         va_list ap;
14605 #ifndef I_STDARG
14606         char *p;
14607 #endif
14608 #ifdef I_STDARG
14609         va_start(ap,p);
14610 #else
14611         va_start(ap);
14612         p = va_arg(ap, char *);
14613 #endif
14614         va_end(ap);
14615 }
14616 EOP
14617 $cat > varargs <<EOP
14618 $startsh
14619 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
14620         echo "true"
14621 else
14622         echo "false"
14623 fi
14624 $rm -f varargs$_o
14625 EOP
14626 chmod +x varargs
14627
14628 : now check which varargs header should be included
14629 echo " "
14630 i_varhdr=''
14631 case "$valstd" in
14632 "$define")
14633         if `./varargs I_STDARG`; then
14634                 val='stdarg.h'
14635         elif `./varargs I_VARARGS`; then
14636                 val='varargs.h'
14637         fi
14638         ;;
14639 *)
14640         if `./varargs I_VARARGS`; then
14641                 val='varargs.h'
14642         fi
14643         ;;
14644 esac
14645 case "$val" in
14646 '')
14647 echo "I could not find the definition for va_dcl... You have problems..." >&4
14648         val="$undef"; set i_stdarg; eval $setvar
14649         val="$undef"; set i_varargs; eval $setvar
14650         ;;
14651 *) 
14652         set i_varhdr
14653         eval $setvar
14654         case "$i_varhdr" in
14655         stdarg.h)
14656                 val="$define"; set i_stdarg; eval $setvar
14657                 val="$undef"; set i_varargs; eval $setvar
14658                 ;;
14659         varargs.h)
14660                 val="$undef"; set i_stdarg; eval $setvar
14661                 val="$define"; set i_varargs; eval $setvar
14662                 ;;
14663         esac
14664         echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
14665 esac
14666 $rm -f varargs*
14667
14668 : see if we need va_copy
14669 echo " "
14670 case "$i_stdarg" in
14671 "$define")
14672         $cat >try.c <<EOCP
14673 #include <stdarg.h>
14674 #include <stdio.h>
14675 #$i_stdlib I_STDLIB
14676 #ifdef I_STDLIB
14677 #include <stdlib.h>
14678 #endif
14679 #include <signal.h>
14680
14681 int
14682 ivfprintf(FILE *f, const char *fmt, va_list *valp)
14683 {
14684   return vfprintf(f, fmt, *valp);
14685 }
14686  
14687 int    
14688 myvfprintf(FILE *f, const  char *fmt, va_list val)
14689 {
14690   return ivfprintf(f, fmt, &val);
14691 }
14692       
14693 int
14694 myprintf(char *fmt, ...) 
14695 {
14696   va_list val;
14697   va_start(val, fmt);
14698   return myvfprintf(stdout, fmt, val); 
14699 }         
14700
14701 int
14702 main(int ac, char **av)
14703 {
14704   signal(SIGSEGV, exit);
14705
14706   myprintf("%s%cs all right, then\n", "that", '\'');                            
14707   exit(0);      
14708 }
14709 EOCP
14710         set try
14711         if eval $compile && $run ./try 2>&1 >/dev/null; then
14712                 case "`$run ./try`" in
14713                 "that's all right, then")
14714                         okay=yes
14715                         ;;
14716                 esac
14717         fi
14718         case "$okay" in
14719         yes)    echo "It seems that you don't need va_copy()." >&4
14720                 need_va_copy="$undef"
14721                 ;;
14722         *)      echo "It seems that va_copy() or similar will be needed." >&4
14723                 need_va_copy="$define"
14724                 ;;
14725         esac
14726         $rm -f try.* core core.* *.core *.core.*
14727         ;;
14728 *)      echo "You don't have <stdarg.h>, not checking for va_copy()." >&4
14729         ;;
14730 esac
14731
14732 : define a fucntion to check prototypes
14733 $cat > protochk <<EOSH
14734 $startsh
14735 cc="$cc"
14736 optimize="$optimize"
14737 ccflags="$ccflags"
14738 prototype="$prototype"
14739 define="$define"
14740 rm=$rm
14741 EOSH
14742
14743 $cat >> protochk <<'EOSH'
14744
14745 $rm -f try.c
14746 foo="$1"
14747 shift
14748 while test $# -ge 2; do
14749         case "$1" in
14750                 $define) echo "#include <$2>" >> try.c ;;
14751                 literal) echo "$2" >> try.c ;;
14752         esac
14753     shift 2
14754 done
14755 test "$prototype" = "$define"  && echo '#define CAN_PROTOTYPE' >> try.c
14756 cat >> try.c <<'EOCP'
14757 #ifdef CAN_PROTOTYPE
14758 #define _(args) args
14759 #else
14760 #define _(args) ()
14761 #endif
14762 EOCP
14763 echo "$foo" >> try.c
14764 echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
14765 $cc $optimize $ccflags -c try.c > /dev/null 2>&1
14766 status=$?
14767 $rm -f try.[co]
14768 exit $status
14769 EOSH
14770 chmod +x protochk
14771 $eunicefix protochk
14772
14773 : see what type is used for size_t
14774 rp="What is the type used for the length parameter for string functions?"
14775 set size_t sizetype 'unsigned int' stdio.h sys/types.h
14776 eval $typedef_ask
14777
14778 : check for type of arguments to gethostbyaddr. 
14779 if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
14780         case "$d_gethbyaddr" in
14781         $define)
14782                 $cat <<EOM
14783
14784 Checking to see what type of arguments are accepted by gethostbyaddr().
14785 EOM
14786                 hdrs="$define sys/types.h
14787                         $d_socket sys/socket.h 
14788                         $i_niin netinet/in.h 
14789                         $i_netdb netdb.h
14790                         $i_unistd unistd.h"
14791                 : The first arg can 'char *' or 'void *'
14792                 : The second arg is some of integral type
14793                 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
14794                         for yyy in size_t long int; do
14795                                 case "$netdb_host_type" in
14796                                 '')     try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
14797                                         if ./protochk "$try" $hdrs; then
14798                                                 echo "Your system accepts $xxx for the first arg."
14799                                                 echo "...and $yyy for the second arg."
14800                                                 netdb_host_type="$xxx"
14801                                                 netdb_hlen_type="$yyy"
14802                                         fi
14803                                         ;;
14804                                 esac
14805                         done
14806                 done
14807                 : In case none of those worked, prompt the user.
14808                 case "$netdb_host_type" in
14809                 '')     rp='What is the type for the 1st argument to gethostbyaddr?'
14810                         dflt='char *'
14811                         . ./myread
14812                         netdb_host_type=$ans
14813                         rp='What is the type for the 2nd argument to gethostbyaddr?'
14814                         dflt="$sizetype"
14815                         . ./myread
14816                         netdb_hlen_type=$ans
14817                         ;;
14818                 esac
14819                 ;;
14820         *)      : no gethostbyaddr, so pick harmless defaults
14821                 netdb_host_type='char *'
14822                 netdb_hlen_type="$sizetype"
14823                 ;;
14824         esac
14825         # Remove the "const" if needed. -- but then we'll have a 
14826         # prototype clash!
14827         # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
14828 fi
14829
14830 : check for type of argument to gethostbyname. 
14831 if test "X$netdb_name_type" = X ; then
14832         case "$d_gethbyname" in
14833         $define)
14834                 $cat <<EOM
14835
14836 Checking to see what type of argument is accepted by gethostbyname().
14837 EOM
14838                 hdrs="$define sys/types.h
14839                         $d_socket sys/socket.h 
14840                         $i_niin netinet/in.h 
14841                         $i_netdb netdb.h
14842                         $i_unistd unistd.h"
14843                 for xxx in "const char *" "char *"; do
14844                         case "$netdb_name_type" in
14845                         '')     try="extern struct hostent *gethostbyname($xxx);"
14846                                 if ./protochk "$try" $hdrs; then
14847                                         echo "Your system accepts $xxx."
14848                                         netdb_name_type="$xxx"
14849                                 fi
14850                                 ;;
14851                         esac
14852                 done
14853                 : In case none of those worked, prompt the user.
14854                 case "$netdb_name_type" in
14855                 '')     rp='What is the type for the 1st argument to gethostbyname?'
14856                         dflt='char *'
14857                         . ./myread
14858                         netdb_name_type=$ans
14859                         ;;
14860                 esac
14861                 ;;
14862         *)      : no gethostbyname, so pick harmless default
14863                 netdb_name_type='char *'
14864                 ;;
14865         esac
14866 fi
14867
14868 : check for type of 1st argument to getnetbyaddr. 
14869 if test "X$netdb_net_type" = X ; then
14870         case "$d_getnbyaddr" in
14871         $define)
14872                 $cat <<EOM
14873
14874 Checking to see what type of 1st argument is accepted by getnetbyaddr().
14875 EOM
14876                 hdrs="$define sys/types.h
14877                         $d_socket sys/socket.h 
14878                         $i_niin netinet/in.h 
14879                         $i_netdb netdb.h
14880                         $i_unistd unistd.h"
14881                 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
14882                         case "$netdb_net_type" in
14883                         '')     try="extern struct netent *getnetbyaddr($xxx, int);"
14884                                 if ./protochk "$try" $hdrs; then
14885                                         echo "Your system accepts $xxx."
14886                                         netdb_net_type="$xxx"
14887                                 fi
14888                                 ;;
14889                         esac
14890                 done
14891                 : In case none of those worked, prompt the user.
14892                 case "$netdb_net_type" in
14893                 '')     rp='What is the type for the 1st argument to getnetbyaddr?'
14894                         dflt='long'
14895                         . ./myread
14896                         netdb_net_type=$ans
14897                         ;;
14898                 esac
14899                 ;;
14900         *)      : no getnetbyaddr, so pick harmless default
14901                 netdb_net_type='long'
14902                 ;;
14903         esac
14904 fi
14905 : locate the preferred pager for this system
14906 case "$pager" in
14907 '')
14908         dflt=''
14909         case "$pg" in
14910         /*) dflt=$pg;;
14911         [a-zA-Z]:/*) dflt=$pg;;
14912         esac
14913         case "$more" in
14914         /*) dflt=$more;;
14915         [a-zA-Z]:/*) dflt=$more;;
14916         esac
14917         case "$less" in
14918         /*) dflt=$less;;
14919         [a-zA-Z]:/*) dflt=$less;;
14920         esac
14921         case "$dflt" in
14922         '') dflt=/usr/ucb/more;;
14923         esac
14924         ;;
14925 *) dflt="$pager";;
14926 esac
14927 echo " "
14928 fn=f/
14929 rp='What pager is used on your system?'
14930 . ./getfile
14931 pager="$ans"
14932
14933 : see what type pids are declared as in the kernel
14934 rp="What is the type of process ids on this system?"
14935 set pid_t pidtype int stdio.h sys/types.h
14936 eval $typedef_ask
14937
14938 : Find earliest binary compatible site_perl subdirectory perl can use.
14939 case "$bincompat5005" in
14940 "$define") xs_apiversion='5.005' ;;
14941 *) xs_apiversion=$version ;;   # The current site_perl version.
14942 esac
14943 : Find earliest pure perl site_perl subdirectory perl can use.
14944 : The versioned directories started at 5.005.
14945 pm_apiversion='5.005'
14946
14947 : see if ar generates random libraries by itself
14948 echo " "
14949 echo "Checking how to generate random libraries on your machine..." >&4
14950 echo 'int bar1() { return bar2(); }' > bar1.c
14951 echo 'int bar2() { return 2; }' > bar2.c
14952 $cat > foo.c <<'EOP'
14953 int main() { printf("%d\n", bar1()); exit(0); }
14954 EOP
14955 $cc $ccflags -c bar1.c >/dev/null 2>&1
14956 $cc $ccflags -c bar2.c >/dev/null 2>&1
14957 $cc $ccflags -c foo.c >/dev/null 2>&1
14958 $ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
14959 if $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
14960         $run ./foobar >/dev/null 2>&1; then
14961         echo "$ar appears to generate random libraries itself."
14962         orderlib=false
14963         ranlib=":"
14964 elif $ar ts bar$_a >/dev/null 2>&1 &&
14965         $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
14966         $run ./foobar >/dev/null 2>&1; then
14967                 echo "a table of contents needs to be added with '$ar ts'."
14968                 orderlib=false
14969                 ranlib="$ar ts"
14970 else
14971         case "$ranlib" in
14972         :) ranlib='';;
14973         '')
14974                 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
14975                 $test -f $ranlib || ranlib=''
14976                 ;;
14977         esac
14978         if $test -n "$ranlib"; then
14979                 echo "your system has '$ranlib'; we'll use that."
14980                 orderlib=false
14981         else
14982                 echo "your system doesn't seem to support random libraries"
14983                 echo "so we'll use lorder and tsort to order the libraries."
14984                 orderlib=true
14985                 ranlib=":"
14986         fi
14987 fi
14988 $rm -f foo* bar* 
14989
14990 : check for type of arguments to select. 
14991 case "$selecttype" in
14992 '') case "$d_select" in
14993         $define)
14994                 echo " "
14995                 $cat <<EOM
14996 Checking to see what type of arguments are accepted by select().
14997 EOM
14998                 hdrs="$define sys/types.h
14999                         $i_systime sys/time.h 
15000                         $i_sysselct sys/select.h
15001                         $d_socket sys/socket.h"
15002                 : The first arg can be int, unsigned, or size_t
15003                 : The last arg may or may not be 'const'
15004                 val=''
15005                 : void pointer has been seen but using that
15006                 : breaks the selectminbits test
15007                 for xxx in 'fd_set *' 'int *'; do
15008                         for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
15009                                 for tmo in 'struct timeval *' 'const struct timeval *'; do
15010                                         case "$val" in
15011                                         '')     try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
15012                                                 if ./protochk "$try" $hdrs; then
15013                                                         echo "Your system accepts $xxx."
15014                                                         val="$xxx"
15015                                                 fi
15016                                                 ;;
15017                                         esac
15018                                 done
15019                         done
15020                 done
15021                 case "$val" in
15022                 '')     rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
15023                         case "$d_fd_set" in
15024                                 $define) dflt="fd_set *" ;;
15025                                 *)              dflt="int *" ;;
15026                         esac
15027                         . ./myread
15028                         val=$ans
15029                         ;;
15030                 esac
15031                 selecttype="$val"
15032                 ;;
15033         *)      : no select, so pick a harmless default
15034                 selecttype='int *'
15035                 ;;
15036         esac
15037         ;;
15038 esac
15039
15040 : check for the select 'width'
15041 case "$selectminbits" in
15042 '') case "$d_select" in
15043         $define)
15044                 $cat <<EOM
15045
15046 Checking to see on how many bits at a time your select() operates...
15047 EOM
15048                 $cat >try.c <<EOCP
15049 #include <sys/types.h>
15050 #$i_time I_TIME
15051 #$i_systime I_SYS_TIME
15052 #$i_systimek I_SYS_TIME_KERNEL
15053 #ifdef I_TIME
15054 #   include <time.h>
15055 #endif
15056 #ifdef I_SYS_TIME
15057 #   ifdef I_SYS_TIME_KERNEL
15058 #       define KERNEL
15059 #   endif
15060 #   include <sys/time.h>
15061 #   ifdef I_SYS_TIME_KERNEL
15062 #       undef KERNEL
15063 #   endif
15064 #endif
15065 #$i_sysselct I_SYS_SELECT
15066 #ifdef I_SYS_SELECT
15067 #include <sys/select.h>
15068 #endif
15069 #$d_socket HAS_SOCKET
15070 #ifdef HAS_SOCKET
15071 #   include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
15072 #endif
15073 #include <stdio.h>
15074 $selecttype b;
15075 #define S sizeof(*(b))
15076 #define MINBITS 64
15077 #define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
15078 #define NBITS  (NBYTES * 8)
15079 int main() {
15080     char s[NBYTES];
15081     struct timeval t;
15082     int i;
15083     FILE* fp;
15084     int fd;
15085
15086     fclose(stdin);
15087     fp = fopen("try.c", "r");
15088     if (fp == 0)
15089       exit(1);
15090     fd = fileno(fp);
15091     if (fd < 0)
15092       exit(2);
15093     b = ($selecttype)s;
15094     for (i = 0; i < NBITS; i++)
15095         FD_SET(i, b);
15096     t.tv_sec  = 0;
15097     t.tv_usec = 0;
15098     select(fd + 1, b, 0, 0, &t);
15099     for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
15100     printf("%d\n", i + 1);
15101     return 0;
15102 }
15103 EOCP
15104                 set try
15105                 if eval $compile_ok; then
15106                         selectminbits=`$run ./try`
15107                         case "$selectminbits" in
15108                         '')     cat >&4 <<EOM
15109 Cannot figure out on how many bits at a time your select() operates.
15110 I'll play safe and guess it is 32 bits.
15111 EOM
15112                                 selectminbits=32
15113                                 bits="32 bits"
15114                                 ;;
15115                         1)      bits="1 bit" ;;
15116                         *)      bits="$selectminbits bits" ;;
15117                         esac
15118                         echo "Your select() operates on $bits at a time." >&4
15119                 else
15120                         rp='What is the minimum number of bits your select() operates on?'
15121                         case "$byteorder" in
15122                         1234|12345678)  dflt=32 ;;
15123                         *)              dflt=1  ;;
15124                         esac
15125                         . ./myread
15126                         val=$ans
15127                         selectminbits="$val"
15128                 fi
15129                 $rm -f try.* try
15130                 ;;
15131         *)      : no select, so pick a harmless default
15132                 selectminbits='32'
15133                 ;;
15134         esac
15135         ;;
15136 esac
15137
15138 : Trace out the files included by signal.h, then look for SIGxxx names.
15139 : Remove SIGARRAYSIZE used by HPUX.
15140 : Remove SIGSTKSIZE used by Linux.
15141 : Remove SIGSTKSZ used by Posix.
15142 : Remove SIGTYP void lines used by OS2.
15143 : Some cpps, like os390, dont give the file name anywhere
15144 if [ "X$fieldn" = X ]; then
15145         : Just make some guesses.  We check them later.
15146         xxx='/usr/include/signal.h /usr/include/sys/signal.h'
15147 else
15148         xxx=`echo '#include <signal.h>' |
15149         $cppstdin $cppminus $cppflags 2>/dev/null |
15150         $grep '^[       ]*#.*include' | 
15151         $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sed 's!\\\\\\\\!/!g' | $sort | $uniq`
15152 fi
15153 : Check this list of files to be sure we have parsed the cpp output ok.
15154 : This will also avoid potentially non-existent files, such 
15155 : as ../foo/bar.h
15156 xxxfiles=''
15157 for xx in $xxx /dev/null ; do
15158         $test -f "$xx" && xxxfiles="$xxxfiles $xx"
15159 done
15160 : If we have found no files, at least try signal.h
15161 case "$xxxfiles" in
15162 '')     xxxfiles=`./findhdr signal.h` ;;
15163 esac
15164 xxx=`awk '
15165 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
15166         print substr($2, 4, 20)
15167 }
15168 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
15169         print substr($3, 4, 20)
15170 }' $xxxfiles`
15171 : Append some common names just in case the awk scan failed.
15172 xxx="$xxx ABRT ALRM BUS CANCEL CHLD CLD CONT DIL EMT FPE"
15173 xxx="$xxx FREEZE HUP ILL INT IO IOT KILL LOST LWP PHONE"
15174 xxx="$xxx PIPE POLL PROF PWR QUIT RTMAX RTMIN SEGV STKFLT STOP"
15175 xxx="$xxx SYS TERM THAW TRAP TSTP TTIN TTOU URG USR1 USR2"
15176 xxx="$xxx USR3 USR4 VTALRM WAITING WINCH WIND WINDOW XCPU XFSZ"
15177
15178 : generate a few handy files for later
15179 $cat > signal.c <<'EOCP'
15180 #include <sys/types.h>
15181 #include <signal.h>
15182 #include <stdio.h>
15183 int main() {
15184
15185 /* Strange style to avoid deeply-nested #if/#else/#endif */
15186 #ifndef NSIG
15187 #  ifdef _NSIG
15188 #    define NSIG (_NSIG)
15189 #  endif
15190 #endif
15191
15192 #ifndef NSIG
15193 #  ifdef SIGMAX
15194 #    define NSIG (SIGMAX+1)
15195 #  endif
15196 #endif
15197
15198 #ifndef NSIG
15199 #  ifdef SIG_MAX
15200 #    define NSIG (SIG_MAX+1)
15201 #  endif
15202 #endif
15203
15204 #ifndef NSIG
15205 #  ifdef MAXSIG
15206 #    define NSIG (MAXSIG+1)
15207 #  endif
15208 #endif
15209
15210 #ifndef NSIG
15211 #  ifdef MAX_SIG
15212 #    define NSIG (MAX_SIG+1)
15213 #  endif
15214 #endif
15215
15216 #ifndef NSIG
15217 #  ifdef SIGARRAYSIZE
15218 #    define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
15219 #  endif
15220 #endif
15221
15222 #ifndef NSIG
15223 #  ifdef _sys_nsig
15224 #    define NSIG (_sys_nsig) /* Solaris 2.5 */
15225 #  endif
15226 #endif
15227
15228 /* Default to some arbitrary number that's big enough to get most
15229    of the common signals.
15230 */
15231 #ifndef NSIG
15232 #    define NSIG 50
15233 #endif
15234
15235 printf("NSIG %d\n", NSIG);
15236
15237 #ifndef JUST_NSIG
15238
15239 EOCP
15240
15241 echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
15242 {
15243         printf "#ifdef SIG"; printf $1; printf "\n"
15244         printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
15245         printf $1; printf ");\n"
15246         printf "#endif\n"
15247 }
15248 END {
15249         printf "#endif /* JUST_NSIG */\n";
15250         printf "exit(0);\n}\n";
15251 }
15252 ' >>signal.c
15253 $cat >signal.awk <<'EOP'
15254 BEGIN { ndups = 0 }
15255 $1 ~ /^NSIG$/ { nsig = $2 }
15256 ($1 !~ /^NSIG$/) && (NF == 2) {
15257     if ($2 > maxsig) { maxsig = $2 }
15258     if (sig_name[$2]) {
15259         dup_name[ndups] = $1
15260         dup_num[ndups] = $2
15261         ndups++ 
15262     }
15263     else {
15264         sig_name[$2] = $1
15265         sig_num[$2] = $2
15266     }
15267 }
15268 END { 
15269     if (nsig == 0) {
15270         nsig = maxsig + 1
15271     }
15272     printf("NSIG %d\n", nsig);
15273     for (n = 1; n < nsig; n++) {
15274         if (sig_name[n]) {
15275             printf("%s %d\n", sig_name[n], sig_num[n])
15276         }
15277         else {
15278             printf("NUM%d %d\n", n, n) 
15279         }
15280     }
15281     for (n = 0; n < ndups; n++) {
15282         printf("%s %d\n", dup_name[n], dup_num[n])
15283     }
15284 }
15285 EOP
15286 $cat >signal_cmd <<EOS
15287 $startsh
15288 if $test -s signal.lst; then
15289     echo "Using your existing signal.lst file"
15290         exit 0
15291 fi
15292 xxx="$xxx"
15293 EOS
15294 $cat >>signal_cmd <<'EOS'
15295
15296 set signal
15297 if eval $compile_ok; then
15298         $run ./signal$_exe | $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
15299 else
15300         echo "(I can't seem be able to compile the whole test program)" >&4
15301         echo "(I'll try it in little pieces.)" >&4
15302         set signal -DJUST_NSIG
15303         if eval $compile_ok; then
15304                 $run ./signal$_exe > signal.nsg
15305                 $cat signal.nsg
15306         else
15307                 echo "I can't seem to figure out how many signals you have." >&4
15308                 echo "Guessing 50." >&4
15309                 echo 'NSIG 50' > signal.nsg
15310         fi
15311         : Now look at all the signal names, one at a time.
15312         for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
15313                 $cat > signal.c <<EOCP
15314 #include <sys/types.h>
15315 #include <signal.h>
15316 #include <stdio.h>
15317 int main() {
15318 printf("$xx %d\n", SIG${xx});
15319 return 0;
15320 }
15321 EOCP
15322                 set signal
15323                 if eval $compile; then
15324                         echo "SIG${xx} found."
15325                         $run ./signal$_exe  >> signal.ls1
15326                 else
15327                         echo "SIG${xx} NOT found."
15328                 fi
15329         done
15330         if $test -s signal.ls1; then
15331                 $cat signal.nsg signal.ls1 |
15332                         $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
15333         fi
15334
15335 fi
15336 if $test -s signal.lst; then
15337         :
15338 else
15339         echo "(AAK! I can't compile the test programs -- Guessing)" >&4
15340         echo 'kill -l' >signal
15341         set X `csh -f <signal`
15342         $rm -f signal
15343         shift
15344         case $# in
15345         0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
15346         esac
15347         echo $@ | $tr ' ' $trnl | \
15348             $awk '{ printf "%s %d\n", $1, ++s; }
15349                   END { printf "NSIG %d\n", ++s }' >signal.lst
15350 fi
15351 $rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
15352 EOS
15353 chmod a+x signal_cmd
15354 $eunicefix signal_cmd
15355
15356 : generate list of signal names
15357 echo " "
15358 case "$sig_name_init" in
15359 '') doinit=yes ;;
15360 *)  case "$sig_num_init" in
15361     ''|*,*) doinit=yes ;;
15362     esac ;;
15363 esac
15364 case "$doinit" in
15365 yes)
15366         echo "Generating a list of signal names and numbers..." >&4
15367         . ./signal_cmd
15368         sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
15369         sig_name=`$awk 'BEGIN { printf "ZERO " }
15370                         !/^NSIG/ { printf "%s ", $1 }' signal.lst`
15371         sig_num=`$awk  'BEGIN { printf "0 " }
15372                         !/^NSIG/ { printf "%d ", $2 }' signal.lst`
15373         sig_name_init=`$awk 'BEGIN      { printf "\"ZERO\", " }
15374                              !/^NSIG/   { printf "\"%s\", ", $1 }
15375                              END        { printf "0\n" }' signal.lst`
15376         sig_num_init=`$awk  'BEGIN      { printf "0, " }
15377                              !/^NSIG/   { printf "%d, ", $2}
15378                              END        { printf "0\n"}' signal.lst`
15379         ;;
15380 esac
15381 echo "The following $sig_count signals are available:"
15382 echo " "
15383 echo $sig_name | $awk \
15384 'BEGIN { linelen = 0 }
15385 {
15386         for (i = 1; i <= NF; i++) {
15387                 name = "SIG" $i " "
15388                 linelen = linelen + length(name)
15389                 if (linelen > 70) {
15390                         printf "\n"
15391                         linelen = length(name)
15392                 }
15393                 printf "%s", name
15394         }
15395         printf "\n"
15396 }'
15397 sig_size=`echo $sig_name | awk '{print NF}'`
15398 $rm -f signal signal.c signal.awk signal.lst signal_cmd 
15399
15400 echo " "
15401 case "$sizetype" in
15402 *_t) zzz="$sizetype"    ;;
15403 *)   zzz="filesize"     ;;
15404 esac
15405 echo "Checking the size of $zzz..." >&4 
15406 cat > try.c <<EOCP
15407 #include <sys/types.h>
15408 #include <stdio.h>
15409 int main() {
15410     printf("%d\n", (int)sizeof($sizetype));
15411     exit(0);
15412 }
15413 EOCP
15414 set try
15415 if eval $compile_ok; then
15416         yyy=`$run ./try`
15417         case "$yyy" in
15418         '')     sizesize=4
15419                 echo "(I can't execute the test program--guessing $sizesize.)" >&4
15420                 ;;
15421         *)      sizesize=$yyy
15422                 echo "Your $zzz size is $sizesize bytes."
15423                 ;;
15424         esac
15425 else
15426         sizesize=4
15427         echo "(I can't compile the test program--guessing $sizesize.)" >&4
15428 fi
15429
15430
15431 : check for socklen_t
15432 echo " "
15433 echo "Checking to see if you have socklen_t..." >&4
15434 $cat >try.c <<EOCP
15435 #include <sys/types.h>
15436 #$d_socket HAS_SOCKET
15437 #ifdef HAS_SOCKET
15438 #include <sys/socket.h>
15439 #endif
15440 int main() { socklen_t x = 16; }
15441 EOCP
15442 set try
15443 if eval $compile; then
15444         val="$define"
15445         echo "You have socklen_t."
15446 else
15447         val="$undef"
15448         echo "You do not have socklen_t."
15449         case "$sizetype" in
15450         size_t) echo "(You do have size_t, that might work. Some people are happy with just an int.)" ;;
15451         esac
15452 fi
15453 $rm -f try try.*
15454 set d_socklen_t
15455 eval $setvar
15456
15457 : see if this is a socks.h system
15458 set socks.h i_socks
15459 eval $inhdr
15460
15461 : check for type of the size argument to socket calls
15462 case "$d_socket" in
15463 "$define")
15464         $cat <<EOM
15465
15466 Checking to see what type is the last argument of accept().
15467 EOM
15468         yyy=''
15469         case "$d_socklen_t" in
15470         "$define") yyy="$yyy socklen_t"
15471         esac
15472         yyy="$yyy $sizetype int long unsigned"
15473         for xxx in $yyy; do
15474                 case "$socksizetype" in
15475                 '')     try="extern int accept(int, struct sockaddr *, $xxx *);"
15476                         case "$usesocks" in
15477                         "$define")
15478                                 if ./protochk "$try" $i_systypes sys/types.h $d_socket sys/socket.h literal '#define INCLUDE_PROTOTYPES' $i_socks socks.h.; then
15479                                         echo "Your system accepts '$xxx *' for the last argument of accept()."
15480                                         socksizetype="$xxx"
15481                                 fi
15482                                 ;;
15483                         *)      if ./protochk "$try"  $i_systypes sys/types.h $d_socket sys/socket.h; then
15484                                         echo "Your system accepts '$xxx *' for the last argument of accept()."
15485                                         socksizetype="$xxx"
15486                                 fi
15487                                 ;;
15488                         esac
15489                         ;;
15490                 esac
15491         done
15492 : In case none of those worked, prompt the user.
15493         case "$socksizetype" in
15494         '')     rp='What is the type for socket address structure sizes?'
15495                 dflt='int'
15496                 . ./myread
15497                 socksizetype=$ans
15498                 ;;
15499         esac
15500         ;;
15501 *)      : no sockets, so pick relatively harmless default
15502         socksizetype='int'
15503         ;;
15504 esac
15505
15506 : see what type is used for signed size_t
15507 set ssize_t ssizetype int stdio.h sys/types.h
15508 eval $typedef
15509 dflt="$ssizetype"
15510 $cat > try.c <<EOM
15511 #include <stdio.h>
15512 #include <sys/types.h>
15513 #define Size_t $sizetype
15514 #define SSize_t $dflt
15515 int main()
15516 {
15517         if (sizeof(Size_t) == sizeof(SSize_t))
15518                 printf("$dflt\n");
15519         else if (sizeof(Size_t) == sizeof(int))
15520                 printf("int\n");
15521         else 
15522                 printf("long\n");
15523         exit(0);
15524 }
15525 EOM
15526 echo " "
15527 set try
15528 if eval $compile_ok && $run ./try > /dev/null; then
15529         ssizetype=`$run ./try`
15530         echo "I'll be using $ssizetype for functions returning a byte count." >&4
15531 else
15532         $cat >&4 <<EOM
15533 Help! I can't compile and run the ssize_t test program: please enlighten me!
15534 (This is probably a misconfiguration in your system or libraries, and
15535 you really ought to fix it.  Still, I'll try anyway.)
15536
15537 I need a type that is the same size as $sizetype, but is guaranteed to
15538 be signed.  Common values are ssize_t, int and long.
15539
15540 EOM
15541         rp="What signed type is the same size as $sizetype?"
15542         . ./myread
15543         ssizetype="$ans"
15544 fi
15545 $rm -f try try.*
15546
15547 : see what type of char stdio uses.
15548 echo " "
15549 echo '#include <stdio.h>' | $cppstdin $cppminus > stdioh
15550 if $contains 'unsigned.*char.*_ptr;' stdioh >/dev/null 2>&1 ; then
15551         echo "Your stdio uses unsigned chars." >&4
15552         stdchar="unsigned char"
15553 else
15554         echo "Your stdio uses signed chars." >&4
15555         stdchar="char"
15556 fi
15557 $rm -f stdioh
15558
15559
15560
15561 : see if time exists
15562 echo " "
15563 if test "X$d_time" = X -o X"$timetype" = X; then
15564     if set time val -f d_time; eval $csym; $val; then
15565                 echo 'time() found.' >&4
15566                 val="$define"
15567                 rp="What is the type returned by time() on this system?"
15568                 set time_t timetype long stdio.h sys/types.h
15569                 eval $typedef_ask
15570     else
15571                 echo 'time() not found, hope that will do.' >&4
15572                 val="$undef"
15573                 timetype='int';
15574     fi
15575     set d_time
15576     eval $setvar
15577 fi
15578
15579 : see what type uids are declared as in the kernel
15580 echo " "
15581 echo "Looking for the type for user ids returned by getuid()."
15582 set uid_t uidtype xxx stdio.h sys/types.h
15583 eval $typedef
15584 case "$uidtype" in
15585 xxx)
15586         xxx=`./findhdr sys/user.h`
15587         set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
15588         case $1 in
15589         unsigned) dflt="$1 $2" ;;
15590         *) dflt="$1" ;;
15591         esac
15592         ;;
15593 *) dflt="$uidtype";;
15594 esac
15595 case "$uidtype" in
15596 uid_t)  echo "uid_t found." ;;
15597 *)      rp="What is the type for user ids returned by getuid()?"
15598         . ./myread
15599         uidtype="$ans"
15600         ;;
15601 esac
15602
15603 echo " "
15604 case "$uidtype" in
15605 *_t) zzz="$uidtype"     ;;
15606 *)   zzz="uid"          ;;
15607 esac
15608 echo "Checking the size of $zzz..." >&4 
15609 cat > try.c <<EOCP
15610 #include <sys/types.h>
15611 #include <stdio.h>
15612 int main() {
15613     printf("%d\n", (int)sizeof($uidtype));
15614     exit(0);
15615 }
15616 EOCP
15617 set try
15618 if eval $compile_ok; then
15619         yyy=`$run ./try`
15620         case "$yyy" in
15621         '')     uidsize=4
15622                 echo "(I can't execute the test program--guessing $uidsize.)" >&4
15623                 ;;
15624         *)      uidsize=$yyy
15625                 echo "Your $zzz is $uidsize bytes long."
15626                 ;;
15627         esac
15628 else
15629         uidsize=4
15630         echo "(I can't compile the test program--guessing $uidsize.)" >&4
15631 fi
15632
15633 echo " "
15634 case "$uidtype" in
15635 *_t) zzz="$uidtype"     ;;
15636 *)   zzz="uid"          ;;
15637 esac
15638 echo "Checking the sign of $zzz..." >&4
15639 cat > try.c <<EOCP
15640 #include <sys/types.h>
15641 #include <stdio.h>
15642 int main() {
15643         $uidtype foo = -1;
15644         if (foo < 0)
15645                 printf("-1\n");
15646         else
15647                 printf("1\n");
15648 }
15649 EOCP
15650 set try
15651 if eval $compile; then
15652         yyy=`$run ./try`
15653         case "$yyy" in
15654         '')     uidsign=1
15655                 echo "(I can't execute the test program--guessing unsigned.)" >&4
15656                 ;;
15657         *)      uidsign=$yyy
15658                 case "$uidsign" in
15659                  1) echo "Your $zzz is unsigned." ;;
15660                 -1) echo "Your $zzz is signed."   ;;
15661                 esac
15662                 ;;
15663         esac
15664 else
15665         uidsign=1
15666         echo "(I can't compile the test program--guessing unsigned.)" >&4
15667 fi
15668
15669
15670
15671 echo " "
15672 $echo "Checking the format string to be used for uids..." >&4
15673
15674 case "$uidsign" in
15675 -1)     if $test X"$uidsize" = X"$ivsize"; then
15676                 uidformat="$ivdformat"
15677         else
15678                 if $test X"$uidsize" = X"$longsize"; then
15679                         uidformat='"ld"'
15680                 else
15681                         if $test X"$uidsize" = X"$intsize"; then
15682                                 uidformat='"d"'
15683                         else
15684                                 if $test X"$uidsize" = X"$shortsize"; then
15685                                         uidformat='"hd"'
15686                                 fi
15687                         fi
15688                 fi
15689         fi
15690         ;;
15691 *)      if $test X"$uidsize" = X"$uvsize"; then
15692                 uidformat="$uvuformat"
15693         else
15694                 if $test X"$uidsize" = X"$longsize"; then
15695                         uidformat='"lu"'
15696                 else
15697                         if $test X"$uidsize" = X"$intsize"; then
15698                                 uidformat='"u"'
15699                         else
15700                                 if $test X"$uidsize" = X"$shortsize"; then
15701                                         uidformat='"hu"'
15702                                 fi
15703                         fi
15704                 fi
15705         fi
15706         ;;
15707 esac
15708
15709 : determine compiler compiler
15710 case "$yacc" in
15711 '')
15712         dflt=yacc;;
15713 *)
15714         dflt="$yacc";;
15715 esac
15716 echo " "
15717 comp='yacc'
15718 if $test -f "$byacc"; then
15719         dflt="$byacc"
15720         comp="byacc or $comp"
15721 fi
15722 if $test -f "$bison"; then
15723         comp="$comp or bison -y"
15724 fi
15725 rp="Which compiler compiler ($comp) shall I use?"
15726 . ./myread
15727 yacc="$ans"
15728 case "$yacc" in
15729 *bis*)
15730         case "$yacc" in
15731         *-y*) ;;
15732         *)
15733                 yacc="$yacc -y"
15734                 echo "(Adding -y option to bison to get yacc-compatible behaviour.)"
15735                 ;;
15736         esac
15737         ;;
15738 esac
15739
15740 : see if fcntl.h is there
15741 val=''
15742 set fcntl.h val
15743 eval $inhdr
15744
15745 : see if we can include fcntl.h
15746 case "$val" in
15747 "$define")
15748         echo " "
15749         if $h_fcntl; then
15750                 val="$define"
15751                 echo "We'll be including <fcntl.h>." >&4
15752         else
15753                 val="$undef"
15754                 if $h_sysfile; then
15755         echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
15756                 else
15757                         echo "We won't be including <fcntl.h>." >&4
15758                 fi
15759         fi
15760         ;;
15761 *)
15762         h_fcntl=false
15763         val="$undef"
15764         ;;
15765 esac
15766 set i_fcntl
15767 eval $setvar
15768
15769 : see if this is a iconv.h system
15770 set iconv.h i_iconv
15771 eval $inhdr
15772
15773 : see if this is a ieeefp.h system
15774 set ieeefp.h i_ieeefp
15775 eval $inhdr
15776
15777 : see if this is a libutil.h system
15778 set libutil.h i_libutil
15779 eval $inhdr
15780
15781 : see if locale.h is available
15782 set locale.h i_locale
15783 eval $inhdr
15784
15785 : see if mach cthreads are available
15786 if test "X$usethreads" = "X$define"; then
15787         set mach/cthreads.h i_machcthr
15788         eval $inhdr
15789 else
15790         i_machcthr="$undef"
15791 fi
15792
15793
15794
15795 : see if this is a math.h system
15796 set math.h i_math
15797 eval $inhdr
15798
15799 : see if this is a mntent.h system
15800 set mntent.h i_mntent
15801 eval $inhdr
15802
15803 : see if ndbm.h is available
15804 set ndbm.h t_ndbm
15805 eval $inhdr
15806 case "$t_ndbm" in
15807 $define)
15808         : see if dbm_open exists
15809         set dbm_open d_dbm_open
15810         eval $inlibc
15811         case "$d_dbm_open" in
15812         $undef)
15813                 t_ndbm="$undef"
15814                 echo "We won't be including <ndbm.h>"
15815                 ;;
15816         esac
15817         ;;
15818 esac
15819 val="$t_ndbm"
15820 set i_ndbm
15821 eval $setvar
15822
15823 : see if net/errno.h is available
15824 val=''
15825 set net/errno.h val
15826 eval $inhdr
15827
15828 : Unfortunately, it causes problems on some systems.  Arrgh.
15829 case "$val" in
15830 $define)
15831         cat > try.c <<'EOM'
15832 #include <stdio.h>
15833 #include <errno.h>
15834 #include <net/errno.h>
15835 int func()
15836 {
15837         return ENOTSOCK;
15838 }
15839 EOM
15840         if $cc $ccflags -c try.c >/dev/null 2>&1; then
15841                 echo "We'll be including <net/errno.h>." >&4
15842         else
15843                 echo "We won't be including <net/errno.h>." >&4
15844                 val="$undef"
15845         fi
15846         $rm -f try.* try
15847         ;;
15848 esac
15849 set i_neterrno
15850 eval $setvar
15851
15852 : see if netinet/tcp.h is available
15853 set netinet/tcp.h i_netinettcp
15854 eval $inhdr
15855
15856 : see if this is a poll.h system
15857 set poll.h i_poll
15858 eval $inhdr
15859
15860 : see if this is a prot.h system
15861 set prot.h i_prot
15862 eval $inhdr
15863
15864 echo " "
15865 $echo "Guessing which symbols your C compiler and preprocessor define..." >&4 
15866 $cat <<'EOSH' > Cppsym.know
15867 a29k ABI64 aegis AES_SOURCE AIX AIX32 AIX370
15868 AIX41 AIX42 AIX43 AIX_SOURCE aixpc ALL_SOURCE
15869 alliant alpha am29000 AM29000 AMD64 amiga AMIGAOS AMIX
15870 ansi ANSI_C_SOURCE apollo ardent ARM32 atarist att386 att3b
15871 BeOS BIG_ENDIAN BIT_MSF bsd BSD bsd43 bsd4_2 bsd4_3 BSD4_3 bsd4_4
15872 BSD_4_3 BSD_4_4 BSD_NET2 BSD_TIME BSD_TYPES BSDCOMPAT bsdi
15873 bull c cadmus clipper CMU COFF COMPILER_VERSION
15874 concurrent convex cpu cray CRAY CRAYMPP ctix CX_UX
15875 CYGWIN DGUX DGUX_SOURCE DJGPP dmert DOLPHIN DPX2 DSO
15876 Dynix DynixPTX ELF encore EPI EXTENSIONS FILE_OFFSET_BITS
15877 FreeBSD GCC_NEW_VARARGS gcos gcx gimpel
15878 GNU_SOURCE GNUC GNUC_MINOR GO32 gould GOULD_PN
15879 H3050R H3050RX hbullx20 hcx host_mips
15880 hp200 hp300 hp700 HP700 hp800 hp9000
15881 hp9000s200 hp9000s300 hp9000s400 hp9000s500
15882 hp9000s700 hp9000s800 hp9k8 hp_osf hppa hpux HPUX_SOURCE
15883 i186 i286 i386 i486 i586 i686 i8086 i80960 i860 I960
15884 IA64 iAPX286 ibm ibm032 ibmesa IBMR2 ibmrt ILP32 ILP64
15885 INLINE_INTRINSICS INTRINSICS INT64 interdata is68k ksr1
15886 LANGUAGE_C LARGE_FILE_API LARGEFILE64_SOURCE
15887 LARGEFILE_SOURCE LFS64_LARGEFILE LFS_LARGEFILE
15888 Linux LITTLE_ENDIAN LONG64 LONG_DOUBLE LONG_LONG
15889 LONGDOUBLE LONGLONG LP64 luna luna88k Lynx
15890 M68000 m68k m88100 m88k M88KBCS_TARGET M_COFF
15891 M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM M_SYS3
15892 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX MACH machine MachTen
15893 MATH_HAS_NO_SIDE_EFFECTS
15894 mc300 mc500 mc68000 mc68010 mc68020 mc68030 mc68040
15895 mc68060 mc68k mc68k32 mc700 mc88000 mc88100 merlin
15896 mert MiNT mips MIPS_FPSET MIPS_ISA MIPS_SIM MIPS_SZINT
15897 MIPS_SZLONG MIPS_SZPTR MIPSEB MIPSEL MODERN_C motorola
15898 mpeix MSDOS MTXINU MULTIMAX mvs MVS n16 ncl_el ncl_mr
15899 NetBSD news1500 news1700 news1800 news1900 news3700
15900 news700 news800 news900 NeXT NLS nonstopux ns16000 ns32000
15901 ns32016 ns32332 ns32k nsc32000
15902 OCS88 OEMVS OpenBSD os OS2 OS390 osf OSF1 OSF_SOURCE
15903 pa_risc PA_RISC1_1 PA_RISC2_0 PARAGON parisc
15904 pc532 pdp11 PGC PIC plexus PORTAR posix
15905 POSIX1B_SOURCE POSIX2_SOURCE POSIX4_SOURCE
15906 POSIX_C_SOURCE POSIX_SOURCE POWER
15907 PROTOTYPES PWB pyr QNX R3000 REENTRANT RES Rhapsody RISC6000
15908 riscix riscos RT S390 SA110 scs SCO sequent sgi SGI_SOURCE SH3 sinix
15909 SIZE_INT SIZE_LONG SIZE_PTR SOCKET_SOURCE SOCKETS_SOURCE
15910 sony sony_news sonyrisc sparc sparclite spectrum
15911 stardent stdc STDC_EXT stratos sun sun3 sun386
15912 Sun386i svr3 svr4 SVR4_2 SVR4_SOURCE svr5
15913 SX system SYSTYPE_BSD SYSTYPE_BSD43 SYSTYPE_BSD44
15914 SYSTYPE_SVR4 SYSTYPE_SVR5 SYSTYPE_SYSV SYSV SYSV3 SYSV4 SYSV5
15915 sysV68 sysV88 Tek4132 Tek4300 titan
15916 TM3200 TM5400 TM5600
15917 tower tower32 tower32_200 tower32_600 tower32_700
15918 tower32_800 tower32_850 tss
15919 u370 u3b u3b2 u3b20 u3b200 u3b20d u3b5
15920 ultrix UMAXV UnicomPBB UnicomPBD UNICOS UNICOSMK
15921 unix UNIX95 UNIX99 unixpc unos USGr4 USGr4_2
15922 Utek UTek UTS UWIN uxpm uxps vax venix VMESA vms xenix Xenix286
15923 XOPEN_SOURCE XOPEN_SOURCE_EXTENDED XPG2 XPG2_EXTENDED
15924 XPG3 XPG3_EXTENDED XPG4 XPG4_EXTENDED
15925 z8000
15926 EOSH
15927 # Maybe put other stuff here too.
15928 cat <<EOSH >>Cppsym.know
15929 $osname
15930 EOSH
15931 ./tr '[a-z]' '[A-Z]' < Cppsym.know > Cppsym.a
15932 ./tr '[A-Z]' '[a-z]' < Cppsym.know > Cppsym.b
15933 $cat Cppsym.know > Cppsym.c
15934 $cat Cppsym.a Cppsym.b Cppsym.c | $tr ' ' $trnl | $sort | $uniq > Cppsym.know
15935 $rm -f Cppsym.a Cppsym.b Cppsym.c
15936 cat <<EOSH > Cppsym
15937 $startsh
15938 if $test \$# -gt 0; then
15939     echo \$* | $tr " " "$trnl" | ./Cppsym.try > Cppsym.got
15940     if $test -s Cppsym.got; then
15941         $rm -f Cppsym.got
15942         exit 0
15943     fi
15944     $rm -f Cppsym.got
15945     exit 1
15946 else
15947     $tr " " "$trnl" | ./Cppsym.try
15948     exit 0
15949 fi
15950 EOSH
15951 chmod +x Cppsym
15952 $eunicefix Cppsym
15953 cat <<EOSH > Cppsym.try
15954 $startsh
15955 cat <<'EOCP' > try.c
15956 #include <stdio.h>
15957 int main() {
15958 EOCP
15959 $awk \\
15960 EOSH
15961 cat <<'EOSH' >> Cppsym.try
15962 'length($1) > 0 {
15963     printf "#ifdef %s\n#if %s+0\nprintf(\"%s=%%ld\\n\", (long)%s);\n#else\nprintf(\"%s\\n\");\n#endif\n#endif\n", $1, $1, $1, $1, $1
15964     printf "#ifdef _%s\n#if _%s+0\nprintf(\"_%s=%%ld\\n\", (long)_%s);\n#else\nprintf(\"_%s\\n\");\n#endif\n#endif\n", $1, $1, $1, $1, $1
15965     printf "#ifdef __%s\n#if __%s+0\nprintf(\"__%s=%%ld\\n\", (long)__%s);\n#else\nprintf(\"__%s\\n\");\n#endif\n#endif\n", $1, $1, $1, $1, $1
15966     printf "#ifdef __%s__\n#if __%s__+0\nprintf(\"__%s__=%%ld\\n\", (long)__%s__);\n#else\nprintf(\"__%s__\\n\");\n#endif\n#endif\n", $1, $1, $1, $1, $1
15967 }'       >> try.c
15968 echo 'return 0;}' >> try.c
15969 EOSH
15970 cat <<EOSH >> Cppsym.try
15971 ccflags="$ccflags"
15972 case "$osname-$gccversion" in
15973 irix-) ccflags="\$ccflags -woff 1178" ;;
15974 os2-*) ccflags="\$ccflags -Zlinker /PM:VIO" ;;
15975 esac
15976 $cc -o try $optimize \$ccflags $ldflags try.c $libs && $run ./try
15977 EOSH
15978 chmod +x Cppsym.try
15979 $eunicefix Cppsym.try
15980 ./Cppsym < Cppsym.know > Cppsym.true
15981 : now check the C compiler for additional symbols
15982 postprocess_cc_v=''
15983 case "$osname" in
15984 aix) postprocess_cc_v="|$tr , ' '" ;;
15985 esac
15986 $cat >ccsym <<EOS
15987 $startsh
15988 $cat >tmp.c <<EOF
15989 extern int foo;
15990 EOF
15991 for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
15992 do
15993         case "\$i" in
15994         -D*) echo "\$i" | $sed 's/^-D//';;
15995         -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A\(.*\)(\(.*\))/\1=\2/';;
15996         esac
15997 done
15998 $rm -f try.c
15999 EOS
16000 postprocess_cc_v=''
16001 chmod +x ccsym
16002 $eunicefix ccsym
16003 ./ccsym > ccsym1.raw
16004 if $test -s ccsym1.raw; then
16005        $sort ccsym1.raw | $uniq >ccsym.raw
16006 else
16007        mv ccsym1.raw ccsym.raw
16008 fi
16009
16010 $awk '/\=/ { print $0; next }
16011         { print $0"=1" }' ccsym.raw >ccsym.list
16012 $awk '/\=/ { print $0; next }
16013         { print $0"=1" }' Cppsym.true >ccsym.true
16014 $comm -13 ccsym.true ccsym.list >ccsym.own
16015 $comm -12 ccsym.true ccsym.list >ccsym.com
16016 $comm -23 ccsym.true ccsym.list >ccsym.cpp
16017 also=''
16018 if $test -z ccsym.raw; then
16019         echo "Your C compiler doesn't seem to define any symbols!" >&4
16020         echo " "
16021         echo "However, your C preprocessor defines the following symbols:"
16022         $cat Cppsym.true
16023         ccsymbols=''
16024         cppsymbols=`$cat Cppsym.true`
16025         cppsymbols=`echo $cppsymbols`
16026         cppccsymbols="$cppsymbols"
16027 else
16028         if $test -s ccsym.com; then
16029                 echo "Your C compiler and pre-processor define these symbols:"
16030                 $sed -e 's/\(..*\)=.*/\1/' ccsym.com
16031                 also='also '
16032                 symbols='ones'
16033                 cppccsymbols=`$cat ccsym.com`
16034                 cppccsymbols=`echo $cppccsymbols`
16035                 $test "$silent" || sleep 1
16036         fi
16037         if $test -s ccsym.cpp; then
16038                 $test "$also" && echo " "
16039                 echo "Your C pre-processor ${also}defines the following symbols:"
16040                 $sed -e 's/\(..*\)=.*/\1/' ccsym.cpp
16041                 also='further '
16042                 cppsymbols=`$cat ccsym.cpp`
16043                 cppsymbols=`echo $cppsymbols`
16044                 $test "$silent" || sleep 1
16045         fi
16046         if $test -s ccsym.own; then
16047                 $test "$also" && echo " "
16048                 echo "Your C compiler ${also}defines the following cpp symbols:"
16049                 $sed -e 's/\(..*\)=1/\1/' ccsym.own
16050                 $sed -e 's/\(..*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
16051                 ccsymbols=`$cat ccsym.own`
16052                 ccsymbols=`echo $ccsymbols`
16053                 $test "$silent" || sleep 1
16054         fi
16055 fi
16056
16057 : see if this is a termio system
16058 val="$undef"
16059 val2="$undef"
16060 val3="$undef"
16061 if $test `./findhdr termios.h`; then
16062         set tcsetattr i_termios
16063         eval $inlibc
16064         val3="$i_termios"
16065 fi
16066 echo " "
16067 case "$val3" in
16068 "$define") echo "You have POSIX termios.h... good!" >&4;;
16069 *) if ./Cppsym pyr; then
16070                 case "`/bin/universe`" in
16071                 ucb) if $test `./findhdr sgtty.h`; then
16072                                 val2="$define"
16073                                 echo "<sgtty.h> found." >&4
16074                         else
16075                                 echo "System is pyramid with BSD universe."
16076                                 echo "<sgtty.h> not found--you could have problems." >&4
16077                         fi;;
16078                 *) if $test `./findhdr termio.h`; then
16079                                 val="$define"
16080                                 echo "<termio.h> found." >&4
16081                         else
16082                                 echo "System is pyramid with USG universe."
16083                                 echo "<termio.h> not found--you could have problems." >&4
16084                         fi;;
16085                 esac
16086         elif ./usg; then
16087                 if $test `./findhdr termio.h`; then
16088                         echo "<termio.h> found." >&4
16089                         val="$define"
16090                 elif $test `./findhdr sgtty.h`; then
16091                         echo "<sgtty.h> found." >&4
16092                         val2="$define"
16093                 else
16094 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
16095                 fi
16096         else
16097                 if $test `./findhdr sgtty.h`; then
16098                         echo "<sgtty.h> found." >&4
16099                         val2="$define"
16100                 elif $test `./findhdr termio.h`; then
16101                         echo "<termio.h> found." >&4
16102                         val="$define"
16103                 else
16104 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
16105                 fi
16106         fi;;
16107 esac
16108 set i_termio; eval $setvar
16109 val=$val2; set i_sgtty; eval $setvar
16110 val=$val3; set i_termios; eval $setvar
16111
16112 : see if this is a shadow.h system
16113 set shadow.h i_shadow
16114 eval $inhdr
16115
16116 : see if stddef is available
16117 set stddef.h i_stddef
16118 eval $inhdr
16119
16120 : see if this is a sunmath.h system
16121 set sunmath.h i_sunmath
16122 eval $inhdr
16123
16124 : see if sys/access.h is available
16125 set sys/access.h i_sysaccess
16126 eval $inhdr
16127
16128 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
16129 set sys/filio.h i_sysfilio
16130 eval $inhdr
16131 echo " "
16132 if $test `./findhdr sys/ioctl.h`; then
16133         val="$define"
16134         echo '<sys/ioctl.h> found.' >&4
16135 else
16136         val="$undef"
16137         if $test $i_sysfilio = "$define"; then
16138             echo '<sys/ioctl.h> NOT found.' >&4
16139         else
16140                 $test $i_sgtty = "$define" && xxx="sgtty.h"
16141                 $test $i_termio = "$define" && xxx="termio.h"
16142                 $test $i_termios = "$define" && xxx="termios.h"
16143 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
16144         fi
16145 fi
16146 set i_sysioctl
16147 eval $setvar
16148
16149 : see if socket ioctl defs are in sys/sockio.h
16150 echo " "
16151 xxx=`./findhdr sys/sockio.h`
16152 if $test "$xxx"; then
16153         if $contains SIOCATMARK $xxx >/dev/null 2>&1; then
16154                 val="$define"
16155                 echo "You have socket ioctls defined in <sys/sockio.h>." >&4
16156         else
16157                 val="$undef"
16158                 echo "No socket ioctls found in <sys/sockio.h>." >&4
16159         fi
16160 else
16161         val="$undef"
16162         $cat <<EOM
16163 <sys/sockio.h> not found, assuming socket ioctls are in <sys/ioctl.h>.
16164 EOM
16165 fi
16166 set i_syssockio
16167 eval $setvar
16168
16169
16170 : see if this is a syslog.h system
16171 set syslog.h i_syslog
16172 eval $inhdr
16173
16174
16175 : see if this is a sys/mode.h system
16176 set sys/mode.h i_sysmode
16177 eval $inhdr
16178
16179 : see if sys/resource.h has to be included
16180 set sys/resource.h i_sysresrc
16181 eval $inhdr
16182
16183 : see if sys/security.h is available
16184 set sys/security.h i_syssecrt
16185 eval $inhdr
16186
16187 : see if this is a sys/statvfs.h system
16188 set sys/statvfs.h i_sysstatvfs
16189 eval $inhdr
16190
16191 : see if this is a sys/un.h system
16192 set sys/un.h i_sysun
16193 eval $inhdr
16194
16195
16196 : see if this is a sys/utsname.h system
16197 set sys/utsname.h i_sysutsname
16198 eval $inhdr
16199
16200 : see if this is a syswait system
16201 set sys/wait.h i_syswait
16202 eval $inhdr
16203
16204 : see if this is a ustat.h system
16205 set ustat.h i_ustat
16206 eval $inhdr
16207
16208 : see if this is an utime system
16209 set utime.h i_utime
16210 eval $inhdr
16211
16212 : see if this is a values.h system
16213 set values.h i_values
16214 eval $inhdr
16215
16216 : see if this is a vfork system
16217 case "$d_vfork" in
16218 "$define")
16219         set vfork.h i_vfork
16220         eval $inhdr
16221         ;;
16222 *)
16223         i_vfork="$undef"
16224         ;;
16225 esac
16226
16227 : see if gdbm.h is available
16228 set gdbm.h t_gdbm
16229 eval $inhdr
16230 case "$t_gdbm" in
16231 $define)
16232         : see if gdbm_open exists
16233         set gdbm_open d_gdbm_open
16234         eval $inlibc
16235         case "$d_gdbm_open" in
16236         $undef)
16237                 t_gdbm="$undef"
16238                 echo "We won't be including <gdbm.h>"
16239                 ;;
16240         esac
16241         ;;
16242 esac
16243 val="$t_gdbm"
16244 set i_gdbm
16245 eval $setvar
16246
16247 echo " "
16248 echo "Looking for extensions..." >&4
16249 : If we are using the old config.sh, known_extensions may contain
16250 : old or inaccurate or duplicate values.
16251 known_extensions=''
16252 nonxs_extensions=''
16253 : We do not use find because it might not be available.
16254 : We do not just use MANIFEST because the user may have dropped
16255 : some additional extensions into the source tree and expect them
16256 : to be built.
16257
16258 : Function to recursively find available extensions, ignoring DynaLoader
16259 : NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
16260 find_extensions='
16261     for xxx in *; do
16262        case "$xxx" in
16263            DynaLoader|dynaload) ;;
16264            *)
16265            if $test -f $xxx/$xxx.xs; then
16266                known_extensions="$known_extensions $1$xxx";
16267            elif $test -f $xxx/Makefile.PL; then
16268                nonxs_extensions="$nonxs_extensions $1$xxx";
16269            else
16270                if $test -d $xxx -a $# -lt 10; then
16271                    set $1$xxx/ $*;
16272                    cd $xxx;
16273                    eval $find_extensions;
16274                    cd ..;
16275                    shift;
16276                fi;
16277            fi
16278            ;;
16279        esac;
16280     done'
16281 tdir=`pwd`
16282 cd $rsrc/ext
16283 set X
16284 shift
16285 eval $find_extensions
16286 set X $nonxs_extensions
16287 shift
16288 nonxs_extensions="$*"
16289 set X $known_extensions
16290 shift
16291 known_extensions="$*"
16292 cd $tdir
16293
16294 : Now see which are supported on this system.
16295 avail_ext=''
16296 for xxx in $known_extensions ; do
16297         case "$xxx" in
16298         DB_File|db_file)
16299                 case "$i_db" in
16300                 $define) avail_ext="$avail_ext $xxx" ;;
16301                 esac
16302                 ;;
16303         GDBM_File|gdbm_fil)
16304                 case "$i_gdbm" in 
16305                 $define) avail_ext="$avail_ext $xxx" ;;
16306                 esac
16307                 ;;
16308         I18N/Langinfo|i18n_lan)
16309                 case "$i_langinfo$d_nl_langinfo" in 
16310                 $define$define) avail_ext="$avail_ext $xxx" ;;
16311                 esac
16312                 ;;
16313         NDBM_File|ndbm_fil)
16314                 case "$i_ndbm" in
16315                 $define)
16316                     case "$osname-$use64bitint" in
16317                     cygwin-*|hpux-define)
16318                         case "$libs" in
16319                         *-lndbm*) avail_ext="$avail_ext $xxx" ;;
16320                         esac
16321                         ;;
16322                     *) avail_ext="$avail_ext $xxx" ;;
16323                     esac
16324                     ;;
16325                 esac
16326                 ;;
16327         ODBM_File|odbm_fil) 
16328                 case "${i_dbm}${i_rpcsvcdbm}" in
16329                 *"${define}"*)
16330                     case "$osname-$use64bitint" in
16331                     cygwin-*|hpux-define)
16332                         case "$libs" in
16333                         *-ldbm*) avail_ext="$avail_ext $xxx" ;;
16334                         esac
16335                         ;;
16336                     *) avail_ext="$avail_ext $xxx" ;;
16337                     esac
16338                     ;;
16339                 esac
16340                 ;;
16341         POSIX|posix)
16342                 case "$useposix" in
16343                 true|define|y) avail_ext="$avail_ext $xxx" ;;
16344                 esac
16345                 ;;
16346         Opcode|opcode)
16347                 case "$useopcode" in
16348                 true|define|y) avail_ext="$avail_ext $xxx" ;;
16349                 esac
16350                 ;;
16351         Socket|socket)
16352                 case "$d_socket" in 
16353                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
16354                 esac
16355                 ;;
16356         Sys/Syslog|sys/syslog)
16357                 : XXX syslog requires socket
16358                 case "$d_socket" in 
16359                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
16360                 esac
16361                 ;;
16362         Thread|thread)
16363                 case "$usethreads" in
16364                 true|$define|y)
16365                         case "$useithreads" in
16366                         $undef|false|[nN]*) avail_ext="$avail_ext $xxx" ;;
16367                         esac
16368                 esac
16369                 ;;
16370         IPC/SysV|ipc/sysv)
16371                 : XXX Do we need a useipcsysv variable here
16372                 case "${d_msg}${d_sem}${d_shm}" in 
16373                 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
16374                 esac
16375                 ;;
16376         *)      avail_ext="$avail_ext $xxx"
16377                 ;;
16378         esac
16379 done
16380
16381 set X $avail_ext
16382 shift
16383 avail_ext="$*"
16384
16385 : Now see which nonxs extensions are supported on this system.
16386 : For now assume all are.
16387 nonxs_ext=''
16388 for xxx in $nonxs_extensions ; do
16389         case "$xxx" in
16390         *)      nonxs_ext="$nonxs_ext $xxx"
16391                 ;;
16392         esac
16393 done
16394
16395 set X $nonxs_ext
16396 shift
16397 nonxs_ext="$*"
16398
16399 case $usedl in
16400 $define)
16401         $cat <<EOM
16402 A number of extensions are supplied with $package.  You may choose to
16403 compile these extensions for dynamic loading (the default), compile
16404 them into the $package executable (static loading), or not include
16405 them at all.  Answer "none" to include no extensions.
16406 Note that DynaLoader is always built and need not be mentioned here.
16407
16408 EOM
16409         case "$dynamic_ext" in
16410         '') dflt="$avail_ext" ;;
16411         *)      dflt="$dynamic_ext"
16412                 # Perhaps we are reusing an old out-of-date config.sh.
16413                 case "$hint" in
16414                 previous)
16415                         if test X"$dynamic_ext" != X"$avail_ext"; then
16416                                 $cat <<EOM
16417 NOTICE:  Your previous config.sh list may be incorrect. 
16418 The extensions now available to you are 
16419         ${avail_ext}
16420 but the default list from your previous config.sh is
16421         ${dynamic_ext} 
16422
16423 EOM
16424                         fi
16425                         ;;
16426                 esac
16427                 ;;
16428         esac
16429         case "$dflt" in
16430         '')     dflt=none;;
16431         esac
16432         rp="What extensions do you wish to load dynamically?"
16433         . ./myread
16434         case "$ans" in
16435         none) dynamic_ext=' ' ;;
16436         *) dynamic_ext="$ans" ;;
16437         esac
16438
16439         case "$static_ext" in
16440         '')
16441                 : Exclude those already listed in dynamic linking
16442                 dflt=''
16443                 for xxx in $avail_ext; do
16444                         case " $dynamic_ext " in
16445                         *" $xxx "*) ;;
16446                         *) dflt="$dflt $xxx" ;;
16447                         esac
16448                 done
16449                 set X $dflt
16450                 shift
16451                 dflt="$*"
16452                 ;;
16453         *)  dflt="$static_ext" 
16454                 ;;
16455         esac
16456
16457         case "$dflt" in
16458         '')     dflt=none;;
16459         esac
16460         rp="What extensions do you wish to load statically?"
16461         . ./myread
16462         case "$ans" in
16463         none) static_ext=' ' ;;
16464         *) static_ext="$ans" ;;
16465         esac
16466         ;;
16467 *)
16468         $cat <<EOM
16469 A number of extensions are supplied with $package.  Answer "none" 
16470 to include no extensions. 
16471 Note that DynaLoader is always built and need not be mentioned here.
16472
16473 EOM
16474         case "$static_ext" in
16475         '') dflt="$avail_ext" ;;
16476         *)      dflt="$static_ext"
16477                 # Perhaps we are reusing an old out-of-date config.sh.
16478                 case "$hint" in
16479                 previous)
16480                         if test X"$static_ext" != X"$avail_ext"; then
16481                                 $cat <<EOM
16482 NOTICE:  Your previous config.sh list may be incorrect. 
16483 The extensions now available to you are 
16484         ${avail_ext}
16485 but the default list from your previous config.sh is
16486         ${static_ext} 
16487
16488 EOM
16489                         fi
16490                         ;;
16491                 esac
16492                 ;;
16493         esac
16494         : Exclude those that are not xs extensions
16495         case "$dflt" in
16496         '')     dflt=none;;
16497         esac
16498         rp="What extensions do you wish to include?"
16499         . ./myread
16500         case "$ans" in
16501         none) static_ext=' ' ;;
16502         *) static_ext="$ans" ;;
16503         esac
16504         ;;
16505 esac
16506
16507 set X $dynamic_ext $static_ext $nonxs_ext
16508 shift
16509 extensions="$*"
16510
16511 : Remove libraries needed only for extensions
16512 : The appropriate ext/Foo/Makefile.PL will add them back in, if necessary.
16513 : The exception is SunOS 4.x, which needs them.
16514 case "${osname}X${osvers}" in
16515 sunos*X4*)
16516     perllibs="$libs"
16517     ;;
16518 *) case "$usedl" in
16519     $define|true|[yY]*)
16520             set X `echo " $libs " | sed -e 's@ -lndbm @ @' -e 's@ -lgdbm @ @' -e 's@ -ldbm @ @' -e 's@ -ldb @ @'` 
16521             shift
16522             perllibs="$*"
16523             ;;
16524     *)  perllibs="$libs"
16525             ;;
16526     esac
16527     ;;
16528 esac
16529
16530 : Remove build directory name from cppstdin so it can be used from
16531 : either the present location or the final installed location.
16532 echo " "
16533 : Get out of the UU directory to get correct path name.
16534 cd ..
16535 case "$cppstdin" in
16536 `pwd`/cppstdin)
16537         echo "Stripping down cppstdin path name"
16538         cppstdin=cppstdin
16539         ;;
16540 esac
16541 cd UU
16542
16543 : end of configuration questions
16544 echo " "
16545 echo "End of configuration questions."
16546 echo " "
16547
16548 : back to where it started
16549 if test -d ../UU; then
16550         cd ..
16551 fi
16552
16553 : configuration may be patched via a 'config.over' file
16554 if $test -f config.over; then
16555         echo " "
16556         dflt=y
16557         rp='I see a config.over file.  Do you wish to load it?'
16558         . UU/myread
16559         case "$ans" in
16560         n*) echo "OK, I'll ignore it.";;
16561         *)      . ./config.over
16562                 echo "Configuration override changes have been loaded."
16563                 ;;
16564         esac
16565 fi
16566
16567 : in case they want portability, strip down executable paths
16568 case "$d_portable" in
16569 "$define")
16570         echo " "
16571         echo "Stripping down executable paths..." >&4
16572         for file in $loclist $trylist; do
16573                 eval temp=\$$file
16574                 eval $file=`basename $temp`
16575         done
16576         ;;
16577 esac
16578
16579 : create config.sh file
16580 echo " "
16581 echo "Creating config.sh..." >&4
16582 $spitshell <<EOT >config.sh
16583 $startsh
16584 #
16585 # This file was produced by running the Configure script. It holds all the
16586 # definitions figured out by Configure. Should you modify one of these values,
16587 # do not forget to propagate your changes by running "Configure -der". You may
16588 # instead choose to run each of the .SH files by yourself, or "Configure -S".
16589 #
16590
16591 # Package name      : $package
16592 # Source directory  : $src
16593 # Configuration time: $cf_time
16594 # Configured by     : $cf_by
16595 # Target system     : $myuname
16596
16597 Author='$Author'
16598 Date='$Date'
16599 Header='$Header'
16600 Id='$Id'
16601 Locker='$Locker'
16602 Log='$Log'
16603 Mcc='$Mcc'
16604 RCSfile='$RCSfile'
16605 Revision='$Revision'
16606 Source='$Source'
16607 State='$State'
16608 _a='$_a'
16609 _exe='$_exe'
16610 _o='$_o'
16611 afs='$afs'
16612 afsroot='$afsroot'
16613 alignbytes='$alignbytes'
16614 ansi2knr='$ansi2knr'
16615 aphostname='$aphostname'
16616 api_revision='$api_revision'
16617 api_subversion='$api_subversion'
16618 api_version='$api_version'
16619 api_versionstring='$api_versionstring'
16620 ar='$ar'
16621 archlib='$archlib'
16622 archlibexp='$archlibexp'
16623 archname64='$archname64'
16624 archname='$archname'
16625 archobjs='$archobjs'
16626 awk='$awk'
16627 baserev='$baserev'
16628 bash='$bash'
16629 bin='$bin'
16630 bincompat5005='$bincompat5005'
16631 binexp='$binexp'
16632 bison='$bison'
16633 byacc='$byacc'
16634 byteorder='$byteorder'
16635 c='$c'
16636 castflags='$castflags'
16637 cat='$cat'
16638 cc='$cc'
16639 cccdlflags='$cccdlflags'
16640 ccdlflags='$ccdlflags'
16641 ccflags='$ccflags'
16642 ccflags_uselargefiles='$ccflags_uselargefiles'
16643 ccname='$ccname'
16644 ccsymbols='$ccsymbols'
16645 ccversion='$ccversion'
16646 cf_by='$cf_by'
16647 cf_email='$cf_email'
16648 cf_time='$cf_time'
16649 charsize='$charsize'
16650 chgrp='$chgrp'
16651 chmod='$chmod'
16652 chown='$chown'
16653 clocktype='$clocktype'
16654 comm='$comm'
16655 compress='$compress'
16656 contains='$contains'
16657 cp='$cp'
16658 cpio='$cpio'
16659 cpp='$cpp'
16660 cpp_stuff='$cpp_stuff'
16661 cppccsymbols='$cppccsymbols'
16662 cppflags='$cppflags'
16663 cpplast='$cpplast'
16664 cppminus='$cppminus'
16665 cpprun='$cpprun'
16666 cppstdin='$cppstdin'
16667 cppsymbols='$cppsymbols'
16668 cryptlib='$cryptlib'
16669 csh='$csh'
16670 d_Gconvert='$d_Gconvert'
16671 d_PRIEUldbl='$d_PRIEUldbl'
16672 d_PRIFUldbl='$d_PRIFUldbl'
16673 d_PRIGUldbl='$d_PRIGUldbl'
16674 d_PRIXU64='$d_PRIXU64'
16675 d_PRId64='$d_PRId64'
16676 d_PRIeldbl='$d_PRIeldbl'
16677 d_PRIfldbl='$d_PRIfldbl'
16678 d_PRIgldbl='$d_PRIgldbl'
16679 d_PRIi64='$d_PRIi64'
16680 d_PRIo64='$d_PRIo64'
16681 d_PRIu64='$d_PRIu64'
16682 d_PRIx64='$d_PRIx64'
16683 d_SCNfldbl='$d_SCNfldbl'
16684 d__fwalk='$d__fwalk'
16685 d_access='$d_access'
16686 d_accessx='$d_accessx'
16687 d_alarm='$d_alarm'
16688 d_archlib='$d_archlib'
16689 d_atolf='$d_atolf'
16690 d_atoll='$d_atoll'
16691 d_attribut='$d_attribut'
16692 d_bcmp='$d_bcmp'
16693 d_bcopy='$d_bcopy'
16694 d_bincompat5005='$d_bincompat5005'
16695 d_bsd='$d_bsd'
16696 d_bsdgetpgrp='$d_bsdgetpgrp'
16697 d_bsdsetpgrp='$d_bsdsetpgrp'
16698 d_bzero='$d_bzero'
16699 d_casti32='$d_casti32'
16700 d_castneg='$d_castneg'
16701 d_charvspr='$d_charvspr'
16702 d_chown='$d_chown'
16703 d_chroot='$d_chroot'
16704 d_chsize='$d_chsize'
16705 d_closedir='$d_closedir'
16706 d_cmsghdr_s='$d_cmsghdr_s'
16707 d_const='$d_const'
16708 d_crypt='$d_crypt'
16709 d_csh='$d_csh'
16710 d_cuserid='$d_cuserid'
16711 d_dbl_dig='$d_dbl_dig'
16712 d_dbminitproto='$d_dbminitproto'
16713 d_difftime='$d_difftime'
16714 d_dirnamlen='$d_dirnamlen'
16715 d_dlerror='$d_dlerror'
16716 d_dlopen='$d_dlopen'
16717 d_dlsymun='$d_dlsymun'
16718 d_dosuid='$d_dosuid'
16719 d_drand48proto='$d_drand48proto'
16720 d_dup2='$d_dup2'
16721 d_eaccess='$d_eaccess'
16722 d_endgrent='$d_endgrent'
16723 d_endhent='$d_endhent'
16724 d_endnent='$d_endnent'
16725 d_endpent='$d_endpent'
16726 d_endpwent='$d_endpwent'
16727 d_endsent='$d_endsent'
16728 d_eofnblk='$d_eofnblk'
16729 d_eunice='$d_eunice'
16730 d_fchdir='$d_fchdir'
16731 d_fchmod='$d_fchmod'
16732 d_fchown='$d_fchown'
16733 d_fcntl='$d_fcntl'
16734 d_fcntl_can_lock='$d_fcntl_can_lock'
16735 d_fd_macros='$d_fd_macros'
16736 d_fd_set='$d_fd_set'
16737 d_fds_bits='$d_fds_bits'
16738 d_fgetpos='$d_fgetpos'
16739 d_flexfnam='$d_flexfnam'
16740 d_flock='$d_flock'
16741 d_flockproto='$d_flockproto'
16742 d_fork='$d_fork'
16743 d_fpathconf='$d_fpathconf'
16744 d_fpos64_t='$d_fpos64_t'
16745 d_frexpl='$d_frexpl'
16746 d_fs_data_s='$d_fs_data_s'
16747 d_fseeko='$d_fseeko'
16748 d_fsetpos='$d_fsetpos'
16749 d_fstatfs='$d_fstatfs'
16750 d_fstatvfs='$d_fstatvfs'
16751 d_fsync='$d_fsync'
16752 d_ftello='$d_ftello'
16753 d_ftime='$d_ftime'
16754 d_getcwd='$d_getcwd'
16755 d_getespwnam='$d_getespwnam'
16756 d_getfsstat='$d_getfsstat'
16757 d_getgrent='$d_getgrent'
16758 d_getgrps='$d_getgrps'
16759 d_gethbyaddr='$d_gethbyaddr'
16760 d_gethbyname='$d_gethbyname'
16761 d_gethent='$d_gethent'
16762 d_gethname='$d_gethname'
16763 d_gethostprotos='$d_gethostprotos'
16764 d_getitimer='$d_getitimer'
16765 d_getlogin='$d_getlogin'
16766 d_getmnt='$d_getmnt'
16767 d_getmntent='$d_getmntent'
16768 d_getnbyaddr='$d_getnbyaddr'
16769 d_getnbyname='$d_getnbyname'
16770 d_getnent='$d_getnent'
16771 d_getnetprotos='$d_getnetprotos'
16772 d_getpagsz='$d_getpagsz'
16773 d_getpbyname='$d_getpbyname'
16774 d_getpbynumber='$d_getpbynumber'
16775 d_getpent='$d_getpent'
16776 d_getpgid='$d_getpgid'
16777 d_getpgrp2='$d_getpgrp2'
16778 d_getpgrp='$d_getpgrp'
16779 d_getppid='$d_getppid'
16780 d_getprior='$d_getprior'
16781 d_getprotoprotos='$d_getprotoprotos'
16782 d_getprpwnam='$d_getprpwnam'
16783 d_getpwent='$d_getpwent'
16784 d_getsbyname='$d_getsbyname'
16785 d_getsbyport='$d_getsbyport'
16786 d_getsent='$d_getsent'
16787 d_getservprotos='$d_getservprotos'
16788 d_getspnam='$d_getspnam'
16789 d_gettimeod='$d_gettimeod'
16790 d_gnulibc='$d_gnulibc'
16791 d_grpasswd='$d_grpasswd'
16792 d_hasmntopt='$d_hasmntopt'
16793 d_htonl='$d_htonl'
16794 d_iconv='$d_iconv'
16795 d_index='$d_index'
16796 d_inetaton='$d_inetaton'
16797 d_int64_t='$d_int64_t'
16798 d_isascii='$d_isascii'
16799 d_isnan='$d_isnan'
16800 d_isnanl='$d_isnanl'
16801 d_killpg='$d_killpg'
16802 d_lchown='$d_lchown'
16803 d_ldbl_dig='$d_ldbl_dig'
16804 d_link='$d_link'
16805 d_locconv='$d_locconv'
16806 d_lockf='$d_lockf'
16807 d_longdbl='$d_longdbl'
16808 d_longlong='$d_longlong'
16809 d_lseekproto='$d_lseekproto'
16810 d_lstat='$d_lstat'
16811 d_madvise='$d_madvise'
16812 d_mblen='$d_mblen'
16813 d_mbstowcs='$d_mbstowcs'
16814 d_mbtowc='$d_mbtowc'
16815 d_memchr='$d_memchr'
16816 d_memcmp='$d_memcmp'
16817 d_memcpy='$d_memcpy'
16818 d_memmove='$d_memmove'
16819 d_memset='$d_memset'
16820 d_mkdir='$d_mkdir'
16821 d_mkdtemp='$d_mkdtemp'
16822 d_mkfifo='$d_mkfifo'
16823 d_mkstemp='$d_mkstemp'
16824 d_mkstemps='$d_mkstemps'
16825 d_mktime='$d_mktime'
16826 d_mmap='$d_mmap'
16827 d_modfl='$d_modfl'
16828 d_modfl_pow32_bug='$d_modfl_pow32_bug'
16829 d_mprotect='$d_mprotect'
16830 d_msg='$d_msg'
16831 d_msg_ctrunc='$d_msg_ctrunc'
16832 d_msg_dontroute='$d_msg_dontroute'
16833 d_msg_oob='$d_msg_oob'
16834 d_msg_peek='$d_msg_peek'
16835 d_msg_proxy='$d_msg_proxy'
16836 d_msgctl='$d_msgctl'
16837 d_msgget='$d_msgget'
16838 d_msghdr_s='$d_msghdr_s'
16839 d_msgrcv='$d_msgrcv'
16840 d_msgsnd='$d_msgsnd'
16841 d_msync='$d_msync'
16842 d_munmap='$d_munmap'
16843 d_mymalloc='$d_mymalloc'
16844 d_nice='$d_nice'
16845 d_nl_langinfo='$d_nl_langinfo'
16846 d_nv_preserves_uv='$d_nv_preserves_uv'
16847 d_nv_preserves_uv_bits='$d_nv_preserves_uv_bits'
16848 d_off64_t='$d_off64_t'
16849 d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
16850 d_oldpthreads='$d_oldpthreads'
16851 d_oldsock='$d_oldsock'
16852 d_open3='$d_open3'
16853 d_pathconf='$d_pathconf'
16854 d_pause='$d_pause'
16855 d_perl_otherlibdirs='$d_perl_otherlibdirs'
16856 d_phostname='$d_phostname'
16857 d_pipe='$d_pipe'
16858 d_poll='$d_poll'
16859 d_portable='$d_portable'
16860 d_pthread_atfork='$d_pthread_atfork'
16861 d_pthread_yield='$d_pthread_yield'
16862 d_pwage='$d_pwage'
16863 d_pwchange='$d_pwchange'
16864 d_pwclass='$d_pwclass'
16865 d_pwcomment='$d_pwcomment'
16866 d_pwexpire='$d_pwexpire'
16867 d_pwgecos='$d_pwgecos'
16868 d_pwpasswd='$d_pwpasswd'
16869 d_pwquota='$d_pwquota'
16870 d_qgcvt='$d_qgcvt'
16871 d_quad='$d_quad'
16872 d_readdir='$d_readdir'
16873 d_readlink='$d_readlink'
16874 d_readv='$d_readv'
16875 d_recvmsg='$d_recvmsg'
16876 d_rename='$d_rename'
16877 d_rewinddir='$d_rewinddir'
16878 d_rmdir='$d_rmdir'
16879 d_safebcpy='$d_safebcpy'
16880 d_safemcpy='$d_safemcpy'
16881 d_sanemcmp='$d_sanemcmp'
16882 d_sbrkproto='$d_sbrkproto'
16883 d_sched_yield='$d_sched_yield'
16884 d_scm_rights='$d_scm_rights'
16885 d_seekdir='$d_seekdir'
16886 d_select='$d_select'
16887 d_sem='$d_sem'
16888 d_semctl='$d_semctl'
16889 d_semctl_semid_ds='$d_semctl_semid_ds'
16890 d_semctl_semun='$d_semctl_semun'
16891 d_semget='$d_semget'
16892 d_semop='$d_semop'
16893 d_sendmsg='$d_sendmsg'
16894 d_setegid='$d_setegid'
16895 d_seteuid='$d_seteuid'
16896 d_setgrent='$d_setgrent'
16897 d_setgrps='$d_setgrps'
16898 d_sethent='$d_sethent'
16899 d_setitimer='$d_setitimer'
16900 d_setlinebuf='$d_setlinebuf'
16901 d_setlocale='$d_setlocale'
16902 d_setnent='$d_setnent'
16903 d_setpent='$d_setpent'
16904 d_setpgid='$d_setpgid'
16905 d_setpgrp2='$d_setpgrp2'
16906 d_setpgrp='$d_setpgrp'
16907 d_setprior='$d_setprior'
16908 d_setproctitle='$d_setproctitle'
16909 d_setpwent='$d_setpwent'
16910 d_setregid='$d_setregid'
16911 d_setresgid='$d_setresgid'
16912 d_setresuid='$d_setresuid'
16913 d_setreuid='$d_setreuid'
16914 d_setrgid='$d_setrgid'
16915 d_setruid='$d_setruid'
16916 d_setsent='$d_setsent'
16917 d_setsid='$d_setsid'
16918 d_setvbuf='$d_setvbuf'
16919 d_sfio='$d_sfio'
16920 d_shm='$d_shm'
16921 d_shmat='$d_shmat'
16922 d_shmatprototype='$d_shmatprototype'
16923 d_shmctl='$d_shmctl'
16924 d_shmdt='$d_shmdt'
16925 d_shmget='$d_shmget'
16926 d_sigaction='$d_sigaction'
16927 d_sigprocmask='$d_sigprocmask'
16928 d_sigsetjmp='$d_sigsetjmp'
16929 d_sockatmark='$d_sockatmark'
16930 d_sockatmarkproto='$d_sockatmarkproto'
16931 d_socket='$d_socket'
16932 d_socklen_t='$d_socklen_t'
16933 d_sockpair='$d_sockpair'
16934 d_socks5_init='$d_socks5_init'
16935 d_sqrtl='$d_sqrtl'
16936 d_sresgproto='$d_sresgproto'
16937 d_sresuproto='$d_sresuproto'
16938 d_statblks='$d_statblks'
16939 d_statfs_f_flags='$d_statfs_f_flags'
16940 d_statfs_s='$d_statfs_s'
16941 d_statvfs='$d_statvfs'
16942 d_stdio_cnt_lval='$d_stdio_cnt_lval'
16943 d_stdio_ptr_lval='$d_stdio_ptr_lval'
16944 d_stdio_ptr_lval_nochange_cnt='$d_stdio_ptr_lval_nochange_cnt'
16945 d_stdio_ptr_lval_sets_cnt='$d_stdio_ptr_lval_sets_cnt'
16946 d_stdio_stream_array='$d_stdio_stream_array'
16947 d_stdiobase='$d_stdiobase'
16948 d_stdstdio='$d_stdstdio'
16949 d_strchr='$d_strchr'
16950 d_strcoll='$d_strcoll'
16951 d_strctcpy='$d_strctcpy'
16952 d_strerrm='$d_strerrm'
16953 d_strerror='$d_strerror'
16954 d_strftime='$d_strftime'
16955 d_strtod='$d_strtod'
16956 d_strtol='$d_strtol'
16957 d_strtold='$d_strtold'
16958 d_strtoll='$d_strtoll'
16959 d_strtoq='$d_strtoq'
16960 d_strtoul='$d_strtoul'
16961 d_strtoull='$d_strtoull'
16962 d_strtouq='$d_strtouq'
16963 d_strxfrm='$d_strxfrm'
16964 d_suidsafe='$d_suidsafe'
16965 d_symlink='$d_symlink'
16966 d_syscall='$d_syscall'
16967 d_syscallproto='$d_syscallproto'
16968 d_sysconf='$d_sysconf'
16969 d_sysernlst='$d_sysernlst'
16970 d_syserrlst='$d_syserrlst'
16971 d_system='$d_system'
16972 d_tcgetpgrp='$d_tcgetpgrp'
16973 d_tcsetpgrp='$d_tcsetpgrp'
16974 d_telldir='$d_telldir'
16975 d_telldirproto='$d_telldirproto'
16976 d_time='$d_time'
16977 d_times='$d_times'
16978 d_truncate='$d_truncate'
16979 d_tzname='$d_tzname'
16980 d_u32align='$d_u32align'
16981 d_ualarm='$d_ualarm'
16982 d_umask='$d_umask'
16983 d_uname='$d_uname'
16984 d_union_semun='$d_union_semun'
16985 d_usleep='$d_usleep'
16986 d_usleepproto='$d_usleepproto'
16987 d_ustat='$d_ustat'
16988 d_vendorarch='$d_vendorarch'
16989 d_vendorbin='$d_vendorbin'
16990 d_vendorlib='$d_vendorlib'
16991 d_vfork='$d_vfork'
16992 d_void_closedir='$d_void_closedir'
16993 d_voidsig='$d_voidsig'
16994 d_voidtty='$d_voidtty'
16995 d_volatile='$d_volatile'
16996 d_vprintf='$d_vprintf'
16997 d_wait4='$d_wait4'
16998 d_waitpid='$d_waitpid'
16999 d_wcstombs='$d_wcstombs'
17000 d_wctomb='$d_wctomb'
17001 d_writev='$d_writev'
17002 d_xenix='$d_xenix'
17003 date='$date'
17004 db_hashtype='$db_hashtype'
17005 db_prefixtype='$db_prefixtype'
17006 db_version_major='$db_version_major'
17007 db_version_minor='$db_version_minor'
17008 db_version_patch='$db_version_patch'
17009 defvoidused='$defvoidused'
17010 direntrytype='$direntrytype'
17011 dlext='$dlext'
17012 dlsrc='$dlsrc'
17013 doublesize='$doublesize'
17014 drand01='$drand01'
17015 dynamic_ext='$dynamic_ext'
17016 eagain='$eagain'
17017 ebcdic='$ebcdic'
17018 echo='$echo'
17019 egrep='$egrep'
17020 emacs='$emacs'
17021 eunicefix='$eunicefix'
17022 exe_ext='$exe_ext'
17023 expr='$expr'
17024 extensions='$extensions'
17025 extras='$extras'
17026 fflushNULL='$fflushNULL'
17027 fflushall='$fflushall'
17028 find='$find'
17029 firstmakefile='$firstmakefile'
17030 flex='$flex'
17031 fpossize='$fpossize'
17032 fpostype='$fpostype'
17033 freetype='$freetype'
17034 from='$from'
17035 full_ar='$full_ar'
17036 full_csh='$full_csh'
17037 full_sed='$full_sed'
17038 gccosandvers='$gccosandvers'
17039 gccversion='$gccversion'
17040 gidformat='$gidformat'
17041 gidsign='$gidsign'
17042 gidsize='$gidsize'
17043 gidtype='$gidtype'
17044 glibpth='$glibpth'
17045 grep='$grep'
17046 groupcat='$groupcat'
17047 groupstype='$groupstype'
17048 gzip='$gzip'
17049 h_fcntl='$h_fcntl'
17050 h_sysfile='$h_sysfile'
17051 hint='$hint'
17052 hostcat='$hostcat'
17053 i16size='$i16size'
17054 i16type='$i16type'
17055 i32size='$i32size'
17056 i32type='$i32type'
17057 i64size='$i64size'
17058 i64type='$i64type'
17059 i8size='$i8size'
17060 i8type='$i8type'
17061 i_arpainet='$i_arpainet'
17062 i_bsdioctl='$i_bsdioctl'
17063 i_db='$i_db'
17064 i_dbm='$i_dbm'
17065 i_dirent='$i_dirent'
17066 i_dld='$i_dld'
17067 i_dlfcn='$i_dlfcn'
17068 i_fcntl='$i_fcntl'
17069 i_float='$i_float'
17070 i_gdbm='$i_gdbm'
17071 i_grp='$i_grp'
17072 i_iconv='$i_iconv'
17073 i_ieeefp='$i_ieeefp'
17074 i_inttypes='$i_inttypes'
17075 i_langinfo='$i_langinfo'
17076 i_libutil='$i_libutil'
17077 i_limits='$i_limits'
17078 i_locale='$i_locale'
17079 i_machcthr='$i_machcthr'
17080 i_malloc='$i_malloc'
17081 i_math='$i_math'
17082 i_memory='$i_memory'
17083 i_mntent='$i_mntent'
17084 i_ndbm='$i_ndbm'
17085 i_netdb='$i_netdb'
17086 i_neterrno='$i_neterrno'
17087 i_netinettcp='$i_netinettcp'
17088 i_niin='$i_niin'
17089 i_poll='$i_poll'
17090 i_prot='$i_prot'
17091 i_pthread='$i_pthread'
17092 i_pwd='$i_pwd'
17093 i_rpcsvcdbm='$i_rpcsvcdbm'
17094 i_sfio='$i_sfio'
17095 i_sgtty='$i_sgtty'
17096 i_shadow='$i_shadow'
17097 i_socks='$i_socks'
17098 i_stdarg='$i_stdarg'
17099 i_stddef='$i_stddef'
17100 i_stdlib='$i_stdlib'
17101 i_string='$i_string'
17102 i_sunmath='$i_sunmath'
17103 i_sysaccess='$i_sysaccess'
17104 i_sysdir='$i_sysdir'
17105 i_sysfile='$i_sysfile'
17106 i_sysfilio='$i_sysfilio'
17107 i_sysin='$i_sysin'
17108 i_sysioctl='$i_sysioctl'
17109 i_syslog='$i_syslog'
17110 i_sysmman='$i_sysmman'
17111 i_sysmode='$i_sysmode'
17112 i_sysmount='$i_sysmount'
17113 i_sysndir='$i_sysndir'
17114 i_sysparam='$i_sysparam'
17115 i_sysresrc='$i_sysresrc'
17116 i_syssecrt='$i_syssecrt'
17117 i_sysselct='$i_sysselct'
17118 i_syssockio='$i_syssockio'
17119 i_sysstat='$i_sysstat'
17120 i_sysstatfs='$i_sysstatfs'
17121 i_sysstatvfs='$i_sysstatvfs'
17122 i_systime='$i_systime'
17123 i_systimek='$i_systimek'
17124 i_systimes='$i_systimes'
17125 i_systypes='$i_systypes'
17126 i_sysuio='$i_sysuio'
17127 i_sysun='$i_sysun'
17128 i_sysutsname='$i_sysutsname'
17129 i_sysvfs='$i_sysvfs'
17130 i_syswait='$i_syswait'
17131 i_termio='$i_termio'
17132 i_termios='$i_termios'
17133 i_time='$i_time'
17134 i_unistd='$i_unistd'
17135 i_ustat='$i_ustat'
17136 i_utime='$i_utime'
17137 i_values='$i_values'
17138 i_varargs='$i_varargs'
17139 i_varhdr='$i_varhdr'
17140 i_vfork='$i_vfork'
17141 ignore_versioned_solibs='$ignore_versioned_solibs'
17142 inc_version_list='$inc_version_list'
17143 inc_version_list_init='$inc_version_list_init'
17144 incpath='$incpath'
17145 inews='$inews'
17146 installarchlib='$installarchlib'
17147 installbin='$installbin'
17148 installman1dir='$installman1dir'
17149 installman3dir='$installman3dir'
17150 installprefix='$installprefix'
17151 installprefixexp='$installprefixexp'
17152 installprivlib='$installprivlib'
17153 installscript='$installscript'
17154 installsitearch='$installsitearch'
17155 installsitebin='$installsitebin'
17156 installsitelib='$installsitelib'
17157 installstyle='$installstyle'
17158 installusrbinperl='$installusrbinperl'
17159 installvendorarch='$installvendorarch'
17160 installvendorbin='$installvendorbin'
17161 installvendorlib='$installvendorlib'
17162 intsize='$intsize'
17163 issymlink='$issymlink'
17164 ivdformat='$ivdformat'
17165 ivsize='$ivsize'
17166 ivtype='$ivtype'
17167 known_extensions='$known_extensions'
17168 ksh='$ksh'
17169 ld='$ld'
17170 lddlflags='$lddlflags'
17171 ldflags='$ldflags'
17172 ldflags_uselargefiles='$ldflags_uselargefiles'
17173 ldlibpthname='$ldlibpthname'
17174 less='$less'
17175 lib_ext='$lib_ext'
17176 libc='$libc'
17177 libperl='$libperl'
17178 libpth='$libpth'
17179 libs='$libs'
17180 libsdirs='$libsdirs'
17181 libsfiles='$libsfiles'
17182 libsfound='$libsfound'
17183 libspath='$libspath'
17184 libswanted='$libswanted'
17185 libswanted_uselargefiles='$libswanted_uselargefiles'
17186 line='$line'
17187 lint='$lint'
17188 lkflags='$lkflags'
17189 ln='$ln'
17190 lns='$lns'
17191 locincpth='$locincpth'
17192 loclibpth='$loclibpth'
17193 longdblsize='$longdblsize'
17194 longlongsize='$longlongsize'
17195 longsize='$longsize'
17196 lp='$lp'
17197 lpr='$lpr'
17198 ls='$ls'
17199 lseeksize='$lseeksize'
17200 lseektype='$lseektype'
17201 mail='$mail'
17202 mailx='$mailx'
17203 make='$make'
17204 make_set_make='$make_set_make'
17205 mallocobj='$mallocobj'
17206 mallocsrc='$mallocsrc'
17207 malloctype='$malloctype'
17208 man1dir='$man1dir'
17209 man1direxp='$man1direxp'
17210 man1ext='$man1ext'
17211 man3dir='$man3dir'
17212 man3direxp='$man3direxp'
17213 man3ext='$man3ext'
17214 mips_type='$mips_type'
17215 mkdir='$mkdir'
17216 mmaptype='$mmaptype'
17217 modetype='$modetype'
17218 more='$more'
17219 multiarch='$multiarch'
17220 mv='$mv'
17221 myarchname='$myarchname'
17222 mydomain='$mydomain'
17223 myhostname='$myhostname'
17224 myuname='$myuname'
17225 n='$n'
17226 need_va_copy='$need_va_copy'
17227 netdb_hlen_type='$netdb_hlen_type'
17228 netdb_host_type='$netdb_host_type'
17229 netdb_name_type='$netdb_name_type'
17230 netdb_net_type='$netdb_net_type'
17231 nm='$nm'
17232 nm_opt='$nm_opt'
17233 nm_so_opt='$nm_so_opt'
17234 nonxs_ext='$nonxs_ext'
17235 nroff='$nroff'
17236 nvEUformat='$nvEUformat'
17237 nvFUformat='$nvFUformat'
17238 nvGUformat='$nvGUformat'
17239 nveformat='$nveformat'
17240 nvfformat='$nvfformat'
17241 nvgformat='$nvgformat'
17242 nvsize='$nvsize'
17243 nvtype='$nvtype'
17244 o_nonblock='$o_nonblock'
17245 obj_ext='$obj_ext'
17246 old_pthread_create_joinable='$old_pthread_create_joinable'
17247 optimize='$optimize'
17248 orderlib='$orderlib'
17249 osname='$osname'
17250 osvers='$osvers'
17251 otherlibdirs='$otherlibdirs'
17252 package='$package'
17253 pager='$pager'
17254 passcat='$passcat'
17255 patchlevel='$patchlevel'
17256 path_sep='$path_sep'
17257 perl5='$perl5'
17258 perl='$perl'
17259 perl_patchlevel='$perl_patchlevel'
17260 perladmin='$perladmin'
17261 perllibs='$perllibs'
17262 perlpath='$perlpath'
17263 pg='$pg'
17264 phostname='$phostname'
17265 pidtype='$pidtype'
17266 plibpth='$plibpth'
17267 pm_apiversion='$pm_apiversion'
17268 pmake='$pmake'
17269 pr='$pr'
17270 prefix='$prefix'
17271 prefixexp='$prefixexp'
17272 privlib='$privlib'
17273 privlibexp='$privlibexp'
17274 prototype='$prototype'
17275 ptrsize='$ptrsize'
17276 quadkind='$quadkind'
17277 quadtype='$quadtype'
17278 randbits='$randbits'
17279 randfunc='$randfunc'
17280 randseedtype='$randseedtype'
17281 ranlib='$ranlib'
17282 rd_nodata='$rd_nodata'
17283 revision='$revision'
17284 rm='$rm'
17285 rmail='$rmail'
17286 run='$run'
17287 runnm='$runnm'
17288 sPRIEUldbl='$sPRIEUldbl'
17289 sPRIFUldbl='$sPRIFUldbl'
17290 sPRIGUldbl='$sPRIGUldbl'
17291 sPRIXU64='$sPRIXU64'
17292 sPRId64='$sPRId64'
17293 sPRIeldbl='$sPRIeldbl'
17294 sPRIfldbl='$sPRIfldbl'
17295 sPRIgldbl='$sPRIgldbl'
17296 sPRIi64='$sPRIi64'
17297 sPRIo64='$sPRIo64'
17298 sPRIu64='$sPRIu64'
17299 sPRIx64='$sPRIx64'
17300 sSCNfldbl='$sSCNfldbl'
17301 sched_yield='$sched_yield'
17302 scriptdir='$scriptdir'
17303 scriptdirexp='$scriptdirexp'
17304 sed='$sed'
17305 seedfunc='$seedfunc'
17306 selectminbits='$selectminbits'
17307 selecttype='$selecttype'
17308 sendmail='$sendmail'
17309 sh='$sh'
17310 shar='$shar'
17311 sharpbang='$sharpbang'
17312 shmattype='$shmattype'
17313 shortsize='$shortsize'
17314 shrpenv='$shrpenv'
17315 shsharp='$shsharp'
17316 sig_count='$sig_count'
17317 sig_name='$sig_name'
17318 sig_name_init='$sig_name_init'
17319 sig_num='$sig_num'
17320 sig_num_init='$sig_num_init'
17321 sig_size='$sig_size'
17322 signal_t='$signal_t'
17323 sitearch='$sitearch'
17324 sitearchexp='$sitearchexp'
17325 sitebin='$sitebin'
17326 sitebinexp='$sitebinexp'
17327 sitelib='$sitelib'
17328 sitelib_stem='$sitelib_stem'
17329 sitelibexp='$sitelibexp'
17330 siteprefix='$siteprefix'
17331 siteprefixexp='$siteprefixexp'
17332 sizesize='$sizesize'
17333 sizetype='$sizetype'
17334 sleep='$sleep'
17335 smail='$smail'
17336 so='$so'
17337 sockethdr='$sockethdr'
17338 socketlib='$socketlib'
17339 socksizetype='$socksizetype'
17340 sort='$sort'
17341 spackage='$spackage'
17342 spitshell='$spitshell'
17343 src='$src'
17344 ssizetype='$ssizetype'
17345 startperl='$startperl'
17346 startsh='$startsh'
17347 static_ext='$static_ext'
17348 stdchar='$stdchar'
17349 stdio_base='$stdio_base'
17350 stdio_bufsiz='$stdio_bufsiz'
17351 stdio_cnt='$stdio_cnt'
17352 stdio_filbuf='$stdio_filbuf'
17353 stdio_ptr='$stdio_ptr'
17354 stdio_stream_array='$stdio_stream_array'
17355 strings='$strings'
17356 submit='$submit'
17357 subversion='$subversion'
17358 sysman='$sysman'
17359 tail='$tail'
17360 tar='$tar'
17361 targetarch='$targetarch'
17362 tbl='$tbl'
17363 tee='$tee'
17364 test='$test'
17365 timeincl='$timeincl'
17366 timetype='$timetype'
17367 to='$to'
17368 touch='$touch'
17369 tr='$tr'
17370 trnl='$trnl'
17371 troff='$troff'
17372 u16size='$u16size'
17373 u16type='$u16type'
17374 u32size='$u32size'
17375 u32type='$u32type'
17376 u64size='$u64size'
17377 u64type='$u64type'
17378 u8size='$u8size'
17379 u8type='$u8type'
17380 uidformat='$uidformat'
17381 uidsign='$uidsign'
17382 uidsize='$uidsize'
17383 uidtype='$uidtype'
17384 uname='$uname'
17385 uniq='$uniq'
17386 uquadtype='$uquadtype'
17387 use5005threads='$use5005threads'
17388 use64bitall='$use64bitall'
17389 use64bitint='$use64bitint'
17390 usecrosscompile='$usecrosscompile'
17391 usedl='$usedl'
17392 useithreads='$useithreads'
17393 uselargefiles='$uselargefiles'
17394 uselongdouble='$uselongdouble'
17395 usemorebits='$usemorebits'
17396 usemultiplicity='$usemultiplicity'
17397 usemymalloc='$usemymalloc'
17398 usenm='$usenm'
17399 useopcode='$useopcode'
17400 useperlio='$useperlio'
17401 useposix='$useposix'
17402 usereentrant='$usereentrant'
17403 usesfio='$usesfio'
17404 useshrplib='$useshrplib'
17405 usesocks='$usesocks'
17406 usethreads='$usethreads'
17407 usevendorprefix='$usevendorprefix'
17408 usevfork='$usevfork'
17409 usrinc='$usrinc'
17410 uuname='$uuname'
17411 uvXUformat='$uvXUformat'
17412 uvoformat='$uvoformat'
17413 uvsize='$uvsize'
17414 uvtype='$uvtype'
17415 uvuformat='$uvuformat'
17416 uvxformat='$uvxformat'
17417 vendorarch='$vendorarch'
17418 vendorarchexp='$vendorarchexp'
17419 vendorbin='$vendorbin'
17420 vendorbinexp='$vendorbinexp'
17421 vendorlib='$vendorlib'
17422 vendorlib_stem='$vendorlib_stem'
17423 vendorlibexp='$vendorlibexp'
17424 vendorprefix='$vendorprefix'
17425 vendorprefixexp='$vendorprefixexp'
17426 version='$version'
17427 version_patchlevel_string='$version_patchlevel_string'
17428 versiononly='$versiononly'
17429 vi='$vi'
17430 voidflags='$voidflags'
17431 xlibpth='$xlibpth'
17432 xs_apiversion='$xs_apiversion'
17433 yacc='$yacc'
17434 yaccflags='$yaccflags'
17435 zcat='$zcat'
17436 zip='$zip'
17437 EOT
17438
17439 : Add in command line options if available
17440 $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
17441
17442 : add special variables
17443 $test -f $src/patchlevel.h && \
17444 awk '/^#define[         ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
17445 echo "PERL_PATCHLEVEL=$perl_patchlevel" >>config.sh
17446 echo "PERL_CONFIG_SH=true" >>config.sh
17447
17448 : propagate old symbols
17449 if $test -f UU/config.sh; then
17450         <UU/config.sh $sort | $uniq >UU/oldconfig.sh
17451         sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
17452         $sort | $uniq -u >UU/oldsyms
17453         set X `cat UU/oldsyms`
17454         shift
17455         case $# in
17456         0) ;;
17457         *)
17458                 cat <<EOM
17459 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
17460 EOM
17461                 echo "# Variables propagated from previous config.sh file." >>config.sh
17462                 for sym in `cat UU/oldsyms`; do
17463                         echo "    Propagating $hint variable "'$'"$sym..."
17464                         eval 'tmp="$'"${sym}"'"'
17465                         echo "$tmp" | \
17466                                 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
17467                 done
17468                 ;;
17469         esac
17470 fi
17471
17472 : Finish up by extracting the .SH files
17473 case "$alldone" in
17474 exit)
17475         $rm -rf UU
17476         echo "Extraction done."
17477         exit 0
17478         ;;
17479 cont)
17480         ;;
17481 '')
17482         dflt=''
17483         nostick=true
17484         $cat <<EOM
17485
17486 If you'd like to make any changes to the config.sh file before I begin
17487 to configure things, do it as a shell escape now (e.g. !vi config.sh).
17488
17489 EOM
17490         rp="Press return or use a shell escape to edit config.sh:"
17491         . UU/myread
17492         nostick=''
17493         case "$ans" in
17494         '') ;;
17495         *) : in case they cannot read
17496                 sh 1>&4 -c "$ans";;
17497         esac
17498         ;;
17499 esac
17500
17501 : if this fails, just run all the .SH files by hand
17502 . ./config.sh
17503
17504 echo " "
17505 exec 1>&4
17506 pwd=`pwd`
17507 . ./UU/extract
17508 cd $pwd
17509
17510 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
17511         dflt=y
17512         case "$silent" in
17513         true) ;;
17514         *)
17515                 $cat <<EOM
17516
17517 Now you need to generate make dependencies by running "$make depend".
17518 You might prefer to run it in background: "$make depend > makedepend.out &"
17519 It can take a while, so you might not want to run it right now.
17520
17521 EOM
17522                 ;;
17523         esac
17524         rp="Run $make depend now?"
17525         . UU/myread
17526         case "$ans" in
17527         y*)
17528                 $make depend && echo "Now you must run '$make'."
17529                 ;;
17530         *)
17531                 echo "You must run '$make depend' then '$make'."
17532                 ;;
17533         esac
17534 elif test -f [Mm]akefile; then
17535         echo " "
17536         echo "Now you must run a $make."
17537 else
17538         echo "Configure done."
17539 fi
17540
17541 if $test -f Policy.sh; then
17542     $cat <<EOM
17543
17544 If you compile $package on a different machine or from a different object
17545 directory, copy the Policy.sh file from this object directory to the
17546 new one before you run Configure -- this will help you with most of
17547 the policy defaults.
17548
17549 EOM
17550 fi
17551 if $test -f config.msg; then
17552     echo "Hmm.  I also noted the following information while running:"
17553     echo " "
17554     $cat config.msg >&4
17555     $rm -f config.msg
17556 fi
17557 $rm -f kit*isdone ark*isdone
17558 $rm -rf UU
17559
17560 : End of Configure
17561