formats can't contain formats
[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 Sat Jul 14 05:31:33 EET DST 2001 [metaconfig 3.0 PL70]
24 # (with additional metaconfig patches by perlbug@perl.org)
25
26 cat >c1$$ <<EOF
27 ARGGGHHHH!!!!!
28
29 SCO csh still thinks true is false.  Write to SCO today and tell them that next
30 year Configure ought to "rm /bin/csh" unless they fix their blasted shell. :-)
31
32 (Actually, Configure ought to just patch csh in place.  Hmm.  Hmmmmm.  All
33 we'd have to do is go in and swap the && and || tokens, wherever they are.)
34
35 [End of diatribe. We now return you to your regularly scheduled programming...]
36 EOF
37 cat >c2$$ <<EOF
38
39 OOPS!  You naughty creature!  You didn't run Configure with sh!
40 I will attempt to remedy the situation by running sh for you...
41 EOF
42
43 true || cat c1$$ c2$$
44 true || exec sh $0 $argv:q
45
46 (exit $?0) || cat c2$$
47 (exit $?0) || exec sh $0 $argv:q
48 rm -f c1$$ c2$$
49
50 : compute my invocation name
51 me=$0
52 case "$0" in
53 */*)
54         me=`echo $0 | sed -e 's!.*/\(.*\)!\1!' 2>/dev/null`
55         test "$me" || me=$0
56         ;;
57 esac
58
59 : Proper separator for the PATH environment variable
60 p_=:
61 : On OS/2 this directory should exist if this is not floppy only system :-]
62 if test -d c:/. ; then
63     if test -n "$OS2_SHELL"; then
64                 p_=\;
65                 PATH=`cmd /c "echo %PATH%" | tr '\\\\' / `
66                 OS2_SHELL=`cmd /c "echo %OS2_SHELL%" | tr '\\\\' / | tr '[A-Z]' '[a-z]'`
67         elif test -n "$DJGPP"; then
68                 p_=\;
69         fi
70 fi
71
72 : Proper PATH setting
73 paths='/bin /usr/bin /usr/local/bin /usr/ucb /usr/local /usr/lbin'
74 paths="$paths /opt/bin /opt/local/bin /opt/local /opt/lbin"
75 paths="$paths /usr/5bin /etc /usr/gnu/bin /usr/new /usr/new/bin /usr/nbin"
76 paths="$paths /opt/gnu/bin /opt/new /opt/new/bin /opt/nbin"
77 paths="$paths /sys5.3/bin /sys5.3/usr/bin /bsd4.3/bin /bsd4.3/usr/ucb"
78 paths="$paths /bsd4.3/usr/bin /usr/bsd /bsd43/bin /usr/ccs/bin"
79 paths="$paths /etc /usr/lib /usr/ucblib /lib /usr/ccs/lib"
80 paths="$paths /sbin /usr/sbin /usr/libexec"
81
82 for p in $paths
83 do
84         case "$p_$PATH$p_" in
85         *$p_$p$p_*) ;;
86         *) test -d $p && PATH=$PATH$p_$p ;;
87         esac
88 done
89
90 PATH=.$p_$PATH
91 export PATH
92
93 : shall we be using ksh?
94 inksh=''
95 needksh=''
96 avoidksh=''
97 newsh=/bin/ksh
98 changesh=''
99 if (PATH=.; alias -x) >/dev/null 2>&1; then
100                 inksh=true
101 fi
102 if test -f /hp-ux -a -f /bin/ksh; then
103         needksh='to avoid sh bug in "here document" expansion'
104 fi
105 if test -d /usr/lpp -a -f /usr/bin/bsh -a -f /usr/bin/uname; then
106         if test X`/usr/bin/uname -v` = X4; then
107                 avoidksh="to avoid AIX 4's /bin/sh"
108                 newsh=/usr/bin/bsh
109         fi
110 fi
111 if test -f /osf_boot -a -f /usr/sbin/setld; then
112         if test X`/usr/bin/uname -s` = XOSF1; then
113                 avoidksh="to avoid Digital UNIX' ksh"
114                 newsh=/bin/sh
115                 unset BIN_SH # if this is 'xpg4' sh will start up ksh
116         fi
117 fi
118 case "$inksh/$needksh" in
119 /[a-z]*)
120                 ENV=''
121                 changesh=true
122                 reason="$needksh"
123         ;;
124 esac
125 case "$inksh/$avoidksh" in
126 true/[a-z]*)
127         changesh=true
128         reason="$avoidksh"
129         ;;
130 esac
131 case "$inksh/$needksh-$avoidksh-" in
132 true/--)
133                 cat <<EOM
134 (I see you are using the Korn shell.  Some ksh's blow up on $me,
135 mainly on older exotic systems.  If yours does, try the Bourne shell instead.)
136 EOM
137         ;;
138 esac
139 case "$changesh" in
140 true)
141         echo "(Feeding myself to $newsh $reason.)"
142         case "$0" in
143         Configure|*/Configure) exec $newsh $0 "$@";;
144         *) exec $newsh Configure "$@";;
145         esac
146         ;;
147 esac
148
149 : if needed set CDPATH to a harmless value that is not chatty
150 : avoid bash 2.02 problems with empty CDPATH.
151 case "$CDPATH" in
152 '')     ;;
153 *)      case "$SHELL" in
154         *bash*) CDPATH='.' ;;
155         *)              CDPATH='' ;;
156         esac
157         ;;
158 esac
159 : Configure runs within the UU subdirectory
160 test -d UU || mkdir UU
161 cd UU && rm -f ./*
162
163 ccname=''
164 ccversion=''
165 ccsymbols=''
166 cppccsymbols=''
167 cppsymbols=''
168 from=''
169 run=''
170 targetarch=''
171 to=''
172 usecrosscompile=''
173 perllibs=''
174 dynamic_ext=''
175 extensions=''
176 known_extensions=''
177 nonxs_ext=''
178 static_ext=''
179 useopcode=''
180 useposix=''
181 d_bsd=''
182 d_eunice=''
183 d_xenix=''
184 eunicefix=''
185 Mcc=''
186 ar=''
187 awk=''
188 bash=''
189 bison=''
190 byacc=''
191 cat=''
192 chgrp=''
193 chmod=''
194 chown=''
195 comm=''
196 compress=''
197 cp=''
198 cpio=''
199 cpp=''
200 csh=''
201 date=''
202 echo=''
203 egrep=''
204 emacs=''
205 expr=''
206 find=''
207 flex=''
208 grep=''
209 gzip=''
210 inews=''
211 ksh=''
212 less=''
213 line=''
214 lint=''
215 ln=''
216 lp=''
217 lpr=''
218 ls=''
219 mail=''
220 mailx=''
221 make=''
222 mkdir=''
223 more=''
224 mv=''
225 nm=''
226 nroff=''
227 perl=''
228 pg=''
229 pmake=''
230 pr=''
231 rm=''
232 rmail=''
233 sed=''
234 sendmail=''
235 shar=''
236 sleep=''
237 smail=''
238 sort=''
239 submit=''
240 tail=''
241 tar=''
242 tbl=''
243 tee=''
244 test=''
245 touch=''
246 tr=''
247 troff=''
248 uname=''
249 uniq=''
250 uuname=''
251 vi=''
252 zcat=''
253 zip=''
254 full_ar=''
255 full_sed=''
256 libswanted=''
257 hint=''
258 myuname=''
259 osname=''
260 osvers=''
261 Author=''
262 Date=''
263 Header=''
264 Id=''
265 Locker=''
266 Log=''
267 RCSfile=''
268 Revision=''
269 Source=''
270 State=''
271 _a=''
272 _exe=''
273 _o=''
274 archobjs=''
275 exe_ext=''
276 firstmakefile=''
277 lib_ext=''
278 obj_ext=''
279 path_sep=''
280 afs=''
281 afsroot=''
282 alignbytes=''
283 ansi2knr=''
284 archlib=''
285 archlibexp=''
286 d_archlib=''
287 installarchlib=''
288 archname=''
289 myarchname=''
290 d_atolf=''
291 d_atoll=''
292 baserev=''
293 bin=''
294 binexp=''
295 installbin=''
296 bincompat5005=''
297 d_bincompat5005=''
298 byteorder=''
299 cc=''
300 ccflags=''
301 cppflags=''
302 ldflags=''
303 lkflags=''
304 locincpth=''
305 optimize=''
306 cf_email=''
307 cf_by=''
308 cf_time=''
309 charsize=''
310 contains=''
311 cpp_stuff=''
312 cpplast=''
313 cppminus=''
314 cpprun=''
315 cppstdin=''
316 d__fwalk=''
317 d_access=''
318 d_accessx=''
319 d_alarm=''
320 d_attribut=''
321 d_bcmp=''
322 d_bcopy=''
323 d_bzero=''
324 d_casti32=''
325 castflags=''
326 d_castneg=''
327 d_chown=''
328 d_chroot=''
329 d_chsize=''
330 d_closedir=''
331 d_void_closedir=''
332 d_cmsghdr_s=''
333 d_const=''
334 cryptlib=''
335 d_crypt=''
336 d_csh=''
337 full_csh=''
338 d_cuserid=''
339 d_dbl_dig=''
340 d_dbminitproto=''
341 d_difftime=''
342 d_dlerror=''
343 d_dlopen=''
344 d_dlsymun=''
345 d_dosuid=''
346 d_suidsafe=''
347 d_drand48proto=''
348 d_dup2=''
349 d_eaccess=''
350 d_endgrent=''
351 d_endhent=''
352 d_endnent=''
353 d_endpent=''
354 d_endpwent=''
355 d_endsent=''
356 d_fchdir=''
357 d_fchmod=''
358 d_fchown=''
359 d_fcntl=''
360 d_fcntl_can_lock=''
361 d_fd_macros=''
362 d_fd_set=''
363 d_fds_bits=''
364 d_fgetpos=''
365 d_flexfnam=''
366 d_flock=''
367 d_flockproto=''
368 d_fork=''
369 d_fpos64_t=''
370 d_frexpl=''
371 d_fs_data_s=''
372 d_fseeko=''
373 d_fsetpos=''
374 d_fstatfs=''
375 d_fsync=''
376 d_ftello=''
377 d_ftime=''
378 d_gettimeod=''
379 d_Gconvert=''
380 d_getcwd=''
381 d_getespwnam=''
382 d_getfsstat=''
383 d_getgrent=''
384 d_getgrps=''
385 d_gethbyaddr=''
386 d_gethbyname=''
387 d_gethent=''
388 aphostname=''
389 d_gethname=''
390 d_phostname=''
391 d_uname=''
392 d_gethostprotos=''
393 d_getitimer=''
394 d_getlogin=''
395 d_getmnt=''
396 d_getmntent=''
397 d_getnbyaddr=''
398 d_getnbyname=''
399 d_getnent=''
400 d_getnetprotos=''
401 d_getpagsz=''
402 d_getpent=''
403 d_getpgid=''
404 d_getpgrp2=''
405 d_bsdgetpgrp=''
406 d_getpgrp=''
407 d_getppid=''
408 d_getprior=''
409 d_getpbyname=''
410 d_getpbynumber=''
411 d_getprotoprotos=''
412 d_getprpwnam=''
413 d_getpwent=''
414 d_getsent=''
415 d_getservprotos=''
416 d_getspnam=''
417 d_getsbyname=''
418 d_getsbyport=''
419 d_gnulibc=''
420 d_hasmntopt=''
421 d_htonl=''
422 d_iconv=''
423 d_inetaton=''
424 d_int64_t=''
425 d_isascii=''
426 d_isnan=''
427 d_isnanl=''
428 d_killpg=''
429 d_lchown=''
430 d_ldbl_dig=''
431 d_link=''
432 d_locconv=''
433 d_lockf=''
434 d_longdbl=''
435 longdblsize=''
436 d_longlong=''
437 longlongsize=''
438 d_lseekproto=''
439 d_lstat=''
440 d_madvise=''
441 d_mblen=''
442 d_mbstowcs=''
443 d_mbtowc=''
444 d_memchr=''
445 d_memcmp=''
446 d_memcpy=''
447 d_memmove=''
448 d_memset=''
449 d_mkdir=''
450 d_mkdtemp=''
451 d_mkfifo=''
452 d_mkstemp=''
453 d_mkstemps=''
454 d_mktime=''
455 d_mmap=''
456 mmaptype=''
457 d_modfl=''
458 d_modfl_pow32_bug=''
459 d_mprotect=''
460 d_msg=''
461 d_msgctl=''
462 d_msgget=''
463 d_msghdr_s=''
464 d_msgrcv=''
465 d_msgsnd=''
466 d_msync=''
467 d_munmap=''
468 d_nice=''
469 d_nl_langinfo=''
470 d_off64_t=''
471 d_open3=''
472 d_fpathconf=''
473 d_pathconf=''
474 d_pause=''
475 d_pipe=''
476 d_poll=''
477 d_portable=''
478 d_old_pthread_create_joinable=''
479 old_pthread_create_joinable=''
480 d_pthread_atfork=''
481 d_pthread_yield=''
482 d_sched_yield=''
483 sched_yield=''
484 d_qgcvt=''
485 d_readdir=''
486 d_rewinddir=''
487 d_seekdir=''
488 d_telldir=''
489 d_readlink=''
490 d_readv=''
491 d_recvmsg=''
492 d_rename=''
493 d_rmdir=''
494 d_safebcpy=''
495 d_safemcpy=''
496 d_sanemcmp=''
497 d_sbrkproto=''
498 d_select=''
499 d_sem=''
500 d_semctl=''
501 d_semget=''
502 d_semop=''
503 d_sendmsg=''
504 d_setegid=''
505 d_seteuid=''
506 d_setgrent=''
507 d_setgrps=''
508 d_sethent=''
509 d_setitimer=''
510 d_setlinebuf=''
511 d_setlocale=''
512 d_setnent=''
513 d_setpent=''
514 d_setpgid=''
515 d_setpgrp2=''
516 d_bsdsetpgrp=''
517 d_setpgrp=''
518 d_setprior=''
519 d_setproctitle=''
520 d_setpwent=''
521 d_setregid=''
522 d_setresgid=''
523 d_setresuid=''
524 d_setreuid=''
525 d_setrgid=''
526 d_setruid=''
527 d_setsent=''
528 d_setsid=''
529 d_setvbuf=''
530 d_sfio=''
531 usesfio=''
532 d_shm=''
533 d_shmat=''
534 d_shmatprototype=''
535 shmattype=''
536 d_shmctl=''
537 d_shmdt=''
538 d_shmget=''
539 d_sigaction=''
540 d_sigprocmask=''
541 d_sigsetjmp=''
542 d_sockatmark=''
543 d_sockatmarkproto=''
544 d_msg_ctrunc=''
545 d_msg_dontroute=''
546 d_msg_oob=''
547 d_msg_peek=''
548 d_msg_proxy=''
549 d_oldsock=''
550 d_scm_rights=''
551 d_socket=''
552 d_sockpair=''
553 sockethdr=''
554 socketlib=''
555 d_socklen_t=''
556 d_socks5_init=''
557 d_sqrtl=''
558 d_sresgproto=''
559 d_sresuproto=''
560 d_statblks=''
561 d_statfs_f_flags=''
562 d_statfs_s=''
563 d_fstatvfs=''
564 d_statvfs=''
565 d_stdio_cnt_lval=''
566 d_stdio_ptr_lval=''
567 d_stdio_ptr_lval_nochange_cnt=''
568 d_stdio_ptr_lval_sets_cnt=''
569 d_stdiobase=''
570 d_stdstdio=''
571 stdio_base=''
572 stdio_bufsiz=''
573 stdio_cnt=''
574 stdio_filbuf=''
575 stdio_ptr=''
576 d_index=''
577 d_strchr=''
578 d_strcoll=''
579 d_strctcpy=''
580 d_strerrm=''
581 d_strerror=''
582 d_sysernlst=''
583 d_syserrlst=''
584 d_strftime=''
585 d_strtod=''
586 d_strtol=''
587 d_strtold=''
588 d_strtoll=''
589 d_strtoq=''
590 d_strtoul=''
591 d_strtoull=''
592 d_strtouq=''
593 d_strxfrm=''
594 d_symlink=''
595 d_syscall=''
596 d_syscallproto=''
597 d_sysconf=''
598 d_system=''
599 d_tcgetpgrp=''
600 d_tcsetpgrp=''
601 d_telldirproto=''
602 d_time=''
603 timetype=''
604 clocktype=''
605 d_times=''
606 d_truncate=''
607 d_tzname=''
608 d_u32align=''
609 d_ualarm=''
610 d_umask=''
611 d_semctl_semid_ds=''
612 d_semctl_semun=''
613 d_union_semun=''
614 d_usleep=''
615 d_usleepproto=''
616 d_ustat=''
617 d_vfork=''
618 usevfork=''
619 d_voidsig=''
620 signal_t=''
621 d_volatile=''
622 d_charvspr=''
623 d_vprintf=''
624 d_wait4=''
625 d_waitpid=''
626 d_wcstombs=''
627 d_wctomb=''
628 d_writev=''
629 dlext=''
630 cccdlflags=''
631 ccdlflags=''
632 dlsrc=''
633 ld=''
634 lddlflags=''
635 usedl=''
636 doublesize=''
637 ebcdic=''
638 fflushNULL=''
639 fflushall=''
640 fpossize=''
641 fpostype=''
642 gccosandvers=''
643 gccversion=''
644 gidformat=''
645 gidsign=''
646 gidsize=''
647 gidtype=''
648 groupstype=''
649 h_fcntl=''
650 h_sysfile=''
651 i_arpainet=''
652 db_hashtype=''
653 db_prefixtype=''
654 db_version_major=''
655 db_version_minor=''
656 db_version_patch=''
657 i_db=''
658 i_dbm=''
659 i_rpcsvcdbm=''
660 d_dirnamlen=''
661 direntrytype=''
662 i_dirent=''
663 i_dld=''
664 i_dlfcn=''
665 i_fcntl=''
666 i_float=''
667 i_gdbm=''
668 d_grpasswd=''
669 i_grp=''
670 i_iconv=''
671 i_ieeefp=''
672 i_inttypes=''
673 i_langinfo=''
674 i_libutil=''
675 i_limits=''
676 i_locale=''
677 i_machcthr=''
678 i_malloc=''
679 i_math=''
680 i_memory=''
681 i_mntent=''
682 i_ndbm=''
683 i_netdb=''
684 i_neterrno=''
685 i_netinettcp=''
686 i_niin=''
687 i_sysin=''
688 i_poll=''
689 i_prot=''
690 i_pthread=''
691 d_pwage=''
692 d_pwchange=''
693 d_pwclass=''
694 d_pwcomment=''
695 d_pwexpire=''
696 d_pwgecos=''
697 d_pwpasswd=''
698 d_pwquota=''
699 i_pwd=''
700 i_sfio=''
701 i_shadow=''
702 i_socks=''
703 i_stddef=''
704 i_stdlib=''
705 i_string=''
706 strings=''
707 i_sunmath=''
708 i_sysaccess=''
709 i_sysdir=''
710 i_sysfile=''
711 d_voidtty=''
712 i_bsdioctl=''
713 i_sysfilio=''
714 i_sysioctl=''
715 i_syssockio=''
716 i_syslog=''
717 i_sysmman=''
718 i_sysmode=''
719 i_sysmount=''
720 i_sysndir=''
721 i_sysparam=''
722 i_sysresrc=''
723 i_syssecrt=''
724 i_sysselct=''
725 i_sysstat=''
726 i_sysstatfs=''
727 i_sysstatvfs=''
728 i_systimes=''
729 i_systypes=''
730 i_sysuio=''
731 i_sysun=''
732 i_sysutsname=''
733 i_sysvfs=''
734 i_syswait=''
735 i_sgtty=''
736 i_termio=''
737 i_termios=''
738 i_systime=''
739 i_systimek=''
740 i_time=''
741 timeincl=''
742 i_unistd=''
743 i_ustat=''
744 i_utime=''
745 i_values=''
746 i_stdarg=''
747 i_varargs=''
748 i_varhdr=''
749 i_vfork=''
750 inc_version_list=''
751 inc_version_list_init=''
752 installprefix=''
753 installprefixexp=''
754 installstyle=''
755 installusrbinperl=''
756 intsize=''
757 longsize=''
758 shortsize=''
759 issymlink=''
760 libc=''
761 ldlibpthname=''
762 libperl=''
763 shrpenv=''
764 useshrplib=''
765 glibpth=''
766 libpth=''
767 loclibpth=''
768 plibpth=''
769 xlibpth=''
770 ignore_versioned_solibs=''
771 libs=''
772 libsdirs=''
773 libsfiles=''
774 libsfound=''
775 libspath=''
776 lns=''
777 d_PRIEUldbl=''
778 d_PRIFUldbl=''
779 d_PRIGUldbl=''
780 d_PRIeldbl=''
781 d_PRIfldbl=''
782 d_PRIgldbl=''
783 d_SCNfldbl=''
784 sPRIEUldbl=''
785 sPRIFUldbl=''
786 sPRIGUldbl=''
787 sPRIeldbl=''
788 sPRIfldbl=''
789 sPRIgldbl=''
790 sSCNfldbl=''
791 lseeksize=''
792 lseektype=''
793 make_set_make=''
794 d_mymalloc=''
795 freetype=''
796 mallocobj=''
797 mallocsrc=''
798 malloctype=''
799 usemymalloc=''
800 installman1dir=''
801 man1dir=''
802 man1direxp=''
803 man1ext=''
804 installman3dir=''
805 man3dir=''
806 man3direxp=''
807 man3ext=''
808 modetype=''
809 multiarch=''
810 mydomain=''
811 myhostname=''
812 phostname=''
813 c=''
814 n=''
815 d_eofnblk=''
816 eagain=''
817 o_nonblock=''
818 rd_nodata=''
819 need_va_copy=''
820 netdb_hlen_type=''
821 netdb_host_type=''
822 netdb_name_type=''
823 netdb_net_type=''
824 groupcat=''
825 hostcat=''
826 passcat=''
827 orderlib=''
828 ranlib=''
829 d_perl_otherlibdirs=''
830 otherlibdirs=''
831 package=''
832 spackage=''
833 pager=''
834 api_revision=''
835 api_subversion=''
836 api_version=''
837 api_versionstring=''
838 patchlevel=''
839 perl_patchlevel=''
840 revision=''
841 subversion=''
842 version=''
843 version_patchlevel_string=''
844 perl5=''
845 perladmin=''
846 perlpath=''
847 d_nv_preserves_uv=''
848 d_nv_preserves_uv_bits=''
849 i16size=''
850 i16type=''
851 i32size=''
852 i32type=''
853 i64size=''
854 i64type=''
855 i8size=''
856 i8type=''
857 ivsize=''
858 ivtype=''
859 nvsize=''
860 nvtype=''
861 u16size=''
862 u16type=''
863 u32size=''
864 u32type=''
865 u64size=''
866 u64type=''
867 u8size=''
868 u8type=''
869 uvsize=''
870 uvtype=''
871 ivdformat=''
872 nvEUformat=''
873 nvFUformat=''
874 nvGUformat=''
875 nveformat=''
876 nvfformat=''
877 nvgformat=''
878 uvXUformat=''
879 uvoformat=''
880 uvuformat=''
881 uvxformat=''
882 pidtype=''
883 prefix=''
884 prefixexp=''
885 installprivlib=''
886 privlib=''
887 privlibexp=''
888 prototype=''
889 ptrsize=''
890 d_PRIXU64=''
891 d_PRId64=''
892 d_PRIi64=''
893 d_PRIo64=''
894 d_PRIu64=''
895 d_PRIx64=''
896 sPRIXU64=''
897 sPRId64=''
898 sPRIi64=''
899 sPRIo64=''
900 sPRIu64=''
901 sPRIx64=''
902 d_quad=''
903 quadkind=''
904 quadtype=''
905 uquadtype=''
906 drand01=''
907 randbits=''
908 randfunc=''
909 randseedtype=''
910 seedfunc=''
911 installscript=''
912 scriptdir=''
913 scriptdirexp=''
914 selectminbits=''
915 selecttype=''
916 sh=''
917 sig_count=''
918 sig_name=''
919 sig_name_init=''
920 sig_num=''
921 sig_num_init=''
922 sig_size=''
923 installsitearch=''
924 sitearch=''
925 sitearchexp=''
926 installsitebin=''
927 sitebin=''
928 sitebinexp=''
929 installsitelib=''
930 sitelib=''
931 sitelib_stem=''
932 sitelibexp=''
933 siteprefix=''
934 siteprefixexp=''
935 sizesize=''
936 sizetype=''
937 so=''
938 socksizetype=''
939 sharpbang=''
940 shsharp=''
941 spitshell=''
942 src=''
943 ssizetype=''
944 startperl=''
945 startsh=''
946 stdchar=''
947 d_stdio_stream_array=''
948 stdio_stream_array=''
949 sysman=''
950 trnl=''
951 uidformat=''
952 uidsign=''
953 uidsize=''
954 uidtype=''
955 archname64=''
956 use64bitall=''
957 use64bitint=''
958 ccflags_uselargefiles=''
959 ldflags_uselargefiles=''
960 libswanted_uselargefiles=''
961 uselargefiles=''
962 uselongdouble=''
963 usemorebits=''
964 usemultiplicity=''
965 nm_opt=''
966 nm_so_opt=''
967 runnm=''
968 usenm=''
969 useperlio=''
970 usesocks=''
971 d_oldpthreads=''
972 use5005threads=''
973 useithreads=''
974 usereentrant=''
975 usethreads=''
976 incpath=''
977 mips_type=''
978 usrinc=''
979 d_vendorarch=''
980 installvendorarch=''
981 vendorarch=''
982 vendorarchexp=''
983 d_vendorbin=''
984 installvendorbin=''
985 vendorbin=''
986 vendorbinexp=''
987 d_vendorlib=''
988 installvendorlib=''
989 vendorlib=''
990 vendorlib_stem=''
991 vendorlibexp=''
992 usevendorprefix=''
993 vendorprefix=''
994 vendorprefixexp=''
995 versiononly=''
996 defvoidused=''
997 voidflags=''
998 pm_apiversion=''
999 xs_apiversion=''
1000 yacc=''
1001 yaccflags=''
1002 CONFIG=''
1003
1004 define='define'
1005 undef='undef'
1006 smallmach='pdp11 i8086 z8000 i80286 iAPX286'
1007 rmlist=''
1008
1009 : We must find out about Eunice early
1010 eunicefix=':'
1011 if test -f /etc/unixtovms; then
1012         eunicefix=/etc/unixtovms
1013 fi
1014 if test -f /etc/unixtovms.exe; then
1015         eunicefix=/etc/unixtovms.exe
1016 fi
1017
1018 i_whoami=''
1019 ccname=''
1020 ccversion=''
1021 perllibs=''
1022 : set useposix=false in your hint file to disable the POSIX extension.
1023 useposix=true
1024 : set useopcode=false in your hint file to disable the Opcode extension.
1025 useopcode=true
1026 : Trailing extension.  Override this in a hint file, if needed.
1027 _exe=''
1028 : Extra object files, if any, needed on this platform.
1029 archobjs=''
1030 archname=''
1031 : Possible local include directories to search.
1032 : Set locincpth to "" in a hint file to defeat local include searches.
1033 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
1034 locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
1035 :
1036 : no include file wanted by default
1037 inclwanted=''
1038
1039 groupstype=''
1040 libnames=''
1041 : change the next line if compiling for Xenix/286 on Xenix/386
1042 xlibpth='/usr/lib/386 /lib/386'
1043 : Possible local library directories to search.
1044 loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
1045 loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
1046
1047 : general looking path for locating libraries
1048 glibpth="/lib /usr/lib $xlibpth"
1049 glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
1050 test -f /usr/shlib/libc.so && glibpth="/usr/shlib $glibpth"
1051 test -f /shlib/libc.so     && glibpth="/shlib $glibpth"
1052
1053 : Private path used by Configure to find libraries.  Its value
1054 : is prepended to libpth. This variable takes care of special
1055 : machines, like the mips.  Usually, it should be empty.
1056 plibpth=''
1057
1058 : default library list
1059 libswanted=''
1060 : some systems want to use only the non-versioned libso:s
1061 ignore_versioned_solibs=''
1062 archname64=''
1063 ccflags_uselargefiles=''
1064 ldflags_uselargefiles=''
1065 libswanted_uselargefiles=''
1066 : set usemultiplicity on the Configure command line to enable multiplicity.
1067 : set usesocks on the Configure command line to enable socks.
1068 : set usethreads on the Configure command line to enable threads.
1069 usereentrant='undef'
1070 : full support for void wanted by default
1071 defvoidused=15
1072
1073 : List of libraries we want.
1074 : If anyone needs -lnet, put it in a hint file.
1075 libswanted='sfio socket bind inet nsl nm ndbm gdbm dbm db malloc dl'
1076 libswanted="$libswanted dld ld sun m c cposix posix"
1077 libswanted="$libswanted ndir dir crypt sec"
1078 libswanted="$libswanted ucb bsd BSD PW x iconv util"
1079 : We probably want to search /usr/shlib before most other libraries.
1080 : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
1081 glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
1082 glibpth="/usr/shlib $glibpth"
1083 : Do not use vfork unless overridden by a hint file.
1084 usevfork=false
1085
1086 : Find the basic shell for Bourne shell scripts
1087 case "$sh" in
1088 '')
1089         case "$SYSTYPE" in
1090         *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
1091         *) xxx='/bin/sh';;
1092         esac
1093         if test -f "$xxx"; then
1094                 sh="$xxx"
1095         else
1096                 : Build up a list and do a single loop so we can 'break' out.
1097                 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1098                 for xxx in sh bash ksh pdksh ash; do
1099                         for p in $pth; do
1100                                 try="$try ${p}/${xxx}"
1101                         done
1102                 done
1103                 for xxx in $try; do
1104                         if test -f "$xxx"; then
1105                                 sh="$xxx";
1106                                 break
1107                         elif test -f "$xxx.exe"; then
1108                                 sh="$xxx";
1109                                 break
1110                         fi
1111                 done
1112         fi
1113         ;;
1114 esac
1115
1116 case "$sh" in
1117 '')     cat <<EOM >&2
1118 $me:  Fatal Error:  I can't find a Bourne Shell anywhere.  
1119
1120 Usually it's in /bin/sh.  How did you even get this far?
1121 Please contact me (Perl Maintainers) at perlbug@perl.org and 
1122 we'll try to straighten this all out.
1123 EOM
1124         exit 1
1125         ;;
1126 esac
1127
1128 : see if sh knows # comments
1129 if `$sh -c '#' >/dev/null 2>&1`; then
1130         shsharp=true
1131         spitshell=cat
1132         xcat=/bin/cat
1133         test -f $xcat || xcat=/usr/bin/cat
1134         echo "#!$xcat" >sharp
1135         $eunicefix sharp
1136         chmod +x sharp
1137         ./sharp > today
1138         if test -s today; then
1139                 sharpbang='#!'
1140         else
1141                 echo "#! $xcat" > sharp
1142                 $eunicefix sharp
1143                 chmod +x sharp
1144                 ./sharp > today
1145                 if test -s today; then
1146                         sharpbang='#! '
1147                 else
1148                         sharpbang=': use '
1149                 fi
1150         fi
1151 else
1152         echo " "
1153         echo "Your $sh doesn't grok # comments--I will strip them later on."
1154         shsharp=false
1155         cd ..
1156         echo "exec grep -v '^[  ]*#'" >spitshell
1157         chmod +x spitshell
1158         $eunicefix spitshell
1159         spitshell=`pwd`/spitshell
1160         cd UU
1161         echo "I presume that if # doesn't work, #! won't work either!"
1162         sharpbang=': use '
1163 fi
1164 rm -f sharp today
1165
1166 : figure out how to guarantee sh startup
1167 case "$startsh" in
1168 '') startsh=${sharpbang}${sh} ;;
1169 *)
1170 esac
1171 cat >sharp <<EOSS
1172 $startsh
1173 set abc
1174 test "$?abc" != 1
1175 EOSS
1176
1177 chmod +x sharp
1178 $eunicefix sharp
1179 if ./sharp; then
1180         : echo "Yup, it does."
1181 else
1182         echo "Hmm... '$startsh' does not guarantee sh startup..."
1183         echo "You may have to fix up the shell scripts to make sure $sh runs them."
1184 fi
1185 rm -f sharp
1186
1187
1188 : Save command line options in file UU/cmdline.opt for later use in
1189 : generating config.sh.
1190 cat > cmdline.opt <<EOSH
1191 # Configure command line arguments.
1192 config_arg0='$0'
1193 config_args='$*'
1194 config_argc=$#
1195 EOSH
1196 argn=1
1197 args_exp=''
1198 args_sep=''
1199 for arg in "$@"; do
1200         cat >>cmdline.opt <<EOSH
1201 config_arg$argn='$arg'
1202 EOSH
1203         # Extreme backslashitis: replace each ' by '"'"'
1204         cat <<EOC | sed -e "s/'/'"'"'"'"'"'"'/g" > cmdl.opt
1205 $arg
1206 EOC
1207         arg_exp=`cat cmdl.opt`
1208         args_exp="$args_exp$args_sep'$arg_exp'"
1209         argn=`expr $argn + 1`
1210         args_sep=' '
1211 done
1212 # args_exp is good for restarting self: eval "set X $args_exp"; shift; $0 "$@"
1213 # used by ./hints/os2.sh
1214 rm -f cmdl.opt
1215
1216 : produce awk script to parse command line options
1217 cat >options.awk <<'EOF'
1218 BEGIN {
1219         optstr = "A:dD:eEf:hKOrsSU:V";  # getopt-style specification
1220
1221         len = length(optstr);
1222         for (i = 1; i <= len; i++) {
1223                 c = substr(optstr, i, 1);
1224                 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
1225                 if (a == ":") {
1226                         arg[c] = 1;
1227                         i++;
1228                 }
1229                 opt[c] = 1;
1230         }
1231 }
1232 {
1233         expect = 0;
1234         str = $0;
1235         if (substr(str, 1, 1) != "-") {
1236                 printf("'%s'\n", str);
1237                 next;
1238         }
1239         len = length($0);
1240         for (i = 2; i <= len; i++) {
1241                 c = substr(str, i, 1);
1242                 if (!opt[c]) {
1243                         printf("-%s\n", substr(str, i));
1244                         next;
1245                 }
1246                 printf("-%s\n", c);
1247                 if (arg[c]) {
1248                         if (i < len)
1249                                 printf("'%s'\n", substr(str, i + 1));
1250                         else
1251                                 expect = 1;
1252                         next;
1253                 }
1254         }
1255 }
1256 END {
1257         if (expect)
1258                 print "?";
1259 }
1260 EOF
1261
1262 : process the command line options
1263 set X `for arg in "$@"; do echo "X$arg"; done |
1264         sed -e s/X// | awk -f options.awk`
1265 eval "set $*"
1266 shift
1267 rm -f options.awk
1268
1269 : set up default values
1270 fastread=''
1271 reuseval=false
1272 config_sh=''
1273 alldone=''
1274 error=''
1275 silent=''
1276 extractsh=''
1277 override=''
1278 knowitall=''
1279 rm -f optdef.sh posthint.sh
1280 cat >optdef.sh <<EOS
1281 $startsh
1282 EOS
1283
1284
1285 : option parsing
1286 while test $# -gt 0; do
1287         case "$1" in
1288         -d) shift; fastread=yes;;
1289         -e) shift; alldone=cont;;
1290         -f)
1291                 shift
1292                 cd ..
1293                 if test -r "$1"; then
1294                         config_sh="$1"
1295                 else
1296                         echo "$me: cannot read config file $1." >&2
1297                         error=true
1298                 fi
1299                 cd UU
1300                 shift;;
1301         -h) shift; error=true;;
1302         -r) shift; reuseval=true;;
1303         -s) shift; silent=true; realsilent=true;;
1304         -E) shift; alldone=exit;;
1305         -K) shift; knowitall=true;;
1306         -O) shift; override=true;;
1307         -S) shift; silent=true; extractsh=true;;
1308         -D)
1309                 shift
1310                 case "$1" in
1311                 *=)
1312                         echo "$me: use '-U symbol=', not '-D symbol='." >&2
1313                         echo "$me: ignoring -D $1" >&2
1314                         ;;
1315                 *=*) echo "$1" | \
1316                                 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1317                 *) echo "$1='define'" >> optdef.sh;;
1318                 esac
1319                 shift
1320                 ;;
1321         -U)
1322                 shift
1323                 case "$1" in
1324                 *=) echo "$1" >> optdef.sh;;
1325                 *=*)
1326                         echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1327                         echo "$me: ignoring -U $1" >&2
1328                         ;;
1329                 *) echo "$1='undef'" >> optdef.sh;;
1330                 esac
1331                 shift
1332                 ;;
1333         -A)
1334             shift
1335             xxx=''
1336             yyy="$1"
1337             zzz=''
1338             uuu=undef
1339             case "$yyy" in
1340             *=*) zzz=`echo $yyy|sed 's!=.*!!'`
1341                  case "$zzz" in
1342                  *:*) zzz='' ;;
1343                  *)   xxx=append
1344                       zzz=" "`echo $yyy|sed 's!^[^=]*=!!'` 
1345                       yyy=`echo $yyy|sed 's!=.*!!'` ;;
1346                  esac
1347                  ;;
1348             esac
1349             case "$xxx" in
1350             '')  case "$yyy" in
1351                  *:*) xxx=`echo $yyy|sed 's!:.*!!'`
1352                       yyy=`echo $yyy|sed 's!^[^:]*:!!'`
1353                       zzz=`echo $yyy|sed 's!^[^=]*=!!'`
1354                       yyy=`echo $yyy|sed 's!=.*!!'` ;;
1355                  *)   xxx=`echo $yyy|sed 's!:.*!!'`
1356                       yyy=`echo $yyy|sed 's!^[^:]*:!!'` ;;
1357                  esac
1358                  ;;       
1359             esac
1360             case "$xxx" in
1361             append)
1362                 echo "$yyy=\"\${$yyy}$zzz\""    >> posthint.sh ;;
1363             clear)
1364                 echo "$yyy=''"                  >> posthint.sh ;;
1365             define)
1366                 case "$zzz" in
1367                 '') zzz=define ;;
1368                 esac
1369                 echo "$yyy='$zzz'"              >> posthint.sh ;;
1370             eval)
1371                 echo "eval \"$yyy=$zzz\""       >> posthint.sh ;;
1372             prepend)
1373                 echo "$yyy=\"$zzz\${$yyy}\""    >> posthint.sh ;;
1374             undef)
1375                 case "$zzz" in
1376                 '') zzz="$uuu" ;;
1377                 esac
1378                 echo "$yyy=$zzz"                >> posthint.sh ;;
1379             *)  echo "$me: unknown -A command '$xxx', ignoring -A $1" >&2 ;;
1380             esac
1381             shift
1382             ;;
1383         -V) echo "$me generated by metaconfig 3.0 PL70." >&2
1384             exit 0;;
1385         --) break;;
1386         -*) echo "$me: unknown option $1" >&2; shift; error=true;;
1387         *) break;;
1388         esac
1389 done
1390
1391 case "$error" in
1392 true)
1393         cat >&2 <<EOM
1394 Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
1395                  [-U symbol] [-U symbol=] [-A command:symbol...]
1396   -d : use defaults for all answers.
1397   -e : go on without questioning past the production of config.sh.
1398   -f : specify an alternate default configuration file.
1399   -h : print this help message and exit (with an error status).
1400   -r : reuse C symbols value if possible (skips costly nm extraction).
1401   -s : silent mode, only echoes questions and essential information.
1402   -D : define symbol to have some value:
1403          -D symbol         symbol gets the value 'define'
1404          -D symbol=value   symbol gets the value 'value'
1405   -E : stop at the end of questions, after having produced config.sh.
1406   -K : do not use unless you know what you are doing.
1407   -O : let -D and -U override definitions from loaded configuration file.
1408   -S : perform variable substitutions on all .SH files (can mix with -f)
1409   -U : undefine symbol:
1410          -U symbol    symbol gets the value 'undef'
1411          -U symbol=   symbol gets completely empty
1412   -A : manipulate symbol after the platform specific hints have been applied:
1413          -A symbol=value                append " "value to symbol
1414          -A append:symbol=value         append value to symbol
1415          -A define:symbol=value         define symbol to have value
1416          -A clear:symbol                define symbol to be ''
1417          -A define:symbol               define symbol to be 'define'
1418          -A eval:symbol=value           define symbol to be eval of value
1419          -A prepend:symbol=value        prepend value to symbol
1420          -A undef:symbol                define symbol to be 'undef'
1421          -A undef:symbol=               define symbol to be ''
1422   -V : print version number and exit (with a zero status).
1423 EOM
1424         exit 1
1425         ;;
1426 esac
1427
1428 : Sanity checks
1429 case "$fastread$alldone" in
1430 yescont|yesexit) ;;
1431 *)
1432         case "$extractsh" in
1433         true) ;;
1434         *)
1435                 if test ! -t 0; then
1436                         echo "Say 'sh Configure', not 'sh <Configure'"
1437                         exit 1
1438                 fi
1439                 ;;
1440         esac
1441         ;;
1442 esac
1443
1444 exec 4>&1
1445 case "$silent" in
1446 true) exec 1>/dev/null;;
1447 esac
1448
1449 : run the defines and the undefines, if any, but leave the file out there...
1450 touch optdef.sh
1451 . ./optdef.sh
1452 : create the posthint manipulation script and leave the file out there...
1453 touch posthint.sh
1454
1455 : set package name
1456 package=perl5
1457 first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1458 last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1459 case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1460 ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1461 *) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1462 esac
1463
1464 : Some greps do not return status, grrr.
1465 echo "grimblepritz" >grimble
1466 if grep blurfldyick grimble >/dev/null 2>&1 ; then
1467         contains=contains
1468 elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1469         contains=grep
1470 else
1471         contains=contains
1472 fi
1473 rm -f grimble
1474 : the following should work in any shell
1475 case "$contains" in
1476 contains*)
1477         echo " "
1478         echo "AGH!  Grep doesn't return a status.  Attempting remedial action."
1479         cat >contains <<'EOSS'
1480 grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1481 EOSS
1482 chmod +x contains
1483 esac
1484
1485 : Find the path to the source tree
1486 case "$src" in
1487 '') case "$0" in
1488     */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`
1489          case "$src" in
1490          /*)    ;;
1491          .)     ;;
1492          *)     src=`cd ../$src && pwd` ;;
1493          esac
1494          ;;
1495     *)   src='.';;
1496     esac;;
1497 esac
1498 case "$src" in
1499 '')     src=/
1500         rsrc=/
1501         ;;
1502 /*) rsrc="$src";;
1503 *) rsrc="../$src";;
1504 esac
1505 if test -f $rsrc/Configure && \
1506         $contains "^package=$package$" $rsrc/Configure >/dev/null 2>&1
1507 then
1508    : found it, so we are ok.
1509 else
1510         rsrc=''
1511         for src in . .. ../.. ../../.. ../../../..; do
1512                 if test -f ../$src/Configure && \
1513                         $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1514                 then
1515                         rsrc=../$src
1516                         break
1517                 fi
1518         done
1519 fi
1520 case "$rsrc" in
1521 '')
1522         cat <<EOM >&4
1523
1524 Sorry, I can't seem to locate the source dir for $package.  Please start
1525 Configure with an explicit path -- i.e. /some/path/Configure.
1526
1527 EOM
1528         exit 1
1529         ;;
1530 ../.)   rsrc='..';;
1531 *)
1532         echo " "
1533         echo "Sources for $package found in \"$src\"." >&4
1534         ;;
1535 esac
1536
1537 : script used to extract .SH files with variable substitutions
1538 cat >extract <<'EOS'
1539 PERL_CONFIG_SH=true
1540 echo "Doing variable substitutions on .SH files..."
1541 if test -f MANIFEST; then
1542         set x `awk '{print $1}' < MANIFEST | grep '\.SH$'`
1543 else
1544         echo "(Looking for .SH files under the source directory.)"
1545         set x `(cd $src; find . -name "*.SH" -print)`
1546 fi
1547 shift
1548 case $# in
1549 0) set x `(cd $src; echo *.SH)`; shift;;
1550 esac
1551 if test ! -f $src/$1; then
1552         shift
1553 fi
1554 mkdir_p='
1555 name=$1;
1556 create="";
1557 while test $name; do
1558         if test ! -d "$name"; then
1559                 create="$name $create";
1560                 name=`echo $name | sed -e "s|^[^/]*$||"`;
1561                 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
1562         else
1563                 name="";
1564         fi;
1565 done;
1566 for file in $create; do
1567         mkdir $file;
1568 done
1569 '
1570 for file in $*; do
1571         case "$src" in
1572         ".")
1573                 case "$file" in
1574                 */*)
1575                         dir=`expr X$file : 'X\(.*\)/'`
1576                         file=`expr X$file : 'X.*/\(.*\)'`
1577                         (cd $dir && . ./$file)
1578                         ;;
1579                 *)
1580                         . ./$file
1581                         ;;
1582                 esac
1583                 ;;
1584         *)
1585                 case "$file" in
1586                 */*)
1587                         dir=`expr X$file : 'X\(.*\)/'`
1588                         file=`expr X$file : 'X.*/\(.*\)'`
1589                         (set x $dir; shift; eval $mkdir_p)
1590                         sh <$src/$dir/$file
1591                         ;;
1592                 *)
1593                         sh <$src/$file
1594                         ;;
1595                 esac
1596                 ;;
1597         esac
1598 done
1599 if test -f $src/config_h.SH; then
1600         if test ! -f config.h; then
1601         : oops, they left it out of MANIFEST, probably, so do it anyway.
1602         . $src/config_h.SH
1603         fi
1604 fi
1605 EOS
1606
1607 : extract files and exit if asked to do so
1608 case "$extractsh" in
1609 true)
1610         case "$realsilent" in
1611         true) ;;
1612         *) exec 1>&4;;
1613         esac
1614         case "$config_sh" in
1615         '') config_sh='config.sh';;
1616         esac
1617         echo " "
1618         echo "Fetching answers from $config_sh..."
1619         cd ..
1620         . $config_sh
1621         test "$override" && . ./optdef.sh
1622         echo " "
1623         . UU/extract
1624         rm -rf UU
1625         echo "Extraction done."
1626         exit 0
1627         ;;
1628 esac
1629
1630 : Eunice requires " " instead of "", can you believe it
1631 echo " "
1632 : Here we go...
1633 echo "Beginning of configuration questions for $package."
1634
1635 trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1636
1637 : first determine how to suppress newline on echo command
1638 echo " "
1639 echo "Checking echo to see how to suppress newlines..."
1640 (echo "hi there\c" ; echo " ") >.echotmp
1641 if $contains c .echotmp >/dev/null 2>&1 ; then
1642         echo "...using -n."
1643         n='-n'
1644         c=''
1645 else
1646         cat <<'EOM'
1647 ...using \c
1648 EOM
1649         n=''
1650         c='\c'
1651 fi
1652 echo $n "The star should be here-->$c"
1653 echo '*'
1654 rm -f .echotmp
1655
1656 : Now test for existence of everything in MANIFEST
1657 echo " "
1658 if test -f $rsrc/MANIFEST; then
1659         echo "First let's make sure your kit is complete.  Checking..." >&4
1660         awk '$1 !~ /PACK[A-Z]+/ {print $1}' $rsrc/MANIFEST | split -50
1661         rm -f missing
1662         tmppwd=`pwd`
1663         for filelist in x??; do
1664                 (cd $rsrc; ls `cat $tmppwd/$filelist` >/dev/null 2>>$tmppwd/missing)
1665         done
1666         if test -s missing; then
1667                 cat missing >&4
1668                 cat >&4 <<'EOM'
1669
1670 THIS PACKAGE SEEMS TO BE INCOMPLETE.
1671
1672 You have the option of continuing the configuration process, despite the
1673 distinct possibility that your kit is damaged, by typing 'y'es.  If you
1674 do, don't blame me if something goes wrong.  I advise you to type 'n'o
1675 and contact the author (perlbug@perl.org).
1676
1677 EOM
1678                 echo $n "Continue? [n] $c" >&4
1679                 read ans
1680                 case "$ans" in
1681                 y*)
1682                         echo "Continuing..." >&4
1683                         rm -f missing
1684                         ;;
1685                 *)
1686                         echo "ABORTING..." >&4
1687                         kill $$
1688                         ;;
1689                 esac
1690         else
1691                 echo "Looks good..."
1692         fi
1693 else
1694         echo "There is no MANIFEST file.  I hope your kit is complete !"
1695 fi
1696 rm -f missing x??
1697
1698 echo " "
1699 : Find the appropriate value for a newline for tr
1700 if test -n "$DJGPP"; then
1701        trnl='\012'
1702 fi
1703 if test X"$trnl" = X; then
1704         case "`echo foo|tr '\n' x 2>/dev/null`" in
1705         foox) trnl='\n' ;;
1706         esac
1707 fi
1708 if test X"$trnl" = X; then
1709         case "`echo foo|tr '\012' x 2>/dev/null`" in
1710         foox) trnl='\012' ;;
1711         esac
1712 fi
1713 if test X"$trnl" = X; then
1714         cat <<EOM >&2
1715
1716 $me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
1717
1718 EOM
1719         exit 1
1720 fi
1721
1722 : compute the number of columns on the terminal for proper question formatting
1723 case "$COLUMNS" in
1724 '') COLUMNS='80';;
1725 esac
1726
1727 : set up the echo used in my read
1728 myecho="case \"\$xxxm\" in
1729 '') echo $n \"\$rp $c\" >&4;;
1730 *) case \"\$rp\" in
1731         '') echo $n \"[\$xxxm] $c\";;
1732         *)
1733                 if test \`echo \"\$rp [\$xxxm]  \" | wc -c\` -ge $COLUMNS; then
1734                         echo \"\$rp\" >&4
1735                         echo $n \"[\$xxxm] $c\" >&4
1736                 else
1737                         echo $n \"\$rp [\$xxxm] $c\" >&4
1738                 fi
1739                 ;;
1740         esac;;
1741 esac"
1742
1743 : now set up to do reads with possible shell escape and default assignment
1744 cat <<EOSC >myread
1745 $startsh
1746 xxxm=\$dflt
1747 $myecho
1748 ans='!'
1749 case "\$fastread" in
1750 yes) case "\$dflt" in
1751         '') ;;
1752         *) ans='';
1753                 case "\$silent-\$rp" in
1754                 true-) ;;
1755                 *) echo " " >&4;;
1756                 esac;;
1757         esac;;
1758 *) case "\$silent" in
1759         true) case "\$rp" in
1760                 '') ans='';;
1761                 esac;;
1762         esac;;
1763 esac
1764 while expr "X\$ans" : "X!" >/dev/null; do
1765         read answ
1766         set x \$xxxm
1767         shift
1768         aok=''; eval "ans=\\"\$answ\\"" && aok=y
1769         case  "\$answ" in
1770         "!")
1771                 sh 1>&4
1772                 echo " "
1773                 $myecho
1774                 ;;
1775         !*)
1776                 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
1777                 shift
1778                 sh 1>&4 -c "\$*"
1779                 echo " "
1780                 $myecho
1781                 ;;
1782         "\$ans")
1783                 case "\$ans" in
1784                 \\&*)
1785                         set x \`expr "X\$ans" : "X&\(.*\)\$"\`
1786                         shift
1787                         case "\$1" in
1788                         -d)
1789                                 fastread=yes
1790                                 echo "(OK, I'll run with -d after this question.)" >&4
1791                                 ;;
1792                         -*)
1793                                 echo "*** Sorry, \$1 not supported yet." >&4
1794                                 ;;
1795                         esac
1796                         $myecho
1797                         ans=!
1798                         ;;
1799                 esac;;
1800         *)
1801                 case "\$aok" in
1802                 y)
1803                         echo "*** Substitution done -- please confirm."
1804                         xxxm="\$ans"
1805                         ans=\`echo $n "\$ans$c" | tr '$trnl' ' '\`
1806                         xxxm="\$ans"
1807                         ans=!
1808                         ;;
1809                 *)
1810                         echo "*** Error -- try again."
1811                         ans=!
1812                         ;;
1813                 esac
1814                 $myecho
1815                 ;;
1816         esac
1817         case "\$ans\$xxxm\$nostick" in
1818         '')
1819                 ans=!
1820                 $myecho
1821                 ;;
1822         esac
1823 done
1824 case "\$ans" in
1825 '') ans="\$xxxm";;
1826 esac
1827 EOSC
1828
1829 : create .config dir to save info across Configure sessions
1830 test -d ../.config || mkdir ../.config
1831 cat >../.config/README <<EOF
1832 This directory created by Configure to save information that should
1833 persist across sessions for $package.
1834
1835 You may safely delete it if you wish.
1836 EOF
1837
1838 xversion=`awk '/define[         ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
1839 case "$usedevel" in
1840 $define|true|[yY]*) ;;
1841 *) case "$xversion" in
1842    *[13579])
1843         cat >&4 <<EOH
1844 *** WHOA THERE!!! ***
1845
1846     This is an UNSTABLE DEVELOPMENT release.
1847     The version of this $package distribution is $xversion, that is, odd,
1848     (as opposed to even) and that signifies a development release.
1849     If you want a maintenance release, you want an even-numbered version.
1850
1851     Do ***NOT*** install this into production use.
1852     Data corruption and crashes are possible.
1853
1854     It is most seriously suggested that you do not continue any further
1855     unless you want to help in developing and debugging Perl.
1856
1857     If you *still* want to build perl, you can answer 'y' now,
1858     or pass -Dusedevel to Configure.
1859
1860 EOH
1861         rp='Do you really want to continue?'
1862         dflt='n'
1863         . ./myread
1864         case "$ans" in
1865         [yY]) echo >&4 "Okay, continuing."
1866               usedevel="$define" ;;
1867         *) echo >&4 "Okay, bye."
1868            exit 1
1869            ;;
1870         esac
1871         ;;
1872     esac
1873     ;;
1874 esac
1875 case "$usedevel" in
1876 $define|true|[yY]*)
1877         case "$versiononly" in
1878         '') versiononly="$define" ;;
1879         esac
1880         case "$installusrbinperl" in
1881         '') installusrbinperl="$undef" ;;
1882         esac
1883         ;;
1884 esac
1885
1886 : general instructions
1887 needman=true
1888 firsttime=true
1889 user=`(logname) 2>/dev/null`
1890 case "$user" in
1891 '') user=`whoami 2>&1`;;
1892 esac
1893 if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
1894         firsttime=false
1895         echo " "
1896         rp='Would you like to see the instructions?'
1897         dflt=n
1898         . ./myread
1899         case "$ans" in
1900         [yY]*) ;;
1901         *) needman=false;;
1902         esac
1903 fi
1904 if $needman; then
1905         cat <<EOH
1906
1907 This installation shell script will examine your system and ask you questions
1908 to determine how the perl5 package should be installed. If you get
1909 stuck on a question, you may use a ! shell escape to start a subshell or
1910 execute a command.  Many of the questions will have default answers in square
1911 brackets; typing carriage return will give you the default.
1912
1913 On some of the questions which ask for file or directory names you are allowed
1914 to use the ~name construct to specify the login directory belonging to "name",
1915 even if you don't have a shell which knows about that.  Questions where this is
1916 allowed will be marked "(~name ok)".
1917
1918 EOH
1919         rp=''
1920         dflt='Type carriage return to continue'
1921         . ./myread
1922         cat <<'EOH'
1923
1924 The prompter used in this script allows you to use shell variables and
1925 backticks in your answers.  You may use $1, $2, etc...  to refer to the words
1926 in the default answer, as if the default line was a set of arguments given to a
1927 script shell.  This means you may also use $* to repeat the whole default line,
1928 so you do not have to re-type everything to add something to the default.
1929
1930 Everytime there is a substitution, you will have to confirm.  If there is an
1931 error (e.g. an unmatched backtick), the default answer will remain unchanged
1932 and you will be prompted again.
1933
1934 If you are in a hurry, you may run 'Configure -d'.  This will bypass nearly all
1935 the questions and use the computed defaults (or the previous answers if there
1936 was already a config.sh file). Type 'Configure -h' for a list of options.
1937 You may also start interactively and then answer '& -d' at any prompt to turn
1938 on the non-interactive behaviour for the remainder of the execution.
1939
1940 EOH
1941         . ./myread
1942         cat <<EOH
1943
1944 Much effort has been expended to ensure that this shell script will run on any
1945 Unix system.  If despite that it blows up on yours, your best bet is to edit
1946 Configure and run it again.  If you can't run Configure for some reason,
1947 you'll have to generate a config.sh file by hand.  Whatever problems you
1948 have, let me (perlbug@perl.org) know how I blew it.
1949
1950 This installation script affects things in two ways:
1951
1952 1) it may do direct variable substitutions on some of the files included
1953    in this kit.
1954 2) it builds a config.h file for inclusion in C programs.  You may edit
1955    any of these files as the need arises after running this script.
1956
1957 If you make a mistake on a question, there is no easy way to back up to it
1958 currently.  The easiest thing to do is to edit config.sh and rerun all the SH
1959 files.  Configure will offer to let you do this before it runs the SH files.
1960
1961 EOH
1962         dflt='Type carriage return to continue'
1963         . ./myread
1964         case "$firsttime" in
1965         true) echo $user >>../.config/instruct;;
1966         esac
1967 fi
1968
1969 : find out where common programs are
1970 echo " "
1971 echo "Locating common programs..." >&4
1972 cat <<EOSC >loc
1973 $startsh
1974 case \$# in
1975 0) exit 1;;
1976 esac
1977 thing=\$1
1978 shift
1979 dflt=\$1
1980 shift
1981 for dir in \$*; do
1982         case "\$thing" in
1983         .)
1984         if test -d \$dir/\$thing; then
1985                 echo \$dir
1986                 exit 0
1987         fi
1988         ;;
1989         *)
1990         for thisthing in \$dir/\$thing; do
1991                 : just loop through to pick last item
1992         done
1993         if test -f \$thisthing; then
1994                 echo \$thisthing
1995                 exit 0
1996         elif test -f \$dir/\$thing.exe; then
1997                 if test -n "$DJGPP"; then
1998                         echo \$dir/\$thing.exe
1999                 else
2000                         : on Eunice apparently
2001                         echo \$dir/\$thing
2002                 fi
2003                 exit 0
2004         fi
2005         ;;
2006         esac
2007 done
2008 echo \$dflt
2009 exit 1
2010 EOSC
2011 chmod +x loc
2012 $eunicefix loc
2013 loclist="
2014 awk
2015 cat
2016 chmod
2017 comm
2018 cp
2019 echo
2020 expr
2021 grep
2022 ls
2023 make
2024 mkdir
2025 rm
2026 sed
2027 sort
2028 touch
2029 tr
2030 uniq
2031 "
2032 trylist="
2033 Mcc
2034 ar
2035 bison
2036 byacc
2037 cpp
2038 csh
2039 date
2040 egrep
2041 gzip
2042 less
2043 ln
2044 more
2045 nm
2046 nroff
2047 pg
2048 test
2049 uname
2050 zip
2051 "
2052 pth=`echo $PATH | sed -e "s/$p_/ /g"`
2053 pth="$pth /lib /usr/lib"
2054 for file in $loclist; do
2055         eval xxx=\$$file
2056         case "$xxx" in
2057         /*|?:[\\/]*)
2058                 if test -f "$xxx"; then
2059                         : ok
2060                 else
2061                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2062                         xxx=`./loc $file $file $pth`
2063                 fi
2064                 ;;
2065         '') xxx=`./loc $file $file $pth`;;
2066         *) xxx=`./loc $xxx $xxx $pth`;;
2067         esac
2068         eval $file=$xxx
2069         eval _$file=$xxx
2070         case "$xxx" in
2071         /*)
2072                 echo $file is in $xxx.
2073                 ;;
2074         ?:[\\/]*)
2075                 echo $file is in $xxx.
2076                 ;;
2077         *)
2078                 echo "I don't know where '$file' is, and my life depends on it." >&4
2079                 echo "Go find a public domain implementation or fix your PATH setting!" >&4
2080                 exit 1
2081                 ;;
2082         esac
2083 done
2084 echo " "
2085 echo "Don't worry if any of the following aren't found..."
2086 say=offhand
2087 for file in $trylist; do
2088         eval xxx=\$$file
2089         case "$xxx" in
2090         /*|?:[\\/]*)
2091                 if test -f "$xxx"; then
2092                         : ok
2093                 else
2094                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2095                         xxx=`./loc $file $file $pth`
2096                 fi
2097                 ;;
2098         '') xxx=`./loc $file $file $pth`;;
2099         *) xxx=`./loc $xxx $xxx $pth`;;
2100         esac
2101         eval $file=$xxx
2102         eval _$file=$xxx
2103         case "$xxx" in
2104         /*)
2105                 echo $file is in $xxx.
2106                 ;;
2107         ?:[\\/]*)
2108                 echo $file is in $xxx.
2109                 ;;
2110         *)
2111                 echo "I don't see $file out there, $say."
2112                 say=either
2113                 ;;
2114         esac
2115 done
2116 case "$egrep" in
2117 egrep)
2118         echo "Substituting grep for egrep."
2119         egrep=$grep
2120         ;;
2121 esac
2122 case "$ln" in
2123 ln)
2124         echo "Substituting cp for ln."
2125         ln=$cp
2126         ;;
2127 esac
2128 case "$test" in
2129 test)
2130         echo "Hopefully test is built into your sh."
2131         ;;
2132 *)
2133         if `sh -c "PATH= test true" >/dev/null 2>&1`; then
2134                 echo "Using the test built into your sh."
2135                 test=test
2136                 _test=test
2137         fi
2138         ;;
2139 esac
2140 case "$echo" in
2141 echo)
2142         echo "Hopefully echo is built into your sh."
2143         ;;
2144 '') ;;
2145 *)
2146         echo " "
2147 echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
2148         $echo $n "hi there$c" >foo1
2149         echo $n "hi there$c" >foo2
2150         if cmp foo1 foo2 >/dev/null 2>&1; then
2151                 echo "They are compatible.  In fact, they may be identical."
2152         else
2153                 case "$n" in
2154                 '-n') n='' c='\c';;
2155                 *) n='-n' c='';;
2156                 esac
2157                 cat <<FOO
2158 They are not compatible!  You are probably running ksh on a non-USG system.
2159 I'll have to use $echo instead of the builtin, since Bourne shell doesn't
2160 have echo built in and we may have to run some Bourne shell scripts.  That
2161 means I'll have to use '$n$c' to suppress newlines now.  Life is ridiculous.
2162
2163 FOO
2164                 $echo $n "The star should be here-->$c"
2165                 $echo "*"
2166         fi
2167         $rm -f foo1 foo2
2168         ;;
2169 esac
2170
2171 cat <<EOS >checkcc
2172 $startsh
2173 EOS
2174 cat <<'EOSC' >>checkcc
2175 case "$cc" in
2176 '') ;;
2177 *)  $rm -f try try.*
2178     $cat >try.c <<EOM
2179 int main(int argc, char *argv[]) {
2180   return 0;
2181 }
2182 EOM
2183     if $cc -o try $ccflags $ldflags try.c; then
2184        :
2185     else
2186         echo "Uh-oh, the C compiler '$cc' doesn't seem to be working." >&4
2187         despair=yes
2188         trygcc=yes
2189         case "$cc" in
2190         *gcc*) trygcc=no ;;
2191         esac
2192         case "`$cc -v -c try.c 2>&1`" in
2193         *gcc*) trygcc=no ;;
2194         esac
2195         if $test X"$trygcc" = Xyes; then
2196             if gcc -o try -c try.c; then
2197                 echo " "
2198                 echo "You seem to have a working gcc, though." >&4
2199                 rp="Would you like to use it?"
2200                 dflt=y
2201                 if $test -f myread; then
2202                     . ./myread
2203                 else
2204                     if $test -f UU/myread; then
2205                         . ./UU/myread
2206                     else
2207                         echo "Cannot find myread, sorry.  Aborting." >&2
2208                         exit 1
2209                     fi
2210                 fi  
2211                 case "$ans" in
2212                 [yY]*) cc=gcc; ccname=gcc; ccflags=''; despair=no ;;
2213                 esac
2214             fi
2215         fi
2216         if $test X"$despair" = Xyes; then
2217             $cat >&4 <<EOM
2218 You need to find a working C compiler.
2219 Either (purchase and) install the C compiler supplied by your OS vendor,
2220 or for a free C compiler try http://gcc.gnu.org/
2221 I cannot continue any further, aborting.
2222 EOM
2223             exit 1
2224         fi
2225     fi
2226     $rm -f try try.*
2227     ;;
2228 esac
2229 EOSC
2230
2231 : determine whether symbolic links are supported
2232 echo " "
2233 $touch blurfl
2234 if $ln -s blurfl sym > /dev/null 2>&1 ; then
2235         echo "Symbolic links are supported." >&4
2236         lns="$ln -s"
2237 else
2238         echo "Symbolic links are NOT supported." >&4
2239         lns="$ln"
2240 fi
2241 $rm -f blurfl sym
2242
2243 : determine whether symbolic links are supported
2244 echo " "
2245 case "$lns" in
2246 *"ln -s")
2247         echo "Checking how to test for symbolic links..." >&4
2248         $lns blurfl sym
2249         if $test "X$issymlink" = X; then
2250                 sh -c "PATH= test -h sym" >/dev/null 2>&1
2251                 if test $? = 0; then
2252                         issymlink="test -h"
2253                 fi              
2254         fi
2255         if $test "X$issymlink" = X; then
2256                 if  $test -h >/dev/null 2>&1; then
2257                         issymlink="$test -h"
2258                         echo "Your builtin 'test -h' may be broken, I'm using external '$test -h'." >&4
2259                 fi              
2260         fi
2261         if $test "X$issymlink" = X; then
2262                 if $test -L sym 2>/dev/null; then
2263                         issymlink="$test -L"
2264                 fi
2265         fi
2266         if $test "X$issymlink" != X; then
2267                 echo "You can test for symbolic links with '$issymlink'." >&4
2268         else
2269                 echo "I do not know how you can test for symbolic links." >&4
2270         fi
2271         $rm -f blurfl sym
2272         ;;
2273 *)      echo "No symbolic links, so not testing for their testing..." >&4
2274         ;;
2275 esac
2276 echo " "
2277
2278
2279 case "$mksymlinks" in
2280 $define|true|[yY]*)
2281         case "$src" in
2282         ''|'.') echo "Cannot create symlinks in the original directory." >&4
2283                 exit 1
2284                 ;;
2285         *)      case "$lns:$issymlink" in
2286                 *"ln -s:"*"test -"?)
2287                         echo "Creating the symbolic links..." >&4
2288                         echo "(First creating the subdirectories...)" >&4
2289                         cd ..
2290                         awk '{print $1}' $src/MANIFEST | grep / | sed 's:/[^/]*$::' | sort -u | while true; do
2291                                 read directory
2292                                 test -z "$directory" && break
2293                                 mkdir -p $directory
2294                         done
2295                         # Sanity check 1.
2296                         if test ! -d t/base; then
2297                                 echo "Failed to create the subdirectories.  Aborting." >&4
2298                                 exit 1
2299                         fi
2300                         echo "(Then creating the symlinks...)" >&4
2301                         awk '{print $1}' $src/MANIFEST | while true; do
2302                                 read filename
2303                                 test -z "$filename" && break
2304                                 if test -f $filename; then
2305                                         if $issymlink $filename; then
2306                                                 rm -f $filename
2307                                         fi
2308                                 fi
2309                                 if test -f $filename; then
2310                                         echo "$filename already exists, not symlinking."
2311                                 else
2312                                         ln -s $src/$filename $filename
2313                                 fi
2314                         done
2315                         # Sanity check 2.
2316                         if test ! -f t/base/commonsense.t; then
2317                                 echo "Failed to create the symlinks.  Aborting." >&4
2318                                 exit 1
2319                         fi
2320                         cd UU
2321                         ;;
2322                 *)      echo "(I cannot figure out how to do symbolic links, ignoring mksymlinks)." >&4
2323                         ;;
2324                 esac
2325                 ;;
2326         esac
2327         ;;
2328 esac
2329
2330
2331 case "$usecrosscompile" in
2332 $define|true|[yY]*)
2333         $echo "Cross-compiling..."
2334         croak=''
2335         case "$cc" in
2336         *-*-gcc) # A cross-compiling gcc, probably.
2337             targetarch=`$echo $cc|$sed 's/-gcc$//'`
2338             ar=$targetarch-ar
2339             # leave out ld, choosing it is more complex
2340             nm=$targetarch-nm
2341             ranlib=$targetarch-ranlib
2342             $echo 'extern int foo;' > try.c
2343             set X `$cc -v -E try.c 2>&1 | $awk '/^#include </,/^End of search /'|$grep '/include'`
2344             shift
2345             if $test $# -gt 0; then
2346                 incpth="$incpth $*"
2347                 incpth="`$echo $incpth|$sed 's/^ //'`"
2348                 echo "Guessing incpth '$incpth'." >&4
2349                 for i in $*; do
2350                     j="`$echo $i|$sed 's,/include$,/lib,'`"
2351                     if $test -d $j; then
2352                         libpth="$libpth $j"
2353                     fi
2354                 done   
2355                 libpth="`$echo $libpth|$sed 's/^ //'`"
2356                 echo "Guessing libpth '$libpth'." >&4
2357             fi
2358             $rm -f try.c
2359             ;;
2360         esac
2361         case "$targetarch" in
2362         '') echo "Targetarch not defined." >&4; croak=y ;;
2363         *)  echo "Using targetarch $targetarch." >&4 ;;
2364         esac
2365         case "$incpth" in
2366         '') echo "Incpth not defined." >&4; croak=y ;;
2367         *)  echo "Using incpth '$incpth'." >&4 ;;
2368         esac
2369         case "$libpth" in
2370         '') echo "Libpth not defined." >&4; croak=y ;;
2371         *)  echo "Using libpth '$libpth'." >&4 ;;
2372         esac
2373         case "$usrinc" in
2374         '') for i in $incpth; do
2375                 if $test -f $i/errno.h -a -f $i/stdio.h -a -f $i/time.h; then
2376                     usrinc=$i
2377                     echo "Guessing usrinc $usrinc." >&4
2378                     break
2379                 fi
2380             done
2381             case "$usrinc" in
2382             '') echo "Usrinc not defined." >&4; croak=y ;;
2383             esac
2384             ;;
2385         *)  echo "Using usrinc $usrinc." >&4 ;;
2386         esac
2387         case "$targethost" in
2388         '') echo "Targethost not defined." >&4; croak=y ;;
2389         *)  echo "Using targethost $targethost." >&4
2390         esac
2391         locincpth=' '
2392         loclibpth=' '
2393         case "$croak" in
2394         y) echo "Cannot continue, aborting." >&4; exit 1 ;;
2395         esac
2396         case "$src" in
2397         /*) run=$src/Cross/run
2398             targetmkdir=$src/Cross/mkdir
2399             to=$src/Cross/to
2400             from=$src/Cross/from
2401             ;;
2402         *)  pwd=`$test -f ../Configure & cd ..; pwd`
2403             run=$pwd/Cross/run
2404             targetmkdir=$pwd/Cross/mkdir
2405             to=$pwd/Cross/to
2406             from=$pwd/Cross/from
2407             ;;
2408         esac
2409         case "$targetrun" in
2410         '') targetrun=ssh ;;
2411         esac
2412         case "$targetto" in
2413         '') targetto=scp ;;
2414         esac
2415         case "$targetfrom" in
2416         '') targetfrom=scp ;;
2417         esac
2418         run=$run-$targetrun
2419         to=$to-$targetto
2420         from=$from-$targetfrom
2421         case "$targetdir" in
2422         '')  targetdir=/tmp
2423              echo "Guessing targetdir $targetdir." >&4
2424              ;;
2425         esac
2426         case "$targetuser" in
2427         '')  targetuser=root
2428              echo "Guessing targetuser $targetuser." >&4
2429              ;;
2430         esac
2431         case "$targetfrom" in
2432         scp)    q=-q ;;
2433         *)      q='' ;;
2434         esac
2435         case "$targetrun" in
2436         ssh|rsh)
2437             cat >$run <<EOF
2438 #!/bin/sh
2439 case "\$1" in
2440 -cwd)
2441   shift
2442   cwd=\$1
2443   shift
2444   ;;
2445 esac
2446 case "\$cwd" in
2447 '') cwd=$targetdir ;;
2448 esac
2449 exe=\$1
2450 shift
2451 if $test ! -f \$exe.xok; then
2452   $to \$exe
2453   $touch \$exe.xok
2454 fi
2455 $targetrun -l $targetuser $targethost "cd \$cwd && ./\$exe \$@"
2456 EOF
2457             ;;
2458         *)  echo "Unknown targetrun '$targetrun'" >&4
2459             exit 1
2460             ;;
2461         esac
2462         case "$targetmkdir" in
2463         */Cross/mkdir)
2464             cat >$targetmkdir <<EOF
2465 #!/bin/sh
2466 $targetrun -l $targetuser $targethost "mkdir -p \$@"
2467 EOF
2468             $chmod a+rx $targetmkdir
2469             ;;
2470         *)  echo "Unknown targetmkdir '$targetmkdir'" >&4
2471             exit 1
2472             ;;
2473         esac
2474         case "$targetto" in
2475         scp|rcp)
2476             cat >$to <<EOF
2477 #!/bin/sh
2478 for f in \$@
2479 do
2480   case "\$f" in
2481   /*)
2482     $targetmkdir \`dirname \$f\`
2483     $targetto $q \$f $targetuser@$targethost:\$f            || exit 1
2484     ;;
2485   *)
2486     $targetmkdir $targetdir/\`dirname \$f\`
2487     $targetto $q \$f $targetuser@$targethost:$targetdir/\$f || exit 1
2488     ;;
2489   esac
2490 done
2491 exit 0
2492 EOF
2493             ;;
2494         cp) cat >$to <<EOF
2495 #!/bin/sh
2496 for f in \$@
2497 do
2498   case "\$f" in
2499   /*)
2500     $mkdir -p $targetdir/\`dirname \$f\`
2501     $cp \$f $targetdir/\$f || exit 1
2502     ;;
2503   *)
2504     $targetmkdir $targetdir/\`dirname \$f\`
2505     $cp \$f $targetdir/\$f || exit 1
2506     ;;
2507   esac
2508 done
2509 exit 0
2510 EOF
2511             ;;
2512         *)  echo "Unknown targetto '$targetto'" >&4
2513             exit 1
2514             ;;
2515         esac
2516         case "$targetfrom" in
2517         scp|rcp)
2518           cat >$from <<EOF
2519 #!/bin/sh
2520 for f in \$@
2521 do
2522   $rm -f \$f
2523   $targetfrom $q $targetuser@$targethost:$targetdir/\$f . || exit 1
2524 done
2525 exit 0
2526 EOF
2527             ;;
2528         cp) cat >$from <<EOF
2529 #!/bin/sh
2530 for f in \$@
2531 do
2532   $rm -f \$f
2533   cp $targetdir/\$f . || exit 1
2534 done
2535 exit 0
2536 EOF
2537             ;;
2538         *)  echo "Unknown targetfrom '$targetfrom'" >&4
2539             exit 1
2540             ;;
2541         esac
2542         if $test ! -f $run; then
2543             echo "Target 'run' script '$run' not found." >&4
2544         else
2545             $chmod a+rx $run
2546         fi
2547         if $test ! -f $to; then
2548             echo "Target 'to' script '$to' not found." >&4
2549         else
2550             $chmod a+rx $to
2551         fi
2552         if $test ! -f $from; then
2553             echo "Target 'from' script '$from' not found." >&4
2554         else
2555             $chmod a+rx $from
2556         fi
2557         if $test ! -f $run -o ! -f $to -o ! -f $from; then
2558             exit 1
2559         fi
2560         cat >&4 <<EOF
2561 Using '$run' for remote execution,
2562 and '$from' and '$to'
2563 for remote file transfer.
2564 EOF
2565         ;;
2566 *)      run=''
2567         to=:
2568         from=:
2569         usecrosscompile='undef'
2570         targetarch=''
2571         ;;
2572 esac
2573
2574 : see whether [:lower:] and [:upper:] are supported character classes
2575 echo " "
2576 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
2577 ABYZ)
2578         echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
2579         up='[:upper:]'
2580         low='[:lower:]'
2581         ;;
2582 *)      # There is a discontinuity in EBCDIC between 'I' and 'J'
2583         # (0xc9 and 0xd1), therefore that is a nice testing point.
2584         if test "X$up" = X -o "X$low" = X; then
2585             case "`echo IJ | $tr '[I-J]' '[i-j]' 2>/dev/null`" in
2586             ij) up='[A-Z]'
2587                 low='[a-z]'
2588                 ;;
2589             esac
2590         fi
2591         if test "X$up" = X -o "X$low" = X; then
2592             case "`echo IJ | $tr I-J i-j 2>/dev/null`" in
2593             ij) up='A-Z'
2594                 low='a-z'
2595                 ;;
2596             esac
2597         fi
2598         if test "X$up" = X -o "X$low" = X; then
2599             case "`echo IJ | od -x 2>/dev/null`" in
2600             *C9D1*|*c9d1*)
2601                 echo "Hey, this might be EBCDIC." >&4
2602                 if test "X$up" = X -o "X$low" = X; then
2603                     case "`echo IJ | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
2604                     ij) up='[A-IJ-RS-Z]'
2605                         low='[a-ij-rs-z]'
2606                         ;;
2607                     esac
2608                 fi
2609                 if test "X$up" = X -o "X$low" = X; then
2610                     case "`echo IJ | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
2611                     ij) up='A-IJ-RS-Z'
2612                         low='a-ij-rs-z'
2613                         ;;
2614                     esac
2615                 fi
2616                 ;;
2617             esac
2618         fi
2619 esac
2620 case "`echo IJ | $tr \"$up\" \"$low\" 2>/dev/null`" in
2621 ij)
2622     echo "Using $up and $low to convert case." >&4
2623     ;;
2624 *)
2625     echo "I don't know how to translate letters from upper to lower case." >&4
2626     echo "Your tr is not acting any way I know of." >&4
2627     exit 1
2628     ;;
2629 esac
2630 : set up the translation script tr, must be called with ./tr of course
2631 cat >tr <<EOSC
2632 $startsh
2633 case "\$1\$2" in
2634 '[A-Z][a-z]') exec $tr '$up' '$low';;
2635 '[a-z][A-Z]') exec $tr '$low' '$up';;
2636 esac
2637 exec $tr "\$@"
2638 EOSC
2639 chmod +x tr
2640 $eunicefix tr
2641
2642 : Try to determine whether config.sh was made on this system
2643 case "$config_sh" in
2644 '')
2645 myuname=`$uname -a 2>/dev/null`
2646 $test -z "$myuname" && myuname=`hostname 2>/dev/null`
2647 # tr '[A-Z]' '[a-z]' would not work in EBCDIC
2648 # because the A-Z/a-z are not consecutive.
2649 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
2650         ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
2651 newmyuname="$myuname"
2652 dflt=n
2653 case "$knowitall" in
2654 '')
2655         if test -f ../config.sh; then
2656                 if $contains myuname= ../config.sh >/dev/null 2>&1; then
2657                         eval "`grep myuname= ../config.sh`"
2658                 fi
2659                 if test "X$myuname" = "X$newmyuname"; then
2660                         dflt=y
2661                 fi
2662         fi
2663         ;;
2664 *) dflt=y;;
2665 esac
2666
2667 : Get old answers from old config file if Configure was run on the
2668 : same system, otherwise use the hints.
2669 hint=default
2670 cd ..
2671 if test -f config.sh; then
2672         echo " "
2673         rp="I see a config.sh file.  Shall I use it to set the defaults?"
2674         . UU/myread
2675         case "$ans" in
2676         n*|N*) echo "OK, I'll ignore it."
2677                 mv config.sh config.sh.old
2678                 myuname="$newmyuname"
2679                 ;;
2680         *)  echo "Fetching default answers from your old config.sh file..." >&4
2681                 tmp_n="$n"
2682                 tmp_c="$c"
2683                 tmp_sh="$sh"
2684                 . ./config.sh
2685                 cp config.sh UU
2686                 n="$tmp_n"
2687                 c="$tmp_c"
2688                 : Older versions did not always set $sh.  Catch re-use of such
2689                 : an old config.sh.
2690                 case "$sh" in
2691                 '') sh="$tmp_sh" ;;
2692                 esac
2693                 hint=previous
2694                 ;;
2695         esac
2696 fi
2697 . ./UU/checkcc
2698 if test ! -f config.sh; then
2699         $cat <<EOM
2700
2701 First time through, eh?  I have some defaults handy for some systems
2702 that need some extra help getting the Configure answers right:
2703
2704 EOM
2705         (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/   /g' >&4
2706         dflt=''
2707         : Half the following guesses are probably wrong... If you have better
2708         : tests or hints, please send them to perlbug@perl.org
2709         : The metaconfig authors would also appreciate a copy...
2710         $test -f /irix && osname=irix
2711         $test -f /xenix && osname=sco_xenix
2712         $test -f /dynix && osname=dynix
2713         $test -f /dnix && osname=dnix
2714         $test -f /lynx.os && osname=lynxos
2715         $test -f /unicos && osname=unicos && osvers=`$uname -r`
2716         $test -f /unicosmk && osname=unicosmk && osvers=`$uname -r`
2717         $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
2718         $test -f /bin/mips && /bin/mips && osname=mips
2719         $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
2720                 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
2721         $test -d /usr/apollo/bin && osname=apollo
2722         $test -f /etc/saf/_sactab && osname=svr4
2723         $test -d /usr/include/minix && osname=minix
2724         if $test -d /MachTen -o -d /MachTen_Folder; then
2725                 osname=machten
2726                 if $test -x /sbin/version; then
2727                         osvers=`/sbin/version | $awk '{print $2}' |
2728                         $sed -e 's/[A-Za-z]$//'`
2729                 elif $test -x /usr/etc/version; then
2730                         osvers=`/usr/etc/version | $awk '{print $2}' |
2731                         $sed -e 's/[A-Za-z]$//'`
2732                 else
2733                         osvers="$2.$3"
2734                 fi
2735         fi
2736
2737         $test -f /sys/posix.dll &&
2738                 $test -f /usr/bin/what &&
2739                 set X `/usr/bin/what /sys/posix.dll` &&
2740                 $test "$3" = UWIN &&
2741                 osname=uwin &&
2742                 osvers="$5"
2743
2744         if $test -f $uname; then
2745                 set X $myuname
2746                 shift
2747
2748                 case "$5" in
2749                 fps*) osname=fps ;;
2750                 mips*)
2751                         case "$4" in
2752                         umips) osname=umips ;;
2753                         *) osname=mips ;;
2754                         esac;;
2755                 [23]100) osname=mips ;;
2756                 next*) osname=next ;;
2757                 i386*)
2758                         tmp=`/bin/uname -X 2>/dev/null|awk '/3\.2v[45]/{ print $(NF) }'`
2759                         if $test "$tmp" != "" -a "$3" = "3.2" -a -f '/etc/systemid'; then
2760                                 osname='sco'
2761                                 osvers=$tmp
2762                         elif $test -f /etc/kconfig; then
2763                                 osname=isc
2764                                 if test "$lns" = "$ln -s"; then
2765                                         osvers=4
2766                                 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
2767                                         osvers=3
2768                                 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
2769                                         osvers=2
2770                                 fi
2771                         fi
2772                         tmp=''
2773                         ;;
2774                 pc*)
2775                         if test -n "$DJGPP"; then
2776                                 osname=dos
2777                                 osvers=djgpp
2778                         fi
2779                         ;;
2780                 esac
2781
2782                 case "$1" in
2783                 aix) osname=aix
2784                         tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
2785                         case "$tmp" in
2786                         'not found') osvers="$4"."$3" ;;
2787                         '<3240'|'<>3240') osvers=3.2.0 ;;
2788                         '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
2789                         '=3250'|'>3250') osvers=3.2.5 ;;
2790                         *) osvers=$tmp;;
2791                         esac
2792                         ;;
2793                 bsd386) osname=bsd386
2794                         osvers=`$uname -r`
2795                         ;;
2796                 cygwin*) osname=cygwin
2797                         osvers="$3"
2798                         ;;
2799                 *dc.osx) osname=dcosx
2800                         osvers="$3"
2801                         ;;
2802                 dnix) osname=dnix
2803                         osvers="$3"
2804                         ;;
2805                 domainos) osname=apollo
2806                         osvers="$3"
2807                         ;;
2808                 dgux) osname=dgux 
2809                         osvers="$3"
2810                         ;;
2811                 dynixptx*) osname=dynixptx
2812                         osvers=`echo "$4"|sed 's/^v//'`
2813                         ;;
2814                 freebsd) osname=freebsd 
2815                         osvers="$3" ;;
2816                 genix) osname=genix ;;
2817                 hp*) osname=hpux 
2818                         osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
2819                         ;;
2820                 irix*) osname=irix
2821                         case "$3" in
2822                         4*) osvers=4 ;;
2823                         5*) osvers=5 ;;
2824                         *)      osvers="$3" ;;
2825                         esac
2826                         ;;
2827                 linux) osname=linux
2828                         case "$3" in
2829                         *)      osvers="$3" ;;
2830                         esac
2831                         ;;
2832                 MiNT) osname=mint
2833                         ;;
2834                 netbsd*) osname=netbsd
2835                         osvers="$3"
2836                         ;;
2837                 news-os) osvers="$3"
2838                         case "$3" in
2839                         4*) osname=newsos4 ;;
2840                         *) osname=newsos ;;
2841                         esac
2842                         ;;
2843                 next*) osname=next ;;
2844                 nonstop-ux) osname=nonstopux ;;
2845                 POSIX-BC | posix-bc ) osname=posix-bc
2846                         osvers="$3"
2847                         ;;
2848                 powerux | power_ux | powermax_os | powermaxos | \
2849                 powerunix | power_unix) osname=powerux
2850                         osvers="$3"
2851                         ;;
2852                 qnx) osname=qnx
2853                         osvers="$4"
2854                         ;;
2855                 solaris) osname=solaris
2856                         case "$3" in
2857                         5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2858                         *)      osvers="$3" ;;
2859                         esac
2860                         ;;
2861                 sunos) osname=sunos
2862                         case "$3" in
2863                         5*) osname=solaris
2864                                 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2865                         *)      osvers="$3" ;;
2866                         esac
2867                         ;;
2868                 titanos) osname=titanos
2869                         case "$3" in
2870                         1*) osvers=1 ;;
2871                         2*) osvers=2 ;;
2872                         3*) osvers=3 ;;
2873                         4*) osvers=4 ;;
2874                         *)      osvers="$3" ;;
2875                         esac
2876                         ;;
2877                 ultrix) osname=ultrix
2878                         osvers="$3"
2879                         ;;
2880                 osf1|mls+)      case "$5" in
2881                                 alpha)
2882                                         osname=dec_osf
2883                                         osvers=`sizer -v | awk '{print $3}' |  tr '[A-Z]' '[a-z]' | sed 's/^[xvt]//'`
2884                                         case "$osvers" in
2885                                         [1-9].[0-9]*) ;;
2886                                         *) osvers=`echo "$3" | sed 's/^[xvt]//'` ;;
2887                                         esac
2888                                         ;;
2889                         hp*)    osname=hp_osf1  ;;
2890                         mips)   osname=mips_osf1 ;;
2891                         esac
2892                         ;;
2893                 unixware) osname=svr5
2894                         osvers="$4"
2895                         ;;
2896                 uts) osname=uts
2897                         osvers="$3"
2898                         ;;
2899                 $2) case "$osname" in
2900                         *isc*) ;;
2901                         *freebsd*) ;;
2902                         svr*)
2903                                 : svr4.x or possibly later
2904                                 case "svr$3" in 
2905                                 ${osname}*)
2906                                         osname=svr$3
2907                                         osvers=$4
2908                                         ;;
2909                                 esac
2910                                 case "$osname" in
2911                                 svr4.0)
2912                                         : Check for ESIX
2913                                         if test -f /stand/boot ; then
2914                                                 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
2915                                                 if test -n "$INITPROG" -a -f "$INITPROG"; then
2916                         isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
2917                                                         if test -n "$isesix"; then
2918                                                                 osname=esix4
2919                                                         fi
2920                                                 fi
2921                                         fi
2922                                         ;;
2923                                 esac
2924                                 ;;
2925                         *)      if test -f /etc/systemid; then
2926                                         osname=sco
2927                                         set `echo $3 | $sed 's/\./ /g'` $4
2928                                         if $test -f $src/hints/sco_$1_$2_$3.sh; then
2929                                                 osvers=$1.$2.$3
2930                                         elif $test -f $src/hints/sco_$1_$2.sh; then
2931                                                 osvers=$1.$2
2932                                         elif $test -f $src/hints/sco_$1.sh; then
2933                                                 osvers=$1
2934                                         fi
2935                                 else
2936                                         case "$osname" in
2937                                         '') : Still unknown.  Probably a generic Sys V.
2938                                                 osname="sysv"
2939                                                 osvers="$3"
2940                                                 ;;
2941                                         esac
2942                                 fi
2943                                 ;;
2944                         esac
2945                         ;;
2946                 *)      case "$osname" in
2947                         '') : Still unknown.  Probably a generic BSD.
2948                                 osname="$1"
2949                                 osvers="$3"
2950                                 ;;
2951                         esac
2952                         ;;
2953                 esac
2954         else
2955                 if test -f /vmunix -a -f $src/hints/news_os.sh; then
2956                         (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
2957                         if $contains news-os UU/kernel.what >/dev/null 2>&1; then
2958                                 osname=news_os
2959                         fi
2960                         $rm -f UU/kernel.what
2961                 elif test -d c:/.; then
2962                         set X $myuname
2963                         osname=os2
2964                         osvers="$5"
2965                 fi
2966         fi
2967         
2968         case "$targetarch" in
2969         '') ;;
2970         *)  hostarch=$osname
2971             osname=`echo $targetarch|sed 's,^[^-]*-,,'`
2972             osvers=''
2973             ;;
2974         esac
2975
2976         : Now look for a hint file osname_osvers, unless one has been
2977         : specified already.
2978         case "$hintfile" in
2979         ''|' ')
2980                 file=`echo "${osname}_${osvers}" | $sed -e 's%\.%_%g' -e 's%_$%%'`
2981                 : Also try without trailing minor version numbers.
2982                 xfile=`echo $file | $sed -e 's%_[^_]*$%%'`
2983                 xxfile=`echo $xfile | $sed -e 's%_[^_]*$%%'`
2984                 xxxfile=`echo $xxfile | $sed -e 's%_[^_]*$%%'`
2985                 xxxxfile=`echo $xxxfile | $sed -e 's%_[^_]*$%%'`
2986                 case "$file" in
2987                 '') dflt=none ;;
2988                 *)  case "$osvers" in
2989                         '') dflt=$file
2990                                 ;;
2991                         *)  if $test -f $src/hints/$file.sh ; then
2992                                         dflt=$file
2993                                 elif $test -f $src/hints/$xfile.sh ; then
2994                                         dflt=$xfile
2995                                 elif $test -f $src/hints/$xxfile.sh ; then
2996                                         dflt=$xxfile
2997                                 elif $test -f $src/hints/$xxxfile.sh ; then
2998                                         dflt=$xxxfile
2999                                 elif $test -f $src/hints/$xxxxfile.sh ; then
3000                                         dflt=$xxxxfile
3001                                 elif $test -f "$src/hints/${osname}.sh" ; then
3002                                         dflt="${osname}"
3003                                 else
3004                                         dflt=none
3005                                 fi
3006                                 ;;
3007                         esac
3008                         ;;
3009                 esac
3010                 if $test -f Policy.sh ; then
3011                         case "$dflt" in
3012                         *Policy*) ;;
3013                         none) dflt="Policy" ;;
3014                         *) dflt="Policy $dflt" ;;
3015                         esac
3016                 fi
3017                 ;;
3018         *)
3019                 dflt=`echo $hintfile | $sed 's/\.sh$//'`
3020                 ;;
3021         esac
3022
3023         if $test -f Policy.sh ; then
3024                 $cat <<EOM
3025
3026 There's also a Policy hint file available, which should make the
3027 site-specific (policy) questions easier to answer.
3028 EOM
3029
3030         fi
3031
3032         $cat <<EOM
3033
3034 You may give one or more space-separated answers, or "none" if appropriate.
3035 A well-behaved OS will have no hints, so answering "none" or just "Policy"
3036 is a good thing.  DO NOT give a wrong version or a wrong OS.
3037
3038 EOM
3039
3040         rp="Which of these apply, if any?"
3041         . UU/myread
3042         tans=$ans
3043         for file in $tans; do
3044                 if $test X$file = XPolicy -a -f Policy.sh; then
3045                         . Policy.sh
3046                         $cat Policy.sh >> UU/config.sh
3047                 elif $test -f $src/hints/$file.sh; then
3048                         . $src/hints/$file.sh
3049                         $cat $src/hints/$file.sh >> UU/config.sh
3050                 elif $test X"$tans" = X -o X"$tans" = Xnone ; then
3051                         : nothing
3052                 else
3053                         : Give one chance to correct a possible typo.
3054                         echo "$file.sh does not exist"
3055                         dflt=$file
3056                         rp="hint to use instead?"
3057                         . UU/myread
3058                         for file in $ans; do
3059                                 if $test -f "$src/hints/$file.sh"; then
3060                                         . $src/hints/$file.sh
3061                                         $cat $src/hints/$file.sh >> UU/config.sh
3062                                 elif $test X$ans = X -o X$ans = Xnone ; then
3063                                         : nothing
3064                                 else
3065                                         echo "$file.sh does not exist -- ignored."
3066                                 fi
3067                         done
3068                 fi
3069         done
3070
3071         hint=recommended
3072         : Remember our hint file for later.
3073         if $test -f "$src/hints/$file.sh" ; then
3074                 hintfile="$file"
3075         else
3076                 hintfile=''
3077         fi
3078 fi
3079 cd UU
3080 ;;
3081 *)
3082         echo " "
3083         echo "Fetching default answers from $config_sh..." >&4
3084         tmp_n="$n"
3085         tmp_c="$c"
3086         cd ..
3087         cp $config_sh config.sh 2>/dev/null
3088         chmod +w config.sh
3089         . ./config.sh
3090         cd UU
3091         cp ../config.sh .
3092         n="$tmp_n"
3093         c="$tmp_c"
3094         hint=previous
3095         ;;
3096 esac
3097 test "$override" && . ./optdef.sh
3098
3099 : Restore computed paths
3100 for file in $loclist $trylist; do
3101         eval $file="\$_$file"
3102 done
3103
3104 cat << EOM
3105
3106 Configure uses the operating system name and version to set some defaults.
3107 The default value is probably right if the name rings a bell. Otherwise,
3108 since spelling matters for me, either accept the default or answer "none"
3109 to leave it blank.
3110
3111 EOM
3112 case "$osname" in
3113         ''|' ')
3114                 case "$hintfile" in
3115                 ''|' '|none) dflt=none ;;
3116                 *)  dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
3117                 esac
3118                 ;;
3119         *) dflt="$osname" ;;
3120 esac
3121 rp="Operating system name?"
3122 . ./myread
3123 case "$ans" in
3124 none)  osname='' ;;
3125 *) osname=`echo "$ans" | $sed -e 's/[   ][      ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
3126 esac
3127 echo " "
3128 case "$osvers" in
3129         ''|' ')
3130                 case "$hintfile" in
3131                 ''|' '|none) dflt=none ;;
3132                 *)      dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
3133                         dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
3134                         case "$dflt" in
3135                         ''|' ') dflt=none ;;
3136                         esac
3137                         ;;
3138                 esac
3139                 ;;
3140         *) dflt="$osvers" ;;
3141 esac
3142 rp="Operating system version?"
3143 . ./myread
3144 case "$ans" in
3145 none)  osvers='' ;;
3146 *) osvers="$ans" ;;
3147 esac
3148
3149
3150 . ./posthint.sh
3151
3152 : who configured the system
3153 cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
3154 cf_by=`(logname) 2>/dev/null`
3155 case "$cf_by" in
3156 "")
3157         cf_by=`(whoami) 2>/dev/null`
3158         case "$cf_by" in
3159         "") cf_by=unknown ;;
3160         esac ;;
3161 esac
3162
3163 : set up the script used to warn in case of inconsistency
3164 cat <<EOS >whoa
3165 $startsh
3166 EOS
3167 cat <<'EOSC' >>whoa
3168 dflt=y
3169 echo " "
3170 echo "*** WHOA THERE!!! ***" >&4
3171 echo "    The $hint value for \$$var on this machine was \"$was\"!" >&4
3172 rp="    Keep the $hint value?"
3173 . ./myread
3174 case "$ans" in
3175 y) td=$was; tu=$was;;
3176 esac
3177 EOSC
3178
3179 : function used to set $1 to $val
3180 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
3181 case "$val$was" in
3182 $define$undef) . ./whoa; eval "$var=\$td";;
3183 $undef$define) . ./whoa; eval "$var=\$tu";;
3184 *) eval "$var=$val";;
3185 esac'
3186
3187 case "$usethreads" in
3188 $define|true|[yY]*)     dflt='y';;
3189 *) dflt='n';;
3190 esac
3191 cat <<EOM
3192
3193 Perl can be built to take advantage of threads on some systems.
3194 To do so, Configure can be run with -Dusethreads.
3195
3196 Note that threading is a highly experimental feature, and
3197 some known race conditions still remain.  If you choose to try
3198 it, be very sure to not actually deploy it for production
3199 purposes.  README.threads has more details, and is required
3200 reading if you enable threads.
3201
3202 If this doesn't make any sense to you, just accept the default '$dflt'.
3203 EOM
3204 rp='Build a threading Perl?'
3205 . ./myread
3206 case "$ans" in
3207 y|Y)    val="$define" ;;
3208 *)      val="$undef" ;;
3209 esac
3210 set usethreads
3211 eval $setvar
3212
3213 case "$usethreads" in
3214 $define)
3215         $cat <<EOM
3216
3217 As of 5.5.640, Perl has two different internal threading implementations,
3218 the 5.005 version (5005threads) and an interpreter-based version
3219 (ithreads) that has one interpreter per thread.  Both are very 
3220 experimental.  This arrangement exists to help developers work out
3221 which one is better.
3222
3223 If you're a casual user, you probably don't want interpreter-threads
3224 at this time.  There doesn't yet exist a way to create threads from
3225 within Perl in this model, i.e., "use Thread;" will NOT work.
3226 EOM
3227         : Default to ithreads unless overridden on command line or with
3228         : old config.sh
3229         dflt='y'
3230         case "$use5005threads" in
3231                 $define|true|[yY]*) dflt='n';;
3232         esac
3233         case "$useithreads" in
3234                 $undef|false|[nN]*) dflt='n';;
3235         esac
3236         rp='Use interpreter-based ithreads?'
3237         . ./myread
3238         case "$ans" in
3239         y|Y)    val="$define" ;;
3240         *)      val="$undef" ;;
3241         esac
3242         set useithreads
3243         eval $setvar
3244         : Now set use5005threads to the opposite value.
3245         case "$useithreads" in
3246         $define) val="$undef" ;;
3247         *) val="$define" ;;
3248         esac
3249         set use5005threads
3250         eval $setvar
3251         ;;
3252 *)
3253         useithreads="$undef"
3254         use5005threads="$undef"
3255         ;;
3256 esac
3257
3258 case "$useithreads$use5005threads" in
3259 "$define$define")
3260         $cat >&4 <<EOM
3261
3262 You cannot have both the ithreads and the 5.005 threads enabled
3263 at the same time.  Disabling the 5.005 threads since they are
3264 much less stable than the ithreads.
3265
3266 EOM
3267         use5005threads="$undef"
3268         ;;
3269 esac
3270
3271 case "$d_oldpthreads" in
3272 '')     : Configure tests would be welcome here.  For now, assume undef.
3273         val="$undef" ;;
3274 *)      val="$d_oldpthreads" ;;
3275 esac
3276 set d_oldpthreads
3277 eval $setvar
3278
3279
3280 case "$usethreads" in
3281 "$define"|true|[yY]*)
3282 : Look for a hint-file generated 'call-back-unit'.  If the
3283 : user has specified that a threading perl is to be built,
3284 : we may need to set or change some other defaults.
3285         if $test -f usethreads.cbu; then
3286                 echo "Your platform has some specific hints for threaded builds, using them..."
3287                 . ./usethreads.cbu
3288         else
3289                 $cat <<EOM
3290 (Your platform doesn't have any specific hints for threaded builds.
3291  Assuming POSIX threads, then.)
3292 EOM
3293         fi
3294         ;;
3295 esac
3296
3297 cat <<EOM
3298
3299 Perl can be built so that multiple Perl interpreters can coexist
3300 within the same Perl executable.
3301 EOM
3302
3303 case "$useithreads" in
3304 $define)
3305         cat <<EOM
3306 This multiple interpreter support is required for interpreter-based threads.
3307 EOM
3308         val="$define"
3309         ;;
3310 *)      case "$usemultiplicity" in
3311         $define|true|[yY]*)     dflt='y';;
3312         *) dflt='n';;
3313         esac
3314         echo " "
3315         echo "If this doesn't make any sense to you, just accept the default '$dflt'."
3316         rp='Build Perl for multiplicity?'
3317         . ./myread
3318         case "$ans" in
3319         y|Y)    val="$define" ;;
3320         *)      val="$undef" ;;
3321         esac
3322         ;;
3323 esac
3324 set usemultiplicity
3325 eval $setvar
3326
3327
3328 case "$usemorebits" in
3329 "$define"|true|[yY]*)
3330         use64bitint="$define"
3331         uselongdouble="$define"
3332         usemorebits="$define"
3333         ;;
3334 *)      usemorebits="$undef"
3335         ;;
3336 esac
3337
3338 : make some quick guesses about what we are up against
3339 echo " "
3340 $echo $n "Hmm...  $c"
3341 echo exit 1 >bsd
3342 echo exit 1 >usg
3343 echo exit 1 >v7
3344 echo exit 1 >osf1
3345 echo exit 1 >eunice
3346 echo exit 1 >xenix
3347 echo exit 1 >venix
3348 echo exit 1 >os2
3349 d_bsd="$undef"
3350 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
3351 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
3352 then
3353         echo "Looks kind of like an OSF/1 system, but we'll see..."
3354         echo exit 0 >osf1
3355 elif test `echo abc | $tr a-z A-Z` = Abc ; then
3356         xxx=`./loc addbib blurfl $pth`
3357         if $test -f $xxx; then
3358         echo "Looks kind of like a USG system with BSD features, but we'll see..."
3359                 echo exit 0 >bsd
3360                 echo exit 0 >usg
3361         else
3362                 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
3363                         echo "Looks kind of like an extended USG system, but we'll see..."
3364                 else
3365                         echo "Looks kind of like a USG system, but we'll see..."
3366                 fi
3367                 echo exit 0 >usg
3368         fi
3369 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
3370         echo "Looks kind of like a BSD system, but we'll see..."
3371         d_bsd="$define"
3372         echo exit 0 >bsd
3373 else
3374         echo "Looks kind of like a Version 7 system, but we'll see..."
3375         echo exit 0 >v7
3376 fi
3377 case "$eunicefix" in
3378 *unixtovms*)
3379         $cat <<'EOI'
3380 There is, however, a strange, musty smell in the air that reminds me of
3381 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
3382 EOI
3383         echo exit 0 >eunice
3384         d_eunice="$define"
3385 : it so happens the Eunice I know will not run shell scripts in Unix format
3386         ;;
3387 *)
3388         echo " "
3389         echo "Congratulations.  You aren't running Eunice."
3390         d_eunice="$undef"
3391         ;;
3392 esac
3393 : Detect OS2.  The p_ variable is set above in the Head.U unit.
3394 : Note that this also -- wrongly -- detects e.g. dos-djgpp, which also uses
3395 : semicolon as a patch separator
3396 case "$p_" in
3397 :) ;;
3398 *)
3399         $cat <<'EOI'
3400 I have the feeling something is not exactly right, however...don't tell me...
3401 lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
3402 (Or you may be running DOS with DJGPP.)
3403 EOI
3404         echo exit 0 >os2
3405         ;;
3406 esac
3407 if test -f /xenix; then
3408         echo "Actually, this looks more like a XENIX system..."
3409         echo exit 0 >xenix
3410         d_xenix="$define"
3411 else
3412         echo " "
3413         echo "It's not Xenix..."
3414         d_xenix="$undef"
3415 fi
3416 chmod +x xenix
3417 $eunicefix xenix
3418 if test -f /venix; then
3419         echo "Actually, this looks more like a VENIX system..."
3420         echo exit 0 >venix
3421 else
3422         echo " "
3423         if ./xenix; then
3424                 : null
3425         else
3426                 echo "Nor is it Venix..."
3427         fi
3428 fi
3429 chmod +x bsd usg v7 osf1 eunice xenix venix os2
3430 $eunicefix bsd usg v7 osf1 eunice xenix venix os2
3431 $rm -f foo
3432
3433 case "$cc" in
3434 '') dflt=cc;;
3435 *) dflt="$cc";;
3436 esac
3437 rp="Use which C compiler?"
3438 . ./myread
3439 cc="$ans"
3440 : Look for a hint-file generated 'call-back-unit'.  Now that the
3441 : user has specified the compiler, we may need to set or change some
3442 : other defaults.
3443 if $test -f cc.cbu; then
3444     . ./cc.cbu
3445 fi
3446 . ./checkcc
3447
3448 echo " "
3449 echo "Checking for GNU cc in disguise and/or its version number..." >&4
3450 $cat >try.c <<EOM
3451 #include <stdio.h>
3452 int main() {
3453 #ifdef __GNUC__
3454 #ifdef __VERSION__
3455         printf("%s\n", __VERSION__);
3456 #else
3457         printf("%s\n", "1");
3458 #endif
3459 #endif
3460         exit(0);
3461 }
3462 EOM
3463 if $cc -o try $ccflags $ldflags try.c; then
3464         gccversion=`$run ./try`
3465         case "$gccversion" in
3466         '') echo "You are not using GNU cc." ;;
3467         *)  echo "You are using GNU cc $gccversion."
3468             ccname=gcc  
3469             ;;
3470         esac
3471 else
3472         echo " "
3473         echo "*** WHOA THERE!!! ***" >&4
3474         echo "    Your C compiler \"$cc\" doesn't seem to be working!" >&4
3475         case "$knowitall" in
3476         '')
3477         echo "    You'd better start hunting for one and let me know about it." >&4
3478                 exit 1
3479                 ;;
3480         esac
3481 fi
3482 $rm -f try try.*
3483 case "$gccversion" in
3484 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3485 esac
3486 case "$gccversion" in
3487 '') gccosandvers='' ;;
3488 *) gccshortvers=`echo "$gccversion"|sed 's/ .*//'`
3489    gccosandvers=`$cc -v 2>&1|grep '/specs$'|sed "s!.*/[^-/]*-[^-/]*-\([^-/]*\)/$gccshortvers/specs!\1!"`
3490    gccshortvers=''
3491    case "$gccosandvers" in
3492    $osname) gccosandvers='' ;; # linux gccs seem to have no linux osvers, grr
3493    $osname$osvers) ;; # looking good
3494    $osname*) cat <<EOM >&4
3495
3496 *** WHOA THERE!!! ***
3497
3498     Your gcc has not been compiled for the exact release of
3499     your operating system ($gccosandvers versus $osname$osvers).
3500
3501     In general it is a good idea to keep gcc synchronized with
3502     the operating system because otherwise serious problems
3503     may ensue when trying to compile software, like Perl.
3504
3505     I'm trying to be optimistic here, though, and will continue.
3506     If later during the configuration and build icky compilation
3507     problems appear (headerfile conflicts being the most common
3508     manifestation), I suggest reinstalling the gcc to match
3509     your operating system release.
3510
3511 EOM
3512       ;;
3513    *) gccosandvers='' ;; # failed to parse, better be silent
3514    esac
3515    ;;
3516 esac
3517 case "$ccname" in
3518 '') ccname="$cc" ;;
3519 esac
3520
3521 case "$gccversion" in
3522 '') ;;
3523 *)  case "$ccflags" in
3524     *-Wall*) ;;
3525     *) ccflags="$ccflags -Wall" ;;
3526     esac
3527     ;;
3528 esac
3529
3530 : decide how portable to be.  Allow command line overrides.
3531 case "$d_portable" in
3532 "$undef") ;;
3533 *)      d_portable="$define" ;;
3534 esac
3535
3536 : set up shell script to do ~ expansion
3537 cat >filexp <<EOSS
3538 $startsh
3539 : expand filename
3540 case "\$1" in
3541  ~/*|~)
3542         echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
3543         ;;
3544  ~*)
3545         if $test -f /bin/csh; then
3546                 /bin/csh -f -c "glob \$1"
3547                 failed=\$?
3548                 echo ""
3549                 exit \$failed
3550         else
3551                 name=\`$expr x\$1 : '..\([^/]*\)'\`
3552                 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
3553                 if $test ! -d "\$dir"; then
3554                         me=\`basename \$0\`
3555                         echo "\$me: can't locate home directory for: \$name" >&2
3556                         exit 1
3557                 fi
3558                 case "\$1" in
3559                 */*)
3560                         echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
3561                         ;;
3562                 *)
3563                         echo \$dir
3564                         ;;
3565                 esac
3566         fi
3567         ;;
3568 *)
3569         echo \$1
3570         ;;
3571 esac
3572 EOSS
3573 chmod +x filexp
3574 $eunicefix filexp
3575
3576 : now set up to get a file name
3577 cat <<EOS >getfile
3578 $startsh
3579 EOS
3580 cat <<'EOSC' >>getfile
3581 tilde=''
3582 fullpath=''
3583 already=''
3584 skip=''
3585 none_ok=''
3586 exp_file=''
3587 nopath_ok=''
3588 orig_rp="$rp"
3589 orig_dflt="$dflt"
3590 case "$gfpth" in
3591 '') gfpth='.' ;;
3592 esac
3593
3594 case "$fn" in
3595 *\(*)
3596         expr $fn : '.*(\(.*\)).*' | $tr ',' $trnl >getfile.ok
3597         fn=`echo $fn | sed 's/(.*)//'`
3598         ;;
3599 esac
3600
3601 case "$fn" in
3602 *:*)
3603         loc_file=`expr $fn : '.*:\(.*\)'`
3604         fn=`expr $fn : '\(.*\):.*'`
3605         ;;
3606 esac
3607
3608 case "$fn" in
3609 *~*) tilde=true;;
3610 esac
3611 case "$fn" in
3612 */*) fullpath=true;;
3613 esac
3614 case "$fn" in
3615 *+*) skip=true;;
3616 esac
3617 case "$fn" in
3618 *n*) none_ok=true;;
3619 esac
3620 case "$fn" in
3621 *e*) exp_file=true;;
3622 esac
3623 case "$fn" in
3624 *p*) nopath_ok=true;;
3625 esac
3626
3627 case "$fn" in
3628 *f*) type='File';;
3629 *d*) type='Directory';;
3630 *l*) type='Locate';;
3631 esac
3632
3633 what="$type"
3634 case "$what" in
3635 Locate) what='File';;
3636 esac
3637
3638 case "$exp_file" in
3639 '')
3640         case "$d_portable" in
3641         "$define") ;;
3642         *) exp_file=true;;
3643         esac
3644         ;;
3645 esac
3646
3647 cd ..
3648 while test "$type"; do
3649         redo=''
3650         rp="$orig_rp"
3651         dflt="$orig_dflt"
3652         case "$tilde" in
3653         true) rp="$rp (~name ok)";;
3654         esac
3655         . UU/myread
3656         if test -f UU/getfile.ok && \
3657                 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
3658         then
3659                 value="$ans"
3660                 ansexp="$ans"
3661                 break
3662         fi
3663         case "$ans" in
3664         none)
3665                 value=''
3666                 ansexp=''
3667                 case "$none_ok" in
3668                 true) type='';;
3669                 esac
3670                 ;;
3671         *)
3672                 case "$tilde" in
3673                 '') value="$ans"
3674                         ansexp="$ans";;
3675                 *)
3676                         value=`UU/filexp $ans`
3677                         case $? in
3678                         0)
3679                                 if test "$ans" != "$value"; then
3680                                         echo "(That expands to $value on this system.)"
3681                                 fi
3682                                 ;;
3683                         *) value="$ans";;
3684                         esac
3685                         ansexp="$value"
3686                         case "$exp_file" in
3687                         '') value="$ans";;
3688                         esac
3689                         ;;
3690                 esac
3691                 case "$fullpath" in
3692                 true)
3693                         case "$ansexp" in
3694                         /*) value="$ansexp" ;;
3695                         [a-zA-Z]:/*) value="$ansexp" ;;
3696                         *)
3697                                 redo=true
3698                                 case "$already" in
3699                                 true)
3700                                 echo "I shall only accept a full path name, as in /bin/ls." >&4
3701                                 echo "Use a ! shell escape if you wish to check pathnames." >&4
3702                                         ;;
3703                                 *)
3704                                 echo "Please give a full path name, starting with slash." >&4
3705                                         case "$tilde" in
3706                                         true)
3707                                 echo "Note that using ~name is ok provided it expands well." >&4
3708                                                 already=true
3709                                                 ;;
3710                                         esac
3711                                 esac
3712                                 ;;
3713                         esac
3714                         ;;
3715                 esac
3716                 case "$redo" in
3717                 '')
3718                         case "$type" in
3719                         File)
3720                                 for fp in $gfpth; do
3721                                         if test "X$fp" = X.; then
3722                                             pf="$ansexp"
3723                                         else    
3724                                             pf="$fp/$ansexp"
3725                                         fi
3726                                         if test -f "$pf"; then
3727                                                 type=''
3728                                         elif test -r "$pf" || (test -h "$pf") >/dev/null 2>&1
3729                                         then
3730                                                 echo "($value is not a plain file, but that's ok.)"
3731                                                 type=''
3732                                         fi
3733                                         if test X"$type" = X; then
3734                                             value="$pf"
3735                                             break
3736                                         fi
3737                                 done
3738                                 ;;
3739                         Directory)
3740                                 for fp in $gfpth; do
3741                                         if test "X$fp" = X.; then
3742                                             dir="$ans"
3743                                             direxp="$ansexp"
3744                                         else    
3745                                             dir="$fp/$ansexp"
3746                                             direxp="$fp/$ansexp"
3747                                         fi
3748                                         if test -d "$direxp"; then
3749                                                 type=''
3750                                                 value="$dir"
3751                                                 break
3752                                         fi
3753                                 done
3754                                 ;;
3755                         Locate)
3756                                 if test -d "$ansexp"; then
3757                                         echo "(Looking for $loc_file in directory $value.)"
3758                                         value="$value/$loc_file"
3759                                         ansexp="$ansexp/$loc_file"
3760                                 fi
3761                                 if test -f "$ansexp"; then
3762                                         type=''
3763                                 fi
3764                                 case "$nopath_ok" in
3765                                 true)   case "$value" in
3766                                         */*) ;;
3767                                         *)      echo "Assuming $value will be in people's path."
3768                                                 type=''
3769                                                 ;;
3770                                         esac
3771                                         ;;
3772                                 esac
3773                                 ;;
3774                         esac
3775
3776                         case "$skip" in
3777                         true) type='';
3778                         esac
3779
3780                         case "$type" in
3781                         '') ;;
3782                         *)
3783                                 if test "$fastread" = yes; then
3784                                         dflt=y
3785                                 else
3786                                         dflt=n
3787                                 fi
3788                                 rp="$what $value doesn't exist.  Use that name anyway?"
3789                                 . UU/myread
3790                                 dflt=''
3791                                 case "$ans" in
3792                                 y*) type='';;
3793                                 *) echo " ";;
3794                                 esac
3795                                 ;;
3796                         esac
3797                         ;;
3798                 esac
3799                 ;;
3800         esac
3801 done
3802 cd UU
3803 ans="$value"
3804 rp="$orig_rp"
3805 dflt="$orig_dflt"
3806 rm -f getfile.ok
3807 test "X$gfpthkeep" != Xy && gfpth=""
3808 EOSC
3809
3810 : What should the include directory be ?
3811 echo " "
3812 $echo $n "Hmm...  $c"
3813 dflt='/usr/include'
3814 incpath=''
3815 mips_type=''
3816 if $test -f /bin/mips && /bin/mips; then
3817         echo "Looks like a MIPS system..."
3818         $cat >usr.c <<'EOCP'
3819 #ifdef SYSTYPE_BSD43
3820 /bsd43
3821 #endif
3822 EOCP
3823         if cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
3824                 dflt='/bsd43/usr/include'
3825                 incpath='/bsd43'
3826                 mips_type='BSD 4.3'
3827         else
3828                 mips_type='System V'
3829         fi
3830         $rm -f usr.c usr.out
3831         echo "and you're compiling with the $mips_type compiler and libraries."
3832         xxx_prompt=y
3833         echo "exit 0" >mips
3834 else
3835         echo "Doesn't look like a MIPS system."
3836         xxx_prompt=n
3837         echo "exit 1" >mips
3838 fi
3839 chmod +x mips
3840 $eunicefix mips
3841 case "$usrinc" in
3842 '') ;;
3843 *) dflt="$usrinc";;
3844 esac
3845 case "$xxx_prompt" in
3846 y)      fn=d/
3847         echo " "
3848         rp='Where are the include files you want to use?'
3849         . ./getfile
3850         usrinc="$ans"
3851         ;;
3852 *)      usrinc="$dflt"
3853         ;;
3854 esac
3855
3856 : see how we invoke the C preprocessor
3857 echo " "
3858 echo "Now, how can we feed standard input to your C preprocessor..." >&4
3859 cat <<'EOT' >testcpp.c
3860 #define ABC abc
3861 #define XYZ xyz
3862 ABC.XYZ
3863 EOT
3864 cd ..
3865 if test ! -f cppstdin; then
3866         if test "X$osname" = "Xaix" -a "X$gccversion" = X; then
3867                 # AIX cc -E doesn't show the absolute headerfile
3868                 # locations but we'll cheat by using the -M flag.
3869                 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
3870         else
3871                 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
3872         fi
3873 else
3874         echo "Keeping your $hint cppstdin wrapper."
3875 fi
3876 chmod 755 cppstdin
3877 wrapper=`pwd`/cppstdin
3878 ok='false'
3879 cd UU
3880
3881 if $test "X$cppstdin" != "X" && \
3882         $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
3883         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3884 then
3885         echo "You used to use $cppstdin $cppminus so we'll use that again."
3886         case "$cpprun" in
3887         '') echo "But let's see if we can live without a wrapper..." ;;
3888         *)
3889                 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
3890                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3891                 then
3892                         echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
3893                         ok='true'
3894                 else
3895                         echo "(However, $cpprun $cpplast does not work, let's see...)"
3896                 fi
3897                 ;;
3898         esac
3899 else
3900         case "$cppstdin" in
3901         '') ;;
3902         *)
3903                 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
3904                 ;;
3905         esac
3906 fi
3907
3908 if $ok; then
3909         : nothing
3910 elif echo 'Maybe "'"$cc"' -E" will work...'; \
3911         $cc -E <testcpp.c >testcpp.out 2>&1; \
3912         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3913         echo "Yup, it does."
3914         x_cpp="$cc -E"
3915         x_minus='';
3916 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
3917         $cc -E - <testcpp.c >testcpp.out 2>&1; \
3918         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3919         echo "Yup, it does."
3920         x_cpp="$cc -E"
3921         x_minus='-';
3922 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
3923         $cc -P <testcpp.c >testcpp.out 2>&1; \
3924         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3925         echo "Yipee, that works!"
3926         x_cpp="$cc -P"
3927         x_minus='';
3928 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
3929         $cc -P - <testcpp.c >testcpp.out 2>&1; \
3930         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3931         echo "At long last!"
3932         x_cpp="$cc -P"
3933         x_minus='-';
3934 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
3935         $cpp <testcpp.c >testcpp.out 2>&1; \
3936         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3937         echo "It works!"
3938         x_cpp="$cpp"
3939         x_minus='';
3940 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
3941         $cpp - <testcpp.c >testcpp.out 2>&1; \
3942         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3943         echo "Hooray, it works!  I was beginning to wonder."
3944         x_cpp="$cpp"
3945         x_minus='-';
3946 elif echo 'Uh-uh.  Time to get fancy.  Trying a wrapper...'; \
3947         $wrapper <testcpp.c >testcpp.out 2>&1; \
3948         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3949         x_cpp="$wrapper"
3950         x_minus=''
3951         echo "Eureka!"
3952 else
3953         dflt=''
3954         rp="No dice.  I can't find a C preprocessor.  Name one:"
3955         . ./myread
3956         x_cpp="$ans"
3957         x_minus=''
3958         $x_cpp <testcpp.c >testcpp.out 2>&1
3959         if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3960                 echo "OK, that will do." >&4
3961         else
3962 echo "Sorry, I can't get that to work.  Go find one and rerun Configure." >&4
3963                 exit 1
3964         fi
3965 fi
3966
3967 case "$ok" in
3968 false)
3969         cppstdin="$x_cpp"
3970         cppminus="$x_minus"
3971         cpprun="$x_cpp"
3972         cpplast="$x_minus"
3973         set X $x_cpp
3974         shift
3975         case "$1" in
3976         "$cpp")
3977                 echo "Perhaps can we force $cc -E using a wrapper..."
3978                 if $wrapper <testcpp.c >testcpp.out 2>&1; \
3979                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3980                 then
3981                         echo "Yup, we can."
3982                         cppstdin="$wrapper"
3983                         cppminus='';
3984                 else
3985                         echo "Nope, we'll have to live without it..."
3986                 fi
3987                 ;;
3988         esac
3989         case "$cpprun" in
3990         "$wrapper")
3991                 cpprun=''
3992                 cpplast=''
3993                 ;;
3994         esac
3995         ;;
3996 esac
3997
3998 case "$cppstdin" in
3999 "$wrapper"|'cppstdin') ;;
4000 *) $rm -f $wrapper;;
4001 esac
4002 $rm -f testcpp.c testcpp.out
4003
4004 : Set private lib path
4005 case "$plibpth" in
4006 '') if ./mips; then
4007                 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
4008         fi;;
4009 esac
4010 case "$libpth" in
4011 ' ') dlist='';;
4012 '') dlist="$loclibpth $plibpth $glibpth";;
4013 *) dlist="$libpth";;
4014 esac
4015
4016 : Now check and see which directories actually exist, avoiding duplicates
4017 libpth=''
4018 for xxx in $dlist
4019 do
4020     if $test -d $xxx; then
4021                 case " $libpth " in
4022                 *" $xxx "*) ;;
4023                 *) libpth="$libpth $xxx";;
4024                 esac
4025     fi
4026 done
4027 $cat <<'EOM'
4028
4029 Some systems have incompatible or broken versions of libraries.  Among
4030 the directories listed in the question below, please remove any you
4031 know not to be holding relevant libraries, and add any that are needed.
4032 Say "none" for none.
4033
4034 EOM
4035 case "$libpth" in
4036 '') dflt='none';;
4037 *)
4038         set X $libpth
4039         shift
4040         dflt=${1+"$@"}
4041         ;;
4042 esac
4043 rp="Directories to use for library searches?"
4044 . ./myread
4045 case "$ans" in
4046 none) libpth=' ';;
4047 *) libpth="$ans";;
4048 esac
4049
4050 : compute shared library extension
4051 case "$so" in
4052 '')
4053         if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
4054                 dflt='sl'
4055         else
4056                 dflt='so'
4057         fi
4058         ;;
4059 *) dflt="$so";;
4060 esac
4061 $cat <<EOM
4062
4063 On some systems, shared libraries may be available.  Answer 'none' if
4064 you want to suppress searching of shared libraries for the remainder
4065 of this configuration.
4066
4067 EOM
4068 rp='What is the file extension used for shared libraries?'
4069 . ./myread
4070 so="$ans"
4071
4072 : Define several unixisms.
4073 : Hints files or command line option can be used to override them.
4074 : The convoluted testing is in case hints files set either the old
4075 : or the new name.
4076 case "$_exe" in
4077 '')     case "$exe_ext" in
4078     '') ;;
4079         *)      _exe="$exe_ext" ;;
4080         esac
4081         ;;
4082 esac
4083 case "$_a" in
4084 '')     case "$lib_ext" in
4085     '') _a='.a';;
4086         *)      _a="$lib_ext" ;;
4087         esac
4088         ;;
4089 esac
4090 case "$_o" in
4091 '') case "$obj_ext" in
4092         '')     _o='.o';;
4093         *)      _o="$obj_ext";;
4094         esac
4095         ;;
4096 esac
4097 case "$p_" in
4098 '') case "$path_sep" in
4099         '')     p_=':';;
4100         *)      p_="$path_sep";;
4101         esac
4102         ;;
4103 esac
4104 exe_ext=$_exe
4105 lib_ext=$_a
4106 obj_ext=$_o
4107 path_sep=$p_
4108
4109 : Which makefile gets called first.  This is used by make depend.
4110 case "$firstmakefile" in
4111 '') firstmakefile='makefile';;
4112 esac
4113
4114 case "$usesocks" in
4115 $define|true|[yY]*)     dflt='y';;
4116 *) dflt='n';;
4117 esac
4118 cat <<EOM
4119
4120 Perl can be built to use the SOCKS proxy protocol library.  To do so,
4121 Configure must be run with -Dusesocks.  If you use SOCKS you also need
4122 to use the PerlIO abstraction layer, this will be implicitly selected.
4123
4124 If this doesn't make any sense to you, just accept the default '$dflt'.
4125 EOM
4126 rp='Build Perl for SOCKS?'
4127 . ./myread
4128 case "$ans" in
4129 y|Y)    val="$define" ;;     
4130 *)      val="$undef" ;;
4131 esac
4132 set usesocks
4133 eval $setvar
4134
4135 case "$usesocks" in
4136 $define|true|[yY]*) useperlio="$define";;
4137 esac
4138
4139 : Looking for optional libraries
4140 echo " "
4141 echo "Checking for optional libraries..." >&4
4142 case "$libs" in
4143 ' '|'') dflt='';;
4144 *) dflt="$libs";;
4145 esac
4146 case "$libswanted" in
4147 '') libswanted='c_s';;
4148 esac
4149 case "$usesocks" in
4150 "$define") libswanted="$libswanted socks5 socks5_sh" ;;
4151 esac
4152 libsfound=''
4153 libsfiles=''
4154 libsdirs=''
4155 libspath=''
4156 for thisdir in $libpth $xlibpth; do
4157   test -d $thisdir && libspath="$libspath $thisdir"
4158 done
4159 for thislib in $libswanted; do
4160         for thisdir in $libspath; do
4161             xxx=''
4162             if $test ! -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
4163                 xxx=`ls $thisdir/lib$thislib.$so.[0-9] 2>/dev/null|tail -1`
4164                 $test -f "$xxx" && eval $libscheck
4165                 $test -f "$xxx" && libstyle=shared
4166             fi
4167             if test ! -f "$xxx"; then
4168                 xxx=$thisdir/lib$thislib.$so
4169                 $test -f "$xxx" && eval $libscheck
4170                 $test -f "$xxx" && libstyle=shared
4171             fi  
4172             if test ! -f "$xxx"; then
4173                 xxx=$thisdir/lib$thislib$_a
4174                 $test -f "$xxx" && eval $libscheck
4175                 $test -f "$xxx" && libstyle=static
4176             fi
4177             if test ! -f "$xxx"; then
4178                 xxx=$thisdir/$thislib$_a
4179                 $test -f "$xxx" && eval $libscheck
4180                 $test -f "$xxx" && libstyle=static
4181             fi
4182             if test ! -f "$xxx"; then
4183                 xxx=$thisdir/lib${thislib}_s$_a
4184                 $test -f "$xxx" && eval $libscheck
4185                 $test -f "$xxx" && libstyle=static
4186                 $test -f "$xxx" && thislib=${thislib}_s
4187             fi
4188             if test ! -f "$xxx"; then
4189                 xxx=$thisdir/Slib$thislib$_a
4190                 $test -f "$xxx" && eval $libscheck
4191                 $test -f "$xxx" && libstyle=static
4192             fi
4193             if $test -f "$xxx"; then
4194                 case "$libstyle" in
4195                 shared) echo "Found -l$thislib (shared)." ;;
4196                 static) echo "Found -l$thislib." ;;
4197                 *)      echo "Found -l$thislib ($libstyle)." ;;
4198                 esac
4199                 case " $dflt " in
4200                 *"-l$thislib "*);;
4201                 *) dflt="$dflt -l$thislib"
4202                    libsfound="$libsfound $xxx"
4203                    yyy=`basename $xxx`
4204                    libsfiles="$libsfiles $yyy"
4205                    yyy=`echo $xxx|$sed -e "s%/$yyy\\$%%"`
4206                    case " $libsdirs " in
4207                    *" $yyy "*) ;;
4208                    *) libsdirs="$libsdirs $yyy" ;;
4209                    esac
4210                    ;;
4211                 esac
4212                 break
4213             fi  
4214         done
4215         if $test ! -f "$xxx"; then
4216             echo "No -l$thislib."
4217         fi
4218 done
4219 set X $dflt
4220 shift
4221 dflt="$*"
4222 case "$libs" in
4223 '') dflt="$dflt";;
4224 *) dflt="$libs";;
4225 esac
4226 case "$dflt" in
4227 ' '|'') dflt='none';;
4228 esac
4229
4230 $cat <<EOM
4231
4232 In order to compile $package on your machine, a number of libraries
4233 are usually needed.  Include any other special libraries here as well.
4234 Say "none" for none.  The default list is almost always right.
4235 EOM
4236
4237 echo " "
4238 rp="What libraries to use?"
4239 . ./myread
4240 case "$ans" in
4241 none) libs=' ';;
4242 *) libs="$ans";;
4243 esac
4244
4245 : determine optimization, if desired, or use for debug flag also
4246 case "$optimize" in
4247 ' '|$undef) dflt='none';;
4248 '') dflt='-O';;
4249 *) dflt="$optimize";;
4250 esac
4251 $cat <<EOH
4252
4253 By default, $package compiles with the -O flag to use the optimizer.
4254 Alternately, you might want to use the symbolic debugger, which uses
4255 the -g flag (on traditional Unix systems).  Either flag can be
4256 specified here.  To use neither flag, specify the word "none".
4257
4258 EOH
4259 rp="What optimizer/debugger flag should be used?"
4260 . ./myread
4261 optimize="$ans"
4262 case "$optimize" in
4263 'none') optimize=" ";;
4264 esac
4265
4266 dflt=''
4267 : We will not override a previous value, but we might want to
4268 : augment a hint file
4269 case "$hint" in
4270 default|recommended)
4271         case "$gccversion" in
4272         1*) dflt='-fpcc-struct-return' ;;
4273         esac
4274         case "$optimize" in
4275         *-g*) dflt="$dflt -DDEBUGGING";;
4276         esac
4277         case "$gccversion" in
4278         2*) if test -d /etc/conf/kconfig.d &&
4279                         $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
4280                 then
4281                         dflt="$dflt -posix"
4282                 fi
4283                 ;;
4284         esac
4285         case "$gccversion" in
4286         1*) ;;
4287         2.[0-8]*) ;;
4288         ?*)     echo " "
4289                 echo "Checking if your compiler accepts -fno-strict-aliasing" 2>&1
4290                 echo 'int main(void) { return 0; }' > gcctest.c
4291                 if $cc -O2 -fno-strict-aliasing -o gcctest gcctest.c; then
4292                         echo "Yes, it does." 2>&1
4293                         case "$ccflags" in
4294                         *strict-aliasing*) 
4295                                 echo "Leaving current flags $ccflags alone." 2>&1
4296                                 ;;
4297                         *) dflt="$dflt -fno-strict-aliasing" ;;
4298                         esac
4299                 else
4300                         echo "Nope, it doesn't, but that's ok." 2>&1
4301                 fi
4302                 ;;
4303         esac
4304         ;;
4305 esac
4306
4307 case "$mips_type" in
4308 *BSD*|'') inclwanted="$locincpth $usrinc";;
4309 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
4310 esac
4311 for thisincl in $inclwanted; do
4312         if $test -d $thisincl; then
4313                 if $test x$thisincl != x$usrinc; then
4314                         case "$dflt" in
4315                         *" -I$thisincl "*);;
4316                         *) dflt="$dflt -I$thisincl ";;
4317                         esac
4318                 fi
4319         fi
4320 done
4321
4322 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
4323         xxx=true;
4324 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
4325         xxx=true;
4326 else
4327         xxx=false;
4328 fi;
4329 if $xxx; then
4330         case "$dflt" in
4331         *$2*);;
4332         *) dflt="$dflt -D$2";;
4333         esac;
4334 fi'
4335
4336 set signal.h LANGUAGE_C; eval $inctest
4337
4338 case "$usesocks" in
4339 $define)
4340         ccflags="$ccflags -DSOCKS"
4341         ;;
4342 esac
4343
4344 case "$hint" in
4345 default|recommended) dflt="$ccflags $dflt" ;;
4346 *) dflt="$ccflags";;
4347 esac
4348
4349 case "$dflt" in
4350 ''|' ') dflt=none;;
4351 esac
4352
4353 $cat <<EOH
4354
4355 Your C compiler may want other flags.  For this question you should include
4356 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
4357 but you should NOT include libraries or ld flags like -lwhatever.  If you
4358 want $package to honor its debug switch, you should include -DDEBUGGING here.
4359 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
4360
4361 To use no flags, specify the word "none".
4362
4363 EOH
4364 set X $dflt
4365 shift
4366 dflt=${1+"$@"}
4367 rp="Any additional cc flags?"
4368 . ./myread
4369 case "$ans" in
4370 none) ccflags='';;
4371 *) ccflags="$ans";;
4372 esac
4373
4374 : the following weeds options from ccflags that are of no interest to cpp
4375 case "$cppflags" in
4376 '') cppflags="$ccflags" ;;
4377 *)  cppflags="$cppflags $ccflags" ;;
4378 esac
4379 case "$gccversion" in
4380 1*) cppflags="$cppflags -D__GNUC__"
4381 esac
4382 case "$mips_type" in
4383 '');;
4384 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
4385 esac
4386 case "$cppflags" in
4387 '');;
4388 *)
4389         echo " "
4390         echo "Let me guess what the preprocessor flags are..." >&4
4391         set X $cppflags
4392         shift
4393         cppflags=''
4394         $cat >cpp.c <<'EOM'
4395 #define BLURFL foo
4396
4397 BLURFL xx LFRULB
4398 EOM
4399         previous=''
4400         for flag in $*
4401         do
4402                 case "$flag" in
4403                 -*) ftry="$flag";;
4404                 *) ftry="$previous $flag";;
4405                 esac
4406                 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
4407                         >cpp1.out 2>/dev/null && \
4408                         $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
4409                         >cpp2.out 2>/dev/null && \
4410                         $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
4411                         $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
4412                 then
4413                         cppflags="$cppflags $ftry"
4414                         previous=''
4415                 else
4416                         previous="$flag"
4417                 fi
4418         done
4419         set X $cppflags
4420         shift
4421         cppflags=${1+"$@"}
4422         case "$cppflags" in
4423         *-*)  echo "They appear to be: $cppflags";;
4424         esac
4425         $rm -f cpp.c cpp?.out
4426         ;;
4427 esac
4428
4429 : flags used in final linking phase
4430 case "$ldflags" in
4431 '') if ./venix; then
4432                 dflt='-i -z'
4433         else
4434                 dflt=''
4435         fi
4436         case "$ccflags" in
4437         *-posix*) dflt="$dflt -posix" ;;
4438         esac
4439         ;;
4440 *) dflt="$ldflags";;
4441 esac
4442
4443 : Try to guess additional flags to pick up local libraries.
4444 for thislibdir in $libpth; do
4445         case " $loclibpth " in
4446         *" $thislibdir "*)
4447                 case "$dflt " in 
4448                 *"-L$thislibdir "*) ;;
4449                 *)  dflt="$dflt -L$thislibdir" ;;
4450                 esac
4451                 ;;
4452         esac
4453 done
4454
4455 case "$dflt" in
4456 '') dflt='none' ;;
4457 esac
4458
4459 $cat <<EOH
4460
4461 Your C linker may need flags.  For this question you should
4462 include -L/whatever and any other flags used by the C linker, but you
4463 should NOT include libraries like -lwhatever.
4464
4465 Make sure you include the appropriate -L/path flags if your C linker
4466 does not normally search all of the directories you specified above,
4467 namely
4468         $libpth
4469 To use no flags, specify the word "none".
4470
4471 EOH
4472
4473 rp="Any additional ld flags (NOT including libraries)?"
4474 . ./myread
4475 case "$ans" in
4476 none) ldflags='';;
4477 *) ldflags="$ans";;
4478 esac
4479 rmlist="$rmlist pdp11"
4480
4481 : coherency check
4482 echo " "
4483 echo "Checking your choice of C compiler and flags for coherency..." >&4
4484 $cat > try.c <<'EOF'
4485 #include <stdio.h>
4486 int main() { printf("Ok\n"); exit(0); }
4487 EOF
4488 set X $cc -o try $optimize $ccflags $ldflags try.c $libs
4489 shift
4490 $cat >try.msg <<'EOM'
4491 I've tried to compile and run the following simple program:
4492
4493 EOM
4494 $cat try.c >> try.msg
4495
4496 $cat >> try.msg <<EOM
4497
4498 I used the command:
4499
4500         $*
4501         $run ./try
4502
4503 and I got the following output:
4504
4505 EOM
4506 dflt=y
4507 if $sh -c "$cc -o try $optimize $ccflags $ldflags try.c $libs" >>try.msg 2>&1; then
4508         if $sh -c "$run ./try" >>try.msg 2>&1; then
4509                 xxx=`$run ./try`
4510                 case "$xxx" in
4511                 "Ok") dflt=n ;;
4512                 *)      echo 'The program compiled OK, but produced no output.' >> try.msg
4513                         case " $libs " in
4514                         *" -lsfio "*)
4515                                 cat >> try.msg <<'EOQS'
4516 If $libs contains -lsfio, and sfio is mis-configured, then it
4517 sometimes (apparently) runs and exits with a 0 status, but with no
4518 output!  It may have to do with sfio's use of _exit vs. exit.
4519
4520 EOQS
4521                                 rp="You have a big problem.  Shall I abort Configure"
4522                                 dflt=y
4523                                 ;;
4524                         esac
4525                         ;;
4526                 esac
4527         else
4528                 echo "The program compiled OK, but exited with status $?." >>try.msg
4529                 rp="You have a problem.  Shall I abort Configure"
4530                 dflt=y
4531         fi
4532 else
4533         echo "I can't compile the test program." >>try.msg
4534         rp="You have a BIG problem.  Shall I abort Configure"
4535         dflt=y
4536 fi
4537 case "$dflt" in
4538 y)
4539         $cat try.msg >&4
4540         case "$knowitall" in
4541         '')
4542                 echo "(The supplied flags or libraries might be incorrect.)"
4543                 ;;
4544         *) dflt=n;;
4545         esac
4546         echo " "
4547         . ./myread
4548         case "$ans" in
4549         n*|N*) ;;
4550         *)      echo "Ok.  Stopping Configure." >&4
4551                 exit 1
4552                 ;;
4553         esac
4554         ;;
4555 n) echo "OK, that should do.";;
4556 esac
4557 $rm -f try try.* core
4558
4559 : define a shorthand compile call
4560 compile='
4561 mc_file=$1;
4562 shift;
4563 $cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs > /dev/null 2>&1;'
4564 : define a shorthand compile call for compilations that should be ok.
4565 compile_ok='
4566 mc_file=$1;
4567 shift;
4568 $cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs;'
4569
4570 : check for lengths of integral types
4571 echo " "
4572 case "$intsize" in
4573 '')
4574         echo "Checking to see how big your integers are..." >&4
4575         $cat >try.c <<'EOCP'
4576 #include <stdio.h>
4577 int main()
4578 {
4579         printf("intsize=%d;\n", (int)sizeof(int));
4580         printf("longsize=%d;\n", (int)sizeof(long));
4581         printf("shortsize=%d;\n", (int)sizeof(short));
4582         exit(0);
4583 }
4584 EOCP
4585         set try
4586         if eval $compile_ok && $run ./try > /dev/null; then
4587                 eval `$run ./try`
4588                 echo "Your integers are $intsize bytes long."
4589                 echo "Your long integers are $longsize bytes long."
4590                 echo "Your short integers are $shortsize bytes long."
4591         else
4592                 $cat >&4 <<EOM
4593 !
4594 Help! I can't compile and run the intsize test program: please enlighten me!
4595 (This is probably a misconfiguration in your system or libraries, and
4596 you really ought to fix it.  Still, I'll try anyway.)
4597 !
4598 EOM
4599                 dflt=4
4600                 rp="What is the size of an integer (in bytes)?"
4601                 . ./myread
4602                 intsize="$ans"
4603                 dflt=$intsize
4604                 rp="What is the size of a long integer (in bytes)?"
4605                 . ./myread
4606                 longsize="$ans"
4607                 dflt=2
4608                 rp="What is the size of a short integer (in bytes)?"
4609                 . ./myread
4610                 shortsize="$ans"
4611         fi
4612         ;;
4613 esac
4614 $rm -f try try.*
4615
4616 : check for void type
4617 echo " "
4618 echo "Checking to see how well your C compiler groks the void type..." >&4
4619 case "$voidflags" in
4620 '')
4621         $cat >try.c <<'EOCP'
4622 #if TRY & 1
4623 void sub() {
4624 #else
4625 sub() {
4626 #endif
4627         extern void moo();      /* function returning void */
4628         void (*goo)();          /* ptr to func returning void */
4629 #if TRY & 8
4630         void *hue;              /* generic ptr */
4631 #endif
4632 #if TRY & 2
4633         void (*foo[10])();
4634 #endif
4635
4636 #if TRY & 4
4637         if(goo == moo) {
4638                 exit(0);
4639         }
4640 #endif
4641         exit(0);
4642 }
4643 int main() { sub(); }
4644 EOCP
4645         if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
4646                 voidflags=$defvoidused
4647         echo "Good.  It appears to support void to the level $package wants.">&4
4648                 if $contains warning .out >/dev/null 2>&1; then
4649                         echo "However, you might get some warnings that look like this:"
4650                         $cat .out
4651                 fi
4652         else
4653 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
4654                 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
4655                         echo "It supports 1..."
4656                         if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
4657                                 echo "It also supports 2..."
4658                                 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
4659                                         voidflags=7
4660                                         echo "And it supports 4 but not 8 definitely."
4661                                 else
4662                                         echo "It doesn't support 4..."
4663                                         if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
4664                                                 voidflags=11
4665                                                 echo "But it supports 8."
4666                                         else
4667                                                 voidflags=3
4668                                                 echo "Neither does it support 8."
4669                                         fi
4670                                 fi
4671                         else
4672                                 echo "It does not support 2..."
4673                                 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
4674                                         voidflags=13
4675                                         echo "But it supports 4 and 8."
4676                                 else
4677                                         if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
4678                                                 voidflags=5
4679                                                 echo "And it supports 4 but has not heard about 8."
4680                                         else
4681                                                 echo "However it supports 8 but not 4."
4682                                         fi
4683                                 fi
4684                         fi
4685                 else
4686                         echo "There is no support at all for void."
4687                         voidflags=0
4688                 fi
4689         fi
4690 esac
4691 case "$voidflags" in
4692 "$defvoidused") ;;
4693 *)      $cat >&4 <<'EOM'
4694   Support flag bits are:
4695     1: basic void declarations.
4696     2: arrays of pointers to functions returning void.
4697     4: operations between pointers to and addresses of void functions.
4698     8: generic void pointers.
4699 EOM
4700         dflt="$voidflags";
4701         rp="Your void support flags add up to what?"
4702         . ./myread
4703         voidflags="$ans"
4704         ;;
4705 esac
4706 $rm -f try.* .out
4707
4708 : check for length of pointer
4709 echo " "
4710 case "$ptrsize" in
4711 '')
4712         echo "Checking to see how big your pointers are..." >&4
4713         if test "$voidflags" -gt 7; then
4714                 echo '#define VOID_PTR char *' > try.c
4715         else
4716                 echo '#define VOID_PTR void *' > try.c
4717         fi
4718         $cat >>try.c <<'EOCP'
4719 #include <stdio.h>
4720 int main()
4721 {
4722     printf("%d\n", (int)sizeof(VOID_PTR));
4723     exit(0);
4724 }
4725 EOCP
4726         set try
4727         if eval $compile_ok; then
4728                 ptrsize=`$run ./try`
4729                 echo "Your pointers are $ptrsize bytes long."
4730         else
4731                 dflt='4'
4732                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
4733                 rp="What is the size of a pointer (in bytes)?"
4734                 . ./myread
4735                 ptrsize="$ans"
4736         fi
4737         ;;
4738 esac
4739 $rm -f try.c try
4740
4741 : check for long long
4742 echo " "
4743 echo "Checking to see if you have long long..." >&4
4744 echo 'int main() { long long x = 7; return 0; }' > try.c
4745 set try
4746 if eval $compile; then
4747         val="$define"
4748         echo "You have long long."
4749 else
4750         val="$undef"
4751         echo "You do not have long long."
4752 fi
4753 $rm try.*
4754 set d_longlong
4755 eval $setvar
4756
4757 : check for length of long long
4758 case "${d_longlong}${longlongsize}" in
4759 $define)
4760         echo " "
4761         echo "Checking to see how big your long longs are..." >&4
4762         $cat >try.c <<'EOCP'
4763 #include <stdio.h>
4764 int main()
4765 {
4766     printf("%d\n", (int)sizeof(long long));
4767     return(0);
4768 }
4769 EOCP
4770         set try
4771         if eval $compile_ok; then
4772                 longlongsize=`$run ./try`
4773                 echo "Your long longs are $longlongsize bytes long."
4774         else
4775                 dflt='8'
4776                 echo " "
4777                 echo "(I can't seem to compile the test program.  Guessing...)"
4778                 rp="What is the size of a long long (in bytes)?"
4779                 . ./myread
4780                 longlongsize="$ans"
4781         fi
4782         if $test "X$longsize" = "X$longlongsize"; then
4783                 echo "(That isn't any different from an ordinary long.)"
4784         fi      
4785         ;;
4786 esac
4787 $rm -f try.* try
4788
4789 : determine filename position in cpp output
4790 echo " "
4791 echo "Computing filename position in cpp output for #include directives..." >&4
4792 echo '#include <stdio.h>' > foo.c
4793 $cat >fieldn <<EOF
4794 $startsh
4795 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
4796 $grep '^[       ]*#.*stdio\.h' | \
4797 while read cline; do
4798         pos=1
4799         set \$cline
4800         while $test \$# -gt 0; do
4801                 if $test -r \`echo \$1 | $tr -d '"'\`; then
4802                         echo "\$pos"
4803                         exit 0
4804                 fi
4805                 shift
4806                 pos=\`expr \$pos + 1\`
4807         done
4808 done
4809 EOF
4810 chmod +x fieldn
4811 fieldn=`./fieldn`
4812 $rm -f foo.c fieldn
4813 case $fieldn in
4814 '') pos='???';;
4815 1) pos=first;;
4816 2) pos=second;;
4817 3) pos=third;;
4818 *) pos="${fieldn}th";;
4819 esac
4820 echo "Your cpp writes the filename in the $pos field of the line."
4821
4822 : locate header file
4823 $cat >findhdr <<EOF
4824 $startsh
4825 wanted=\$1
4826 name=''
4827 for usrincdir in $usrinc
4828 do
4829         if test -f \$usrincdir/\$wanted; then
4830                 echo "\$usrincdir/\$wanted"
4831                 exit 0
4832         fi
4833 done
4834 awkprg='{ print \$$fieldn }'
4835 echo "#include <\$wanted>" > foo\$\$.c
4836 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
4837 $grep "^[       ]*#.*\$wanted" | \
4838 while read cline; do
4839         name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
4840         case "\$name" in
4841         *[/\\\\]\$wanted) echo "\$name"; exit 1;;
4842         *[\\\\/]\$wanted) echo "\$name"; exit 1;;
4843         *) exit 2;;
4844         esac;
4845 done;
4846 #
4847 # status = 0: grep returned 0 lines, case statement not executed
4848 # status = 1: headerfile found
4849 # status = 2: while loop executed, no headerfile found
4850 #
4851 status=\$?
4852 $rm -f foo\$\$.c;
4853 if test \$status -eq 1; then
4854         exit 0;
4855 fi
4856 exit 1
4857 EOF
4858 chmod +x findhdr
4859
4860 : define an alternate in-header-list? function
4861 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
4862 cont=true; xxf="echo \"<\$1> found.\" >&4";
4863 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
4864 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
4865 esac;
4866 case $# in 4) instead=instead;; *) instead="at last";; esac;
4867 while $test "$cont"; do
4868         xxx=`./findhdr $1`
4869         var=$2; eval "was=\$$2";
4870         if $test "$xxx" && $test -r "$xxx";
4871         then eval $xxf;
4872         eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
4873                 cont="";
4874         else eval $xxnf;
4875         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
4876         set $yyy; shift; shift; yyy=$@;
4877         case $# in 0) cont="";;
4878         2) xxf="echo \"but I found <\$1> $instead.\" >&4";
4879                 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
4880         *) xxf="echo \"but I found <\$1\> instead.\" >&4";
4881                 xxnf="echo \"there is no <\$1>, ...\" >&4";;
4882         esac;
4883 done;
4884 while $test "$yyy";
4885 do set $yyy; var=$2; eval "was=\$$2";
4886         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
4887         set $yyy; shift; shift; yyy=$@;
4888 done'
4889
4890 : see if inttypes.h is available
4891 : we want a real compile instead of Inhdr because some systems
4892 : have an inttypes.h which includes non-existent headers
4893 echo " "
4894 $cat >try.c <<EOCP
4895 #include <inttypes.h>
4896 int main() {
4897         static int32_t foo32 = 0x12345678;
4898 }
4899 EOCP
4900 set try
4901 if eval $compile; then
4902         echo "<inttypes.h> found." >&4
4903         val="$define"
4904 else
4905         echo "<inttypes.h> NOT found." >&4
4906         val="$undef"
4907 fi
4908 $rm -f try.c try
4909 set i_inttypes
4910 eval $setvar
4911
4912 : check for int64_t
4913 echo " "
4914 echo "Checking to see if you have int64_t..." >&4
4915 $cat >try.c <<EOCP
4916 #include <sys/types.h>
4917 #$i_inttypes I_INTTYPES
4918 #ifdef I_INTTYPES
4919 #include <inttypes.h>
4920 #endif
4921 int main() { int64_t x = 7; }
4922 EOCP
4923 set try
4924 if eval $compile; then
4925         val="$define"
4926         echo "You have int64_t."
4927 else
4928         val="$undef"
4929         echo "You do not have int64_t."
4930 fi
4931 $rm -f try try.*
4932 set d_int64_t
4933 eval $setvar
4934
4935
4936 echo " "
4937 echo "Checking which 64-bit integer type we could use..." >&4
4938
4939 case "$intsize" in
4940 8) val=int
4941    set quadtype
4942    eval $setvar
4943    val='"unsigned int"'
4944    set uquadtype
4945    eval $setvar
4946    quadkind=1
4947    ;;
4948 *) case "$longsize" in
4949    8) val=long
4950       set quadtype
4951       eval $setvar
4952       val='"unsigned long"'
4953       set uquadtype
4954       eval $setvar
4955       quadkind=2
4956       ;;
4957    *) case "$d_longlong:$longlongsize" in
4958       define:8)
4959         val='"long long"'
4960         set quadtype
4961         eval $setvar
4962         val='"unsigned long long"'
4963         set uquadtype
4964         eval $setvar
4965         quadkind=3
4966         ;;
4967       *) case "$d_int64_t" in
4968          define)
4969            val=int64_t
4970            set quadtype
4971            eval $setvar
4972            val=uint64_t
4973            set uquadtype
4974            eval $setvar
4975            quadkind=4
4976            ;;
4977          esac
4978          ;;
4979       esac
4980       ;;
4981    esac
4982    ;;
4983 esac
4984
4985 case "$quadtype" in
4986 '')     echo "Alas, no 64-bit integer types in sight." >&4
4987         d_quad="$undef"
4988         ;;
4989 *)      echo "We could use '$quadtype' for 64-bit integers." >&4
4990         d_quad="$define"
4991         ;;
4992 esac
4993
4994
4995 case "$uselonglong" in
4996 "$define"|true|[yY]*)
4997         cat <<EOM >&4
4998
4999 *** Configure -Duselonglong is deprecated, using -Duse64bitint instead.
5000 EOM
5001         use64bitint="$define"
5002         ;;
5003 esac                          
5004 case "$use64bits" in
5005 "$define"|true|[yY]*)
5006         cat <<EOM >&4
5007
5008 *** Configure -Duse64bits is deprecated, using -Duse64bitint instead.
5009 EOM
5010         use64bitint="$define"
5011         ;;
5012 esac                          
5013 case "$use64bitints" in
5014 "$define"|true|[yY]*)
5015         cat <<EOM >&4
5016
5017 *** There is no Configure -Duse64bitints, using -Duse64bitint instead.
5018 EOM
5019         use64bitint="$define"
5020         ;;
5021 esac                          
5022 case "$use64bitsint" in
5023 "$define"|true|[yY]*)
5024         cat <<EOM >&4
5025
5026 *** There is no Configure -Duse64bitsint, using -Duse64bitint instead.
5027 EOM
5028         use64bitint="$define"
5029         ;;
5030 esac                          
5031 case "$uselonglongs" in
5032 "$define"|true|[yY]*)
5033         cat <<EOM >&4
5034
5035 *** There is no Configure -Duselonglongs, using -Duse64bitint instead.
5036 EOM
5037         use64bitint="$define"
5038         ;;
5039 esac                          
5040 case "$use64bitsall" in
5041 "$define"|true|[yY]*)
5042         cat <<EOM >&4
5043
5044 *** There is no Configure -Duse64bitsall, using -Duse64bitall instead.
5045 EOM
5046         use64bitall="$define"
5047         ;;
5048 esac                          
5049
5050 case "$ccflags" in
5051 *-DUSE_LONG_LONG*|*-DUSE_64_BIT_INT*|*-DUSE_64_BIT_ALL*) use64bitint="$define";;
5052 esac
5053 case "$use64bitall" in
5054 "$define"|true|[yY]*) use64bitint="$define" ;;
5055 esac
5056
5057 case "$longsize" in
5058 8) cat <<EOM
5059
5060 You have natively 64-bit long integers.
5061 EOM
5062    val="$define"
5063    ;;
5064 *) case "$use64bitint" in
5065    "$define"|true|[yY]*) dflt='y';;
5066    *) dflt='n';;
5067    esac
5068    case "$d_quad" in
5069    "$define") ;;
5070    *) dflt='n' ;;
5071    esac
5072    cat <<EOM
5073
5074 Perl can be built to take advantage of 64-bit integer types
5075 on some systems.  To do so, Configure can be run with -Duse64bitint.
5076 Choosing this option will most probably introduce binary incompatibilities.
5077
5078 If this doesn't make any sense to you, just accept the default '$dflt'.
5079 (The default has been chosen based on your configuration.)
5080 EOM
5081    rp='Try to use 64-bit integers, if available?'
5082    . ./myread
5083    case "$ans" in
5084    [yY]*) val="$define" ;;
5085    *)     val="$undef"  ;;
5086    esac
5087    ;;
5088 esac
5089 set use64bitint
5090 eval $setvar
5091
5092 case "$use64bitall" in
5093 "$define"|true|[yY]*) dflt='y' ;;
5094 *) case "$longsize" in
5095    8) dflt='y' ;;
5096    *) dflt='n' ;;
5097    esac
5098    ;;
5099 esac    
5100 cat <<EOM
5101
5102 You may also choose to try maximal 64-bitness.  It means using as much
5103 64-bitness as possible on the platform.  This in turn means even more
5104 binary incompatibilities.  On the other hand, your platform may not
5105 have any more 64-bitness available than what you already have chosen.
5106
5107 If this doesn't make any sense to you, just accept the default '$dflt'.
5108 (The default has been chosen based on your configuration.)
5109 EOM
5110 rp='Try to use maximal 64-bit support, if available?'
5111 . ./myread
5112 case "$ans" in
5113 [yY]*) val="$define" ;;
5114 *)     val="$undef"  ;;
5115 esac
5116 set use64bitall
5117 eval $setvar
5118 case "$use64bitall" in
5119 "$define")
5120         case "$use64bitint" in
5121         "$undef")
5122                 cat <<EOM
5123
5124 Since you have chosen a maximally 64-bit build, I'm also turning on
5125 the use of 64-bit integers.
5126 EOM
5127                 use64bitint="$define" ;;
5128         esac
5129         ;;
5130 esac
5131
5132 case "$use64bitall" in
5133 "$define"|true|[yY]*)
5134         case "$ptrsize" in
5135         4)      cat <<EOM >&4
5136
5137 *** You have chosen a maximally 64-bit build, but your pointers
5138 *** are only 4 bytes wide, disabling maximal 64-bitness.
5139
5140 EOM
5141                 use64bitall="$undef"
5142                 case "$use64bitint" in
5143                 "$define"|true|[yY]*) ;;
5144                 *)      cat <<EOM >&4
5145
5146 *** Downgrading from maximal 64-bitness to using 64-bit integers.
5147
5148 EOM
5149                         use64bitint="$define"
5150                         ;;
5151                 esac
5152                 ;;
5153         esac
5154         ;;
5155 esac
5156
5157 case "$use64bitint" in
5158 "$define"|true|[yY]*)
5159 : Look for a hint-file generated 'call-back-unit'.  If the
5160 : user has specified that a 64-bit perl is to be built,
5161 : we may need to set or change some other defaults.
5162         if $test -f use64bitint.cbu; then
5163                 echo "Your platform has some specific hints for 64-bit integers, using them..."
5164                 . ./use64bitint.cbu
5165         fi
5166         case "$longsize" in
5167         4) case "$archname64" in
5168            '') archname64=64int ;;
5169            esac
5170            ;;
5171         esac
5172         ;;
5173 esac
5174
5175 case "$use64bitall" in
5176 "$define"|true|[yY]*)
5177 : Look for a hint-file generated 'call-back-unit'.  If the
5178 : user has specified that a maximally 64-bit perl is to be built,
5179 : we may need to set or change some other defaults.
5180         if $test -f use64bitall.cbu; then
5181                 echo "Your platform has some specific hints for 64-bit builds, using them..."
5182                 . ./use64bitall.cbu
5183         fi
5184         case "$longsize" in
5185         4) case "$archname64" in
5186            ''|64int) archname64=64all ;;
5187            esac
5188            ;;
5189         esac
5190         ;;
5191 esac
5192
5193 echo " "
5194 echo "Checking for GNU C Library..." >&4
5195 cat >try.c <<EOM
5196 #include <stdio.h>
5197 int main()
5198 {
5199 #ifdef __GLIBC__
5200     exit(0);
5201 #else
5202     exit(1);
5203 #endif
5204 }
5205 EOM
5206 set try
5207 if eval $compile_ok && $run ./try; then
5208         val="$define"
5209         echo "You are using the GNU C Library"
5210 else
5211         val="$undef"
5212         echo "You are not using the GNU C Library"
5213 fi
5214 $rm -f try try.*
5215 set d_gnulibc
5216 eval $setvar
5217
5218 : see if nm is to be used to determine whether a symbol is defined or not
5219 case "$usenm" in
5220 '')
5221         dflt=''
5222         case "$d_gnulibc" in
5223         "$define")
5224                 echo " "
5225                 echo "nm probably won't work on the GNU C Library." >&4
5226                 dflt=n
5227                 ;;
5228         esac
5229         case "$dflt" in
5230         '') 
5231                 if $test "$osname" = aix -a ! -f /lib/syscalls.exp; then
5232                         echo " "
5233                         echo "Whoops!  This is an AIX system without /lib/syscalls.exp!" >&4
5234                         echo "'nm' won't be sufficient on this sytem." >&4
5235                         dflt=n
5236                 fi
5237                 ;;
5238         esac
5239         case "$dflt" in
5240         '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
5241                 if $test $dflt -gt 20; then
5242                         dflt=y
5243                 else
5244                         dflt=n
5245                 fi
5246                 ;;
5247         esac
5248         ;;
5249 *)
5250         case "$usenm" in
5251         true|$define) dflt=y;;
5252         *) dflt=n;;
5253         esac
5254         ;;
5255 esac
5256 $cat <<EOM
5257
5258 I can use $nm to extract the symbols from your C libraries. This
5259 is a time consuming task which may generate huge output on the disk (up
5260 to 3 megabytes) but that should make the symbols extraction faster. The
5261 alternative is to skip the 'nm' extraction part and to compile a small
5262 test program instead to determine whether each symbol is present. If
5263 you have a fast C compiler and/or if your 'nm' output cannot be parsed,
5264 this may be the best solution.
5265
5266 You probably shouldn't let me use 'nm' if you are using the GNU C Library.
5267
5268 EOM
5269 rp="Shall I use $nm to extract C symbols from the libraries?"
5270 . ./myread
5271 case "$ans" in
5272 [Nn]*) usenm=false;;
5273 *) usenm=true;;
5274 esac
5275
5276 runnm=$usenm
5277 case "$reuseval" in
5278 true) runnm=false;;
5279 esac
5280
5281 : nm options which may be necessary
5282 case "$nm_opt" in
5283 '') if $test -f /mach_boot; then
5284                 nm_opt=''       # Mach
5285         elif $test -d /usr/ccs/lib; then
5286                 nm_opt='-p'     # Solaris (and SunOS?)
5287         elif $test -f /dgux; then
5288                 nm_opt='-p'     # DG-UX
5289         elif $test -f /lib64/rld; then
5290                 nm_opt='-p'     # 64-bit Irix
5291         else
5292                 nm_opt=''
5293         fi;;
5294 esac
5295
5296 : nm options which may be necessary for shared libraries but illegal
5297 : for archive libraries.  Thank you, Linux.
5298 case "$nm_so_opt" in
5299 '')     case "$myuname" in
5300         *linux*)
5301                 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
5302                         nm_so_opt='--dynamic'
5303                 fi
5304                 ;;
5305         esac
5306         ;;
5307 esac
5308
5309 case "$runnm" in
5310 true)
5311 : get list of predefined functions in a handy place
5312 echo " "
5313 case "$libc" in
5314 '') libc=unknown
5315         case "$libs" in
5316         *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
5317         esac
5318         ;;
5319 esac
5320 case "$libs" in
5321 '') ;;
5322 *)  for thislib in $libs; do
5323         case "$thislib" in
5324         -lc|-lc_s)
5325                 : Handle C library specially below.
5326                 ;;
5327         -l*)
5328                 thislib=`echo $thislib | $sed -e 's/^-l//'`
5329                 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
5330                         :
5331                 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
5332                         :
5333                 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
5334                         :
5335                 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
5336                         :
5337                 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
5338                         :
5339                 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
5340                         :
5341                 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
5342                         :
5343                 else
5344                         try=''
5345                 fi
5346                 libnames="$libnames $try"
5347                 ;;
5348         *) libnames="$libnames $thislib" ;;
5349         esac
5350         done
5351         ;;
5352 esac
5353 xxx=normal
5354 case "$libc" in
5355 unknown)
5356         set /lib/libc.$so
5357         for xxx in $libpth; do
5358                 $test -r $1 || set $xxx/libc.$so
5359                 : The messy sed command sorts on library version numbers.
5360                 $test -r $1 || \
5361                         set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
5362                         tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
5363                                 h
5364                                 s/[0-9][0-9]*/0000&/g
5365                                 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
5366                                 G
5367                                 s/\n/ /' | \
5368                          $sort | $sed -e 's/^.* //'`
5369                 eval set \$$#
5370         done
5371         $test -r $1 || set /usr/ccs/lib/libc.$so
5372         $test -r $1 || set /lib/libsys_s$_a
5373         ;;
5374 *)
5375         set blurfl
5376         ;;
5377 esac
5378 if $test -r "$1"; then
5379         echo "Your (shared) C library seems to be in $1."
5380         libc="$1"
5381 elif $test -r /lib/libc && $test -r /lib/clib; then
5382         echo "Your C library seems to be in both /lib/clib and /lib/libc."
5383         xxx=apollo
5384         libc='/lib/clib /lib/libc'
5385         if $test -r /lib/syslib; then
5386                 echo "(Your math library is in /lib/syslib.)"
5387                 libc="$libc /lib/syslib"
5388         fi
5389 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
5390         echo "Your C library seems to be in $libc, as you said before."
5391 elif $test -r $incpath/usr/lib/libc$_a; then
5392         libc=$incpath/usr/lib/libc$_a;
5393         echo "Your C library seems to be in $libc.  That's fine."
5394 elif $test -r /lib/libc$_a; then
5395         libc=/lib/libc$_a;
5396         echo "Your C library seems to be in $libc.  You're normal."
5397 else
5398         if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
5399                 :
5400         elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
5401                 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
5402         elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
5403                 :
5404         elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
5405                 :
5406         elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
5407                 :
5408         else
5409                 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
5410         fi
5411         if $test -r "$tans"; then
5412                 echo "Your C library seems to be in $tans, of all places."
5413                 libc=$tans
5414         else
5415                 libc='blurfl'
5416         fi
5417 fi
5418 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
5419         dflt="$libc"
5420         cat <<EOM
5421
5422 If the guess above is wrong (which it might be if you're using a strange
5423 compiler, or your machine supports multiple models), you can override it here.
5424
5425 EOM
5426 else
5427         dflt=''
5428         echo $libpth | $tr ' ' $trnl | $sort | $uniq > libpath
5429         cat >&4 <<EOM
5430 I can't seem to find your C library.  I've looked in the following places:
5431
5432 EOM
5433         $sed 's/^/      /' libpath
5434         cat <<EOM
5435
5436 None of these seems to contain your C library. I need to get its name...
5437
5438 EOM
5439 fi
5440 fn=f
5441 rp='Where is your C library?'
5442 . ./getfile
5443 libc="$ans"
5444
5445 echo " "
5446 echo $libc $libnames | $tr ' ' $trnl | $sort | $uniq > libnames
5447 set X `cat libnames`
5448 shift
5449 xxx=files
5450 case $# in 1) xxx=file; esac
5451 echo "Extracting names from the following $xxx for later perusal:" >&4
5452 echo " "
5453 $sed 's/^/      /' libnames >&4
5454 echo " "
5455 $echo $n "This may take a while...$c" >&4
5456
5457 for file in $*; do
5458         case $file in
5459         *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
5460         *) $nm $nm_opt $file 2>/dev/null;;
5461         esac
5462 done >libc.tmp
5463
5464 $echo $n ".$c"
5465 $grep fprintf libc.tmp > libc.ptf
5466 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
5467 xrun='eval "<libc.tmp $com >libc.list"; echo "done" >&4'
5468 xxx='[ADTSIW]'
5469 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx  *_[_.]*//p' -e 's/^.* $xxx  *//p'";\
5470         eval $xscan;\
5471         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5472                 eval $xrun
5473 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
5474         eval $xscan;\
5475         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5476                 eval $xrun
5477 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
5478         eval $xscan;\
5479         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5480                 eval $xrun
5481 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
5482         eval $xscan;\
5483         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5484                 eval $xrun
5485 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
5486         eval $xscan;\
5487         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5488                 eval $xrun
5489 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
5490         eval $xscan;\
5491         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5492                 eval $xrun
5493 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
5494                                 -e '/ file/d' -e 's/^\([^       ]*\).*/\1/p'";\
5495         eval $xscan;\
5496         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5497                 eval $xrun
5498 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
5499         eval $xscan;\
5500         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5501                 eval $xrun
5502 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
5503         eval $xscan;\
5504         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5505                 eval $xrun
5506 elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
5507         eval $xscan;\
5508         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5509                 eval $xrun
5510 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
5511         eval $xscan;\
5512         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5513                 eval $xrun
5514 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
5515         eval $xscan;\
5516         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5517                 eval $xrun
5518 elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
5519         eval $xscan;\
5520         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5521                 eval $xrun
5522 elif com="sed -n -e 's/^__.*//' -e 's/[       ]*D[    ]*[0-9]*.*//p'";\
5523         eval $xscan;\
5524         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5525                 eval $xrun
5526 else
5527         $nm -p $* 2>/dev/null >libc.tmp
5528         $grep fprintf libc.tmp > libc.ptf
5529         if com="$sed -n -e 's/^.* [ADTSIW]  *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
5530                 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
5531         then
5532                 nm_opt='-p'
5533                 eval $xrun
5534         else
5535                 echo " "
5536                 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
5537                 com=''
5538                 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
5539                         for thisname in $libnames $libc; do
5540                                 $ar t $thisname >>libc.tmp
5541                         done
5542                         $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
5543                         echo "Ok." >&4
5544                 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
5545                         # Repeat libc to extract forwarders to DLL entries too
5546                         for thisname in $libnames $libc; do
5547                                 $ar tv $thisname >>libc.tmp
5548                                 # Revision 50 of EMX has bug in $ar.
5549                                 # it will not extract forwarders to DLL entries
5550                                 # Use emximp which will extract exactly them.
5551                                 emximp -o tmp.imp $thisname \
5552                                     2>/dev/null && \
5553                                     $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
5554                                     < tmp.imp >>libc.tmp
5555                                 $rm tmp.imp
5556                         done
5557                         $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
5558                         echo "Ok." >&4
5559                 else
5560                         echo "$ar didn't seem to work right." >&4
5561                         echo "Maybe this is a Cray...trying bld instead..." >&4
5562                         if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
5563                         then
5564                                 for thisname in $libnames; do
5565                                         bld t $libnames | \
5566                                         $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
5567                                         $ar t $thisname >>libc.tmp
5568                                 done
5569                                 echo "Ok." >&4
5570                         else
5571                                 echo "That didn't work either.  Giving up." >&4
5572                                 exit 1
5573                         fi
5574                 fi
5575         fi
5576 fi
5577 nm_extract="$com"
5578 if $test -f /lib/syscalls.exp; then
5579         echo " "
5580         echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
5581         $sed -n 's/^\([^        ]*\)[   ]*syscall[0-9]*[        ]*$/\1/p' /lib/syscalls.exp >>libc.list
5582 fi
5583 ;;
5584 esac
5585 $rm -f libnames libpath
5586
5587 : is a C symbol defined?
5588 csym='tlook=$1;
5589 case "$3" in
5590 -v) tf=libc.tmp; tc=""; tdc="";;
5591 -a) tf=libc.tmp; tc="[0]"; tdc="[]";;
5592 *) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";;
5593 esac;
5594 tx=yes;
5595 case "$reuseval-$4" in
5596 true-) ;;
5597 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
5598 esac;
5599 case "$tx" in
5600 yes)
5601         case "$runnm" in
5602         true)
5603                 if $contains $tlook $tf >/dev/null 2>&1;
5604                 then tval=true;
5605                 else tval=false;
5606                 fi;;
5607         *)
5608                 echo "int main() { extern short $1$tdc; printf(\"%hd\", $1$tc); }" > t.c;
5609                 if $cc -o t $optimize $ccflags $ldflags t.c $libs >/dev/null 2>&1;
5610                 then tval=true;
5611                 else tval=false;
5612                 fi;
5613                 $rm -f t t.c;;
5614         esac;;
5615 *)
5616         case "$tval" in
5617         $define) tval=true;;
5618         *) tval=false;;
5619         esac;;
5620 esac;
5621 eval "$2=$tval"'
5622
5623 : define an is-in-libc? function
5624 inlibc='echo " "; td=$define; tu=$undef;
5625 sym=$1; var=$2; eval "was=\$$2";
5626 tx=yes;
5627 case "$reuseval$was" in
5628 true) ;;
5629 true*) tx=no;;
5630 esac;
5631 case "$tx" in
5632 yes)
5633         set $sym tres -f;
5634         eval $csym;
5635         case "$tres" in
5636         true)
5637                 echo "$sym() found." >&4;
5638                 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
5639         *)
5640                 echo "$sym() NOT found." >&4;
5641                 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
5642         esac;;
5643 *)
5644         case "$was" in
5645         $define) echo "$sym() found." >&4;;
5646         *) echo "$sym() NOT found." >&4;;
5647         esac;;
5648 esac'
5649
5650 : see if sqrtl exists
5651 set sqrtl d_sqrtl
5652 eval $inlibc
5653
5654 case "$ccflags" in
5655 *-DUSE_LONG_DOUBLE*|*-DUSE_MORE_BITS*) uselongdouble="$define" ;;
5656 esac
5657
5658 case "$uselongdouble" in
5659 $define|true|[yY]*)     dflt='y';;
5660 *) dflt='n';;
5661 esac
5662 cat <<EOM
5663
5664 Perl can be built to take advantage of long doubles which
5665 (if available) may give more accuracy and range for floating point numbers.
5666
5667 If this doesn't make any sense to you, just accept the default '$dflt'.
5668 EOM
5669 rp='Try to use long doubles if available?'
5670 . ./myread
5671 case "$ans" in
5672 y|Y)    val="$define"   ;;
5673 *)      val="$undef"    ;;
5674 esac
5675 set uselongdouble
5676 eval $setvar
5677
5678 case "$uselongdouble" in
5679 true|[yY]*) uselongdouble="$define" ;;
5680 esac
5681
5682 case "$uselongdouble" in
5683 $define)
5684 : Look for a hint-file generated 'call-back-unit'.  If the
5685 : user has specified that long doubles should be used,
5686 : we may need to set or change some other defaults.
5687         if $test -f uselongdouble.cbu; then
5688                 echo "Your platform has some specific hints for long doubles, using them..."
5689                 . ./uselongdouble.cbu
5690         else
5691                 $cat <<EOM
5692 (Your platform doesn't have any specific hints for long doubles.)
5693 EOM
5694         fi
5695         ;;
5696 esac
5697
5698 case "$uselongdouble:$d_sqrtl" in
5699 $define:$undef)
5700                 $cat <<EOM >&4
5701
5702 *** You requested the use of long doubles but you do not seem to have
5703 *** the mathematic functions for long doubles.  I'm disabling the use
5704 *** of long doubles.
5705
5706 EOM
5707         uselongdouble=$undef
5708         ;;
5709 esac
5710
5711 : check for length of double
5712 echo " "
5713 case "$doublesize" in
5714 '')
5715         echo "Checking to see how big your double precision numbers are..." >&4
5716         $cat >try.c <<'EOCP'
5717 #include <stdio.h>
5718 int main()
5719 {
5720     printf("%d\n", (int)sizeof(double));
5721     exit(0);
5722 }
5723 EOCP
5724         set try
5725         if eval $compile_ok; then
5726                 doublesize=`$run ./try`
5727                 echo "Your double is $doublesize bytes long."
5728         else
5729                 dflt='8'
5730                 echo "(I can't seem to compile the test program.  Guessing...)"
5731                 rp="What is the size of a double precision number (in bytes)?"
5732                 . ./myread
5733                 doublesize="$ans"
5734         fi
5735         ;;
5736 esac
5737 $rm -f try.c try
5738
5739 : check for long doubles
5740 echo " "
5741 echo "Checking to see if you have long double..." >&4
5742 echo 'int main() { long double x = 7.0; }' > try.c
5743 set try
5744 if eval $compile; then
5745         val="$define"
5746         echo "You have long double."
5747 else
5748         val="$undef"
5749         echo "You do not have long double."
5750 fi
5751 $rm try.*
5752 set d_longdbl
5753 eval $setvar
5754
5755 : check for length of long double
5756 case "${d_longdbl}${longdblsize}" in
5757 $define)
5758         echo " "
5759         echo "Checking to see how big your long doubles are..." >&4
5760         $cat >try.c <<'EOCP'
5761 #include <stdio.h>
5762 int main()
5763 {
5764         printf("%d\n", sizeof(long double));
5765 }
5766 EOCP
5767         set try
5768         set try
5769         if eval $compile; then
5770                 longdblsize=`$run ./try`
5771                 echo "Your long doubles are $longdblsize bytes long."
5772         else
5773                 dflt='8'
5774                 echo " "
5775                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
5776                 rp="What is the size of a long double (in bytes)?"
5777                 . ./myread
5778                 longdblsize="$ans"
5779         fi
5780         if $test "X$doublesize" = "X$longdblsize"; then
5781                 echo "(That isn't any different from an ordinary double.)"
5782         fi      
5783         ;;
5784 esac
5785 $rm -f try.* try
5786
5787 case "$useperlio" in
5788 $define|true|[yY]*|'')  dflt='y';;
5789 *) dflt='n';;
5790 esac
5791 cat <<EOM
5792
5793 Previous version of $package used the standard IO mechanisms as
5794 defined in <stdio.h>.  Versions 5.003_02 and later of $package allow
5795 alternate IO mechanisms via the PerlIO abstraction layer, but the
5796 stdio mechanism is still available if needed.  The abstraction layer
5797 can use AT&T's sfio (if you already have sfio installed) or regular stdio.
5798 Using PerlIO with sfio may cause problems with some extension modules.
5799
5800 If this doesn't make any sense to you, just accept the default '$dflt'.
5801 EOM
5802 rp='Use the PerlIO abstraction layer?'
5803 . ./myread
5804 case "$ans" in
5805 y|Y) 
5806         val="$define"
5807         ;;
5808 *)      
5809         echo "Ok, doing things the stdio way."
5810         val="$undef"
5811         ;;
5812 esac
5813 set useperlio
5814 eval $setvar 
5815
5816 case "$usesocks" in
5817 $define|true|[yY]*)
5818         case "$useperlio" in
5819         $define|true|[yY]*) ;;
5820         *)      cat >&4 <<EOM
5821
5822 You are using the SOCKS proxy protocol library which means that you
5823 should also use the PerlIO layer.  You may be headed for trouble.
5824
5825 EOM
5826                 ;;
5827         esac
5828         ;;
5829 esac
5830
5831         
5832 : determine the architecture name
5833 echo " "
5834 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
5835         tarch=`arch`"-$osname"
5836 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
5837         if uname -m > tmparch 2>&1 ; then
5838                 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
5839                         -e 's/$/'"-$osname/" tmparch`
5840         else
5841                 tarch="$osname"
5842         fi
5843         $rm -f tmparch
5844 else
5845         tarch="$osname"
5846 fi
5847 case "$myarchname" in
5848 ''|"$tarch") ;;
5849 *)
5850         echo "(Your architecture name used to be $myarchname.)"
5851         archname=''
5852         ;;
5853 esac
5854 case "$targetarch" in
5855 '') ;;
5856 *)  archname=`echo $targetarch|sed 's,^[^-]*-,,'` ;;
5857 esac
5858 myarchname="$tarch"
5859 case "$archname" in
5860 '') dflt="$tarch";;
5861 *) dflt="$archname";;
5862 esac
5863 rp='What is your architecture name'
5864 . ./myread
5865 archname="$ans"
5866 case "$usethreads" in
5867 $define)
5868         echo "Threads selected." >&4
5869         case "$archname" in
5870         *-thread*) echo "...and architecture name already has -thread." >&4
5871                 ;;
5872         *)      archname="$archname-thread"
5873                 echo "...setting architecture name to $archname." >&4
5874                 ;;
5875         esac
5876         ;;
5877 esac
5878 case "$usemultiplicity" in
5879 $define)
5880         echo "Multiplicity selected." >&4
5881         case "$archname" in
5882         *-multi*) echo "...and architecture name already has -multi." >&4
5883                 ;;
5884         *)      archname="$archname-multi"
5885                 echo "...setting architecture name to $archname." >&4
5886                 ;;
5887         esac
5888         ;;
5889 esac
5890 case "$use64bitint$use64bitall" in
5891 *"$define"*)
5892         case "$archname64" in
5893         '')
5894                 echo "This architecture is naturally 64-bit, not changing architecture name." >&4
5895                 ;;
5896         *)
5897                 case "$use64bitint" in
5898                 "$define") echo "64 bit integers selected." >&4 ;;
5899                 esac
5900                 case "$use64bitall" in
5901                 "$define") echo "Maximal 64 bitness selected." >&4 ;;
5902                 esac
5903                 case "$archname" in
5904                 *-$archname64*) echo "...and architecture name already has $archname64." >&4
5905                         ;;
5906                 *)      archname="$archname-$archname64"
5907                         echo "...setting architecture name to $archname." >&4
5908                         ;;
5909                 esac
5910                 ;;
5911         esac
5912 esac
5913 case "$uselongdouble" in
5914 $define)
5915         echo "Long doubles selected." >&4
5916         case "$longdblsize" in
5917         $doublesize)
5918                 "...but long doubles are equal to doubles, not changing architecture name." >&4
5919                 ;;
5920         *)
5921                 case "$archname" in
5922                 *-ld*) echo "...and architecture name already has -ld." >&4
5923                         ;;
5924                 *)      archname="$archname-ld"
5925                         echo "...setting architecture name to $archname." >&4
5926                         ;;
5927                 esac
5928                 ;;
5929         esac
5930         ;;
5931 esac
5932 case "$useperlio" in
5933 $define)
5934         echo "Perlio selected." >&4
5935         ;;
5936 *)
5937         echo "Perlio not selected, using stdio." >&4
5938         case "$archname" in
5939         *-stdio*) echo "...and architecture name already has -stdio." >&4
5940                 ;;
5941         *)      archname="$archname-stdio"
5942                 echo "...setting architecture name to $archname." >&4
5943                 ;;
5944         esac
5945         ;;
5946 esac
5947
5948 : determine root of directory hierarchy where package will be installed.
5949 case "$prefix" in
5950 '')
5951         dflt=`./loc . /usr/local /usr/local /local /opt /usr`
5952         ;;
5953 *)
5954         dflt="$prefix"
5955         ;;
5956 esac
5957 $cat <<EOM
5958
5959 By default, $package will be installed in $dflt/bin, manual pages
5960 under $dflt/man, etc..., i.e. with $dflt as prefix for all
5961 installation directories. Typically this is something like /usr/local.
5962 If you wish to have binaries under /usr/bin but other parts of the
5963 installation under /usr/local, that's ok: you will be prompted
5964 separately for each of the installation directories, the prefix being
5965 only used to set the defaults.
5966
5967 EOM
5968 fn=d~
5969 rp='Installation prefix to use?'
5970 . ./getfile
5971 oldprefix=''
5972 case "$prefix" in
5973 '') ;;
5974 *)
5975         case "$ans" in
5976         "$prefix") ;;
5977         *) oldprefix="$prefix";;
5978         esac
5979         ;;
5980 esac
5981 prefix="$ans"
5982 prefixexp="$ansexp"
5983
5984 case "$afsroot" in
5985 '')     afsroot=/afs ;;
5986 *)      afsroot=$afsroot ;;
5987 esac
5988
5989 : is AFS running?
5990 echo " "
5991 case "$afs" in
5992 $define|true)   afs=true ;;
5993 $undef|false)   afs=false ;;
5994 *)      if test -d $afsroot; then
5995                 afs=true
5996         else
5997                 afs=false
5998         fi
5999         ;;
6000 esac
6001 if $afs; then
6002         echo "AFS may be running... I'll be extra cautious then..." >&4
6003 else
6004         echo "AFS does not seem to be running..." >&4
6005 fi
6006
6007 : determine installation prefix for where package is to be installed.
6008 if $afs; then 
6009 $cat <<EOM
6010
6011 Since you are running AFS, I need to distinguish the directory in which
6012 files will reside from the directory in which they are installed (and from
6013 which they are presumably copied to the former directory by occult means).
6014
6015 EOM
6016         case "$installprefix" in
6017         '') dflt=`echo $prefix | sed 's#^/afs/#/afs/.#'`;;
6018         *) dflt="$installprefix";;
6019         esac
6020 else
6021 $cat <<EOM
6022
6023 In some special cases, particularly when building $package for distribution,
6024 it is convenient to distinguish between the directory in which files should 
6025 be installed from the directory ($prefix) in which they 
6026 will eventually reside.  For most users, these two directories are the same.
6027
6028 EOM
6029         case "$installprefix" in
6030         '') dflt=$prefix ;;
6031         *) dflt=$installprefix;;
6032         esac
6033 fi
6034 fn=d~
6035 rp='What installation prefix should I use for installing files?'
6036 . ./getfile
6037 installprefix="$ans"
6038 installprefixexp="$ansexp"
6039
6040 : set the prefixit variable, to compute a suitable default value
6041 prefixit='case "$3" in
6042 ""|none)
6043         case "$oldprefix" in
6044         "") eval "$1=\"\$$2\"";;
6045         *)
6046                 case "$3" in
6047                 "") eval "$1=";;
6048                 none)
6049                         eval "tp=\"\$$2\"";
6050                         case "$tp" in
6051                         ""|" ") eval "$1=\"\$$2\"";;
6052                         *) eval "$1=";;
6053                         esac;;
6054                 esac;;
6055         esac;;
6056 *)
6057         eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
6058         case "$tp" in
6059         --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
6060         /*-$oldprefix/*|\~*-$oldprefix/*)
6061                 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
6062         *) eval "$1=\"\$$2\"";;
6063         esac;;
6064 esac'
6065
6066 : get the patchlevel
6067 echo " "
6068 echo "Getting the current patchlevel..." >&4
6069 if $test -r $rsrc/patchlevel.h;then
6070         revision=`awk '/define[         ]+PERL_REVISION/ {print $3}' $rsrc/patchlevel.h`
6071         patchlevel=`awk '/define[       ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
6072         subversion=`awk '/define[       ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
6073         api_revision=`awk '/define[     ]+PERL_API_REVISION/ {print $3}' $rsrc/patchlevel.h`
6074         api_version=`awk '/define[      ]+PERL_API_VERSION/ {print $3}' $rsrc/patchlevel.h`
6075         api_subversion=`awk '/define[   ]+PERL_API_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
6076        perl_patchlevel=`grep ',"DEVEL[0-9][0-9]*"' $rsrc/patchlevel.h|sed 's/[^0-9]//g'`
6077 else
6078         revision=0
6079         patchlevel=0
6080         subversion=0
6081         api_revision=0
6082         api_version=0
6083         api_subversion=0
6084         perl_patchlevel=0
6085         $echo "(You do not have patchlevel.h.  Eek.)"
6086 fi
6087 if $test -r $rsrc/.patch ; then  
6088         if $test "`cat $rsrc/.patch`" -gt "$perl_patchlevel" ; then
6089                 perl_patchlevel=`cat $rsrc/.patch`
6090         fi
6091 fi
6092 : Define a handy string here to avoid duplication in myconfig.SH and configpm.
6093 version_patchlevel_string="version $patchlevel subversion $subversion"
6094 case "$perl_patchlevel" in
6095 0|'') ;;
6096 *) version_patchlevel_string="$version_patchlevel_string patch $perl_patchlevel" ;;
6097 esac
6098
6099 $echo "(You have $package $version_patchlevel_string.)"
6100
6101 case "$osname" in
6102 dos|vms)
6103         : XXX Should be a Configure test for double-dots in filenames.
6104         version=`echo $revision $patchlevel $subversion | \
6105                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
6106         api_versionstring=`echo $api_revision $api_version $api_subversion | \
6107                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
6108         ;;
6109 *)
6110         version=`echo $revision $patchlevel $subversion | \
6111                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
6112         api_versionstring=`echo $api_revision $api_version $api_subversion | \
6113                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
6114         ;;
6115 esac
6116 : Special case the 5.005_xx maintenance series, which used 5.005
6117 : without any subversion label as a subdirectory in $sitelib
6118 if test "${api_revision}${api_version}${api_subversion}" = "550"; then
6119         api_versionstring='5.005'
6120 fi
6121
6122 : determine installation style
6123 : For now, try to deduce it from prefix unless it is already set.
6124 : Reproduce behavior of 5.005 and earlier, maybe drop that in 5.7.
6125 case "$installstyle" in
6126 '')     case "$prefix" in
6127                 *perl*) dflt='lib';;
6128                 *) dflt='lib/perl5' ;;
6129         esac
6130         ;;
6131 *)      dflt="$installstyle" ;;
6132 esac
6133 : Probably not worth prompting for this since we prompt for all
6134 : the directories individually, and the prompt would be too long and
6135 : confusing anyway.
6136 installstyle=$dflt
6137
6138 : determine where private library files go
6139 : Usual default is /usr/local/lib/perl5/$version.
6140 : Also allow things like /opt/perl/lib/$version, since 
6141 : /opt/perl/lib/perl5... would be redundant.
6142 : The default "style" setting is made in installstyle.U
6143 case "$installstyle" in
6144 *lib/perl5*) set dflt privlib lib/$package/$version ;;
6145 *)       set dflt privlib lib/$version ;;
6146 esac
6147 eval $prefixit
6148 $cat <<EOM
6149
6150 There are some auxiliary files for $package that need to be put into a
6151 private library directory that is accessible by everyone.
6152
6153 EOM
6154 fn=d~+
6155 rp='Pathname where the private library files will reside?'
6156 . ./getfile
6157 privlib="$ans"
6158 privlibexp="$ansexp"
6159 : Change installation prefix, if necessary.
6160 if $test X"$prefix" != X"$installprefix"; then
6161         installprivlib=`echo $privlibexp | sed "s#^$prefix#$installprefix#"`
6162 else
6163         installprivlib="$privlibexp"
6164 fi
6165
6166 : set the prefixup variable, to restore leading tilda escape
6167 prefixup='case "$prefixexp" in
6168 "$prefix") ;;
6169 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
6170 esac'
6171
6172 : determine where public architecture dependent libraries go
6173 set archlib archlib
6174 eval $prefixit
6175 : privlib default is /usr/local/lib/$package/$version
6176 : archlib default is /usr/local/lib/$package/$version/$archname
6177 : privlib may have an optional trailing /share.
6178 tdflt=`echo $privlib | $sed 's,/share$,,'`
6179 tdflt=$tdflt/$archname
6180 case "$archlib" in
6181 '')     dflt=$tdflt
6182         ;;
6183 *)      dflt="$archlib"
6184     ;;
6185 esac
6186 $cat <<EOM
6187
6188 $spackage contains architecture-dependent library files.  If you are
6189 sharing libraries in a heterogeneous environment, you might store
6190 these files in a separate location.  Otherwise, you can just include
6191 them with the rest of the public library files.
6192
6193 EOM
6194 fn=d+~
6195 rp='Where do you want to put the public architecture-dependent libraries?'
6196 . ./getfile
6197 archlib="$ans"
6198 archlibexp="$ansexp"
6199 if $test X"$archlib" = X"$privlib"; then
6200         d_archlib="$undef"
6201 else
6202         d_archlib="$define"
6203 fi
6204 : Change installation prefix, if necessary.
6205 if $test X"$prefix" != X"$installprefix"; then
6206         installarchlib=`echo $archlibexp | sed "s#^$prefix#$installprefix#"`
6207 else
6208         installarchlib="$archlibexp"
6209 fi
6210
6211
6212 : Binary compatibility with 5.005 is not possible for builds
6213 : with advanced features
6214 case "$usethreads$usemultiplicity" in
6215 *define*)
6216         bincompat5005="$undef"
6217         d_bincompat5005="$undef"
6218         ;;
6219 *)      $cat <<EOM
6220
6221 This version of Perl can be compiled for binary compatibility with 5.005.
6222 If you decide to do so, you will be able to continue using most of the
6223 extensions that were compiled for Perl 5.005.
6224
6225 EOM
6226         case "$bincompat5005$d_bincompat5005" in
6227         *"$undef"*) dflt=n ;;
6228         *) dflt=y ;;
6229         esac
6230         rp='Binary compatibility with Perl 5.005?'
6231         . ./myread
6232         case "$ans" in
6233         y*) val="$define" ;;
6234         *)  val="$undef" ;;
6235         esac
6236         set d_bincompat5005
6237         eval $setvar
6238         case "$d_bincompat5005" in
6239         "$define")
6240                 bincompat5005="$define"
6241                 ;;
6242         *)      bincompat5005="$undef"
6243                 d_bincompat5005="$undef"
6244                 ;;
6245         esac
6246         ;;
6247 esac
6248
6249
6250 : see if setuid scripts can be secure
6251 $cat <<EOM
6252
6253 Some kernels have a bug that prevents setuid #! scripts from being
6254 secure.  Some sites have disabled setuid #! scripts because of this.
6255
6256 First let's decide if your kernel supports secure setuid #! scripts.
6257 (If setuid #! scripts would be secure but have been disabled anyway,
6258 don't say that they are secure if asked.)
6259
6260 EOM
6261
6262 val="$undef"
6263 if $test -d /dev/fd; then
6264         echo "#!$ls" >reflect
6265         chmod +x,u+s reflect
6266         ./reflect >flect 2>&1
6267         if $contains "/dev/fd" flect >/dev/null; then
6268                 echo "Congratulations, your kernel has secure setuid scripts!" >&4
6269                 val="$define"
6270         else
6271                 $cat <<EOM
6272 If you are not sure if they are secure, I can check but I'll need a
6273 username and password different from the one you are using right now.
6274 If you don't have such a username or don't want me to test, simply
6275 enter 'none'.
6276
6277 EOM
6278                 rp='Other username to test security of setuid scripts with?'
6279                 dflt='none'
6280                 . ./myread
6281                 case "$ans" in
6282                 n|none)
6283                         case "$d_suidsafe" in
6284                         '')     echo "I'll assume setuid scripts are *not* secure." >&4
6285                                 dflt=n;;
6286                         "$undef")
6287                                 echo "Well, the $hint value is *not* secure." >&4
6288                                 dflt=n;;
6289                         *)      echo "Well, the $hint value *is* secure." >&4
6290                                 dflt=y;;
6291                         esac
6292                         ;;
6293                 *)
6294                         $rm -f reflect flect
6295                         echo "#!$ls" >reflect
6296                         chmod +x,u+s reflect
6297                         echo >flect
6298                         chmod a+w flect
6299                         echo '"su" will (probably) prompt you for '"$ans's password."
6300                         su $ans -c './reflect >flect'
6301                         if $contains "/dev/fd" flect >/dev/null; then
6302                                 echo "Okay, it looks like setuid scripts are secure." >&4
6303                                 dflt=y
6304                         else
6305                                 echo "I don't think setuid scripts are secure." >&4
6306                                 dflt=n
6307                         fi
6308                         ;;
6309                 esac
6310                 rp='Does your kernel have *secure* setuid scripts?'
6311                 . ./myread
6312                 case "$ans" in
6313                 [yY]*)  val="$define";;
6314                 *)      val="$undef";;
6315                 esac
6316         fi
6317 else
6318         echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
6319         echo "(That's for file descriptors, not floppy disks.)"
6320         val="$undef"
6321 fi
6322 set d_suidsafe
6323 eval $setvar
6324
6325 $rm -f reflect flect
6326
6327 : now see if they want to do setuid emulation
6328 echo " "
6329 val="$undef"
6330 case "$d_suidsafe" in
6331 "$define")
6332         val="$undef"
6333         echo "No need to emulate SUID scripts since they are secure here." >& 4
6334         ;;
6335 *)
6336         $cat <<EOM
6337 Some systems have disabled setuid scripts, especially systems where
6338 setuid scripts cannot be secure.  On systems where setuid scripts have
6339 been disabled, the setuid/setgid bits on scripts are currently
6340 useless.  It is possible for $package to detect those bits and emulate
6341 setuid/setgid in a secure fashion.  This emulation will only work if
6342 setuid scripts have been disabled in your kernel.
6343
6344 EOM
6345         case "$d_dosuid" in
6346         "$define") dflt=y ;;
6347         *) dflt=n ;;
6348         esac
6349         rp="Do you want to do setuid/setgid emulation?"
6350         . ./myread
6351         case "$ans" in
6352         [yY]*)  val="$define";;
6353         *)      val="$undef";;
6354         esac
6355         ;;
6356 esac
6357 set d_dosuid
6358 eval $setvar
6359
6360 : see if this is a malloc.h system
6361 set malloc.h i_malloc
6362 eval $inhdr
6363
6364 : see if stdlib is available
6365 set stdlib.h i_stdlib
6366 eval $inhdr
6367
6368 : determine which malloc to compile in
6369 echo " "
6370 case "$usemymalloc" in
6371 [yY]*|true|$define)     dflt='y' ;;
6372 [nN]*|false|$undef)     dflt='n' ;;
6373 *)      case "$ptrsize" in
6374         4) dflt='y' ;;
6375         *) dflt='n' ;;
6376         esac
6377         ;;
6378 esac
6379 rp="Do you wish to attempt to use the malloc that comes with $package?"
6380 . ./myread
6381 usemymalloc="$ans"
6382 case "$ans" in
6383 y*|true)
6384         usemymalloc='y'
6385         mallocsrc='malloc.c'
6386         mallocobj="malloc$_o"
6387         d_mymalloc="$define"
6388         case "$libs" in
6389         *-lmalloc*)
6390                 : Remove malloc from list of libraries to use
6391                 echo "Removing unneeded -lmalloc from library list" >&4
6392                 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
6393                 shift
6394                 libs="$*"
6395                 echo "libs = $libs" >&4
6396                 ;;
6397         esac
6398         ;;
6399 *)
6400         usemymalloc='n'
6401         mallocsrc=''
6402         mallocobj=''
6403         d_mymalloc="$undef"
6404         ;;
6405 esac
6406
6407 : compute the return types of malloc and free
6408 echo " "
6409 $cat >malloc.c <<END
6410 #$i_malloc I_MALLOC
6411 #$i_stdlib I_STDLIB
6412 #include <stdio.h>
6413 #include <sys/types.h>
6414 #ifdef I_MALLOC
6415 #include <malloc.h>
6416 #endif
6417 #ifdef I_STDLIB
6418 #include <stdlib.h>
6419 #endif
6420 #ifdef TRY_MALLOC
6421 void *malloc();
6422 #endif
6423 #ifdef TRY_FREE
6424 void free();
6425 #endif
6426 END
6427 case "$malloctype" in
6428 '')
6429         if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
6430                 malloctype='void *'
6431         else
6432                 malloctype='char *'
6433         fi
6434         ;;
6435 esac
6436 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
6437
6438 case "$freetype" in
6439 '')
6440         if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
6441                 freetype='void'
6442         else
6443                 freetype='int'
6444         fi
6445         ;;
6446 esac
6447 echo "Your system uses $freetype free(), it would seem." >&4
6448 $rm -f malloc.[co]
6449 $cat <<EOM
6450
6451 After $package is installed, you may wish to install various
6452 add-on modules and utilities.  Typically, these add-ons will
6453 be installed under $prefix with the rest
6454 of this package.  However, you may wish to install such add-ons
6455 elsewhere under a different prefix.
6456
6457 If you do not wish to put everything under a single prefix, that's
6458 ok.  You will be prompted for the individual locations; this siteprefix
6459 is only used to suggest the defaults.
6460
6461 The default should be fine for most people.
6462
6463 EOM
6464 fn=d~+
6465 rp='Installation prefix to use for add-on modules and utilities?'
6466 : XXX Here might be another good place for an installstyle setting.
6467 case "$siteprefix" in
6468 '') dflt=$prefix ;;
6469 *)  dflt=$siteprefix ;;
6470 esac
6471 . ./getfile
6472 : XXX Prefixit unit does not yet support siteprefix and vendorprefix
6473 oldsiteprefix=''
6474 case "$siteprefix" in
6475 '') ;;
6476 *)      case "$ans" in
6477         "$prefix") ;;
6478         *) oldsiteprefix="$prefix";;
6479         esac
6480         ;;
6481 esac
6482 siteprefix="$ans"
6483 siteprefixexp="$ansexp"
6484
6485 : determine where site specific libraries go.
6486 : Usual default is /usr/local/lib/perl5/site_perl/$version
6487 : The default "style" setting is made in installstyle.U
6488 : XXX No longer works with Prefixit stuff.
6489 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6490 case "$sitelib" in
6491 '') case "$installstyle" in
6492         *lib/perl5*) dflt=$siteprefix/lib/$package/site_$prog/$version ;;
6493         *)       dflt=$siteprefix/lib/site_$prog/$version ;;
6494         esac
6495         ;;
6496 *)      dflt="$sitelib"
6497         ;;
6498 esac
6499 $cat <<EOM
6500
6501 The installation process will create a directory for
6502 site-specific extensions and modules.  Most users find it convenient
6503 to place all site-specific files in this directory rather than in the
6504 main distribution directory.
6505
6506 EOM
6507 fn=d~+
6508 rp='Pathname for the site-specific library files?'
6509 . ./getfile
6510 sitelib="$ans"
6511 sitelibexp="$ansexp"
6512 sitelib_stem=`echo "$sitelibexp" | sed "s,/$version$,,"`
6513 : Change installation prefix, if necessary.
6514 if $test X"$prefix" != X"$installprefix"; then
6515         installsitelib=`echo $sitelibexp | $sed "s#^$prefix#$installprefix#"`
6516 else
6517         installsitelib="$sitelibexp"
6518 fi
6519
6520 : determine where site specific architecture-dependent libraries go.
6521 : sitelib  default is /usr/local/lib/perl5/site_perl/$version
6522 : sitearch default is /usr/local/lib/perl5/site_perl/$version/$archname
6523 : sitelib may have an optional trailing /share.
6524 case "$sitearch" in
6525 '')     dflt=`echo $sitelib | $sed 's,/share$,,'`
6526         dflt="$dflt/$archname"
6527         ;;
6528 *)      dflt="$sitearch"
6529         ;;
6530 esac
6531 set sitearch sitearch none
6532 eval $prefixit
6533 $cat <<EOM
6534
6535 The installation process will also create a directory for
6536 architecture-dependent site-specific extensions and modules.
6537
6538 EOM
6539 fn=d~+
6540 rp='Pathname for the site-specific architecture-dependent library files?'
6541 . ./getfile
6542 sitearch="$ans"
6543 sitearchexp="$ansexp"
6544 : Change installation prefix, if necessary.
6545 if $test X"$prefix" != X"$installprefix"; then
6546         installsitearch=`echo $sitearchexp | sed "s#^$prefix#$installprefix#"`
6547 else
6548         installsitearch="$sitearchexp"
6549 fi
6550
6551 $cat <<EOM
6552
6553 The installation process will also create a directory for
6554 vendor-supplied add-ons.  Vendors who supply perl with their system
6555 may find it convenient to place all vendor-supplied files in this
6556 directory rather than in the main distribution directory.  This will
6557 ease upgrades between binary-compatible maintenance versions of perl.
6558
6559 Of course you may also use these directories in whatever way you see
6560 fit.  For example, you might use them to access modules shared over a
6561 company-wide network.
6562
6563 The default answer should be fine for most people.
6564 This causes further questions about vendor add-ons to be skipped
6565 and no vendor-specific directories will be configured for perl.
6566
6567 EOM
6568 rp='Do you want to configure vendor-specific add-on directories?'
6569 case "$usevendorprefix" in
6570 define|true|[yY]*) dflt=y ;;
6571 *)      : User may have set vendorprefix directly on Configure command line.
6572         case "$vendorprefix" in
6573         ''|' ') dflt=n ;;
6574         *)      dflt=y ;;
6575         esac
6576         ;;
6577 esac
6578 . ./myread
6579 case "$ans" in
6580 [yY]*)  fn=d~+
6581         rp='Installation prefix to use for vendor-supplied add-ons?'
6582         case "$vendorprefix" in
6583         '') dflt='' ;;
6584         *)  dflt=$vendorprefix ;;
6585         esac
6586         . ./getfile
6587         : XXX Prefixit unit does not yet support siteprefix and vendorprefix
6588         oldvendorprefix=''
6589         case "$vendorprefix" in
6590         '') ;;
6591         *)      case "$ans" in
6592                 "$prefix") ;;
6593                 *) oldvendorprefix="$prefix";;
6594                 esac
6595                 ;;
6596         esac
6597         usevendorprefix="$define"
6598         vendorprefix="$ans"
6599         vendorprefixexp="$ansexp"
6600         ;;
6601 *)      usevendorprefix="$undef"
6602         vendorprefix=''
6603         vendorprefixexp=''
6604         ;;
6605 esac
6606
6607 case "$vendorprefix" in
6608 '')     d_vendorlib="$undef"
6609         vendorlib=''
6610         vendorlibexp=''
6611         ;;
6612 *)      d_vendorlib="$define"
6613         : determine where vendor-supplied modules go.
6614         : Usual default is /usr/local/lib/perl5/vendor_perl/$version
6615         case "$vendorlib" in
6616         '')
6617                 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6618                 case "$installstyle" in
6619                 *lib/perl5*) dflt=$vendorprefix/lib/$package/vendor_$prog/$version ;;
6620                 *)           dflt=$vendorprefix/lib/vendor_$prog/$version ;;
6621                 esac
6622                 ;;
6623         *)      dflt="$vendorlib"
6624                 ;;
6625         esac
6626         fn=d~+
6627         rp='Pathname for the vendor-supplied library files?'
6628         . ./getfile
6629         vendorlib="$ans"
6630         vendorlibexp="$ansexp"
6631         ;;
6632 esac
6633 vendorlib_stem=`echo "$vendorlibexp" | sed "s,/$version$,,"`
6634 : Change installation prefix, if necessary.
6635 if $test X"$prefix" != X"$installprefix"; then
6636         installvendorlib=`echo $vendorlibexp | $sed "s#^$prefix#$installprefix#"`
6637 else
6638         installvendorlib="$vendorlibexp"
6639 fi
6640
6641 case "$vendorprefix" in
6642 '')     d_vendorarch="$undef"
6643         vendorarch=''
6644         vendorarchexp=''
6645         ;;
6646 *)      d_vendorarch="$define"
6647         : determine where vendor-supplied architecture-dependent libraries go.
6648         : vendorlib  default is /usr/local/lib/perl5/vendor_perl/$version
6649         : vendorarch default is /usr/local/lib/perl5/vendor_perl/$version/$archname
6650         : vendorlib may have an optional trailing /share.
6651         case "$vendorarch" in
6652         '')     dflt=`echo $vendorlib | $sed 's,/share$,,'`
6653                 dflt="$dflt/$archname"
6654                 ;;
6655         *)      dflt="$vendorarch" ;;
6656         esac
6657         fn=d~+
6658         rp='Pathname for vendor-supplied architecture-dependent files?'
6659         . ./getfile
6660         vendorarch="$ans"
6661         vendorarchexp="$ansexp"
6662         ;;
6663 esac
6664 : Change installation prefix, if necessary.
6665 if $test X"$prefix" != X"$installprefix"; then
6666         installvendorarch=`echo $vendorarchexp | sed "s#^$prefix#$installprefix#"`
6667 else
6668         installvendorarch="$vendorarchexp"
6669 fi
6670
6671 : Final catch-all directories to search
6672 $cat <<EOM
6673
6674 Lastly, you can have perl look in other directories for extensions and
6675 modules in addition to those already specified.
6676 These directories will be searched after 
6677         $sitearch 
6678         $sitelib 
6679 EOM
6680 test X"$vendorlib" != "X" && echo '     ' $vendorlib
6681 test X"$vendorarch" != "X" && echo '    ' $vendorarch
6682 echo ' '
6683 case "$otherlibdirs" in
6684 ''|' ') dflt='none' ;;
6685 *)      dflt="$otherlibdirs" ;;
6686 esac
6687 $cat <<EOM
6688 Enter a colon-separated set of extra paths to include in perl's @INC
6689 search path, or enter 'none' for no extra paths.
6690
6691 EOM
6692
6693 rp='Colon-separated list of additional directories for perl to search?'
6694 . ./myread
6695 case "$ans" in
6696 ' '|''|none)    otherlibdirs=' ' ;;     
6697 *)      otherlibdirs="$ans" ;;
6698 esac
6699 case "$otherlibdirs" in
6700 ' ') val=$undef ;;
6701 *)      val=$define ;;
6702 esac
6703 set d_perl_otherlibdirs
6704 eval $setvar
6705
6706 : Cruising for prototypes
6707 echo " "
6708 echo "Checking out function prototypes..." >&4
6709 $cat >prototype.c <<'EOCP'
6710 int main(int argc, char *argv[]) {
6711         exit(0);}
6712 EOCP
6713 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
6714         echo "Your C compiler appears to support function prototypes."
6715         val="$define"
6716 else
6717         echo "Your C compiler doesn't seem to understand function prototypes."
6718         val="$undef"
6719 fi
6720 set prototype
6721 eval $setvar
6722 $rm -f prototype*
6723
6724 case "$prototype" in
6725 "$define") ;;
6726 *)      ansi2knr='ansi2knr'
6727         echo " "
6728         cat <<EOM >&4
6729
6730 $me:  FATAL ERROR:
6731 This version of $package can only be compiled by a compiler that 
6732 understands function prototypes.  Unfortunately, your C compiler 
6733         $cc $ccflags
6734 doesn't seem to understand them.  Sorry about that.
6735
6736 If GNU cc is available for your system, perhaps you could try that instead.  
6737
6738 Eventually, we hope to support building Perl with pre-ANSI compilers.
6739 If you would like to help in that effort, please contact <perlbug@perl.org>.
6740
6741 Aborting Configure now.
6742 EOM
6743         exit 2
6744         ;;
6745 esac
6746
6747 : determine where public executables go
6748 echo " "
6749 set dflt bin bin
6750 eval $prefixit
6751 fn=d~
6752 rp='Pathname where the public executables will reside?'
6753 . ./getfile
6754 if $test "X$ansexp" != "X$binexp"; then
6755         installbin=''
6756 fi
6757 bin="$ans"
6758 binexp="$ansexp"
6759 : Change installation prefix, if necessary.
6760 : XXX Bug? -- ignores Configure -Dinstallprefix setting.
6761 if $test X"$prefix" != X"$installprefix"; then
6762         installbin=`echo $binexp | sed "s#^$prefix#$installprefix#"`
6763 else
6764         installbin="$binexp"
6765 fi
6766
6767 : Find perl5.005 or later.
6768 echo "Looking for a previously installed perl5.005 or later... "
6769 case "$perl5" in
6770 '')     for tdir in `echo "$binexp$path_sep$PATH" | $sed "s/$path_sep/ /g"`; do
6771                 : Check if this perl is recent and can load a simple module
6772                 if $test -x $tdir/perl$exe_ext && $tdir/perl -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6773                         perl5=$tdir/perl
6774                         break;
6775                 elif $test -x $tdir/perl5$exe_ext && $tdir/perl5 -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6776                         perl5=$tdir/perl5
6777                         break;
6778                 fi
6779         done
6780         ;;
6781 *)      perl5="$perl5"
6782         ;;
6783 esac
6784 case "$perl5" in
6785 '')     echo "None found.  That's ok.";;
6786 *)      echo "Using $perl5." ;;
6787 esac
6788
6789 : Determine list of previous versions to include in @INC
6790 $cat > getverlist <<EOPL
6791 #!$perl5 -w
6792 use File::Basename;
6793 \$api_versionstring = "$api_versionstring";
6794 \$version = "$version";
6795 \$stem = "$sitelib_stem";
6796 \$archname = "$archname";
6797 EOPL
6798         $cat >> getverlist <<'EOPL'
6799 # Can't have leading @ because metaconfig interprets it as a command!
6800 ;@inc_version_list=();
6801 # XXX Redo to do opendir/readdir? 
6802 if (-d $stem) {
6803     chdir($stem);
6804     ;@candidates = glob("5.*");
6805 }
6806 else {
6807     ;@candidates = ();
6808 }
6809
6810 # XXX ToDo:  These comparisons must be reworked when two-digit
6811 # subversions come along, so that 5.7.10 compares as greater than
6812 # 5.7.3!  By that time, hope that 5.6.x is sufficiently
6813 # widespread that we can use the built-in version vectors rather
6814 # than reinventing them here.  For 5.6.0, however, we must
6815 # assume this script will likely be run by 5.005_0x.  --AD 1/2000.
6816 foreach $d (@candidates) {
6817     if ($d lt $version) {
6818         if ($d ge $api_versionstring) {
6819             unshift(@inc_version_list, grep { -d } "$d/$archname", $d);
6820         }
6821         elsif ($d ge "5.005") {
6822             unshift(@inc_version_list, grep { -d } $d);
6823         }
6824     }
6825     else {
6826         # Skip newer version.  I.e. don't look in
6827         # 5.7.0 if we're installing 5.6.1.
6828     }
6829 }
6830
6831 if (@inc_version_list) {
6832     print join(' ', @inc_version_list);
6833 }
6834 else {
6835     # Blank space to preserve value for next Configure run.
6836     print " ";
6837 }
6838 EOPL
6839 chmod +x getverlist
6840 case "$inc_version_list" in
6841 '')     if test -x "$perl5$exe_ext"; then
6842                 dflt=`$perl5 getverlist`
6843         else
6844                 dflt='none'
6845         fi
6846         ;;
6847 $undef) dflt='none' ;;
6848 *)  eval dflt=\"$inc_version_list\" ;;
6849 esac
6850 case "$dflt" in
6851 ''|' ') dflt=none ;;
6852 esac
6853 case "$dflt" in
6854 5.005) case "$bincompat5005" in
6855        $define|true|[yY]*) ;;
6856        *) dflt=none ;;
6857        esac
6858        ;;
6859 esac
6860 $cat <<'EOM'
6861
6862 In order to ease the process of upgrading, this version of perl 
6863 can be configured to use modules built and installed with earlier 
6864 versions of perl that were installed under $prefix.  Specify here
6865 the list of earlier versions that this version of perl should check.
6866 If Configure detected no earlier versions of perl installed under
6867 $prefix, then the list will be empty.  Answer 'none' to tell perl
6868 to not search earlier versions.
6869
6870 The default should almost always be sensible, so if you're not sure,
6871 just accept the default.
6872 EOM
6873
6874 rp='List of earlier versions to include in @INC?'
6875 . ./myread
6876 case "$ans" in
6877 [Nn]one|''|' ') inc_version_list=' ' ;;
6878 *) inc_version_list="$ans" ;;
6879 esac
6880 case "$inc_version_list" in
6881 ''|' ') 
6882         inc_version_list_init='0';;
6883 *)      inc_version_list_init=`echo $inc_version_list |
6884                 $sed -e 's/^/"/' -e 's/ /","/g' -e 's/$/",0/'`
6885         ;;
6886 esac
6887 $rm -f getverlist
6888
6889 : determine whether to install perl also as /usr/bin/perl
6890
6891 echo " "
6892 if $test -d /usr/bin -a "X$installbin" != X/usr/bin; then
6893         $cat <<EOM
6894 Many scripts expect perl to be installed as /usr/bin/perl.
6895 I can install the perl you are about to compile also as /usr/bin/perl
6896 (in addition to $installbin/perl).
6897 EOM
6898         case "$installusrbinperl" in
6899         "$undef"|[nN]*) dflt='n';;
6900         *)              dflt='y';;
6901         esac
6902         rp="Do you want to install perl as /usr/bin/perl?"
6903         . ./myread
6904         case "$ans" in
6905         [yY]*)  val="$define";;
6906         *)      val="$undef" ;;
6907         esac
6908 else
6909         val="$undef"
6910 fi
6911 set installusrbinperl
6912 eval $setvar
6913
6914 : see if dld is available
6915 set dld.h i_dld
6916 eval $inhdr
6917
6918 : see if dlopen exists
6919 xxx_runnm="$runnm"
6920 runnm=false
6921 set dlopen d_dlopen
6922 eval $inlibc
6923 runnm="$xxx_runnm"
6924
6925 : determine which dynamic loading, if any, to compile in
6926 echo " "
6927 dldir="ext/DynaLoader"
6928 case "$usedl" in
6929 $define|y|true)
6930         dflt='y'
6931         usedl="$define"
6932         ;;
6933 $undef|n|false)
6934         dflt='n'
6935         usedl="$undef"
6936         ;;
6937 *) 
6938         dflt='n'
6939         case "$d_dlopen" in
6940             $define) dflt='y' ;;
6941         esac
6942         case "$i_dld" in
6943             $define) dflt='y' ;;
6944         esac
6945         : Does a dl_xxx.xs file exist for this operating system
6946         $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
6947         ;;
6948 esac
6949 rp="Do you wish to use dynamic loading?"
6950 . ./myread
6951 usedl="$ans"
6952 case "$ans" in
6953 y*) usedl="$define"
6954         case "$dlsrc" in
6955         '')
6956                 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
6957                         dflt="$dldir/dl_${osname}.xs"
6958                 elif $test "$d_dlopen" = "$define" ; then
6959                         dflt="$dldir/dl_dlopen.xs"
6960                 elif $test "$i_dld" = "$define" ; then
6961                         dflt="$dldir/dl_dld.xs"
6962                 else
6963                         dflt=''
6964                 fi
6965                 ;;
6966         *)      dflt="$dldir/$dlsrc"
6967                 ;;
6968         esac
6969     echo "The following dynamic loading files are available:"
6970         : Can not go over to $dldir because getfile has path hard-coded in.
6971         tdir=`pwd`; cd $rsrc; $ls -C $dldir/dl*.xs; cd $tdir
6972         rp="Source file to use for dynamic loading"
6973         fn="fne"
6974         gfpth="$src"
6975         . ./getfile
6976         usedl="$define"
6977         : emulate basename
6978         dlsrc=`echo $ans | $sed -e 's%.*/\([^/]*\)$%\1%'`
6979
6980         $cat << EOM
6981
6982 Some systems may require passing special flags to $cc -c to
6983 compile modules that will be used to create a shared library.
6984 To use no flags, say "none".
6985
6986 EOM
6987     case "$cccdlflags" in
6988     '') case "$gccversion" in
6989                 '') case "$osname" in
6990                         hpux)   dflt='+z' ;;
6991                         next)   dflt='none' ;;
6992                         irix*)  dflt='-KPIC' ;;
6993                         svr4*|esix*|solaris|nonstopux) dflt='-KPIC' ;;
6994                         sunos)  dflt='-pic' ;;
6995                         *)      dflt='none' ;;
6996                     esac
6997                         ;;
6998                 *)  case "$osname" in
6999                         svr4*|esix*|solaris|nonstopux) dflt='-fPIC' ;;
7000                         *)      dflt='-fpic' ;;
7001                     esac ;;
7002             esac ;;
7003         ' ') dflt='none' ;;
7004     *)  dflt="$cccdlflags" ;;
7005     esac
7006     rp="Any special flags to pass to $cc -c to compile shared library modules?"
7007     . ./myread
7008     case "$ans" in
7009     none) cccdlflags=' ' ;;
7010     *) cccdlflags="$ans" ;;
7011     esac
7012
7013     cat << EOM
7014
7015 Some systems use ld to create libraries that can be dynamically loaded,
7016 while other systems (such as those using ELF) use $cc.
7017
7018 EOM
7019         case "$ld" in
7020         '')     $cat >try.c <<'EOM'
7021 /* Test for whether ELF binaries are produced */
7022 #include <fcntl.h>
7023 #include <stdlib.h>
7024 int main() {
7025         char b[4];
7026         int i = open("a.out",O_RDONLY);
7027         if(i == -1) 
7028                 exit(1); /* fail */
7029         if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
7030                 exit(0); /* succeed (yes, it's ELF) */
7031         else
7032                 exit(1); /* fail */
7033 }
7034 EOM
7035                 if $cc $ccflags $ldflags try.c >/dev/null 2>&1 && $run ./a.out; then
7036                         cat <<EOM
7037 You appear to have ELF support.  I'll use $cc to build dynamic libraries.
7038 EOM
7039                         dflt="$cc"
7040                 else
7041                         echo "I'll use ld to build dynamic libraries."
7042                         dflt='ld'
7043                 fi
7044                 rm -f try.c a.out
7045                 ;;
7046         *)      dflt="$ld"
7047                 ;;
7048         esac
7049
7050     rp="What command should be used to create dynamic libraries?"
7051     . ./myread
7052         ld="$ans"
7053
7054     cat << EOM
7055
7056 Some systems may require passing special flags to $ld to create a
7057 library that can be dynamically loaded.  If your ld flags include
7058 -L/other/path options to locate libraries outside your loader's normal
7059 search path, you may need to specify those -L options here as well.  To
7060 use no flags, say "none".
7061
7062 EOM
7063     case "$lddlflags" in
7064     '') case "$osname" in
7065                         beos) dflt='-nostart' ;;
7066                         hpux) dflt='-b';
7067                               case "$gccversion" in
7068                               '') dflt="$dflt +vnocompatwarnings" ;;
7069                               esac
7070                               ;;        
7071                         linux|irix*)    dflt='-shared' ;;
7072                         next)  dflt='none' ;;
7073                         solaris) dflt='-G' ;;
7074                         sunos) dflt='-assert nodefinitions' ;;
7075                         svr4*|esix*|nonstopux) dflt="-G $ldflags" ;;
7076                 *)     dflt='none' ;;
7077                         esac
7078                         ;;
7079     *) dflt="$lddlflags" ;;
7080     esac
7081
7082         : Try to guess additional flags to pick up local libraries.
7083         : Be careful not to append to a plain 'none'
7084         case "$dflt" in
7085         none) dflt='' ;;
7086         esac
7087         for thisflag in $ldflags; do
7088                 case "$thisflag" in
7089                 -L*|-R*)
7090                         case " $dflt " in
7091                         *" $thisflag "*) ;;
7092                         *) dflt="$dflt $thisflag" ;;
7093                         esac
7094                         ;;
7095                 esac
7096         done
7097
7098         case "$dflt" in
7099         ''|' ') dflt='none' ;;
7100         esac
7101
7102     rp="Any special flags to pass to $ld to create a dynamically loaded library?"
7103     . ./myread
7104     case "$ans" in
7105     none) lddlflags=' ' ;;
7106     *) lddlflags="$ans" ;;
7107     esac
7108
7109         cat <<EOM
7110
7111 Some systems may require passing special flags to $cc to indicate that
7112 the resulting executable will use dynamic linking.  To use no flags,
7113 say "none".
7114
7115 EOM
7116     case "$ccdlflags" in
7117     '') case "$osname" in
7118                 hpux)   dflt='-Wl,-E' ;;
7119                 linux)  dflt='-rdynamic' ;;
7120                 next)   dflt='none' ;;
7121                 sunos)  dflt='none' ;;
7122                 *)      dflt='none' ;;
7123             esac ;;
7124     ' ')  dflt='none' ;;
7125     *)  dflt="$ccdlflags" ;;
7126     esac
7127     rp="Any special flags to pass to $cc to use dynamic linking?"
7128     . ./myread
7129     case "$ans" in
7130     none) ccdlflags=' ' ;;
7131     *) ccdlflags="$ans" ;;
7132     esac
7133     ;;
7134 *)  usedl="$undef"
7135         ld='ld'
7136     dlsrc='dl_none.xs'
7137     lddlflags=''
7138     ccdlflags=''
7139     ;;
7140 esac
7141
7142 also=''
7143 case "$usedl" in
7144 $undef)
7145         # No dynamic loading being used, so don't bother even to prompt.
7146         useshrplib='false'
7147         ;;
7148 *)      case "$useshrplib" in
7149         '')     case "$osname" in
7150                 svr4*|nonstopux|dgux|dynixptx|esix|powerux|beos|cygwin*)
7151                         dflt=y
7152                         also='Building a shared libperl is required for dynamic loading to work on your system.'
7153                         ;;
7154                 next*)
7155                         case "$osvers" in
7156                         4*)     dflt=y
7157                                 also='Building a shared libperl is needed for MAB support.'
7158                                 ;;
7159                         *)      dflt=n
7160                                 ;;
7161                         esac
7162                         ;;
7163                 *)      dflt=n
7164                         ;;
7165                 esac
7166                 ;;
7167         $define|true|[Yy]*)
7168                 dflt=y
7169                 ;;
7170         *)      dflt=n
7171                 ;;
7172         esac
7173         $cat << EOM
7174
7175 The perl executable is normally obtained by linking perlmain.c with
7176 libperl${_a}, any static extensions (usually just DynaLoader), and
7177 any other libraries needed on this system (such as -lm, etc.).  Since
7178 your system supports dynamic loading, it is probably possible to build
7179 a shared libperl.$so.  If you will have more than one executable linked
7180 to libperl.$so, this will significantly reduce the size of each
7181 executable, but it may have a noticeable affect on performance.  The
7182 default is probably sensible for your system.
7183 $also
7184
7185 EOM
7186         rp="Build a shared libperl.$so (y/n)"
7187         . ./myread
7188         case "$ans" in
7189         true|$define|[Yy]*)
7190                 useshrplib='true'  ;;
7191         *)      useshrplib='false' ;;
7192         esac
7193         ;;
7194 esac
7195
7196 case "$useshrplib" in
7197 true)
7198         case "$libperl" in
7199         '')
7200                 # Figure out a good name for libperl.so.  Since it gets stored in
7201                 # a version-specific architecture-dependent library, the version
7202                 # number isn't really that important, except for making cc/ld happy.
7203                 #
7204                 # A name such as libperl.so.3.1
7205                 majmin="libperl.$so.$patchlevel.$subversion"
7206                 # A name such as libperl.so.301
7207                 majonly=`echo $patchlevel $subversion |
7208                         $awk '{printf "%d%02d", $1, $2}'`
7209                 majonly=libperl.$so.$majonly
7210                 # I'd prefer to keep the os-specific stuff here to a minimum, and
7211                 # rely on figuring it out from the naming of libc.
7212                 case "${osname}${osvers}" in
7213                 next4*)
7214                         dflt=libperl.5.$so
7215                         # XXX How handle the --version stuff for MAB?
7216                         ;;
7217                 linux*)  # ld won't link with a bare -lperl otherwise.
7218                         dflt=libperl.$so
7219                         ;;
7220                 cygwin*) # include version
7221                         dflt=`echo libperl$version | sed -e 's/\./_/g'`$lib_ext
7222                         ;;
7223                 *)      # Try to guess based on whether libc has major.minor.
7224                         case "$libc" in
7225                         *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
7226                         *libc.$so.[0-9]*) dflt=$majonly ;;
7227                         *)      dflt=libperl.$so ;;
7228                         esac
7229                         ;;
7230                 esac
7231                 ;;
7232         *)      dflt=$libperl
7233                 ;;
7234         esac
7235         cat << EOM
7236
7237 I need to select a good name for the shared libperl.  If your system uses
7238 library names with major and minor numbers, then you might want something
7239 like $majmin.  Alternatively, if your system uses a single version
7240 number for shared libraries, then you might want to use $majonly.
7241 Or, your system might be quite happy with a simple libperl.$so.
7242
7243 Since the shared libperl will get installed into a version-specific
7244 architecture-dependent directory, the version number of the shared perl
7245 library probably isn't important, so the default should be o.k.
7246
7247 EOM
7248         rp='What name do you want to give to the shared libperl?'
7249         . ./myread
7250         libperl=$ans
7251         echo "Ok, I'll use $libperl"
7252         ;;
7253 *)
7254         libperl="libperl${_a}"
7255         ;;
7256 esac
7257
7258 # Detect old use of shrpdir via undocumented Configure -Dshrpdir
7259 case "$shrpdir" in
7260 '') ;;
7261 *)      $cat >&4 <<EOM
7262 WARNING:  Use of the shrpdir variable for the installation location of
7263 the shared $libperl is not supported.  It was never documented and
7264 will not work in this version.  Let me (perlbug@perl.org)
7265 know of any problems this may cause.
7266
7267 EOM
7268         case "$shrpdir" in
7269         "$archlibexp/CORE")
7270                 $cat >&4 <<EOM
7271 But your current setting of $shrpdir is
7272 the default anyway, so it's harmless.
7273 EOM
7274                 ;;
7275         *)
7276                 $cat >&4 <<EOM
7277 Further, your current attempted setting of $shrpdir
7278 conflicts with the value of $archlibexp/CORE
7279 that installperl will use.
7280 EOM
7281                 ;;
7282         esac
7283         ;;
7284 esac
7285
7286 # How will the perl executable find the installed shared $libperl?
7287 # Add $xxx to ccdlflags.
7288 # If we can't figure out a command-line option, use $shrpenv to
7289 # set env LD_RUN_PATH.  The main perl makefile uses this.
7290 shrpdir=$archlibexp/CORE
7291 xxx=''
7292 tmp_shrpenv=''
7293 if "$useshrplib"; then
7294     case "$osname" in 
7295         aix)
7296                 # We'll set it in Makefile.SH...
7297                 ;;
7298         solaris|netbsd)
7299                 xxx="-R $shrpdir"
7300                 ;;
7301         freebsd)
7302                 xxx="-Wl,-R$shrpdir"
7303                 ;;
7304         linux|irix*|dec_osf)
7305                 xxx="-Wl,-rpath,$shrpdir"
7306                 ;;
7307         next)
7308                 # next doesn't like the default...
7309                 ;;
7310         beos)
7311                 # beos doesn't like the default, either.
7312                 ;;
7313         hpux*)
7314                 # hpux doesn't like the default, either.
7315                 tmp_shrpenv="env LDOPTS=\"+s +b${shrpdir}\""
7316                 ;;
7317         *)
7318                 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
7319                 ;;
7320         esac
7321         case "$xxx" in
7322         '') ;;
7323         *)      
7324                 # Only add $xxx if it isn't already in ccdlflags.
7325                 case " $ccdlflags " in
7326                 *" $xxx "*)     ;;
7327                 *)      ccdlflags="$ccdlflags $xxx"
7328                         cat <<EOM >&4
7329
7330 Adding $xxx to the flags
7331 passed to $ld so that the perl executable will find the 
7332 installed shared $libperl.
7333
7334 EOM
7335                         ;;
7336                 esac
7337                 ;;
7338         esac
7339 fi
7340 # Fix ccdlflags in AIX for building external extensions.
7341 # (For building Perl itself bare -bE:perl.exp is needed,
7342 #  Makefile.SH takes care of this.)
7343 case "$osname" in
7344 aix) ccdlflags="$ccdlflags -bE:$installarchlib/CORE/perl.exp" ;;
7345 esac
7346 # Respect a hint or command-line value.
7347 case "$shrpenv" in
7348 '') shrpenv="$tmp_shrpenv" ;;
7349 esac
7350 case "$ldlibpthname" in
7351 '')     ldlibpthname=LD_LIBRARY_PATH ;;
7352 none)   ldlibpthname='' ;;
7353 esac
7354
7355 : determine where manual pages are on this system
7356 echo " "
7357 case "$sysman" in
7358 '') 
7359         syspath='/usr/man/man1 /usr/man/mann /usr/man/manl /usr/man/local/man1'
7360         syspath="$syspath /usr/man/u_man/man1 /usr/share/man/man1"
7361         syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
7362         syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
7363         syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
7364         sysman=`./loc . /usr/man/man1 $syspath`
7365         ;;
7366 esac
7367 if $test -d "$sysman"; then
7368         echo "System manual is in $sysman." >&4
7369 else
7370         echo "Could not find manual pages in source form." >&4
7371 fi
7372
7373 : determine where manual pages go
7374 set man1dir man1dir none
7375 eval $prefixit
7376 $cat <<EOM
7377
7378 $spackage has manual pages available in source form.
7379 EOM
7380 case "$nroff" in
7381 nroff)
7382         echo "However, you don't have nroff, so they're probably useless to you."
7383         case "$man1dir" in
7384         '') man1dir="none";;
7385         esac;;
7386 esac
7387 echo "If you don't want the manual sources installed, answer 'none'."
7388 case "$man1dir" in
7389 ' ') dflt=none
7390         ;;
7391 '')
7392         lookpath="$prefixexp/man/man1 $prefixexp/man/l_man/man1"
7393         lookpath="$lookpath $prefixexp/man/p_man/man1"
7394         lookpath="$lookpath $prefixexp/man/u_man/man1"
7395         lookpath="$lookpath $prefixexp/man/man.1"
7396         case "$sysman" in
7397         */?_man*)       dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
7398         *)      dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
7399         esac
7400         set dflt
7401         eval $prefixup
7402         ;;
7403 *)  dflt="$man1dir"
7404         ;;
7405 esac
7406 echo " "
7407 fn=dn+~
7408 rp="Where do the main $spackage manual pages (source) go?"
7409 . ./getfile
7410 if $test "X$man1direxp" != "X$ansexp"; then
7411         installman1dir=''
7412 fi
7413 man1dir="$ans"
7414 man1direxp="$ansexp"
7415 case "$man1dir" in
7416 '')     man1dir=' '
7417         installman1dir='';;
7418 esac
7419
7420 : Change installation prefix, if necessary.
7421 if $test X"$prefix" != X"$installprefix"; then
7422         installman1dir=`echo $man1direxp | $sed "s#^$prefix#$installprefix#"`
7423 else
7424         installman1dir="$man1direxp"
7425 fi
7426
7427 : What suffix to use on installed man pages
7428
7429 case "$man1dir" in
7430 ' ')
7431         man1ext='0'
7432         ;;
7433 *)
7434         rp="What suffix should be used for the main $spackage man pages?"
7435         case "$man1ext" in
7436         '')     case "$man1dir" in
7437                 *1)  dflt=1 ;;
7438                 *1p) dflt=1p ;;
7439                 *1pm) dflt=1pm ;;
7440                 *l) dflt=l;;
7441                 *n) dflt=n;;
7442                 *o) dflt=o;;
7443                 *p) dflt=p;;
7444                 *C) dflt=C;;
7445                 *L) dflt=L;;
7446                 *L1) dflt=L1;;
7447                 *) dflt=1;;
7448                 esac
7449                 ;;
7450         *)      dflt="$man1ext";;
7451         esac
7452         . ./myread
7453         man1ext="$ans"
7454         ;;
7455 esac
7456
7457 : see if we can have long filenames
7458 echo " "
7459 first=123456789abcdef
7460 $rm -f $first
7461 if (echo hi >$first) 2>/dev/null; then
7462         if $test -f 123456789abcde; then
7463                 echo 'You cannot have filenames longer than 14 characters.  Sigh.' >&4
7464                 val="$undef"
7465         else
7466                 echo 'You can have filenames longer than 14 characters.'>&4
7467                 val="$define"
7468         fi
7469 else
7470         $cat <<'EOM'
7471 You can't have filenames longer than 14 chars.
7472 You can't even think about them!
7473 EOM
7474         val="$undef"
7475 fi 
7476 set d_flexfnam
7477 eval $setvar
7478 $rm -rf 123456789abcde*
7479
7480 : determine where library module manual pages go
7481 set man3dir man3dir none
7482 eval $prefixit
7483 $cat <<EOM
7484
7485 $spackage has manual pages for many of the library modules.
7486 EOM
7487
7488 case "$nroff" in
7489 nroff)
7490         $cat <<'EOM'
7491 However, you don't have nroff, so they're probably useless to you.
7492 EOM
7493         case "$man3dir" in
7494         '') man3dir="none";;
7495         esac;;
7496 esac
7497
7498 case "$d_flexfnam" in
7499 undef)
7500         $cat <<'EOM'
7501 However, your system can't handle the long file names like File::Basename.3. 
7502 EOM
7503         case "$man3dir" in
7504         '') man3dir="none";;
7505         esac;;
7506 esac
7507
7508 echo "If you don't want the manual sources installed, answer 'none'."
7509 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
7510 case "$man3dir" in
7511 '')     dflt=`echo "$man1dir" | $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'`
7512         if $test -d "$privlib/man/man3"; then
7513                 cat <<EOM >&4
7514
7515 WARNING:  Previous versions of perl installed man3 pages into
7516 $privlib/man/man3.  This version will suggest a 
7517 new default of $dflt.  
7518 EOM
7519                 tdflt=$dflt
7520                 dflt='n'
7521                 rp='Do you wish to preserve the old behavior?(y/n)'
7522                 . ./myread
7523                 case "$ans" in
7524                 y*) dflt="$privlib/man/man3" ;;
7525                 *)  dflt=$tdflt ;;
7526                 esac
7527     fi
7528         ;;
7529 *)      dflt="$man3dir" ;;
7530 esac
7531 case "$dflt" in
7532 ' ') dflt=none ;;
7533 esac
7534 echo " "
7535 fn=dn+~
7536 rp="Where do the $package library man pages (source) go?"
7537 . ./getfile
7538 man3dir="$ans"
7539 man3direxp="$ansexp"
7540 case "$man3dir" in
7541 '')     man3dir=' '
7542         installman3dir='';;
7543 esac
7544
7545 : Change installation prefix, if necessary.
7546 if $test X"$prefix" != X"$installprefix"; then
7547         installman3dir=`echo $man3direxp | $sed "s#^$prefix#$installprefix#"`
7548 else
7549         installman3dir="$man3direxp"
7550 fi
7551
7552 : What suffix to use on installed man pages
7553 case "$man3dir" in
7554 ' ')
7555         man3ext='0'
7556         ;;
7557 *)
7558         rp="What suffix should be used for the $package library man pages?"
7559         case "$man3ext" in
7560         '')     case "$man3dir" in
7561                 *3)  dflt=3 ;;
7562                 *3p) dflt=3p ;;
7563                 *3pm) dflt=3pm ;;
7564                 *l) dflt=l;;
7565                 *n) dflt=n;;
7566                 *o) dflt=o;;
7567                 *p) dflt=p;;
7568                 *C) dflt=C;;
7569                 *L) dflt=L;;
7570                 *L3) dflt=L3;;
7571                 *) dflt=3;;
7572                 esac
7573                 ;;
7574         *)      dflt="$man3ext";;
7575         esac
7576         . ./myread
7577         man3ext="$ans"
7578         ;;
7579 esac
7580
7581 : see if we have to deal with yellow pages, now NIS.
7582 if $test -d /usr/etc/yp || $test -d /etc/yp; then
7583         if $test -f /usr/etc/nibindd; then
7584                 echo " "
7585                 echo "I'm fairly confident you're on a NeXT."
7586                 echo " "
7587                 rp='Do you get the hosts file via NetInfo?'
7588                 dflt=y
7589                 case "$hostcat" in
7590                 nidump*) ;;
7591                 '') ;;
7592                 *) dflt=n;;
7593                 esac
7594                 . ./myread
7595                 case "$ans" in
7596                 y*) hostcat='nidump hosts .';;
7597                 *)      case "$hostcat" in
7598                         nidump*) hostcat='';;
7599                         esac
7600                         ;;
7601                 esac
7602         fi
7603         case "$hostcat" in
7604         nidump*) ;;
7605         *)
7606                 case "$hostcat" in
7607                 *ypcat*) dflt=y;;
7608                 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
7609                                 dflt=y
7610                         else
7611                                 dflt=n
7612                         fi;;
7613                 *) dflt=n;;
7614                 esac
7615                 echo " "
7616                 rp='Are you getting the hosts file via yellow pages?'
7617                 . ./myread
7618                 case "$ans" in
7619                 y*) hostcat='ypcat hosts';;
7620                 *) hostcat='cat /etc/hosts';;
7621                 esac
7622                 ;;
7623         esac
7624 fi
7625 case "$hostcat" in
7626 '') test -f /etc/hosts && hostcat='cat /etc/hosts';;
7627 esac
7628 case "$groupcat" in
7629 '') test -f /etc/group && groupcat='cat /etc/group';;
7630 esac
7631 case "$passcat" in
7632 '') test -f /etc/passwd && passcat='cat /etc/passwd';;
7633 esac
7634
7635 : now get the host name
7636 echo " "
7637 echo "Figuring out host name..." >&4
7638 case "$myhostname" in
7639 '') cont=true
7640         echo 'Maybe "hostname" will work...'
7641         if tans=`sh -c hostname 2>&1` ; then
7642                 myhostname=$tans
7643                 phostname=hostname
7644                 cont=''
7645         fi
7646         ;;
7647 *) cont='';;
7648 esac
7649 if $test "$cont"; then
7650         if ./xenix; then
7651                 echo 'Oh, dear.  Maybe "/etc/systemid" is the key...'
7652                 if tans=`cat /etc/systemid 2>&1` ; then
7653                         myhostname=$tans
7654                         phostname='cat /etc/systemid'
7655                         echo "Whadyaknow.  Xenix always was a bit strange..."
7656                         cont=''
7657                 fi
7658         elif $test -r /etc/systemid; then
7659                 echo "(What is a non-Xenix system doing with /etc/systemid?)"
7660         fi
7661 fi
7662 if $test "$cont"; then
7663         echo 'No, maybe "uuname -l" will work...'
7664         if tans=`sh -c 'uuname -l' 2>&1` ; then
7665                 myhostname=$tans
7666                 phostname='uuname -l'
7667         else
7668                 echo 'Strange.  Maybe "uname -n" will work...'
7669                 if tans=`sh -c 'uname -n' 2>&1` ; then
7670                         myhostname=$tans
7671                         phostname='uname -n'
7672                 else
7673                         echo 'Oh well, maybe I can mine it out of whoami.h...'
7674                         if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
7675                                 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
7676                                 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
7677                         else
7678                                 case "$myhostname" in
7679                                 '') echo "Does this machine have an identity crisis or something?"
7680                                         phostname='';;
7681                                 *)
7682                                         echo "Well, you said $myhostname before..."
7683                                         phostname='echo $myhostname';;
7684                                 esac
7685                         fi
7686                 fi
7687         fi
7688 fi
7689 : you do not want to know about this
7690 set $myhostname
7691 myhostname=$1
7692
7693 : verify guess
7694 if $test "$myhostname" ; then
7695         dflt=y
7696         rp='Your host name appears to be "'$myhostname'".'" Right?"
7697         . ./myread
7698         case "$ans" in
7699         y*) ;;
7700         *) myhostname='';;
7701         esac
7702 fi
7703
7704 : bad guess or no guess
7705 while $test "X$myhostname" = X ; do
7706         dflt=''
7707         rp="Please type the (one word) name of your host:"
7708         . ./myread
7709         myhostname="$ans"
7710 done
7711
7712 : translate upper to lower if necessary
7713 case "$myhostname" in
7714 *[A-Z]*)
7715         echo "(Normalizing case in your host name)"
7716         myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
7717         ;;
7718 esac
7719
7720 case "$myhostname" in
7721 *.*)
7722         dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
7723         myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
7724         echo "(Trimming domain name from host name--host name is now $myhostname)"
7725         ;;
7726 *) case "$mydomain" in
7727         '')
7728                 {
7729                         test "X$hostcat" = "Xypcat hosts" &&
7730                         ypmatch "$myhostname" hosts 2>/dev/null |\
7731                                 $sed -e 's/[     ]*#.*//; s/$/ /' > hosts && \
7732                         $test -s hosts
7733                 } || {
7734                         test "X$hostcat" != "X" &&
7735                         $hostcat | $sed -n -e "s/[       ]*#.*//; s/\$/ /
7736                                         /[       ]$myhostname[  . ]/p" > hosts
7737                 }
7738                 tmp_re="[       . ]"
7739                 if $test -f hosts; then
7740                         $test x`$awk "/[0-9].*[  ]$myhostname$tmp_re/ { sum++ }
7741                              END { print sum }" hosts` = x1 || tmp_re="[         ]"
7742                         dflt=.`$awk "/[0-9].*[   ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
7743                                 hosts | $sort | $uniq | \
7744                                 $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
7745                         case `$echo X$dflt` in
7746                         X*\ *)  echo "(Several hosts in the database matched hostname)"
7747                                 dflt=.
7748                                 ;;
7749                         X.) echo "(You do not have fully-qualified names in the hosts database)"
7750                                 ;;
7751                         esac
7752                 else
7753                         echo "(I cannot locate a hosts database anywhere)"
7754                         dflt=.
7755                 fi
7756                 case "$dflt" in
7757                 .)
7758                         tans=`./loc resolv.conf X /etc /usr/etc`
7759                         if $test -f "$tans"; then
7760                                 echo "(Attempting domain name extraction from $tans)"
7761                                 dflt=.`$sed -n -e 's/   / /g' \
7762                                   -e 's/^search  *\([^ ]*\).*/\1/p' $tans \
7763                                   | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
7764                                 case "$dflt" in
7765                                 .) dflt=.`$sed -n -e 's/        / /g' \
7766                                      -e 's/^domain  *\([^ ]*\).*/\1/p' $tans \
7767                                      | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
7768                                         ;;
7769                                 esac
7770                         fi
7771                         ;;
7772                 esac
7773                 case "$dflt" in
7774                 .) echo "(No help from resolv.conf either -- attempting clever guess)"
7775                         dflt=.`sh -c domainname 2>/dev/null`
7776                         case "$dflt" in
7777                         '') dflt='.';;
7778                         .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
7779                         esac
7780                         ;;
7781                 esac
7782                 case "$dflt$osname" in
7783                 .os390) echo "(Attempting domain name extraction from //'SYS1.TCPPARMS(TCPDATA)')"
7784                         dflt=.`awk '/^DOMAINORIGIN/ {print $2}' "//'SYS1.TCPPARMS(TCPDATA)'" 2>/dev/null`
7785                         ;;
7786                 esac
7787                 case "$dflt" in
7788                 .) echo "(Lost all hope -- silly guess then)"
7789                         dflt='.uucp'
7790                         ;;
7791                 esac
7792                 $rm -f hosts
7793                 ;;
7794         *) dflt="$mydomain";;
7795         esac;;
7796 esac
7797 echo " "
7798 rp="What is your domain name?"
7799 . ./myread
7800 tans="$ans"
7801 case "$ans" in
7802 '') ;;
7803 .*) ;;
7804 *) tans=".$tans";;
7805 esac
7806 mydomain="$tans"
7807
7808 : translate upper to lower if necessary
7809 case "$mydomain" in
7810 *[A-Z]*)
7811         echo "(Normalizing case in your domain name)"
7812         mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
7813         ;;
7814 esac
7815
7816 : a little sanity check here
7817 case "$phostname" in
7818 '') ;;
7819 *)
7820         case `$phostname | ./tr '[A-Z]' '[a-z]'` in
7821         $myhostname$mydomain|$myhostname) ;;
7822         *)
7823                 case "$phostname" in
7824                 sed*)
7825                         echo "(That doesn't agree with your whoami.h file, by the way.)"
7826                         ;;
7827                 *)
7828                         echo "(That doesn't agree with your $phostname command, by the way.)"
7829                         ;;
7830                 esac
7831         ;;
7832         esac
7833         ;;
7834 esac
7835
7836 $cat <<EOM
7837
7838 I need to get your e-mail address in Internet format if possible, i.e.
7839 something like user@host.domain. Please answer accurately since I have
7840 no easy means to double check it. The default value provided below
7841 is most probably close to reality but may not be valid from outside
7842 your organization...
7843
7844 EOM
7845 cont=x
7846 while test "$cont"; do
7847         case "$cf_email" in
7848         '') dflt="$cf_by@$myhostname$mydomain";;
7849         *) dflt="$cf_email";;
7850         esac
7851         rp='What is your e-mail address?'
7852         . ./myread
7853         cf_email="$ans"
7854         case "$cf_email" in
7855         *@*.*) cont='' ;;
7856         *)
7857                 rp='Address does not look like an Internet one.  Use it anyway?'
7858                 case "$fastread" in
7859                 yes) dflt=y ;;
7860                 *) dflt=n ;;
7861                 esac
7862                 . ./myread
7863                 case "$ans" in
7864                 y*) cont='' ;;
7865                 *) echo " " ;;
7866                 esac
7867                 ;;
7868         esac
7869 done
7870
7871 $cat <<EOM
7872
7873 If you or somebody else will be maintaining perl at your site, please
7874 fill in the correct e-mail address here so that they may be contacted
7875 if necessary. Currently, the "perlbug" program included with perl
7876 will send mail to this address in addition to perlbug@perl.org. You may
7877 enter "none" for no administrator.
7878
7879 EOM
7880 case "$perladmin" in
7881 '') dflt="$cf_email";;
7882 *) dflt="$perladmin";;
7883 esac
7884 rp='Perl administrator e-mail address'
7885 . ./myread
7886 perladmin="$ans"
7887
7888 : determine whether to only install version-specific parts.
7889 echo " "
7890 $cat <<EOM
7891 Do you want to install only the version-specific parts of the perl
7892 distribution?  Usually you do *not* want to do this.
7893 EOM
7894 case "$versiononly" in
7895 "$define"|[Yy]*|true) dflt='y' ;;
7896 *) dflt='n';
7897 esac
7898 rp="Do you want to install only the version-specific parts of perl?"
7899 . ./myread
7900 case "$ans" in
7901 [yY]*)  val="$define";;
7902 *)      val="$undef" ;;
7903 esac
7904 set versiononly
7905 eval $setvar
7906
7907 : figure out how to guarantee perl startup
7908 case "$startperl" in
7909 '')
7910         case "$sharpbang" in
7911         *!)
7912                 $cat <<EOH
7913
7914 I can use the #! construct to start perl on your system. This will
7915 make startup of perl scripts faster, but may cause problems if you
7916 want to share those scripts and perl is not in a standard place
7917 ($binexp/perl) on all your platforms. The alternative is to force
7918 a shell by starting the script with a single ':' character.
7919
7920 EOH
7921                 case "$versiononly" in
7922                 "$define")      dflt="$binexp/perl$version";;  
7923                 *)              dflt="$binexp/perl";;
7924                 esac
7925                 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
7926                 . ./myread
7927                 case "$ans" in
7928                 none)   startperl=": # use perl";;
7929                 *)      startperl="#!$ans"
7930                         if $test 30 -lt `echo "$ans" | wc -c`; then
7931                                 $cat >&4 <<EOM
7932
7933 WARNING:  Some systems limit the #! command to 32 characters.
7934 If you experience difficulty running Perl scripts with #!, try
7935 installing Perl in a directory with a shorter pathname.
7936
7937 EOM
7938                         fi ;;
7939                 esac
7940                 ;;
7941         *) startperl=": # use perl"
7942                 ;;
7943         esac
7944         ;;
7945 esac
7946 echo "I'll use $startperl to start perl scripts."
7947
7948 : figure best path for perl in scripts
7949 case "$perlpath" in
7950 '')
7951         perlpath="$binexp/perl"
7952         case "$startperl" in
7953         *!*) ;;
7954         *)
7955                 $cat <<EOH
7956
7957 I will use the "eval 'exec'" idiom to start Perl on your system.
7958 I can use the full path of your Perl binary for this purpose, but
7959 doing so may cause problems if you want to share those scripts and
7960 Perl is not always in a standard place ($binexp/perl).
7961
7962 EOH
7963                 dflt="$binexp/perl"
7964                 rp="What path shall I use in \"eval 'exec'\"?"
7965                 . ./myread
7966                 perlpath="$ans"
7967                 ;;
7968         esac
7969         ;;
7970 esac
7971 case "$startperl" in
7972 *!*)    ;;
7973 *)      echo "I'll use $perlpath in \"eval 'exec'\"" ;;
7974 esac
7975
7976 : determine where public executable scripts go
7977 set scriptdir scriptdir
7978 eval $prefixit
7979 case "$scriptdir" in
7980 '')
7981         dflt="$bin"
7982         : guess some guesses
7983         $test -d /usr/share/scripts && dflt=/usr/share/scripts
7984         $test -d /usr/share/bin     && dflt=/usr/share/bin
7985         $test -d /usr/local/script  && dflt=/usr/local/script
7986         $test -d /usr/local/scripts && dflt=/usr/local/scripts
7987         $test -d $prefixexp/script  && dflt=$prefixexp/script
7988         set dflt
7989         eval $prefixup
7990         ;;
7991 *)  dflt="$scriptdir"
7992         ;;
7993 esac
7994 $cat <<EOM
7995  
7996 Some installations have a separate directory just for executable scripts so
7997 that they can mount it across multiple architectures but keep the scripts in
7998 one spot.  You might, for example, have a subdirectory of /usr/share for this.
7999 Or you might just lump your scripts in with all your other executables.
8000  
8001 EOM
8002 fn=d~
8003 rp='Where do you keep publicly executable scripts?'
8004 . ./getfile
8005 if $test "X$ansexp" != "X$scriptdirexp"; then
8006         installscript=''
8007 fi
8008 scriptdir="$ans"
8009 scriptdirexp="$ansexp"
8010 : Change installation prefix, if necessary.
8011 if $test X"$prefix" != X"$installprefix"; then
8012         installscript=`echo $scriptdirexp | sed "s#^$prefix#$installprefix#"`
8013 else
8014         installscript="$scriptdirexp"
8015 fi
8016
8017 : determine where add-on public executables go
8018 case "$sitebin" in
8019 '')     dflt=$siteprefix/bin ;;
8020 *)      dflt=$sitebin ;;
8021 esac
8022 fn=d~
8023 rp='Pathname where the add-on public executables should be installed?'
8024 . ./getfile
8025 sitebin="$ans"
8026 sitebinexp="$ansexp"
8027 : Change installation prefix, if necessary.
8028 if $test X"$prefix" != X"$installprefix"; then
8029         installsitebin=`echo $sitebinexp | sed "s#^$prefix#$installprefix#"`
8030 else
8031         installsitebin="$sitebinexp"
8032 fi
8033
8034 : define an is-a-typedef? function
8035 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
8036 case "$inclist" in
8037 "") inclist="sys/types.h";;
8038 esac;
8039 eval "varval=\$$var";
8040 case "$varval" in
8041 "")
8042         $rm -f temp.c;
8043         for inc in $inclist; do
8044                 echo "#include <$inc>" >>temp.c;
8045         done;
8046         echo "#ifdef $type" >> temp.c;
8047         echo "printf(\"We have $type\");" >> temp.c;
8048         echo "#endif" >> temp.c;
8049         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
8050         if $contains $type temp.E >/dev/null 2>&1; then
8051                 eval "$var=\$type";
8052         else
8053                 eval "$var=\$def";
8054         fi;
8055         $rm -f temp.?;;
8056 *) eval "$var=\$varval";;
8057 esac'
8058
8059 : define an is-a-typedef? function that prompts if the type is not available.
8060 typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
8061 case "$inclist" in
8062 "") inclist="sys/types.h";;
8063 esac;
8064 eval "varval=\$$var";
8065 case "$varval" in
8066 "")
8067         $rm -f temp.c;
8068         for inc in $inclist; do
8069                 echo "#include <$inc>" >>temp.c;
8070         done;
8071         echo "#ifdef $type" >> temp.c;
8072         echo "printf(\"We have $type\");" >> temp.c;
8073         echo "#endif" >> temp.c;
8074         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
8075         echo " " ;
8076         echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
8077         if $contains $type temp.E >/dev/null 2>&1; then
8078                 echo "$type found." >&4;
8079                 eval "$var=\$type";
8080         else
8081                 echo "$type NOT found." >&4;
8082                 dflt="$def";
8083                 . ./myread ;
8084                 eval "$var=\$ans";
8085         fi;
8086         $rm -f temp.?;;
8087 *) eval "$var=\$varval";;
8088 esac'
8089
8090 : see what type lseek is declared as in the kernel
8091 rp="What is the type used for lseek's offset on this system?"
8092 set off_t lseektype long stdio.h sys/types.h
8093 eval $typedef_ask
8094
8095 echo " "
8096 echo "Checking to see how big your file offsets are..." >&4
8097 $cat >try.c <<EOCP
8098 #include <sys/types.h>
8099 #include <stdio.h>
8100 int main()
8101 {
8102     printf("%d\n", (int)sizeof($lseektype));
8103     return(0); 
8104 }
8105 EOCP
8106 set try
8107 if eval $compile_ok; then
8108         lseeksize=`$run ./try`
8109         echo "Your file offsets are $lseeksize bytes long."
8110 else
8111         dflt=$longsize
8112         echo " "
8113         echo "(I can't seem to compile the test program.  Guessing...)"
8114         rp="What is the size of your file offsets (in bytes)?"
8115         . ./myread
8116         lseeksize="$ans"
8117 fi
8118 $rm -f try.c try
8119
8120 : see what type file positions are declared as in the library
8121 rp="What is the type for file position used by fsetpos()?"
8122 set fpos_t fpostype long stdio.h sys/types.h
8123 eval $typedef_ask
8124
8125 echo " "
8126 case "$fpostype" in
8127 *_t) zzz="$fpostype"    ;;
8128 *)   zzz="fpos_t"       ;;
8129 esac
8130 echo "Checking the size of $zzz..." >&4 
8131 cat > try.c <<EOCP
8132 #include <sys/types.h>
8133 #include <stdio.h>
8134 int main() {
8135     printf("%d\n", (int)sizeof($fpostype));
8136     exit(0);
8137 }
8138 EOCP
8139 set try
8140 if eval $compile_ok; then
8141         yyy=`$run ./try`
8142         case "$yyy" in
8143         '')     fpossize=4
8144                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
8145                 ;;
8146         *)      fpossize=$yyy
8147                 echo "Your $zzz is $fpossize bytes long."
8148                 ;;
8149         esac
8150 else
8151         dflt="$longsize"
8152         echo " " >&4
8153         echo "(I can't compile the test program.  Guessing...)" >&4
8154         rp="What is the size of your file positions (in bytes)?"
8155         . ./myread
8156         fpossize="$ans"
8157 fi
8158
8159
8160
8161 # Backward compatibility (uselfs is deprecated).
8162 case "$uselfs" in
8163 "$define"|true|[yY]*)
8164         cat <<EOM >&4
8165
8166 *** Configure -Duselfs is deprecated, using -Duselargefiles instead.
8167 EOM
8168         uselargefiles="$define"
8169         ;;
8170 esac                          
8171
8172 case "$lseeksize:$fpossize" in
8173 8:8) cat <<EOM
8174
8175 You can have files larger than 2 gigabytes.
8176 EOM
8177    val="$define" ;;
8178 *)    case "$uselargefiles" in
8179    "$undef"|false|[nN]*) dflt='n' ;;
8180    *)   dflt='y' ;;
8181    esac
8182    cat <<EOM
8183
8184 Perl can be built to understand large files (files larger than 2 gigabytes)
8185 on some systems.  To do so, Configure can be run with -Duselargefiles.
8186
8187 If this doesn't make any sense to you, just accept the default '$dflt'.
8188 EOM
8189    rp='Try to understand large files, if available?'
8190    . ./myread
8191    case "$ans" in
8192    y|Y)         val="$define" ;;
8193    *)           val="$undef"  ;;
8194    esac
8195    ;;
8196 esac
8197 set uselargefiles
8198 eval $setvar
8199 case "$uselargefiles" in
8200 "$define")
8201 : Look for a hint-file generated 'call-back-unit'.  If the
8202 : user has specified that a large files perl is to be built,
8203 : we may need to set or change some other defaults.
8204         if $test -f uselargefiles.cbu; then
8205                 echo "Your platform has some specific hints for large file builds, using them..."
8206                 . ./uselargefiles.cbu
8207                 echo " "
8208                 echo "Rechecking to see how big your file offsets are..." >&4
8209                 $cat >try.c <<EOCP
8210 #include <sys/types.h>
8211 #include <stdio.h>
8212 int main()
8213 {
8214     printf("%d\n", (int)sizeof($lseektype));
8215     return(0); 
8216 }
8217 EOCP
8218                 set try
8219                 if eval $compile_ok; then
8220                         lseeksize=`$run ./try`
8221                         $echo "Your file offsets are now $lseeksize bytes long."
8222                 else
8223                         dflt="$lseeksize"
8224                         echo " "
8225                         echo "(I can't seem to compile the test program.  Guessing...)"
8226                         rp="What is the size of your file offsets (in bytes)?"
8227                         . ./myread
8228                         lseeksize="$ans"
8229                 fi
8230                 case "$fpostype" in
8231                 *_t) zzz="$fpostype"    ;;
8232                 *)   zzz="fpos_t"       ;;
8233                 esac
8234                 $echo $n "Rechecking the size of $zzz...$c" >&4 
8235                 $cat > try.c <<EOCP
8236 #include <sys/types.h>
8237 #include <stdio.h>
8238 int main() {
8239     printf("%d\n", (int)sizeof($fpostype));
8240     exit(0);
8241 }
8242 EOCP
8243                 set try
8244                 if eval $compile_ok; then
8245                         yyy=`$run ./try`
8246                         dflt="$lseeksize"
8247                         case "$yyy" in
8248                         '')     echo " "
8249                                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
8250                                 ;;
8251                         *)      fpossize=$yyy
8252                                 echo " $fpossize bytes." >&4
8253                                 ;;
8254                         esac
8255                 else
8256                         dflt="$fpossize"
8257                         echo " "
8258                         echo "(I can't compile the test program.  Guessing...)" >&4
8259                         rp="What is the size of your file positions (in bytes)?"
8260                         . ./myread
8261                         fpossize="$ans"
8262                 fi
8263                 $rm -f try.c try
8264         fi
8265         ;;
8266 esac
8267
8268 case "$vendorprefix" in
8269 '')     d_vendorbin="$undef"
8270         vendorbin=''
8271         vendorbinexp=''
8272         ;;
8273 *)      d_vendorbin="$define"
8274         : determine where vendor-supplied executables go.
8275         case "$vendorbin" in
8276         '') dflt=$vendorprefix/bin ;;
8277         *)      dflt="$vendorbin" ;;
8278         esac
8279         fn=d~+
8280         rp='Pathname for the vendor-supplied executables directory?'
8281         . ./getfile
8282         vendorbin="$ans"
8283         vendorbinexp="$ansexp"
8284         ;;
8285 esac
8286 : Change installation prefix, if necessary.
8287 if $test X"$prefix" != X"$installprefix"; then
8288         installvendorbin=`echo $vendorbinexp | $sed "s#^$prefix#$installprefix#"`
8289 else
8290         installvendorbin="$vendorbinexp"
8291 fi
8292
8293 : see if qgcvt exists
8294 set qgcvt d_qgcvt
8295 eval $inlibc
8296
8297 echo " "
8298
8299 if $test X"$d_longdbl" = X"$define"; then
8300
8301 echo "Checking how to print long doubles..." >&4
8302
8303 if $test X"$sPRIfldbl" = X -a X"$doublesize" = X"$longdblsize"; then
8304         $cat >try.c <<'EOCP'
8305 #include <sys/types.h>
8306 #include <stdio.h>
8307 int main() {
8308   double d = 123.456;
8309   printf("%.3f\n", d);
8310 }
8311 EOCP
8312         set try
8313         if eval $compile; then
8314                 yyy=`$run ./try`
8315                 case "$yyy" in
8316                 123.456)
8317                         sPRIfldbl='"f"'; sPRIgldbl='"g"'; sPRIeldbl='"e"';
8318                         sPRIFUldbl='"F"'; sPRIGUldbl='"G"'; sPRIEUldbl='"E"';
8319                         echo "We will use %f."
8320                         ;;
8321                 esac
8322         fi
8323 fi
8324
8325 if $test X"$sPRIfldbl" = X; then
8326         $cat >try.c <<'EOCP'
8327 #include <sys/types.h>
8328 #include <stdio.h>
8329 int main() {
8330   long double d = 123.456;
8331   printf("%.3Lf\n", d);
8332 }
8333 EOCP
8334         set try
8335         if eval $compile; then
8336                 yyy=`$run ./try`
8337                 case "$yyy" in
8338                 123.456)
8339                         sPRIfldbl='"Lf"'; sPRIgldbl='"Lg"'; sPRIeldbl='"Le"';
8340                         sPRIFUldbl='"LF"'; sPRIGUldbl='"LG"'; sPRIEUldbl='"LE"';
8341                         echo "We will use %Lf."
8342                         ;;
8343                 esac
8344         fi
8345 fi
8346
8347 if $test X"$sPRIfldbl" = X; then
8348         $cat >try.c <<'EOCP'
8349 #include <sys/types.h>
8350 #include <stdio.h>
8351 int main() {
8352   long double d = 123.456;
8353   printf("%.3llf\n", d);
8354 }
8355 EOCP
8356         set try
8357         if eval $compile; then
8358                 yyy=`$run ./try`
8359                 case "$yyy" in
8360                 123.456)
8361                         sPRIfldbl='"llf"'; sPRIgldbl='"llg"'; sPRIeldbl='"lle"';
8362                         sPRIFUldbl='"llF"'; sPRIGUldbl='"llG"'; sPRIEUldbl='"llE"';
8363                         echo "We will use %llf."
8364                         ;;
8365                 esac
8366         fi
8367 fi
8368
8369 if $test X"$sPRIfldbl" = X; then
8370         $cat >try.c <<'EOCP'
8371 #include <sys/types.h>
8372 #include <stdio.h>
8373 int main() {
8374   long double d = 123.456;
8375   printf("%.3lf\n", d);
8376 }
8377 EOCP
8378         set try
8379         if eval $compile; then
8380                 yyy=`$run ./try`
8381                 case "$yyy" in
8382                 123.456)
8383                         sPRIfldbl='"lf"'; sPRIgldbl='"lg"'; sPRIeldbl='"le"';
8384                         sPRIFUldbl='"lF"'; sPRIGUldbl='"lG"'; sPRIEUldbl='"lE"';
8385                         echo "We will use %lf."
8386                         ;;
8387                 esac
8388         fi
8389 fi
8390
8391 if $test X"$sPRIfldbl" = X; then
8392         echo "Cannot figure out how to print long doubles." >&4
8393 else
8394         sSCNfldbl=$sPRIfldbl    # expect consistency
8395 fi
8396
8397 $rm -f try try.*
8398
8399 fi # d_longdbl
8400
8401 case "$sPRIfldbl" in
8402 '')     d_PRIfldbl="$undef"; d_PRIgldbl="$undef"; d_PRIeldbl="$undef"; 
8403         d_PRIFUldbl="$undef"; d_PRIGUldbl="$undef"; d_PRIEUldbl="$undef"; 
8404         d_SCNfldbl="$undef";
8405         ;;
8406 *)      d_PRIfldbl="$define"; d_PRIgldbl="$define"; d_PRIeldbl="$define"; 
8407         d_PRIFUldbl="$define"; d_PRIGUldbl="$define"; d_PRIEUldbl="$define"; 
8408         d_SCNfldbl="$define";
8409         ;;
8410 esac
8411
8412 : Check how to convert floats to strings.
8413 echo " "
8414 echo "Checking for an efficient way to convert floats to strings."
8415 echo " " > try.c
8416 case "$uselongdouble" in
8417 "$define") echo "#define USE_LONG_DOUBLE" >>try.c ;;
8418 esac
8419 case "$d_longdbl" in
8420 "$define") echo "#define HAS_LONG_DOUBLE" >>try.c ;;
8421 esac
8422 case "$d_PRIgldbl" in
8423 "$define") echo "#define HAS_PRIgldbl"    >>try.c ;;
8424 esac
8425 $cat >>try.c <<EOP
8426 #ifdef TRY_gconvert
8427 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
8428 char *myname = "gconvert";
8429 #endif
8430 #ifdef TRY_gcvt
8431 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
8432 char *myname = "gcvt";
8433 #endif
8434 #ifdef TRY_qgcvt
8435 #define Gconvert(x,n,t,b) qgcvt((x),(n),(b))
8436 char *myname = "qgcvt";
8437 #define DOUBLETYPE long double
8438 #endif
8439 #ifdef TRY_sprintf
8440 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE) && defined(HAS_PRIgldbl)
8441 #define Gconvert(x,n,t,b) sprintf((b),"%.*"$sPRIgldbl,(n),(x))
8442 #else
8443 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
8444 #endif
8445 char *myname = "sprintf";
8446 #endif
8447
8448 #ifndef DOUBLETYPE
8449 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
8450 #define DOUBLETYPE long double
8451 #else
8452 #define DOUBLETYPE double
8453 #endif
8454 #endif
8455
8456 #include <stdio.h>
8457
8458 #define I_STDLIB $i_stdlib
8459 #ifdef I_STDLIB
8460 #include <stdlib.h>
8461 #endif
8462
8463 int
8464 checkit(expect, got)
8465 char *expect;
8466 char *got;
8467 {
8468     if (strcmp(expect, got)) {
8469                 printf("%s oddity:  Expected %s, got %s\n",
8470                         myname, expect, got);
8471                 exit(1);
8472         }
8473 }
8474
8475 int main()
8476
8477         char buf[64]; 
8478         buf[63] = '\0';
8479
8480         /* This must be 1st test on (which?) platform */
8481         /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
8482         Gconvert((DOUBLETYPE)0.1, 8, 0, buf);
8483         checkit("0.1", buf);
8484
8485         Gconvert((DOUBLETYPE)1.0, 8, 0, buf); 
8486         checkit("1", buf);
8487
8488         Gconvert((DOUBLETYPE)1.1, 8, 0, buf); 
8489         checkit("1.1", buf);
8490
8491         Gconvert((DOUBLETYPE)1.01, 8, 0, buf); 
8492         checkit("1.01", buf);
8493
8494         Gconvert((DOUBLETYPE)1.001, 8, 0, buf); 
8495         checkit("1.001", buf);
8496
8497         Gconvert((DOUBLETYPE)1.0001, 8, 0, buf); 
8498         checkit("1.0001", buf);
8499
8500         Gconvert((DOUBLETYPE)1.00001, 8, 0, buf); 
8501         checkit("1.00001", buf);
8502
8503         Gconvert((DOUBLETYPE)1.000001, 8, 0, buf); 
8504         checkit("1.000001", buf);
8505
8506         Gconvert((DOUBLETYPE)0.0, 8, 0, buf); 
8507         checkit("0", buf);
8508
8509         Gconvert((DOUBLETYPE)-1.0, 8, 0, buf); 
8510         checkit("-1", buf);
8511
8512         /* Some Linux gcvt's give 1.e+5 here. */
8513         Gconvert((DOUBLETYPE)100000.0, 8, 0, buf); 
8514         checkit("100000", buf);
8515         
8516         /* Some Linux gcvt's give -1.e+5 here. */
8517         Gconvert((DOUBLETYPE)-100000.0, 8, 0, buf); 
8518         checkit("-100000", buf);
8519
8520         Gconvert((DOUBLETYPE)123.456, 8, 0, buf); 
8521         checkit("123.456", buf);
8522
8523         /* Testing of 1e+129 in bigintpm.t must not get extra '.' here. */
8524         Gconvert((DOUBLETYPE)1e30, 8, 0, buf);
8525         if (strlen(buf) > 5)
8526             checkit("1e+030", buf); /* for Microsoft */
8527         else
8528             checkit("1e+30", buf);
8529
8530         exit(0);
8531 }
8532 EOP
8533 case "$d_Gconvert" in
8534 gconvert*) xxx_list='gconvert gcvt sprintf' ;;
8535 gcvt*) xxx_list='gcvt gconvert sprintf' ;;
8536 sprintf*) xxx_list='sprintf gconvert gcvt' ;;
8537 *) xxx_list='gconvert gcvt sprintf' ;;
8538 esac
8539
8540 case "$d_longdbl$uselongdouble$d_PRIgldbl" in
8541 "$define$define$define")
8542     # for long doubles prefer first qgcvt, then sprintf
8543     xxx_list="`echo $xxx_list|sed s/sprintf//`" 
8544     xxx_list="sprintf $xxx_list"
8545     case "$d_qgcvt" in
8546     "$define") xxx_list="qgcvt $xxx_list" ;;
8547     esac
8548     ;;
8549 esac
8550
8551 for xxx_convert in $xxx_list; do
8552         echo "Trying $xxx_convert..."
8553         $rm -f try try$_o
8554         set try -DTRY_$xxx_convert
8555         if eval $compile; then
8556                 echo "$xxx_convert() found." >&4
8557                 if $run ./try; then
8558                         echo "I'll use $xxx_convert to convert floats into a string." >&4
8559                         break;
8560                 else
8561                         echo "...But $xxx_convert didn't work as I expected."
8562                 fi
8563         else
8564                 echo "$xxx_convert NOT found." >&4
8565         fi
8566 done
8567         
8568 case "$xxx_convert" in
8569 gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
8570 gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
8571 qgcvt) d_Gconvert='qgcvt((x),(n),(b))' ;;
8572 *) case "$uselongdouble$d_longdbl$d_PRIgldbl" in
8573    "$define$define$define")
8574       d_Gconvert="sprintf((b),\"%.*\"$sPRIgldbl,(n),(x))" ;;
8575    *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
8576    esac
8577    ;;  
8578 esac
8579
8580 : see if _fwalk exists
8581 set fwalk d__fwalk
8582 eval $inlibc
8583
8584 : Initialize h_fcntl
8585 h_fcntl=false
8586
8587 : Initialize h_sysfile
8588 h_sysfile=false
8589
8590 : access call always available on UNIX
8591 set access d_access
8592 eval $inlibc
8593
8594 : locate the flags for 'access()'
8595 case "$d_access" in
8596 "$define")
8597         echo " "
8598         $cat >access.c <<'EOCP'
8599 #include <sys/types.h>
8600 #ifdef I_FCNTL
8601 #include <fcntl.h>
8602 #endif
8603 #ifdef I_SYS_FILE
8604 #include <sys/file.h>
8605 #endif
8606 #ifdef I_UNISTD
8607 #include <unistd.h>
8608 #endif
8609 int main() {
8610         exit(R_OK);
8611 }
8612 EOCP
8613         : check sys/file.h first, no particular reason here
8614         if $test `./findhdr sys/file.h` && \
8615                 $cc -o access $cppflags -DI_SYS_FILE access.c >/dev/null 2>&1 ; then
8616                 h_sysfile=true;
8617                 echo "<sys/file.h> defines the *_OK access constants." >&4
8618         elif $test `./findhdr fcntl.h` && \
8619                 $cc -o access $cppflags -DI_FCNTL access.c >/dev/null 2>&1 ; then
8620                 h_fcntl=true;
8621                 echo "<fcntl.h> defines the *_OK access constants." >&4
8622         elif $test `./findhdr unistd.h` && \
8623                 $cc -o access $cppflags -DI_UNISTD access.c >/dev/null 2>&1 ; then
8624                 echo "<unistd.h> defines the *_OK access constants." >&4
8625         else
8626                 echo "I can't find the four *_OK access constants--I'll use mine." >&4
8627         fi
8628         ;;
8629 esac
8630 $rm -f access*
8631
8632 : see if accessx exists
8633 set accessx d_accessx
8634 eval $inlibc
8635
8636 : see if alarm exists
8637 set alarm d_alarm
8638 eval $inlibc
8639
8640 : see if atolf exists
8641 set atolf d_atolf
8642 eval $inlibc
8643
8644 : see if atoll exists
8645 set atoll d_atoll
8646 eval $inlibc
8647
8648 : Look for GNU-cc style attribute checking
8649 echo " "
8650 echo "Checking whether your compiler can handle __attribute__ ..." >&4
8651 $cat >attrib.c <<'EOCP'
8652 #include <stdio.h>
8653 void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn));
8654 EOCP
8655 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
8656         if $contains 'warning' attrib.out >/dev/null 2>&1; then
8657                 echo "Your C compiler doesn't fully support __attribute__."
8658                 val="$undef"
8659         else
8660                 echo "Your C compiler supports __attribute__."
8661                 val="$define"
8662         fi
8663 else
8664         echo "Your C compiler doesn't seem to understand __attribute__ at all."
8665         val="$undef"
8666 fi
8667 set d_attribut
8668 eval $setvar
8669 $rm -f attrib*
8670
8671 : see if bcmp exists
8672 set bcmp d_bcmp
8673 eval $inlibc
8674
8675 : see if bcopy exists
8676 set bcopy d_bcopy
8677 eval $inlibc
8678
8679 : see if this is a unistd.h system
8680 set unistd.h i_unistd
8681 eval $inhdr
8682
8683 : see if getpgrp exists
8684 set getpgrp d_getpgrp
8685 eval $inlibc
8686
8687 case "$d_getpgrp" in
8688 "$define")
8689         echo " "
8690         echo "Checking to see which flavor of getpgrp is in use..."
8691         $cat >try.c <<EOP
8692 #$i_unistd I_UNISTD
8693 #include <sys/types.h>
8694 #ifdef I_UNISTD
8695 #  include <unistd.h>
8696 #endif
8697 int main()
8698 {
8699         if (getuid() == 0) {
8700                 printf("(I see you are running Configure as super-user...)\n");
8701                 setuid(1);
8702         }
8703 #ifdef TRY_BSD_PGRP
8704         if (getpgrp(1) == 0)
8705                 exit(0);
8706 #else
8707         if (getpgrp() > 0)
8708                 exit(0);
8709 #endif
8710         exit(1);
8711 }
8712 EOP
8713         if $cc -o try -DTRY_BSD_PGRP $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
8714                 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
8715                 val="$define"
8716         elif $cc -o try $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
8717                 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
8718                 val="$undef"
8719         else
8720                 echo "I can't seem to compile and run the test program."
8721                 if ./usg; then
8722                         xxx="a USG one, i.e. you use getpgrp()."
8723                 else
8724                         # SVR4 systems can appear rather BSD-ish.
8725                         case "$i_unistd" in
8726                         $undef)
8727                                 xxx="a BSD one, i.e. you use getpgrp(pid)."
8728                                 val="$define"
8729                                 ;;
8730                         $define)
8731                                 xxx="probably a USG one, i.e. you use getpgrp()."
8732                                 val="$undef"
8733                                 ;;
8734                         esac
8735                 fi
8736                 echo "Assuming your getpgrp is $xxx" >&4
8737         fi
8738         ;;
8739 *) val="$undef";;
8740 esac
8741 set d_bsdgetpgrp
8742 eval $setvar
8743 $rm -f try try.*
8744
8745 : see if setpgrp exists
8746 set setpgrp d_setpgrp
8747 eval $inlibc
8748
8749 case "$d_setpgrp" in
8750 "$define")
8751         echo " "
8752         echo "Checking to see which flavor of setpgrp is in use..."
8753         $cat >try.c <<EOP
8754 #$i_unistd I_UNISTD
8755 #include <sys/types.h>
8756 #ifdef I_UNISTD
8757 #  include <unistd.h>
8758 #endif
8759 int main()
8760 {
8761         if (getuid() == 0) {
8762                 printf("(I see you are running Configure as super-user...)\n");
8763                 setuid(1);
8764         }
8765 #ifdef TRY_BSD_PGRP
8766         if (-1 == setpgrp(1, 1))
8767                 exit(0);
8768 #else
8769         if (setpgrp() != -1)
8770                 exit(0);
8771 #endif
8772         exit(1);
8773 }
8774 EOP
8775         if $cc -o try -DTRY_BSD_PGRP $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
8776                 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
8777                 val="$define"
8778         elif $cc -o try $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
8779                 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
8780                 val="$undef"
8781         else
8782                 echo "(I can't seem to compile and run the test program.)"
8783                 if ./usg; then
8784                         xxx="a USG one, i.e. you use setpgrp()."
8785                 else
8786                         # SVR4 systems can appear rather BSD-ish.
8787                         case "$i_unistd" in
8788                         $undef)
8789                                 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
8790                                 val="$define"
8791                                 ;;
8792                         $define)
8793                                 xxx="probably a USG one, i.e. you use setpgrp()."
8794                                 val="$undef"
8795                                 ;;
8796                         esac
8797                 fi
8798                 echo "Assuming your setpgrp is $xxx" >&4
8799         fi
8800         ;;
8801 *) val="$undef";;
8802 esac
8803 set d_bsdsetpgrp
8804 eval $setvar
8805 $rm -f try try.*
8806 : see if bzero exists
8807 set bzero d_bzero
8808 eval $inlibc
8809
8810 : see if signal is declared as pointer to function returning int or void
8811 echo " "
8812 xxx=`./findhdr signal.h`
8813 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
8814 if $contains 'int.*\*[  ]*signal' $$.tmp >/dev/null 2>&1 ; then
8815         echo "You have int (*signal())() instead of void." >&4
8816         val="$undef"
8817 elif $contains 'void.*\*[       ]*signal' $$.tmp >/dev/null 2>&1 ; then
8818         echo "You have void (*signal())()." >&4
8819         val="$define"
8820 elif $contains 'extern[         ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
8821         echo "You have int (*signal())() instead of void." >&4
8822         val="$undef"
8823 elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
8824         echo "You have void (*signal())()." >&4
8825         val="$define"
8826 else
8827         case "$d_voidsig" in
8828         '')
8829         echo "I can't determine whether signal handler returns void or int..." >&4
8830                 dflt=void
8831                 rp="What type does your signal handler return?"
8832                 . ./myread
8833                 case "$ans" in
8834                 v*) val="$define";;
8835                 *) val="$undef";;
8836                 esac;;
8837         "$define")
8838                 echo "As you already told me, signal handler returns void." >&4
8839                 val="$define"
8840                 ;;
8841         *)      echo "As you already told me, signal handler returns int." >&4
8842                 val="$undef"
8843                 ;;
8844         esac
8845 fi
8846 set d_voidsig
8847 eval $setvar
8848 case "$d_voidsig" in
8849 "$define") signal_t="void";;
8850 *) signal_t="int";;
8851 esac
8852 $rm -f $$.tmp
8853
8854 : check for ability to cast large floats to 32-bit ints.
8855 echo " "
8856 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
8857 if $test "$intsize" -ge 4; then
8858         xxx=int
8859 else
8860         xxx=long
8861 fi
8862 $cat >try.c <<EOCP
8863 #include <stdio.h>
8864 #include <sys/types.h>
8865 #include <signal.h>
8866 $signal_t blech(s) int s; { exit(3); }
8867 int main()
8868 {
8869         $xxx i32;
8870         double f, g;
8871         int result = 0;
8872         char str[16];
8873         signal(SIGFPE, blech);
8874
8875         /* Don't let compiler optimize the test away.  Store the number 
8876            in a writable string for gcc to pass to sscanf under HP/UX.
8877         */
8878         sprintf(str, "2147483647");
8879         sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
8880         g = 10 * f;
8881         i32  = ($xxx) g;
8882
8883         /* x86 processors will probably give 0x8000 0000, which is a
8884        sign change.  We don't want that.  We want to mimic SPARC
8885            behavior here, which is to preserve the sign and give
8886            back 0x7fff ffff.
8887         */
8888         if (i32 != ($xxx) f)
8889                 result |= 1;
8890         exit(result);
8891 }
8892 EOCP
8893 set try
8894 if eval $compile_ok; then
8895         $run ./try
8896         yyy=$?
8897 else
8898         echo "(I can't seem to compile the test program--assuming it can't)"
8899         yyy=1
8900 fi
8901 case "$yyy" in
8902 0)      val="$define"
8903         echo "Yup, it can."
8904         ;;
8905 *)      val="$undef"
8906         echo "Nope, it can't."
8907         ;;
8908 esac
8909 set d_casti32
8910 eval $setvar
8911 $rm -f try try.*
8912
8913 : check for ability to cast negative floats to unsigned
8914 echo " "
8915 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
8916 $cat >try.c <<EOCP
8917 #include <stdio.h>
8918 #include <sys/types.h>
8919 #include <signal.h>
8920 $signal_t blech(s) int s; { exit(7); }
8921 $signal_t blech_in_list(s) int s; { exit(4); }
8922 unsigned long dummy_long(p) unsigned long p; { return p; }
8923 unsigned int dummy_int(p) unsigned int p; { return p; }
8924 unsigned short dummy_short(p) unsigned short p; { return p; }
8925 int main()
8926 {
8927         double f;
8928         unsigned long along;
8929         unsigned int aint;
8930         unsigned short ashort;
8931         int result = 0;
8932         char str[16];
8933         
8934         /* Frustrate gcc-2.7.2's optimizer which failed this test with
8935            a direct f = -123. assignment.  gcc-2.8.0 reportedly
8936            optimized the whole file away
8937         */
8938         /* Store the number in a writable string for gcc to pass to 
8939            sscanf under HP/UX.
8940         */
8941         sprintf(str, "-123");
8942         sscanf(str, "%lf", &f);  /* f = -123.; */
8943
8944         signal(SIGFPE, blech);
8945         along = (unsigned long)f;
8946         aint = (unsigned int)f;
8947         ashort = (unsigned short)f;
8948         if (along != (unsigned long)-123)
8949                 result |= 1;
8950         if (aint != (unsigned int)-123)
8951                 result |= 1;
8952         if (ashort != (unsigned short)-123)
8953                 result |= 1;
8954         sprintf(str, "1073741824.");
8955         sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
8956         f = f + f;
8957         along = 0;
8958         along = (unsigned long)f;
8959         if (along != 0x80000000)
8960                 result |= 2;
8961         f -= 1.;
8962         along = 0;
8963         along = (unsigned long)f;
8964         if (along != 0x7fffffff)
8965                 result |= 1;
8966         f += 2.;
8967         along = 0;
8968         along = (unsigned long)f;
8969         if (along != 0x80000001)
8970                 result |= 2;
8971         if (result)
8972                 exit(result);
8973         signal(SIGFPE, blech_in_list);
8974         sprintf(str, "123.");
8975         sscanf(str, "%lf", &f);  /* f = 123.; */
8976         along = dummy_long((unsigned long)f);
8977         aint = dummy_int((unsigned int)f);
8978         ashort = dummy_short((unsigned short)f);
8979         if (along != (unsigned long)123)
8980                 result |= 4;
8981         if (aint != (unsigned int)123)
8982                 result |= 4;
8983         if (ashort != (unsigned short)123)
8984                 result |= 4;
8985         exit(result);
8986
8987 }
8988 EOCP
8989 set try
8990 if eval $compile_ok; then
8991         $run ./try
8992         castflags=$?
8993 else
8994         echo "(I can't seem to compile the test program--assuming it can't)"
8995         castflags=7
8996 fi
8997 case "$castflags" in
8998 0)      val="$define"
8999         echo "Yup, it can."
9000         ;;
9001 *)      val="$undef"
9002         echo "Nope, it can't."
9003         ;;
9004 esac
9005 set d_castneg
9006 eval $setvar
9007 $rm -f try.*
9008
9009 : see if vprintf exists
9010 echo " "
9011 if set vprintf val -f d_vprintf; eval $csym; $val; then
9012         echo 'vprintf() found.' >&4
9013         val="$define"
9014         $cat >try.c <<'EOF'
9015 #include <varargs.h>
9016
9017 int main() { xxx("foo"); }
9018
9019 xxx(va_alist)
9020 va_dcl
9021 {
9022         va_list args;
9023         char buf[10];
9024
9025         va_start(args);
9026         exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
9027 }
9028 EOF
9029         set try
9030         if eval $compile && $run ./try; then
9031                 echo "Your vsprintf() returns (int)." >&4
9032                 val2="$undef"
9033         else
9034                 echo "Your vsprintf() returns (char*)." >&4
9035                 val2="$define"
9036         fi
9037 else
9038         echo 'vprintf() NOT found.' >&4
9039                 val="$undef"
9040                 val2="$undef"
9041 fi
9042 $rm -f try try.*
9043 set d_vprintf
9044 eval $setvar
9045 val=$val2
9046 set d_charvspr
9047 eval $setvar
9048
9049 : see if chown exists
9050 set chown d_chown
9051 eval $inlibc
9052
9053 : see if chroot exists
9054 set chroot d_chroot
9055 eval $inlibc
9056
9057 : see if chsize exists
9058 set chsize d_chsize
9059 eval $inlibc
9060
9061 hasstruct='varname=$1; struct=$2; shift; shift;
9062 while $test $# -ge 2; do
9063         case "$1" in
9064         $define) echo "#include <$2>";;
9065         esac ;
9066     shift 2;
9067 done > try.c;
9068 echo "int main () { struct $struct foo; }" >> try.c;
9069 set try;
9070 if eval $compile; then
9071         val="$define";
9072 else
9073         val="$undef";
9074 fi;
9075 set $varname;
9076 eval $setvar;
9077 $rm -f try.c try.o'
9078
9079 : see if sys/types.h has to be included
9080 set sys/types.h i_systypes
9081 eval $inhdr
9082
9083 hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
9084 while $test $# -ge 2; do
9085         case "$1" in
9086         $define) echo "#include <$2>";;
9087         esac ;
9088     shift 2;
9089 done > try.c;
9090 echo "int main () { struct $struct foo; char* bar; bar = (char*)foo.$field; }" >> try.c;
9091 set try;
9092 if eval $compile; then
9093         val="$define";
9094 else
9095         val="$undef";
9096 fi;
9097 set $varname;
9098 eval $setvar;
9099 $rm -f try.c try.o'
9100
9101 socketlib=''
9102 sockethdr=''
9103 : see whether socket exists
9104 echo " "
9105 $echo $n "Hmm... $c" >&4
9106 if set socket val -f d_socket; eval $csym; $val; then
9107         echo "Looks like you have Berkeley networking support." >&4
9108         d_socket="$define"
9109         if set setsockopt val -f; eval $csym; $val; then
9110                 d_oldsock="$undef"
9111         else
9112                 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
9113                 d_oldsock="$define"
9114         fi
9115 else
9116         if $contains socklib libc.list >/dev/null 2>&1; then
9117                 echo "Looks like you have Berkeley networking support." >&4
9118                 d_socket="$define"
9119                 : we will have to assume that it supports the 4.2 BSD interface
9120                 d_oldsock="$undef"
9121         else
9122                 echo "You don't have Berkeley networking in libc$_a..." >&4
9123                 if test "X$d_socket" = "X$define"; then
9124                    echo "...but you seem to believe that you have sockets." >&4
9125                 else
9126                         for net in net socket
9127                         do
9128                                 if test -f /usr/lib/lib$net$_a; then
9129                                         ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) ||  \
9130                                         $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
9131                                         if $contains socket libc.list >/dev/null 2>&1; then
9132                                                 d_socket="$define"
9133                                                 socketlib="-l$net"
9134                                                 case "$net" in
9135                                                 net)
9136                                                         echo "...but the Wollongong group seems to have hacked it in." >&4
9137                                                         sockethdr="-I/usr/netinclude"
9138                                                         ;;
9139                                                 esac
9140                                                 echo "Found Berkeley sockets interface in lib$net." >& 4 
9141                                                 if $contains setsockopt libc.list >/dev/null 2>&1; then
9142                                                         d_oldsock="$undef"
9143                                                 else
9144                                                         echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
9145                                                         d_oldsock="$define"
9146                                                 fi
9147                                                 break
9148                                         fi
9149                                 fi
9150                         done
9151                         if test "X$d_socket" != "X$define"; then
9152                            echo "or anywhere else I see." >&4
9153                            d_socket="$undef"
9154                            d_oldsock="$undef"
9155                         fi
9156                 fi
9157         fi
9158 fi
9159
9160 : see if socketpair exists
9161 set socketpair d_sockpair
9162 eval $inlibc
9163
9164
9165 echo " "
9166 echo "Checking the availability of certain socket constants..." >& 4
9167 for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
9168         enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
9169         $cat >try.c <<EOF
9170 #include <sys/types.h>
9171 #include <sys/socket.h>
9172 int main() {
9173     int i = $ENUM;
9174 }
9175 EOF
9176         val="$undef"
9177         set try; if eval $compile; then
9178                 val="$define"
9179         fi
9180         set d_${enum}; eval $setvar
9181         $rm -f try.c try
9182 done
9183
9184 : see if this is a sys/uio.h system
9185 set sys/uio.h i_sysuio
9186 eval $inhdr
9187
9188
9189 echo " "
9190 echo "Checking to see if your system supports struct cmsghdr..." >&4
9191 set d_cmsghdr_s cmsghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
9192 eval $hasstruct
9193 case "$d_cmsghdr_s" in
9194 "$define")      echo "Yes, it does."   ;;
9195 *)              echo "No, it doesn't." ;;
9196 esac
9197
9198
9199 : check for const keyword
9200 echo " "
9201 echo 'Checking to see if your C compiler knows about "const"...' >&4
9202 $cat >const.c <<'EOCP'
9203 typedef struct spug { int drokk; } spug;
9204 int main()
9205 {
9206         const char *foo;
9207         const spug y;
9208 }
9209 EOCP
9210 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
9211         val="$define"
9212         echo "Yup, it does."
9213 else
9214         val="$undef"
9215         echo "Nope, it doesn't."
9216 fi
9217 set d_const
9218 eval $setvar
9219
9220 : see if crypt exists
9221 echo " "
9222 if set crypt val -f d_crypt; eval $csym; $val; then
9223         echo 'crypt() found.' >&4
9224         val="$define"
9225         cryptlib=''
9226 else
9227         cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
9228         if $test -z "$cryptlib"; then
9229                 cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
9230         else
9231                 cryptlib=-lcrypt
9232         fi
9233         if $test -z "$cryptlib"; then
9234                 cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
9235         else
9236                 cryptlib=-lcrypt
9237         fi
9238         if $test -z "$cryptlib"; then
9239                 cryptlib=`./loc libcrypt$_a "" $libpth`
9240         else
9241                 cryptlib=-lcrypt
9242         fi
9243         if $test -z "$cryptlib"; then
9244                 echo 'crypt() NOT found.' >&4
9245                 val="$undef"
9246         else
9247                 val="$define"
9248         fi
9249 fi
9250 set d_crypt
9251 eval $setvar
9252
9253 : get csh whereabouts
9254 case "$csh" in
9255 'csh') val="$undef" ;;
9256 *) val="$define" ;;
9257 esac
9258 set d_csh
9259 eval $setvar
9260 : Respect a hint or command line value for full_csh.
9261 case "$full_csh" in
9262 '') full_csh=$csh ;;
9263 esac
9264
9265 : see if cuserid exists
9266 set cuserid d_cuserid
9267 eval $inlibc
9268
9269 : see if this is a limits.h system
9270 set limits.h i_limits
9271 eval $inhdr
9272
9273 : see if this is a float.h system
9274 set float.h i_float
9275 eval $inhdr
9276
9277 : See if number of significant digits in a double precision number is known
9278 echo " "
9279 $cat >dbl_dig.c <<EOM
9280 #$i_limits I_LIMITS
9281 #$i_float I_FLOAT
9282 #ifdef I_LIMITS
9283 #include <limits.h>
9284 #endif
9285 #ifdef I_FLOAT
9286 #include <float.h>
9287 #endif
9288 #ifdef DBL_DIG
9289 printf("Contains DBL_DIG");
9290 #endif
9291 EOM
9292 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
9293 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
9294         echo "DBL_DIG found." >&4
9295         val="$define"
9296 else
9297         echo "DBL_DIG NOT found." >&4
9298         val="$undef"
9299 fi
9300 $rm -f dbl_dig.?
9301 set d_dbl_dig
9302 eval $setvar
9303
9304 hasproto='varname=$1; func=$2; shift; shift;
9305 while $test $# -ge 2; do
9306         case "$1" in
9307         $define) echo "#include <$2>";;
9308         esac ;
9309     shift 2;
9310 done > try.c;
9311 $cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
9312 if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
9313         echo "$func() prototype found.";
9314         val="$define";
9315 else
9316         echo "$func() prototype NOT found.";
9317         val="$undef";
9318 fi;
9319 set $varname;
9320 eval $setvar;
9321 $rm -f try.c tryout.c'
9322
9323 : see if dbm.h is available
9324 : see if dbmclose exists
9325 set dbmclose d_dbmclose
9326 eval $inlibc
9327
9328 case "$d_dbmclose" in
9329 $define)
9330         set dbm.h i_dbm
9331         eval $inhdr
9332         case "$i_dbm" in
9333         $define)
9334                 val="$undef"
9335                 set i_rpcsvcdbm
9336                 eval $setvar
9337                 ;;
9338         *)      set rpcsvc/dbm.h i_rpcsvcdbm
9339                 eval $inhdr
9340                 ;;
9341         esac
9342         ;;
9343 *)      echo "We won't be including <dbm.h>"
9344         val="$undef"
9345         set i_dbm
9346         eval $setvar
9347         val="$undef"
9348         set i_rpcsvcdbm
9349         eval $setvar
9350         ;;
9351 esac
9352
9353 : see if prototype for dbminit is available
9354 echo " "
9355 set d_dbminitproto dbminit $i_dbm dbm.h
9356 eval $hasproto
9357
9358 : see if difftime exists
9359 set difftime d_difftime
9360 eval $inlibc
9361
9362 : see if this is a dirent system
9363 echo " "
9364 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
9365         val="$define"
9366         echo "<dirent.h> found." >&4
9367 else
9368         val="$undef"
9369         if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
9370                 echo "<sys/dir.h> found." >&4
9371                 echo " "
9372         else
9373                 xinc=`./findhdr sys/ndir.h`
9374         fi
9375         echo "<dirent.h> NOT found." >&4
9376 fi
9377 set i_dirent
9378 eval $setvar
9379
9380 : Look for type of directory structure.
9381 echo " "
9382 $cppstdin $cppflags $cppminus < "$xinc" > try.c
9383
9384 case "$direntrytype" in
9385 ''|' ')
9386         case "$i_dirent" in
9387         $define) guess1='struct dirent' ;;
9388         *) guess1='struct direct'  ;;
9389         esac
9390         ;;
9391 *)      guess1="$direntrytype"
9392         ;;
9393 esac
9394
9395 case "$guess1" in
9396 'struct dirent') guess2='struct direct' ;;
9397 *) guess2='struct dirent' ;;
9398 esac
9399                 
9400 if $contains "$guess1" try.c >/dev/null 2>&1; then
9401         direntrytype="$guess1"
9402         echo "Your directory entries are $direntrytype." >&4
9403 elif $contains "$guess2" try.c >/dev/null 2>&1; then
9404         direntrytype="$guess2"
9405         echo "Your directory entries seem to be $direntrytype." >&4
9406 else
9407         echo "I don't recognize your system's directory entries." >&4
9408         rp="What type is used for directory entries on this system?"
9409         dflt="$guess1"
9410         . ./myread
9411         direntrytype="$ans"
9412 fi
9413 $rm -f try.c
9414
9415
9416 : see if the directory entry stores field length
9417 echo " "
9418 $cppstdin $cppflags $cppminus < "$xinc" > try.c
9419 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
9420         echo "Good, your directory entry keeps length information in d_namlen." >&4
9421         val="$define"
9422 else
9423         echo "Your directory entry does not know about the d_namlen field." >&4
9424         val="$undef"
9425 fi
9426 set d_dirnamlen
9427 eval $setvar
9428 $rm -f try.c
9429
9430 : see if dlerror exists
9431 xxx_runnm="$runnm"
9432 runnm=false
9433 set dlerror d_dlerror
9434 eval $inlibc
9435 runnm="$xxx_runnm"
9436
9437 : see if dlfcn is available
9438 set dlfcn.h i_dlfcn
9439 eval $inhdr
9440
9441 case "$usedl" in
9442 $define|y|true)
9443         $cat << EOM
9444
9445 On a few systems, the dynamically loaded modules that perl generates and uses
9446 will need a different extension than shared libs. The default will probably
9447 be appropriate.
9448
9449 EOM
9450         case "$dlext" in
9451         '')     dflt="$so" ;;
9452         *)      dflt="$dlext" ;;
9453         esac
9454         rp='What is the extension of dynamically loaded modules'
9455         . ./myread
9456         dlext="$ans"
9457         ;;
9458 *)
9459         dlext="none"
9460         ;;
9461 esac
9462
9463 : Check if dlsym need a leading underscore
9464 echo " "
9465 val="$undef"
9466
9467 case "$dlsrc" in
9468 dl_dlopen.xs)
9469         echo "Checking whether your dlsym() needs a leading underscore ..." >&4
9470         $cat >dyna.c <<'EOM'
9471 fred () { }
9472 EOM
9473
9474 $cat >fred.c<<EOM
9475
9476 #include <stdio.h>
9477 #$i_dlfcn I_DLFCN
9478 #ifdef I_DLFCN
9479 #include <dlfcn.h>      /* the dynamic linker include file for SunOS/Solaris */
9480 #else
9481 #include <sys/types.h>
9482 #include <nlist.h>
9483 #include <link.h>
9484 #endif
9485
9486 extern int fred() ;
9487
9488 int main()
9489 {
9490     void * handle ;
9491     void * symbol ;
9492 #ifndef RTLD_LAZY
9493     int mode = 1 ;
9494 #else
9495     int mode = RTLD_LAZY ;
9496 #endif
9497     handle = dlopen("./dyna.$dlext", mode) ;
9498     if (handle == NULL) {
9499         printf ("1\n") ;
9500         fflush (stdout) ;
9501         exit(0);
9502     }
9503     symbol = dlsym(handle, "fred") ;
9504     if (symbol == NULL) {
9505         /* try putting a leading underscore */
9506         symbol = dlsym(handle, "_fred") ;
9507         if (symbol == NULL) {
9508             printf ("2\n") ;
9509             fflush (stdout) ;
9510             exit(0);
9511         }
9512         printf ("3\n") ;
9513     }
9514     else
9515         printf ("4\n") ;
9516     fflush (stdout) ;
9517     exit(0);
9518 }
9519 EOM
9520         : Call the object file tmp-dyna.o in case dlext=o.
9521         if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 && 
9522                 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 && 
9523                 $ld -o dyna.$dlext $ldflags $lddlflags tmp-dyna${_o} > /dev/null 2>&1 && 
9524                 $cc -o fred $ccflags $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1 && $to dyna.$dlext; then
9525                 xxx=`$run ./fred`
9526                 case $xxx in
9527                 1)      echo "Test program failed using dlopen." >&4
9528                         echo "Perhaps you should not use dynamic loading." >&4;;
9529                 2)      echo "Test program failed using dlsym." >&4
9530                         echo "Perhaps you should not use dynamic loading." >&4;;
9531                 3)      echo "dlsym needs a leading underscore" >&4
9532                         val="$define" ;;
9533                 4)      echo "dlsym doesn't need a leading underscore." >&4;;
9534                 esac
9535         else
9536                 echo "I can't compile and run the test program." >&4
9537                 echo "I'm guessing that dlsym doesn't need a leading underscore." >&4
9538         fi
9539         ;;
9540 esac
9541                 
9542 $rm -f fred fred.? dyna.$dlext dyna.? tmp-dyna.?
9543
9544 set d_dlsymun
9545 eval $setvar
9546
9547 : see if prototype for drand48 is available
9548 echo " "
9549 set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
9550 eval $hasproto
9551
9552 : see if dup2 exists
9553 set dup2 d_dup2
9554 eval $inlibc
9555
9556 : see if eaccess exists
9557 set eaccess d_eaccess
9558 eval $inlibc
9559
9560 : see if endgrent exists
9561 set endgrent d_endgrent
9562 eval $inlibc
9563
9564 : see if endhostent exists
9565 set endhostent d_endhent
9566 eval $inlibc
9567
9568 : see if endnetent exists
9569 set endnetent d_endnent
9570 eval $inlibc
9571
9572 : see if endprotoent exists
9573 set endprotoent d_endpent
9574 eval $inlibc
9575
9576 : see if endpwent exists
9577 set endpwent d_endpwent
9578 eval $inlibc
9579
9580 : see if endservent exists
9581 set endservent d_endsent
9582 eval $inlibc
9583
9584 : Locate the flags for 'open()'
9585 echo " "
9586 $cat >try.c <<'EOCP'
9587 #include <sys/types.h>
9588 #ifdef I_FCNTL
9589 #include <fcntl.h>
9590 #endif
9591 #ifdef I_SYS_FILE
9592 #include <sys/file.h>
9593 #endif
9594 int main() {
9595         if(O_RDONLY);
9596 #ifdef O_TRUNC
9597         exit(0);
9598 #else
9599         exit(1);
9600 #endif
9601 }
9602 EOCP
9603 : check sys/file.h first to get FREAD on Sun
9604 if $test `./findhdr sys/file.h` && \
9605                 set try -DI_SYS_FILE && eval $compile; then
9606         h_sysfile=true;
9607         echo "<sys/file.h> defines the O_* constants..." >&4
9608         if $run ./try; then
9609                 echo "and you have the 3 argument form of open()." >&4
9610                 val="$define"
9611         else
9612                 echo "but not the 3 argument form of open().  Oh, well." >&4
9613                 val="$undef"
9614         fi
9615 elif $test `./findhdr fcntl.h` && \
9616                 set try -DI_FCNTL && eval $compile; then
9617         h_fcntl=true;
9618         echo "<fcntl.h> defines the O_* constants..." >&4
9619         if $run ./try; then
9620                 echo "and you have the 3 argument form of open()." >&4
9621                 val="$define"
9622         else
9623                 echo "but not the 3 argument form of open().  Oh, well." >&4
9624                 val="$undef"
9625         fi
9626 else
9627         val="$undef"
9628         echo "I can't find the O_* constant definitions!  You got problems." >&4
9629 fi
9630 set d_open3
9631 eval $setvar
9632 $rm -f try try.*
9633
9634 : see which of string.h or strings.h is needed
9635 echo " "
9636 strings=`./findhdr string.h`
9637 if $test "$strings" && $test -r "$strings"; then
9638         echo "Using <string.h> instead of <strings.h>." >&4
9639         val="$define"
9640 else
9641         val="$undef"
9642         strings=`./findhdr strings.h`
9643         if $test "$strings" && $test -r "$strings"; then
9644                 echo "Using <strings.h> instead of <string.h>." >&4
9645         else
9646                 echo "No string header found -- You'll surely have problems." >&4
9647         fi
9648 fi
9649 set i_string
9650 eval $setvar
9651 case "$i_string" in
9652 "$undef") strings=`./findhdr strings.h`;;
9653 *)        strings=`./findhdr string.h`;;
9654 esac
9655
9656 : check for non-blocking I/O stuff
9657 case "$h_sysfile" in
9658 true) echo "#include <sys/file.h>" > head.c;;
9659 *)
9660        case "$h_fcntl" in
9661        true) echo "#include <fcntl.h>" > head.c;;
9662        *) echo "#include <sys/fcntl.h>" > head.c;;
9663        esac
9664        ;;
9665 esac
9666 echo " "
9667 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
9668 case "$o_nonblock" in
9669 '')
9670         $cat head.c > try.c
9671         $cat >>try.c <<'EOCP'
9672 #include <stdio.h>
9673 #include <stdlib.h>
9674 int main() {
9675 #ifdef O_NONBLOCK
9676         printf("O_NONBLOCK\n");
9677         exit(0);
9678 #endif
9679 #ifdef O_NDELAY
9680         printf("O_NDELAY\n");
9681         exit(0);
9682 #endif
9683 #ifdef FNDELAY
9684         printf("FNDELAY\n");
9685         exit(0);
9686 #endif
9687         exit(0);
9688 }
9689 EOCP
9690         set try
9691         if eval $compile_ok; then
9692                 o_nonblock=`$run ./try`
9693                 case "$o_nonblock" in
9694                 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
9695                 *) echo "Seems like we can use $o_nonblock.";;
9696                 esac
9697         else
9698                 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
9699         fi
9700         ;;
9701 *) echo "Using $hint value $o_nonblock.";;
9702 esac
9703 $rm -f try try.* .out core
9704
9705 echo " "
9706 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
9707 case "$eagain" in
9708 '')
9709         $cat head.c > try.c
9710         $cat >>try.c <<EOCP
9711 #include <errno.h>
9712 #include <sys/types.h>
9713 #include <signal.h>
9714 #include <stdio.h> 
9715 #include <stdlib.h> 
9716 #define MY_O_NONBLOCK $o_nonblock
9717 #ifndef errno  /* XXX need better Configure test */
9718 extern int errno;
9719 #endif
9720 #$i_unistd I_UNISTD
9721 #ifdef I_UNISTD
9722 #include <unistd.h>
9723 #endif
9724 #$i_string I_STRING
9725 #ifdef I_STRING
9726 #include <string.h>
9727 #else
9728 #include <strings.h>
9729 #endif
9730 $signal_t blech(x) int x; { exit(3); }
9731 EOCP
9732         $cat >> try.c <<'EOCP'
9733 int main()
9734 {
9735         int pd[2];
9736         int pu[2];
9737         char buf[1];
9738         char string[100];
9739
9740         pipe(pd);       /* Down: child -> parent */
9741         pipe(pu);       /* Up: parent -> child */
9742         if (0 != fork()) {
9743                 int ret;
9744                 close(pd[1]);   /* Parent reads from pd[0] */
9745                 close(pu[0]);   /* Parent writes (blocking) to pu[1] */
9746 #ifdef F_SETFL
9747                 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
9748                         exit(1);
9749 #else
9750                 exit(4);
9751 #endif
9752                 signal(SIGALRM, blech);
9753                 alarm(5);
9754                 if ((ret = read(pd[0], buf, 1)) > 0)    /* Nothing to read! */
9755                         exit(2);
9756                 sprintf(string, "%d\n", ret);
9757                 write(2, string, strlen(string));
9758                 alarm(0);
9759 #ifdef EAGAIN
9760                 if (errno == EAGAIN) {
9761                         printf("EAGAIN\n");
9762                         goto ok;
9763                 }
9764 #endif
9765 #ifdef EWOULDBLOCK
9766                 if (errno == EWOULDBLOCK)
9767                         printf("EWOULDBLOCK\n");
9768 #endif
9769         ok:
9770                 write(pu[1], buf, 1);   /* Unblocks child, tell it to close our pipe */
9771                 sleep(2);                               /* Give it time to close our pipe */
9772                 alarm(5);
9773                 ret = read(pd[0], buf, 1);      /* Should read EOF */
9774                 alarm(0);
9775                 sprintf(string, "%d\n", ret);
9776                 write(3, string, strlen(string));
9777                 exit(0);
9778         }
9779
9780         close(pd[0]);                   /* We write to pd[1] */
9781         close(pu[1]);                   /* We read from pu[0] */
9782         read(pu[0], buf, 1);    /* Wait for parent to signal us we may continue */
9783         close(pd[1]);                   /* Pipe pd is now fully closed! */
9784         exit(0);                                /* Bye bye, thank you for playing! */
9785 }
9786 EOCP
9787         set try
9788         if eval $compile_ok; then
9789                 echo "$startsh" >mtry
9790                 echo "$run ./try >try.out 2>try.ret 3>try.err || exit 4" >>mtry
9791                 chmod +x mtry
9792                 ./mtry >/dev/null 2>&1
9793                 case $? in
9794                 0) eagain=`$cat try.out`;;
9795                 1) echo "Could not perform non-blocking setting!";;
9796                 2) echo "I did a successful read() for something that was not there!";;
9797                 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
9798                 4) echo "Could not find F_SETFL!";;
9799                 *) echo "Something terribly wrong happened during testing.";;
9800                 esac
9801                 rd_nodata=`$cat try.ret`
9802                 echo "A read() system call with no data present returns $rd_nodata."
9803                 case "$rd_nodata" in
9804                 0|-1) ;;
9805                 *)
9806                         echo "(That's peculiar, fixing that to be -1.)"
9807                         rd_nodata=-1
9808                         ;;
9809                 esac
9810                 case "$eagain" in
9811                 '')
9812                         echo "Forcing errno EAGAIN on read() with no data available."
9813                         eagain=EAGAIN
9814                         ;;
9815                 *)
9816                         echo "Your read() sets errno to $eagain when no data is available."
9817                         ;;
9818                 esac
9819                 status=`$cat try.err`
9820                 case "$status" in
9821                 0) echo "And it correctly returns 0 to signal EOF.";;
9822                 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
9823                 *) echo "However, your read() returns '$status' on EOF??";;
9824                 esac
9825                 val="$define"
9826                 if test "$status" = "$rd_nodata"; then
9827                         echo "WARNING: you can't distinguish between EOF and no data!"
9828                         val="$undef"
9829                 fi
9830         else
9831                 echo "I can't compile the test program--assuming errno EAGAIN will do."
9832                 eagain=EAGAIN
9833         fi
9834         set d_eofnblk
9835         eval $setvar
9836         ;;
9837 *)
9838         echo "Using $hint value $eagain."
9839         echo "Your read() returns $rd_nodata when no data is present."
9840         case "$d_eofnblk" in
9841         "$define") echo "And you can see EOF because read() returns 0.";;
9842         "$undef") echo "But you can't see EOF status from read() returned value.";;
9843         *)
9844                 echo "(Assuming you can't see EOF status from read anyway.)"
9845                 d_eofnblk=$undef
9846                 ;;
9847         esac
9848         ;;
9849 esac
9850 $rm -f try try.* .out core head.c mtry
9851
9852 : see if fchdir exists
9853 set fchdir d_fchdir
9854 eval $inlibc
9855
9856 : see if fchmod exists
9857 set fchmod d_fchmod
9858 eval $inlibc
9859
9860 : see if fchown exists
9861 set fchown d_fchown
9862 eval $inlibc
9863
9864 : see if this is an fcntl system
9865 set fcntl d_fcntl
9866 eval $inlibc
9867
9868 echo " "
9869 : See if fcntl-based locking works.
9870 $cat >try.c <<EOCP
9871 #include <stdlib.h>
9872 #include <unistd.h>
9873 #include <fcntl.h>
9874 #include <signal.h>
9875 $signal_t blech(x) int x; { exit(3); }
9876 int main() {
9877 #if defined(F_SETLK) && defined(F_SETLKW)
9878      struct flock flock;
9879      int retval, fd;
9880      fd = open("try.c", O_RDONLY);
9881      flock.l_type = F_RDLCK;
9882      flock.l_whence = SEEK_SET;
9883      flock.l_start = flock.l_len = 0;
9884      signal(SIGALRM, blech);
9885      alarm(10);
9886      retval = fcntl(fd, F_SETLK, &flock);
9887      close(fd);
9888      (retval < 0 ? exit(2) : exit(0));
9889 #else
9890      exit(2);
9891 #endif
9892 }
9893 EOCP
9894 echo "Checking if fcntl-based file locking works... "
9895 case "$d_fcntl" in
9896 "$define")
9897         set try
9898         if eval $compile_ok; then
9899                 if $run ./try; then
9900                         echo "Yes, it seems to work."
9901                         val="$define"
9902                 else
9903                         echo "Nope, it didn't work."
9904                         val="$undef"
9905                         case "$?" in
9906                         3) $cat >&4 <<EOM
9907 ***
9908 *** I had to forcibly timeout from fcntl(..., F_SETLK, ...).
9909 *** This is (almost) impossible.
9910 *** If your NFS lock daemons are not feeling well, something like
9911 *** this may happen, please investigate.  Cannot continue, aborting.
9912 ***
9913 EOM
9914                                 exit 1
9915                                 ;;
9916                         esac
9917                 fi
9918         else
9919                 echo "I'm unable to compile the test program, so I'll assume not."
9920                 val="$undef"
9921         fi
9922         ;;
9923 *) val="$undef";
9924         echo "Nope, since you don't even have fcntl()."
9925         ;;
9926 esac
9927 set d_fcntl_can_lock
9928 eval $setvar
9929 $rm -f try*
9930
9931
9932 : see if sys/select.h has to be included
9933 set sys/select.h i_sysselct
9934 eval $inhdr
9935
9936 : see if we should include time.h, sys/time.h, or both
9937 echo " "
9938 if test "X$timeincl" = X; then
9939         echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
9940         $echo $n "I'm now running the test program...$c"
9941         $cat >try.c <<'EOCP'
9942 #include <sys/types.h>
9943 #ifdef I_TIME
9944 #include <time.h>
9945 #endif
9946 #ifdef I_SYSTIME
9947 #ifdef SYSTIMEKERNEL
9948 #define KERNEL
9949 #endif
9950 #include <sys/time.h>
9951 #endif
9952 #ifdef I_SYSSELECT
9953 #include <sys/select.h>
9954 #endif
9955 int main()
9956 {
9957         struct tm foo;
9958 #ifdef S_TIMEVAL
9959         struct timeval bar;
9960 #endif
9961 #ifdef S_TIMEZONE
9962         struct timezone tzp;
9963 #endif
9964         if (foo.tm_sec == foo.tm_sec)
9965                 exit(0);
9966 #ifdef S_TIMEVAL
9967         if (bar.tv_sec == bar.tv_sec)
9968                 exit(0);
9969 #endif
9970         exit(1);
9971 }
9972 EOCP
9973         flags=''
9974         for s_timezone in '-DS_TIMEZONE' ''; do
9975         sysselect=''
9976         for s_timeval in '-DS_TIMEVAL' ''; do
9977         for i_systimek in '' '-DSYSTIMEKERNEL'; do
9978         for i_time in '' '-DI_TIME'; do
9979         for i_systime in '-DI_SYSTIME' ''; do
9980                 case "$flags" in
9981                 '') $echo $n ".$c"
9982                         set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
9983                         if eval $compile; then
9984                                 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
9985                                 shift
9986                                 flags="$*"
9987                                 echo " "
9988                                 $echo $n "Succeeded with $flags$c"
9989                         fi
9990                         ;;
9991                 esac
9992         done
9993         done
9994         done
9995         done
9996         done
9997         timeincl=''
9998         echo " "
9999         case "$flags" in
10000         *SYSTIMEKERNEL*) i_systimek="$define"
10001                 timeincl=`./findhdr sys/time.h`
10002                 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
10003         *) i_systimek="$undef";;
10004         esac
10005         case "$flags" in
10006         *I_TIME*) i_time="$define"
10007                 timeincl=`./findhdr time.h`" $timeincl"
10008                 echo "We'll include <time.h>." >&4;;
10009         *) i_time="$undef";;
10010         esac
10011         case "$flags" in
10012         *I_SYSTIME*) i_systime="$define"
10013                 timeincl=`./findhdr sys/time.h`" $timeincl"
10014                 echo "We'll include <sys/time.h>." >&4;;
10015         *) i_systime="$undef";;
10016         esac
10017         $rm -f try.c try
10018 fi
10019
10020 : check for fd_set items
10021 $cat <<EOM
10022
10023 Checking to see how well your C compiler handles fd_set and friends ...
10024 EOM
10025 $cat >try.c <<EOCP
10026 #$i_systime I_SYS_TIME
10027 #$i_sysselct I_SYS_SELECT
10028 #$d_socket HAS_SOCKET
10029 #include <sys/types.h>
10030 #ifdef HAS_SOCKET
10031 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
10032 #endif
10033 #ifdef I_SYS_TIME
10034 #include <sys/time.h>
10035 #endif
10036 #ifdef I_SYS_SELECT
10037 #include <sys/select.h>
10038 #endif
10039 int main() {
10040         fd_set fds;
10041
10042 #ifdef TRYBITS
10043         if(fds.fds_bits);
10044 #endif
10045
10046 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
10047         exit(0);
10048 #else
10049         exit(1);
10050 #endif
10051 }
10052 EOCP
10053 set try -DTRYBITS
10054 if eval $compile; then
10055         d_fds_bits="$define"
10056         d_fd_set="$define"
10057         echo "Well, your system knows about the normal fd_set typedef..." >&4
10058         if $run ./try; then
10059                 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
10060                 d_fd_macros="$define"
10061         else
10062                 $cat >&4 <<'EOM'
10063 but not the normal fd_set macros!  Gaaack!  I'll have to cover for you.
10064 EOM
10065                 d_fd_macros="$undef"
10066         fi
10067 else
10068         $cat <<'EOM'
10069 Hmm, your compiler has some difficulty with fd_set.  Checking further...
10070 EOM
10071         set try
10072         if eval $compile; then
10073                 d_fds_bits="$undef"
10074                 d_fd_set="$define"
10075                 echo "Well, your system has some sort of fd_set available..." >&4
10076                 if $run ./try; then
10077                         echo "and you have the normal fd_set macros." >&4
10078                         d_fd_macros="$define"
10079                 else
10080                         $cat <<'EOM'
10081 but not the normal fd_set macros!  Gross!  More work for me...
10082 EOM
10083                         d_fd_macros="$undef"
10084                 fi
10085         else
10086         echo "Well, you got zip.  That's OK, I can roll my own fd_set stuff." >&4
10087                 d_fd_set="$undef"
10088                 d_fds_bits="$undef"
10089                 d_fd_macros="$undef"
10090         fi
10091 fi
10092 $rm -f try try.*
10093
10094 : see if fgetpos exists
10095 set fgetpos d_fgetpos
10096 eval $inlibc
10097
10098 : see if flock exists
10099 set flock d_flock
10100 eval $inlibc
10101
10102 : see if this is a sys/file.h system
10103 val=''
10104 set sys/file.h val
10105 eval $inhdr
10106
10107 : do we need to include sys/file.h ?
10108 case "$val" in
10109 "$define")
10110         echo " "
10111         if $h_sysfile; then
10112                 val="$define"
10113                 echo "We'll be including <sys/file.h>." >&4
10114         else
10115                 val="$undef"
10116                 echo "We won't be including <sys/file.h>." >&4
10117         fi
10118         ;;
10119 *)
10120         h_sysfile=false
10121         ;;
10122 esac
10123 set i_sysfile
10124 eval $setvar
10125
10126 : see if prototype for flock is available
10127 echo " "
10128 set d_flockproto flock $i_sysfile sys/file.h
10129 eval $hasproto
10130
10131 : see if fork exists
10132 set fork d_fork
10133 eval $inlibc
10134
10135 : see if pathconf exists
10136 set pathconf d_pathconf
10137 eval $inlibc
10138
10139 : see if fpathconf exists
10140 set fpathconf d_fpathconf
10141 eval $inlibc
10142
10143
10144 : check for fpos64_t
10145 echo " "
10146 echo "Checking to see if you have fpos64_t..." >&4
10147 $cat >try.c <<EOCP
10148 #include <stdio.h>
10149 int main() { fpos64_t x = 7; }
10150 EOCP
10151 set try
10152 if eval $compile; then
10153         val="$define"
10154         echo "You have fpos64_t."
10155 else
10156         val="$undef"
10157         echo "You do not have fpos64_t."
10158         case "$fpossize" in
10159         8) echo "(Your fpos_t is 64 bits, so you could use that.)" ;;
10160         esac
10161 fi
10162 $rm -f try.* try
10163 set d_fpos64_t
10164 eval $setvar
10165
10166 : see if frexpl exists
10167 set frexpl d_frexpl
10168 eval $inlibc
10169
10170 : see if this is a sys/param system
10171 set sys/param.h i_sysparam
10172 eval $inhdr
10173
10174 : see if this is a sys/mount.h system
10175 set sys/mount.h i_sysmount
10176 eval $inhdr
10177
10178
10179 echo " "
10180 echo "Checking to see if your system supports struct fs_data..." >&4
10181 set d_fs_data_s fs_data $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h
10182 eval $hasstruct
10183 case "$d_fs_data_s" in
10184 "$define")      echo "Yes, it does."   ;;
10185 *)              echo "No, it doesn't." ;;
10186 esac
10187
10188 : see if fseeko exists
10189 set fseeko d_fseeko
10190 eval $inlibc
10191 case "$longsize" in
10192 8) echo "(Your long is 64 bits, so you could use fseek.)" ;;
10193 esac
10194
10195 : see if fsetpos exists
10196 set fsetpos d_fsetpos
10197 eval $inlibc
10198
10199
10200 : see if fstatfs exists
10201 set fstatfs d_fstatfs
10202 eval $inlibc
10203
10204
10205 : see if statvfs exists
10206 set statvfs d_statvfs
10207 eval $inlibc
10208
10209 : see if fstatvfs exists
10210 set fstatvfs d_fstatvfs
10211 eval $inlibc
10212
10213
10214 : see if fsync exists
10215 set fsync d_fsync
10216 eval $inlibc
10217
10218 : see if ftello exists
10219 set ftello d_ftello
10220 eval $inlibc
10221 case "$longsize" in
10222 8) echo "(Your long is 64 bits, so you could use ftell.)" ;;
10223 esac
10224
10225 : see if getcwd exists
10226 set getcwd d_getcwd
10227 eval $inlibc
10228
10229 : see if getespwnam exists
10230 set getespwnam d_getespwnam
10231 eval $inlibc
10232
10233
10234 : see if getfsstat exists
10235 set getfsstat d_getfsstat
10236 eval $inlibc
10237
10238 : see if getgrent exists
10239 set getgrent d_getgrent
10240 eval $inlibc
10241
10242 : see if gethostbyaddr exists
10243 set gethostbyaddr d_gethbyaddr
10244 eval $inlibc
10245
10246 : see if gethostbyname exists
10247 set gethostbyname d_gethbyname
10248 eval $inlibc
10249
10250 : see if gethostent exists
10251 set gethostent d_gethent
10252 eval $inlibc
10253
10254 : see how we will look up host name
10255 echo " "
10256 call=''
10257 if set gethostname val -f d_gethname; eval $csym; $val; then
10258         echo 'gethostname() found.' >&4
10259         d_gethname="$define"
10260         call=gethostname
10261 fi
10262 if set uname val -f d_uname; eval $csym; $val; then
10263         if ./xenix; then
10264                 $cat <<'EOM'
10265 uname() was found, but you're running xenix, and older versions of xenix
10266 have a broken uname(). If you don't really know whether your xenix is old
10267 enough to have a broken system call, use the default answer.
10268
10269 EOM
10270                 dflt=y
10271                 case "$d_uname" in
10272                 "$define") dflt=n;;
10273                 esac
10274                 rp='Is your uname() broken?'
10275                 . ./myread
10276                 case "$ans" in
10277                 n*) d_uname="$define"; call=uname;;
10278                 esac
10279         else
10280                 echo 'uname() found.' >&4
10281                 d_uname="$define"
10282                 case "$call" in
10283                 '') call=uname ;;
10284                 esac
10285         fi
10286 fi
10287 case "$d_gethname" in
10288 '') d_gethname="$undef";;
10289 esac
10290 case "$d_uname" in
10291 '') d_uname="$undef";;
10292 esac
10293 case "$d_uname$d_gethname" in
10294 *define*)
10295         dflt=n
10296         cat <<EOM
10297  
10298 Every now and then someone has a $call() that lies about the hostname
10299 but can't be fixed for political or economic reasons.  If you wish, I can
10300 pretend $call() isn't there and maybe compute hostname at run-time
10301 thanks to the '$phostname' command.
10302
10303 EOM
10304         rp="Shall I ignore $call() from now on?"
10305         . ./myread
10306         case "$ans" in
10307         y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
10308         esac;;
10309 esac
10310 case "$phostname" in
10311 '') aphostname='';;
10312 *) case "$aphostname" in
10313         /*) ;;
10314         *) set X $phostname
10315                 shift
10316                 file=$1
10317                 shift
10318                 file=`./loc $file $file $pth`
10319                 aphostname=`echo $file $*`
10320                 ;;
10321         esac
10322         ;;
10323 esac
10324 case "$d_uname$d_gethname" in
10325 *define*) ;;
10326 *)
10327         case "$phostname" in
10328         '')
10329                 echo "There will be no way for $package to get your hostname." >&4;;
10330         *)
10331         echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
10332                 ;;
10333         esac;;
10334 esac
10335 case "$d_phostname" in
10336 '') d_phostname="$undef";;
10337 esac
10338
10339 : see if this is a netdb.h system
10340 set netdb.h i_netdb
10341 eval $inhdr
10342
10343 : see if prototypes for various gethostxxx netdb.h functions are available
10344 echo " "
10345 set d_gethostprotos gethostent $i_netdb netdb.h
10346 eval $hasproto
10347
10348 : see if getitimer exists
10349 set getitimer d_getitimer
10350 eval $inlibc
10351
10352 : see if getlogin exists
10353 set getlogin d_getlogin
10354 eval $inlibc
10355
10356 : see if getmnt exists
10357 set getmnt d_getmnt
10358 eval $inlibc
10359
10360 : see if getmntent exists
10361 set getmntent d_getmntent
10362 eval $inlibc
10363
10364 : see if getnetbyaddr exists
10365 set getnetbyaddr d_getnbyaddr
10366 eval $inlibc
10367
10368 : see if getnetbyname exists
10369 set getnetbyname d_getnbyname
10370 eval $inlibc
10371
10372 : see if getnetent exists
10373 set getnetent d_getnent
10374 eval $inlibc
10375
10376 : see if prototypes for various getnetxxx netdb.h functions are available
10377 echo " "
10378 set d_getnetprotos getnetent $i_netdb netdb.h
10379 eval $hasproto
10380
10381 : see if getpagesize exists
10382 set getpagesize d_getpagsz
10383 eval $inlibc
10384
10385
10386 : see if getprotobyname exists
10387 set getprotobyname d_getpbyname
10388 eval $inlibc
10389
10390 : see if getprotobynumber exists
10391 set getprotobynumber d_getpbynumber
10392 eval $inlibc
10393
10394 : see if getprotoent exists
10395 set getprotoent d_getpent
10396 eval $inlibc
10397
10398 : see if getpgid exists
10399 set getpgid d_getpgid
10400 eval $inlibc
10401
10402 : see if getpgrp2 exists
10403 set getpgrp2 d_getpgrp2
10404 eval $inlibc
10405
10406 : see if getppid exists
10407 set getppid d_getppid
10408 eval $inlibc
10409
10410 : see if getpriority exists
10411 set getpriority d_getprior
10412 eval $inlibc
10413
10414 : see if prototypes for various getprotoxxx netdb.h functions are available
10415 echo " "
10416 set d_getprotoprotos getprotoent $i_netdb netdb.h
10417 eval $hasproto
10418
10419 : see if getprpwnam exists
10420 set getprpwnam d_getprpwnam
10421 eval $inlibc
10422
10423 : see if getpwent exists
10424 set getpwent d_getpwent
10425 eval $inlibc
10426
10427
10428 : see if getservbyname exists
10429 set getservbyname d_getsbyname
10430 eval $inlibc
10431
10432 : see if getservbyport exists
10433 set getservbyport d_getsbyport
10434 eval $inlibc
10435
10436 : see if getservent exists
10437 set getservent d_getsent
10438 eval $inlibc
10439
10440 : see if prototypes for various getservxxx netdb.h functions are available
10441 echo " "
10442 set d_getservprotos getservent $i_netdb netdb.h
10443 eval $hasproto
10444
10445 : see if getspnam exists
10446 set getspnam d_getspnam
10447 eval $inlibc
10448
10449 : see if gettimeofday or ftime exists
10450 set gettimeofday d_gettimeod
10451 eval $inlibc
10452 case "$d_gettimeod" in
10453 "$undef")
10454         set ftime d_ftime 
10455         eval $inlibc
10456         ;;
10457 *)
10458         val="$undef"; set d_ftime; eval $setvar
10459         ;;
10460 esac
10461 case "$d_gettimeod$d_ftime" in
10462 "$undef$undef")
10463         echo " "
10464         echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
10465         ;;
10466 esac
10467
10468 : see if this is an grp system
10469 set grp.h i_grp
10470 eval $inhdr
10471
10472 case "$i_grp" in
10473 $define)
10474         xxx=`./findhdr grp.h`
10475         $cppstdin $cppflags $cppminus < $xxx >$$.h
10476
10477         if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
10478                 val="$define"
10479         else
10480                 val="$undef"
10481         fi
10482         set d_grpasswd
10483         eval $setvar
10484
10485         $rm -f $$.h
10486         ;;
10487 *)
10488         val="$undef";
10489         set d_grpasswd; eval $setvar
10490         ;;
10491 esac
10492
10493 : see if hasmntopt exists
10494 set hasmntopt d_hasmntopt
10495 eval $inlibc
10496
10497 : see if this is a netinet/in.h or sys/in.h system
10498 set netinet/in.h i_niin sys/in.h i_sysin
10499 eval $inhdr
10500
10501 : see if arpa/inet.h has to be included
10502 set arpa/inet.h i_arpainet
10503 eval $inhdr
10504
10505 : see if htonl --and friends-- exists
10506 val=''
10507 set htonl val
10508 eval $inlibc
10509
10510 : Maybe they are macros.
10511 case "$val" in
10512 $undef)
10513         $cat >htonl.c <<EOM
10514 #include <stdio.h>
10515 #include <sys/types.h>
10516 #$i_niin I_NETINET_IN
10517 #$i_sysin I_SYS_IN
10518 #$i_arpainet I_ARPA_INET
10519 #ifdef I_NETINET_IN
10520 #include <netinet/in.h>
10521 #endif
10522 #ifdef I_SYS_IN
10523 #include <sys/in.h>
10524 #endif
10525 #ifdef I_ARPA_INET
10526 #include <arpa/inet.h>
10527 #endif
10528 #ifdef htonl
10529 printf("Defined as a macro.");
10530 #endif
10531 EOM
10532         $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
10533         if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
10534                 val="$define"
10535                 echo "But it seems to be defined as a macro." >&4
10536         fi
10537         $rm -f htonl.?
10538         ;;
10539 esac
10540 set d_htonl
10541 eval $setvar
10542
10543 : see if iconv exists
10544 set iconv d_iconv
10545 eval $inlibc
10546
10547 : index or strchr
10548 echo " "
10549 if set index val -f; eval $csym; $val; then
10550         if set strchr val -f d_strchr; eval $csym; $val; then
10551                 if $contains strchr "$strings" >/dev/null 2>&1 ; then
10552                         val="$define"
10553                         vali="$undef"
10554                         echo "strchr() found." >&4
10555                 else
10556                         val="$undef"
10557                         vali="$define"
10558                         echo "index() found." >&4
10559                 fi
10560         else
10561                 val="$undef"
10562                 vali="$define"
10563                 echo "index() found." >&4
10564         fi
10565 else
10566         if set strchr val -f d_strchr; eval $csym; $val; then
10567                 val="$define"
10568                 vali="$undef"
10569                 echo "strchr() found." >&4
10570         else
10571                 echo "No index() or strchr() found!" >&4
10572                 val="$undef"
10573                 vali="$undef"
10574         fi
10575 fi
10576 set d_strchr; eval $setvar
10577 val="$vali"
10578 set d_index; eval $setvar
10579
10580 : check whether inet_aton exists
10581 set inet_aton d_inetaton
10582 eval $inlibc
10583
10584 : Look for isascii
10585 echo " "
10586 $cat >isascii.c <<'EOCP'
10587 #include <stdio.h>
10588 #include <ctype.h>
10589 int main() {
10590         int c = 'A';
10591         if (isascii(c))
10592                 exit(0);
10593         else
10594                 exit(1);
10595 }
10596 EOCP
10597 set isascii
10598 if eval $compile; then
10599         echo "isascii() found." >&4
10600         val="$define"
10601 else
10602         echo "isascii() NOT found." >&4
10603         val="$undef"
10604 fi
10605 set d_isascii
10606 eval $setvar
10607 $rm -f isascii*
10608
10609 : see if isnan exists
10610 set isnan d_isnan
10611 eval $inlibc
10612
10613 : see if isnanl exists
10614 set isnanl d_isnanl
10615 eval $inlibc
10616
10617 : see if killpg exists
10618 set killpg d_killpg
10619 eval $inlibc
10620
10621 : see if lchown exists
10622 echo " "
10623 $cat > try.c <<'EOCP'
10624 /* System header to define __stub macros and hopefully few prototypes,
10625     which can conflict with char lchown(); below.  */
10626 #include <assert.h>
10627 /* Override any gcc2 internal prototype to avoid an error.  */
10628 /* We use char because int might match the return type of a gcc2
10629    builtin and then its argument prototype would still apply.  */
10630 char lchown();
10631 int main() {
10632     /*  The GNU C library defines this for functions which it implements
10633         to always fail with ENOSYS.  Some functions are actually named
10634         something starting with __ and the normal name is an alias.  */
10635 #if defined (__stub_lchown) || defined (__stub___lchown)
10636 choke me
10637 #else
10638 lchown();
10639 #endif
10640 ; return 0; }
10641 EOCP
10642 set try
10643 if eval $compile; then
10644     $echo "lchown() found." >&4
10645     val="$define"
10646 else
10647     $echo "lchown() NOT found." >&4
10648     val="$undef"
10649 fi
10650 set d_lchown
10651 eval $setvar
10652
10653 : See if number of significant digits in a double precision number is known
10654 echo " "
10655 $cat >ldbl_dig.c <<EOM
10656 #$i_limits I_LIMITS
10657 #$i_float I_FLOAT
10658 #ifdef I_LIMITS
10659 #include <limits.h>
10660 #endif
10661 #ifdef I_FLOAT
10662 #include <float.h>
10663 #endif
10664 #ifdef LDBL_DIG
10665 printf("Contains LDBL_DIG");
10666 #endif
10667 EOM
10668 $cppstdin $cppflags $cppminus < ldbl_dig.c >ldbl_dig.E 2>/dev/null
10669 if $contains 'LDBL_DIG' ldbl_dig.E >/dev/null 2>&1; then
10670         echo "LDBL_DIG found." >&4
10671         val="$define"
10672 else
10673         echo "LDBL_DIG NOT found." >&4
10674         val="$undef"
10675 fi
10676 $rm -f ldbl_dig.?
10677 set d_ldbl_dig
10678 eval $setvar
10679
10680 : see if link exists
10681 set link d_link
10682 eval $inlibc
10683
10684 : see if localeconv exists
10685 set localeconv d_locconv
10686 eval $inlibc
10687
10688 : see if lockf exists
10689 set lockf d_lockf
10690 eval $inlibc
10691
10692 : see if prototype for lseek is available
10693 echo " "
10694 set d_lseekproto lseek $i_systypes sys/types.h $i_unistd unistd.h
10695 eval $hasproto
10696
10697 : see if lstat exists
10698 set lstat d_lstat
10699 eval $inlibc
10700
10701 : see if madvise exists
10702 set madvise d_madvise
10703 eval $inlibc
10704
10705 : see if mblen exists
10706 set mblen d_mblen
10707 eval $inlibc
10708
10709 : see if mbstowcs exists
10710 set mbstowcs d_mbstowcs
10711 eval $inlibc
10712
10713 : see if mbtowc exists
10714 set mbtowc d_mbtowc
10715 eval $inlibc
10716
10717 : see if memchr exists
10718 set memchr d_memchr
10719 eval $inlibc
10720
10721 : see if memcmp exists
10722 set memcmp d_memcmp
10723 eval $inlibc
10724
10725 : see if memcpy exists
10726 set memcpy d_memcpy
10727 eval $inlibc
10728
10729 : see if memmove exists
10730 set memmove d_memmove
10731 eval $inlibc
10732
10733 : see if memset exists
10734 set memset d_memset
10735 eval $inlibc
10736
10737 : see if mkdir exists
10738 set mkdir d_mkdir
10739 eval $inlibc
10740
10741 : see if mkdtemp exists
10742 set mkdtemp d_mkdtemp
10743 eval $inlibc
10744
10745 : see if mkfifo exists
10746 set mkfifo d_mkfifo
10747 eval $inlibc
10748
10749 : see if mkstemp exists
10750 set mkstemp d_mkstemp
10751 eval $inlibc
10752
10753 : see if mkstemps exists
10754 set mkstemps d_mkstemps
10755 eval $inlibc
10756
10757 : see if mktime exists
10758 set mktime d_mktime
10759 eval $inlibc
10760
10761 : see if this is a sys/mman.h system
10762 set sys/mman.h i_sysmman
10763 eval $inhdr
10764
10765 : see if mmap exists
10766 set mmap d_mmap
10767 eval $inlibc
10768 : see what shmat returns
10769 : default to something harmless
10770 mmaptype='void *'
10771 case "$i_sysmman$d_mmap" in
10772 "$define$define")
10773         $cat >mmap.c <<'END'
10774 #include <sys/mman.h>
10775 void *mmap();
10776 END
10777         if $cc $ccflags -c mmap.c >/dev/null 2>&1; then
10778                 mmaptype='void *'
10779         else
10780                 mmaptype='caddr_t'
10781         fi
10782         echo "and it returns ($mmaptype)." >&4
10783         ;;
10784 esac
10785
10786
10787
10788 : see if modfl exists
10789 set modfl d_modfl
10790 eval $inlibc
10791
10792 d_modfl_pow32_bug="$undef"
10793
10794 case "$d_longdbl$d_modfl" in
10795 $define$define)
10796         $cat <<EOM
10797 Checking to see whether your modfl() is okay for large values...
10798 EOM
10799 $cat >try.c <<EOCP
10800 #include <math.h> 
10801 #include <stdio.h>
10802 int main() {
10803     long double nv = 4294967303.15;
10804     long double v, w;
10805     v = modfl(nv, &w);         
10806 #ifdef __GLIBC__
10807     printf("glibc");
10808 #endif
10809     printf(" %"$sPRIfldbl" %"$sPRIfldbl" %"$sPRIfldbl"\n", nv, v, w);
10810     return 0;
10811 }
10812 EOCP
10813         case "$osname:$gccversion" in
10814         aix:)   saveccflags="$ccflags"
10815                 ccflags="$ccflags -qlongdouble" ;; # to avoid core dump
10816         esac
10817         set try
10818         if eval $compile; then
10819                 foo=`$run ./try`
10820                 case "$foo" in
10821                 *" 4294967303.150000 1.150000 4294967302.000000")
10822                         echo >&4 "Your modfl() is broken for large values."
10823                         d_modfl_pow32_bug="$define"
10824                         case "$foo" in
10825                         glibc)  echo >&4 "You should upgrade your glibc to at least 2.2.2 to get a fixed modfl()."
10826                         ;;
10827                         esac
10828                         ;;
10829                 *" 4294967303.150000 0.150000 4294967303.000000")
10830                         echo >&4 "Your modfl() seems okay for large values."
10831                         ;;
10832                 *)      echo >&4 "I don't understand your modfl() at all."
10833                         d_modfl="$undef"
10834                         ;;
10835                 esac
10836                 $rm -f try.* try core core.try.*
10837         else
10838                 echo "I cannot figure out whether your modfl() is okay, assuming it isn't."
10839                 d_modfl="$undef"
10840         fi
10841         case "$osname:$gccversion" in
10842         aix:)   ccflags="$saveccflags" ;; # restore
10843         esac
10844         ;;
10845 esac
10846
10847 : see if mprotect exists
10848 set mprotect d_mprotect
10849 eval $inlibc
10850
10851 : see if msgctl exists
10852 set msgctl d_msgctl
10853 eval $inlibc
10854
10855 : see if msgget exists
10856 set msgget d_msgget
10857 eval $inlibc
10858
10859 : see if msgsnd exists
10860 set msgsnd d_msgsnd
10861 eval $inlibc
10862
10863 : see if msgrcv exists
10864 set msgrcv d_msgrcv
10865 eval $inlibc
10866
10867 : see how much of the 'msg*(2)' library is present.
10868 h_msg=true
10869 echo " "
10870 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
10871 *"$undef"*) h_msg=false;;
10872 esac
10873 case "$osname" in
10874 freebsd)
10875     case "`ipcs 2>&1`" in
10876     "SVID messages"*"not configured"*)
10877         echo "Your $osname does not have the msg*(2) configured." >&4
10878         h_msg=false
10879         val="$undef"
10880         set msgctl d_msgctl
10881         eval $setvar
10882         set msgget d_msgget
10883         eval $setvar
10884         set msgsnd d_msgsnd
10885         eval $setvar
10886         set msgrcv d_msgrcv
10887         eval $setvar
10888         ;;
10889     esac
10890     ;;
10891 esac
10892 : we could also check for sys/ipc.h ...
10893 if $h_msg && $test `./findhdr sys/msg.h`; then
10894         echo "You have the full msg*(2) library." >&4
10895         val="$define"
10896 else
10897         echo "You don't have the full msg*(2) library." >&4
10898         val="$undef"
10899 fi
10900 set d_msg
10901 eval $setvar
10902
10903
10904 echo " "
10905 echo "Checking to see if your system supports struct msghdr..." >&4
10906 set d_msghdr_s msghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
10907 eval $hasstruct
10908 case "$d_msghdr_s" in
10909 "$define")      echo "Yes, it does."   ;;
10910 *)              echo "No, it doesn't." ;;
10911 esac
10912
10913
10914 : see if msync exists
10915 set msync d_msync
10916 eval $inlibc
10917
10918 : see if munmap exists
10919 set munmap d_munmap
10920 eval $inlibc
10921
10922 : see if nice exists
10923 set nice d_nice
10924 eval $inlibc
10925
10926 : see if this is a langinfo.h system
10927 set langinfo.h i_langinfo
10928 eval $inhdr
10929
10930 : see if nl_langinfo exists
10931 set nl_langinfo d_nl_langinfo
10932 eval $inlibc
10933
10934 : check for length of character
10935 echo " "
10936 case "$charsize" in
10937 '')
10938         echo "Checking to see how big your characters are (hey, you never know)..." >&4
10939         $cat >try.c <<'EOCP'
10940 #include <stdio.h>
10941 int main()
10942 {
10943     printf("%d\n", (int)sizeof(char));
10944     exit(0);
10945 }
10946 EOCP
10947         set try
10948         if eval $compile_ok; then
10949                 dflt=`$run ./try`
10950         else
10951                 dflt='1'
10952                 echo "(I can't seem to compile the test program.  Guessing...)"
10953         fi
10954         ;;
10955 *)
10956         dflt="$charsize"
10957         ;;
10958 esac
10959 rp="What is the size of a character (in bytes)?"
10960 . ./myread
10961 charsize="$ans"
10962 $rm -f try.c try
10963
10964 : check for volatile keyword
10965 echo " "
10966 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
10967 $cat >try.c <<'EOCP'
10968 int main()
10969 {
10970         typedef struct _goo_struct goo_struct;
10971         goo_struct * volatile goo = ((goo_struct *)0);
10972         struct _goo_struct {
10973                 long long_int;
10974                 int reg_int;
10975                 char char_var;
10976         };
10977         typedef unsigned short foo_t;
10978         char *volatile foo;
10979         volatile int bar;
10980         volatile foo_t blech;
10981         foo = foo;
10982 }
10983 EOCP
10984 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
10985         val="$define"
10986         echo "Yup, it does."
10987 else
10988         val="$undef"
10989         echo "Nope, it doesn't."
10990 fi
10991 set d_volatile
10992 eval $setvar
10993 $rm -f try.*
10994
10995
10996 echo " "
10997 $echo "Choosing the C types to be used for Perl's internal types..." >&4
10998
10999 case "$use64bitint:$d_quad:$quadtype" in
11000 define:define:?*)
11001         ivtype="$quadtype"
11002         uvtype="$uquadtype"
11003         ivsize=8
11004         uvsize=8
11005         ;;
11006 *)      ivtype="long"
11007         uvtype="unsigned long"
11008         ivsize=$longsize
11009         uvsize=$longsize
11010         ;;
11011 esac
11012
11013 case "$uselongdouble:$d_longdbl" in
11014 define:define)
11015         nvtype="long double"
11016         nvsize=$longdblsize
11017         ;;
11018 *)      nvtype=double
11019         nvsize=$doublesize
11020         ;;
11021 esac
11022
11023 $echo "(IV will be "$ivtype", $ivsize bytes)"
11024 $echo "(UV will be "$uvtype", $uvsize bytes)"
11025 $echo "(NV will be "$nvtype", $nvsize bytes)"
11026
11027 $cat >try.c <<EOCP
11028 #$i_inttypes I_INTTYPES
11029 #ifdef I_INTTYPES
11030 #include <inttypes.h>
11031 #endif
11032 #include <stdio.h>
11033 int main() {
11034 #ifdef INT8
11035    int8_t i =  INT8_MAX;
11036   uint8_t u = UINT8_MAX;
11037   printf("int8_t\n");
11038 #endif
11039 #ifdef INT16
11040    int16_t i =  INT16_MAX;
11041   uint16_t i = UINT16_MAX;
11042   printf("int16_t\n");
11043 #endif
11044 #ifdef INT32
11045    int32_t i =  INT32_MAX;
11046   uint32_t u = UINT32_MAX;
11047   printf("int32_t\n");
11048 #endif
11049 }
11050 EOCP
11051
11052 case "$i8type" in
11053 '')     case "$charsize" in
11054         1)      i8type=char
11055                 u8type="unsigned char"
11056                 i8size=$charsize
11057                 u8size=$charsize
11058                 ;;
11059         esac
11060         ;;
11061 esac
11062 case "$i8type" in
11063 '')     set try -DINT8
11064         if eval $compile; then
11065                 case "`$run ./try`" in
11066                 int8_t) i8type=int8_t
11067                         u8type=uint8_t
11068                         i8size=1
11069                         u8size=1
11070                         ;;
11071                 esac
11072         fi
11073         ;;
11074 esac
11075 case "$i8type" in
11076 '')     if $test $charsize -ge 1; then
11077                 i8type=char
11078                 u8type="unsigned char"
11079                 i8size=$charsize
11080                 u8size=$charsize
11081         fi
11082         ;;
11083 esac
11084
11085 case "$i16type" in
11086 '')     case "$shortsize" in
11087         2)      i16type=short
11088                 u16type="unsigned short"
11089                 i16size=$shortsize
11090                 u16size=$shortsize
11091                 ;;
11092         esac
11093         ;;
11094 esac
11095 case "$i16type" in
11096 '')     set try -DINT16
11097         if eval $compile; then
11098                 case "`$run ./try`" in
11099                 int16_t)
11100                         i16type=int16_t
11101                         u16type=uint16_t
11102                         i16size=2
11103                         u16size=2
11104                         ;;
11105                 esac
11106         fi
11107         ;;
11108 esac
11109 case "$i16type" in
11110 '')     if $test $shortsize -ge 2; then
11111                 i16type=short
11112                 u16type="unsigned short"
11113                 i16size=$shortsize
11114                 u16size=$shortsize
11115         fi
11116         ;;
11117 esac
11118
11119 case "$i32type" in
11120 '')     case "$longsize" in
11121         4)      i32type=long
11122                 u32type="unsigned long"
11123                 i32size=$longsize
11124                 u32size=$longsize
11125                 ;;
11126         *)      case "$intsize" in
11127                 4)      i32type=int
11128                         u32type="unsigned int"
11129                         i32size=$intsize
11130                         u32size=$intsize
11131                         ;;
11132                 esac
11133                 ;;
11134         esac
11135         ;;
11136 esac
11137 case "$i32type" in
11138 '')     set try -DINT32
11139         if eval $compile; then
11140                 case "`$run ./try`" in
11141                 int32_t)
11142                         i32type=int32_t
11143                         u32type=uint32_t
11144                         i32size=4
11145                         u32size=4
11146                         ;;
11147                 esac
11148         fi
11149         ;;
11150 esac
11151 case "$i32type" in
11152 '')     if $test $intsize -ge 4; then
11153                 i32type=int
11154                 u32type="unsigned int"
11155                 i32size=$intsize
11156                 u32size=$intsize
11157         fi
11158         ;;
11159 esac
11160
11161 case "$i64type" in
11162 '')     case "$d_quad:$quadtype" in
11163         define:?*)
11164                 i64type="$quadtype"
11165                 u64type="$uquadtype"
11166                 i64size=8
11167                 u64size=8
11168                 ;;
11169         esac
11170         ;;
11171 esac
11172
11173 $echo "Checking how many bits of your UVs your NVs can preserve..." >&4
11174 : volatile so that the compiler has to store it out to memory.
11175 if test X"$d_volatile" = X"$define"; then
11176         volatile=volatile
11177 fi
11178 $cat <<EOP >try.c
11179 #include <stdio.h>
11180 #include <sys/types.h>
11181 #include <signal.h>
11182 #ifdef SIGFPE
11183 $volatile int bletched = 0;
11184 $signal_t blech(s) int s; { bletched = 1; }
11185 #endif
11186 int main() {
11187     $uvtype u = 0;
11188     $nvtype d;
11189     int     n = 8 * $uvsize;
11190     int     i;
11191 #ifdef SIGFPE
11192     signal(SIGFPE, blech);
11193 #endif
11194
11195     for (i = 0; i < n; i++) {
11196       u = u << 1 | ($uvtype)1;
11197       d = ($nvtype)u;
11198       if (($uvtype)d != u)
11199         break;
11200       if (d <= 0)
11201         break;
11202       d = ($nvtype)(u - 1);
11203       if (($uvtype)d != (u - 1))
11204         break;
11205 #ifdef SIGFPE
11206       if (bletched) {
11207         break;
11208 #endif
11209       } 
11210     }
11211     printf("%d\n", ((i == n) ? -n : i));
11212     exit(0);
11213 }
11214 EOP
11215 set try
11216
11217 d_nv_preserves_uv="$undef"
11218 if eval $compile; then
11219         d_nv_preserves_uv_bits="`$run ./try`"
11220 fi
11221 case "$d_nv_preserves_uv_bits" in
11222 \-[1-9]*)       
11223         d_nv_preserves_uv_bits=`expr 0 - $d_nv_preserves_uv_bits`
11224         $echo "Your NVs can preserve all $d_nv_preserves_uv_bits bits of your UVs."  2>&1
11225         d_nv_preserves_uv="$define"
11226         ;;
11227 [1-9]*) $echo "Your NVs can preserve only $d_nv_preserves_uv_bits bits of your UVs."  2>&1
11228         d_nv_preserves_uv="$undef" ;;
11229 *)      $echo "Can't figure out how many bits your NVs preserve." 2>&1
11230         d_nv_preserves_uv_bits="$undef" ;;
11231 esac
11232
11233 $rm -f try.* try
11234
11235
11236 : check for off64_t
11237 echo " "
11238 echo "Checking to see if you have off64_t..." >&4
11239 $cat >try.c <<EOCP
11240 #include <sys/types.h>
11241 #include <unistd.h>
11242 int main() { off64_t x = 7; }
11243 EOCP
11244 set try
11245 if eval $compile; then
11246         val="$define"
11247         echo "You have off64_t."
11248 else
11249         val="$undef"
11250         echo "You do not have off64_t."
11251         case "$lseeksize" in
11252         8) echo "(Your off_t is 64 bits, so you could use that.)" ;;
11253         esac
11254 fi
11255 $rm -f try.* try
11256 set d_off64_t
11257 eval $setvar
11258
11259 : see if POSIX threads are available
11260 set pthread.h i_pthread
11261 eval $inhdr
11262
11263
11264
11265
11266 : how to create joinable pthreads
11267 if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
11268         echo " "
11269         echo "Checking what constant to use for creating joinable pthreads..." >&4 
11270         $cat >try.c <<'EOCP'
11271 #include <pthread.h>
11272 int main() {
11273     int detachstate = JOINABLE;
11274 }
11275 EOCP
11276         set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
11277         if eval $compile; then
11278                 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
11279                 val="$undef" # Yes, undef.
11280                 set d_old_pthread_create_joinable
11281                 eval $setvar
11282                 val=""
11283                 set old_pthread_create_joinable
11284                 eval $setvar
11285         else
11286                 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
11287                 if eval $compile; then
11288                         echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
11289                         val="$define"
11290                         set d_old_pthread_create_joinable
11291                         eval $setvar
11292                         val=PTHREAD_CREATE_UNDETACHED
11293                         set old_pthread_create_joinable
11294                         eval $setvar
11295                 else            
11296                         set try -DJOINABLE=__UNDETACHED
11297                         if eval $compile; then
11298                                 echo "You seem to use __UNDETACHED." >&4
11299                                 val="$define"
11300                                 set d_old_pthread_create_joinable
11301                                 eval $setvar
11302                                 val=__UNDETACHED
11303                                 set old_pthread_create_joinable
11304                                 eval $setvar
11305                         else
11306                                 echo "Egads, nothing obvious found.  Guessing that you use 0." >&4
11307                                 val="$define"
11308                                 set d_old_pthread_create_joinable
11309                                 eval $setvar
11310                                 val=0
11311                                 set old_pthread_create_joinable
11312                                 eval $setvar
11313                         fi
11314                 fi
11315         fi
11316         $rm -f try try.*
11317 else
11318     d_old_pthread_create_joinable="$undef"
11319     old_pthread_create_joinable=""
11320 fi
11321
11322 : see if pause exists
11323 set pause d_pause
11324 eval $inlibc
11325
11326 : see if pipe exists
11327 set pipe d_pipe
11328 eval $inlibc
11329
11330 : see if poll exists
11331 set poll d_poll
11332 eval $inlibc
11333
11334 : see if pthread_atfork exists
11335 set pthread_atfork d_pthread_atfork
11336 eval $inlibc
11337
11338
11339 : see whether the various POSIXish _yields exist
11340 $cat >try.c <<EOP
11341 #include <pthread.h>
11342 #include <stdio.h>
11343 int main() {
11344 #ifdef SCHED_YIELD
11345         sched_yield();
11346 #else
11347 #ifdef PTHREAD_YIELD
11348         pthread_yield();
11349 #else
11350 #ifdef PTHREAD_YIELD_NULL
11351         pthread_yield(NULL);
11352 #endif
11353 #endif
11354 #endif
11355 }
11356 EOP
11357 : see if sched_yield exists
11358 set try -DSCHED_YIELD
11359 if eval $compile; then
11360     val="$define"
11361     sched_yield='sched_yield()'
11362 else
11363     val="$undef"
11364 fi
11365 case "$usethreads" in
11366 $define)
11367         case "$val" in
11368         $define) echo 'sched_yield() found.' >&4        ;;
11369         *)       echo 'sched_yield() NOT found.' >&4    ;;
11370         esac
11371 esac
11372 set d_sched_yield
11373 eval $setvar
11374
11375 : see if pthread_yield exists
11376 set try -DPTHREAD_YIELD
11377 if eval $compile; then
11378     val="$define"
11379     case "$sched_yield" in
11380     '') sched_yield='pthread_yield()' ;;
11381     esac
11382 else
11383     set try -DPTHREAD_YIELD_NULL
11384     if eval $compile; then
11385         val="$define"
11386         case "$sched_yield" in
11387         '') sched_yield='pthread_yield(NULL)' ;;
11388         esac
11389     else
11390         val="$undef"
11391     fi
11392 fi
11393 case "$usethreads" in
11394 $define)
11395         case "$val" in
11396         $define) echo 'pthread_yield() found.' >&4      ;;
11397         *)       echo 'pthread_yield() NOT found.' >&4  ;;
11398         esac
11399         ;;
11400 esac
11401 set d_pthread_yield
11402 eval $setvar
11403
11404 case "$sched_yield" in
11405 '') sched_yield=undef ;;
11406 esac
11407
11408 $rm -f try try.*
11409
11410 : see if this is a pwd.h system
11411 set pwd.h i_pwd
11412 eval $inhdr
11413
11414 case "$i_pwd" in
11415 $define)
11416         xxx=`./findhdr pwd.h`
11417         $cppstdin $cppflags $cppminus < $xxx >$$.h
11418
11419         if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
11420                 val="$define"
11421         else
11422                 val="$undef"
11423         fi
11424         set d_pwquota
11425         eval $setvar
11426
11427         if $contains 'pw_age' $$.h >/dev/null 2>&1; then
11428                 val="$define"
11429         else
11430                 val="$undef"
11431         fi
11432         set d_pwage
11433         eval $setvar
11434
11435         if $contains 'pw_change' $$.h >/dev/null 2>&1; then
11436                 val="$define"
11437         else
11438                 val="$undef"
11439         fi
11440         set d_pwchange
11441         eval $setvar
11442
11443         if $contains 'pw_class' $$.h >/dev/null 2>&1; then
11444                 val="$define"
11445         else
11446                 val="$undef"
11447         fi
11448         set d_pwclass
11449         eval $setvar
11450
11451         if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
11452                 val="$define"
11453         else
11454                 val="$undef"
11455         fi
11456         set d_pwexpire
11457         eval $setvar
11458
11459         if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
11460                 val="$define"
11461         else
11462                 val="$undef"
11463         fi
11464         set d_pwcomment
11465         eval $setvar
11466
11467         if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
11468                 val="$define"
11469         else
11470                 val="$undef"
11471         fi
11472         set d_pwgecos
11473         eval $setvar
11474
11475         if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
11476                 val="$define"
11477         else
11478                 val="$undef"
11479         fi
11480         set d_pwpasswd
11481         eval $setvar
11482
11483         $rm -f $$.h
11484         ;;
11485 *)
11486         val="$undef"; 
11487         set d_pwquota; eval $setvar
11488         set d_pwage; eval $setvar
11489         set d_pwchange; eval $setvar
11490         set d_pwclass; eval $setvar
11491         set d_pwexpire; eval $setvar
11492         set d_pwcomment; eval $setvar
11493         set d_pwgecos; eval $setvar
11494         set d_pwpasswd; eval $setvar
11495         ;;
11496 esac
11497
11498 : see if readdir and friends exist
11499 set readdir d_readdir
11500 eval $inlibc
11501 set seekdir d_seekdir
11502 eval $inlibc
11503 set telldir d_telldir
11504 eval $inlibc
11505 set rewinddir d_rewinddir
11506 eval $inlibc
11507
11508 : see if readlink exists
11509 set readlink d_readlink
11510 eval $inlibc
11511
11512 : see if readv exists
11513 set readv d_readv
11514 eval $inlibc
11515
11516 : see if recvmsg exists
11517 set recvmsg d_recvmsg
11518 eval $inlibc
11519
11520 : see if rename exists
11521 set rename d_rename
11522 eval $inlibc
11523
11524 : see if rmdir exists
11525 set rmdir d_rmdir
11526 eval $inlibc
11527
11528 : see if memory.h is available.
11529 val=''
11530 set memory.h val
11531 eval $inhdr
11532
11533 : See if it conflicts with string.h
11534 case "$val" in
11535 $define)
11536         case "$strings" in
11537         '') ;;
11538         *)
11539                 $cppstdin $cppflags $cppminus < $strings > mem.h
11540                 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
11541                         echo " "
11542                         echo "We won't be including <memory.h>."
11543                         val="$undef"
11544                 fi
11545                 $rm -f mem.h
11546                 ;;
11547         esac
11548 esac
11549 set i_memory
11550 eval $setvar
11551
11552 : can bcopy handle overlapping blocks?
11553 echo " "
11554 val="$undef"
11555 case "$d_memmove" in
11556 "$define") echo "I'll use memmove() instead of bcopy() for overlapping copies." ;;
11557 *)      case "$d_bcopy" in
11558         "$define")
11559                 echo "Checking to see if bcopy() can do overlapping copies..." >&4
11560                 $cat >try.c <<EOCP
11561 #$i_memory I_MEMORY
11562 #$i_stdlib I_STDLIB
11563 #$i_string I_STRING
11564 #$i_unistd I_UNISTD
11565 EOCP
11566         $cat >>try.c <<'EOCP'
11567 #include <stdio.h>
11568 #ifdef I_MEMORY
11569 #  include <memory.h>
11570 #endif
11571 #ifdef I_STDLIB
11572 #  include <stdlib.h>
11573 #endif
11574 #ifdef I_STRING
11575 #  include <string.h>
11576 #else
11577 #  include <strings.h>
11578 #endif
11579 #ifdef I_UNISTD
11580 #  include <unistd.h>  /* Needed for NetBSD */
11581 #endif
11582 int main()
11583 {
11584 char buf[128], abc[128];
11585 char *b;
11586 int len;
11587 int off;
11588 int align;
11589
11590 /* Copy "abcde..." string to char abc[] so that gcc doesn't
11591    try to store the string in read-only memory. */
11592 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
11593
11594 for (align = 7; align >= 0; align--) {
11595         for (len = 36; len; len--) {
11596                 b = buf+align;
11597                 bcopy(abc, b, len);
11598                 for (off = 1; off <= len; off++) {
11599                         bcopy(b, b+off, len);
11600                         bcopy(b+off, b, len);
11601                         if (bcmp(b, abc, len))
11602                                 exit(1);
11603                 }
11604         }
11605 }
11606 exit(0);
11607 }
11608 EOCP
11609                 set try
11610                 if eval $compile_ok; then
11611                         if ./try 2>/dev/null; then
11612                                 echo "Yes, it can."
11613                                 val="$define"
11614                         else
11615                                 echo "It can't, sorry."
11616                         fi
11617                 else
11618                         echo "(I can't compile the test program, so we'll assume not...)"
11619                 fi
11620                 ;;
11621         esac
11622         $rm -f try.* try core
11623         ;;
11624 esac
11625 set d_safebcpy
11626 eval $setvar
11627
11628 : can memcpy handle overlapping blocks?
11629 echo " "
11630 val="$undef"
11631 case "$d_memmove" in
11632 "$define") echo "I'll use memmove() instead of memcpy() for overlapping copies." ;;
11633 *)      case "$d_memcpy" in
11634         "$define")
11635                 echo "Checking to see if memcpy() can do overlapping copies..." >&4
11636                 $cat >try.c <<EOCP
11637 #$i_memory I_MEMORY
11638 #$i_stdlib I_STDLIB
11639 #$i_string I_STRING
11640 #$i_unistd I_UNISTD
11641 EOCP
11642         $cat >>try.c <<'EOCP'
11643 #include <stdio.h>
11644 #ifdef I_MEMORY
11645 #  include <memory.h>
11646 #endif
11647 #ifdef I_STDLIB
11648 #  include <stdlib.h>
11649 #endif
11650 #ifdef I_STRING
11651 #  include <string.h>
11652 #else
11653 #  include <strings.h>
11654 #endif
11655 #ifdef I_UNISTD
11656 #  include <unistd.h>  /* Needed for NetBSD */
11657 #endif
11658 int main()
11659 {
11660 char buf[128], abc[128];
11661 char *b;
11662 int len;
11663 int off;
11664 int align;
11665
11666 /* Copy "abcde..." string to char abc[] so that gcc doesn't
11667    try to store the string in read-only memory. */
11668 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
11669
11670 for (align = 7; align >= 0; align--) {
11671         for (len = 36; len; len--) {
11672                 b = buf+align;
11673                 memcpy(b, abc, len);
11674                 for (off = 1; off <= len; off++) {
11675                         memcpy(b+off, b, len);
11676                         memcpy(b, b+off, len);
11677                         if (memcmp(b, abc, len))
11678                                 exit(1);
11679                 }
11680         }
11681 }
11682 exit(0);
11683 }
11684 EOCP
11685                 set try
11686                 if eval $compile_ok; then
11687                         if ./try 2>/dev/null; then
11688                                 echo "Yes, it can."
11689                                 val="$define"
11690                         else
11691                                 echo "It can't, sorry."
11692                         fi
11693                 else
11694                         echo "(I can't compile the test program, so we'll assume not...)"
11695                 fi
11696                 ;;
11697         esac
11698         $rm -f try.* try core
11699         ;;
11700 esac
11701 set d_safemcpy
11702 eval $setvar
11703
11704 : can memcmp be trusted to compare relative magnitude?
11705 val="$undef"
11706 case "$d_memcmp" in
11707 "$define")
11708         echo " "
11709         echo "Checking if your memcmp() can compare relative magnitude..." >&4
11710         $cat >try.c <<EOCP
11711 #$i_memory I_MEMORY
11712 #$i_stdlib I_STDLIB
11713 #$i_string I_STRING
11714 #$i_unistd I_UNISTD
11715 EOCP
11716         $cat >>try.c <<'EOCP'
11717 #include <stdio.h>
11718 #ifdef I_MEMORY
11719 #  include <memory.h>
11720 #endif
11721 #ifdef I_STDLIB
11722 #  include <stdlib.h>
11723 #endif
11724 #ifdef I_STRING
11725 #  include <string.h>
11726 #else
11727 #  include <strings.h>
11728 #endif
11729 #ifdef I_UNISTD
11730 #  include <unistd.h>  /* Needed for NetBSD */
11731 #endif
11732 int main()
11733 {
11734 char a = -1;
11735 char b = 0;
11736 if ((a < b) && memcmp(&a, &b, 1) < 0)
11737         exit(1);
11738 exit(0);
11739 }
11740 EOCP
11741         set try
11742         if eval $compile_ok; then
11743                 if $run ./try 2>/dev/null; then
11744                         echo "Yes, it can."
11745                         val="$define"
11746                 else
11747                         echo "No, it can't (it uses signed chars)."
11748                 fi
11749         else
11750                 echo "(I can't compile the test program, so we'll assume not...)"
11751         fi
11752         ;;
11753 esac
11754 $rm -f try.* try core
11755 set d_sanemcmp
11756 eval $setvar
11757
11758 : see if prototype for sbrk is available
11759 echo " "
11760 set d_sbrkproto sbrk $i_unistd unistd.h
11761 eval $hasproto
11762
11763 : see if select exists
11764 set select d_select
11765 eval $inlibc
11766
11767 : see if semctl exists
11768 set semctl d_semctl
11769 eval $inlibc
11770
11771 : see if semget exists
11772 set semget d_semget
11773 eval $inlibc
11774
11775 : see if semop exists
11776 set semop d_semop
11777 eval $inlibc
11778
11779 : see how much of the 'sem*(2)' library is present.
11780 h_sem=true
11781 echo " "
11782 case "$d_semctl$d_semget$d_semop" in
11783 *"$undef"*) h_sem=false;;
11784 esac
11785 case "$osname" in
11786 freebsd)
11787     case "`ipcs 2>&1`" in
11788     "SVID messages"*"not configured"*)
11789         echo "Your $osname does not have the sem*(2) configured." >&4
11790         h_sem=false
11791         val="$undef"
11792         set semctl d_semctl
11793         eval $setvar
11794         set semget d_semget
11795         eval $setvar
11796         set semop d_semop
11797         eval $setvar
11798         ;;
11799     esac
11800     ;;
11801 esac
11802 : we could also check for sys/ipc.h ...
11803 if $h_sem && $test `./findhdr sys/sem.h`; then
11804         echo "You have the full sem*(2) library." >&4
11805         val="$define"
11806 else
11807         echo "You don't have the full sem*(2) library." >&4
11808         val="$undef"
11809 fi
11810 set d_sem
11811 eval $setvar
11812
11813 : see whether sys/sem.h defines union semun
11814 echo " "
11815 $cat > try.c <<'END'
11816 #include <sys/types.h>
11817 #include <sys/ipc.h>
11818 #include <sys/sem.h>
11819 int main () { union semun semun; semun.buf = 0; }
11820 END
11821 set try
11822 if eval $compile; then
11823     echo "You have union semun in <sys/sem.h>." >&4
11824     val="$define"
11825 else
11826     echo "You do not have union semun in <sys/sem.h>." >&4
11827     val="$undef"
11828 fi
11829 $rm -f try try.c try.h
11830 set d_union_semun
11831 eval $setvar
11832
11833 : see how to do semctl IPC_STAT
11834 case "$d_sem" in
11835 $define)
11836     : see whether semctl IPC_STAT can use union semun
11837     echo " "
11838     $cat > try.h <<END
11839 #ifndef S_IRUSR
11840 #   ifdef S_IREAD
11841 #       define S_IRUSR S_IREAD
11842 #       define S_IWUSR S_IWRITE
11843 #       define S_IXUSR S_IEXEC
11844 #   else
11845 #       define S_IRUSR 0400
11846 #       define S_IWUSR 0200
11847 #       define S_IXUSR 0100
11848 #   endif
11849 #   define S_IRGRP (S_IRUSR>>3)
11850 #   define S_IWGRP (S_IWUSR>>3)
11851 #   define S_IXGRP (S_IXUSR>>3)
11852 #   define S_IROTH (S_IRUSR>>6)
11853 #   define S_IWOTH (S_IWUSR>>6)
11854 #   define S_IXOTH (S_IXUSR>>6)
11855 #endif
11856 #ifndef S_IRWXU
11857 #   define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
11858 #   define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
11859 #   define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
11860 #endif
11861 END
11862
11863     $cat > try.c <<END
11864 #include <sys/types.h>
11865 #include <sys/ipc.h>
11866 #include <sys/sem.h>
11867 #include <sys/stat.h>
11868 #include <stdio.h>
11869 #include <errno.h>
11870 #include "try.h"
11871 #ifndef errno
11872 extern int errno;
11873 #endif
11874 #$d_union_semun HAS_UNION_SEMUN
11875 int main() {
11876     union semun
11877 #ifndef HAS_UNION_SEMUN
11878     {
11879         int val;
11880         struct semid_ds *buf;
11881         unsigned short *array;
11882     }
11883 #endif
11884     arg;
11885     int sem, st;
11886
11887 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
11888     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
11889     if (sem > -1) {
11890         struct semid_ds argbuf;
11891         arg.buf = &argbuf;
11892 #       ifdef IPC_STAT
11893         st = semctl(sem, 0, IPC_STAT, arg);
11894         if (st == 0)
11895             printf("semun\n");
11896         else
11897 #       endif /* IPC_STAT */
11898             printf("semctl IPC_STAT failed: errno = %d\n", errno);
11899 #       ifdef IPC_RMID
11900         if (semctl(sem, 0, IPC_RMID, arg) != 0)
11901 #       endif /* IPC_RMID */
11902             printf("semctl IPC_RMID failed: errno = %d\n", errno);
11903     } else
11904 #endif /* IPC_PRIVATE && ... */
11905         printf("semget failed: errno = %d\n", errno);
11906   return 0;
11907 }
11908 END
11909     val="$undef"
11910     set try
11911     if eval $compile; then
11912         xxx=`$run ./try`
11913         case "$xxx" in
11914         semun) val="$define" ;;
11915         esac
11916     fi
11917     $rm -f try try.c
11918     set d_semctl_semun
11919     eval $setvar
11920     case "$d_semctl_semun" in
11921     $define)
11922         echo "You can use union semun for semctl IPC_STAT." >&4
11923         also='also'
11924         ;;
11925     *)  echo "You cannot use union semun for semctl IPC_STAT." >&4
11926         also=''
11927         ;;
11928     esac
11929
11930     : see whether semctl IPC_STAT can use struct semid_ds pointer
11931     $cat > try.c <<'END'
11932 #include <sys/types.h>
11933 #include <sys/ipc.h>
11934 #include <sys/sem.h>
11935 #include <sys/stat.h>
11936 #include "try.h"
11937 #include <stdio.h>
11938 #include <errno.h>
11939 #ifndef errno
11940 extern int errno;
11941 #endif
11942 int main() {
11943     struct semid_ds arg;
11944     int sem, st;
11945
11946 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) &&  defined(S_IRWXO) && defined(IPC_CREAT)
11947     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
11948     if (sem > -1) {
11949 #       ifdef IPC_STAT
11950         st = semctl(sem, 0, IPC_STAT, &arg);
11951         if (st == 0)
11952             printf("semid_ds\n");
11953         else
11954 #       endif /* IPC_STAT */
11955             printf("semctl IPC_STAT failed: errno = %d\n", errno);
11956 #       ifdef IPC_RMID
11957         if (semctl(sem, 0, IPC_RMID, &arg) != 0)
11958 #       endif /* IPC_RMID */
11959             printf("semctl IPC_RMID failed: errno = %d\n", errno);
11960     } else
11961 #endif /* IPC_PRIVATE && ... */
11962         printf("semget failed: errno = %d\n", errno);
11963
11964     return 0;
11965 }
11966 END
11967     val="$undef"
11968     set try
11969     if eval $compile; then
11970         xxx=`$run ./try`
11971         case "$xxx" in
11972         semid_ds) val="$define" ;;
11973         esac
11974     fi
11975     $rm -f try try.c
11976     set d_semctl_semid_ds
11977     eval $setvar
11978     case "$d_semctl_semid_ds" in
11979     $define)
11980         echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
11981         ;;
11982     *)  echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
11983         ;;
11984     esac
11985     $rm -f try.h
11986     ;;
11987 *)  val="$undef"
11988
11989     # We do not have the full sem*(2) library, so assume we can not
11990     # use either.
11991
11992     set d_semctl_semun
11993     eval $setvar
11994
11995     set d_semctl_semid_ds
11996     eval $setvar
11997     ;;
11998 esac
11999
12000 : see if sendmsg exists
12001 set sendmsg d_sendmsg
12002 eval $inlibc
12003
12004 : see if setegid exists
12005 set setegid d_setegid
12006 eval $inlibc
12007
12008 : see if seteuid exists
12009 set seteuid d_seteuid
12010 eval $inlibc
12011
12012 : see if setgrent exists
12013 set setgrent d_setgrent
12014 eval $inlibc
12015
12016 : see if sethostent exists
12017 set sethostent d_sethent
12018 eval $inlibc
12019
12020 : see if setitimer exists
12021 set setitimer d_setitimer
12022 eval $inlibc
12023
12024 : see if setlinebuf exists
12025 set setlinebuf d_setlinebuf
12026 eval $inlibc
12027
12028 : see if setlocale exists
12029 set setlocale d_setlocale
12030 eval $inlibc
12031
12032 : see if setnetent exists
12033 set setnetent d_setnent
12034 eval $inlibc
12035
12036 : see if setprotoent exists
12037 set setprotoent d_setpent
12038 eval $inlibc
12039
12040 : see if setpgid exists
12041 set setpgid d_setpgid
12042 eval $inlibc
12043
12044 : see if setpgrp2 exists
12045 set setpgrp2 d_setpgrp2
12046 eval $inlibc
12047
12048 : see if setpriority exists
12049 set setpriority d_setprior
12050 eval $inlibc
12051
12052 : see if setproctitle exists
12053 set setproctitle d_setproctitle
12054 eval $inlibc
12055
12056 : see if setpwent exists
12057 set setpwent d_setpwent
12058 eval $inlibc
12059
12060 : see if setregid exists
12061 set setregid d_setregid
12062 eval $inlibc
12063 set setresgid d_setresgid
12064 eval $inlibc
12065
12066 : see if setreuid exists
12067 set setreuid d_setreuid
12068 eval $inlibc
12069 set setresuid d_setresuid
12070 eval $inlibc
12071
12072 : see if setrgid exists
12073 set setrgid d_setrgid
12074 eval $inlibc
12075
12076 : see if setruid exists
12077 set setruid d_setruid
12078 eval $inlibc
12079
12080 : see if setservent exists
12081 set setservent d_setsent
12082 eval $inlibc
12083
12084 : see if setsid exists
12085 set setsid d_setsid
12086 eval $inlibc
12087
12088 : see if setvbuf exists
12089 set setvbuf d_setvbuf
12090 eval $inlibc
12091
12092 : see if sfio.h is available
12093 set sfio.h i_sfio
12094 eval $inhdr
12095
12096
12097 : see if sfio library is available
12098 case "$i_sfio" in
12099 $define)
12100         val=''
12101         set sfreserve val
12102         eval $inlibc
12103         ;;
12104 *)
12105         val="$undef"
12106         ;;
12107 esac
12108 : Ok, but do we want to use it.
12109 case "$val" in
12110 $define)
12111         case "$usesfio" in
12112         true|$define|[yY]*) dflt='y';;
12113         *) dflt='n';;
12114         esac
12115         echo "$package can use the sfio library, but it is experimental."
12116         case "$useperlio" in
12117         "$undef")
12118             echo "For sfio also the PerlIO abstraction layer is needed."
12119             echo "Earlier you said you wouldn't want that."
12120             ;;
12121         esac
12122         rp="You seem to have sfio available, do you want to try using it?"
12123         . ./myread
12124         case "$ans" in
12125         y|Y)    echo "Ok, turning on both sfio and PerlIO, then."
12126                 useperlio="$define"
12127                 val="$define"
12128                 ;;
12129         *)      echo "Ok, avoiding sfio this time.  I'll use stdio instead."
12130                 val="$undef"
12131                 ;;
12132         esac
12133         ;;
12134 *)      case "$usesfio" in
12135         true|$define|[yY]*)
12136                 echo "Sorry, cannot find sfio on this machine." >&4
12137                 echo "Ignoring your setting of usesfio=$usesfio." >&4
12138                 val="$undef"
12139                 ;;
12140         esac
12141         ;;
12142 esac
12143 set d_sfio
12144 eval $setvar
12145 case "$d_sfio" in
12146 $define) usesfio='true';;
12147 *) usesfio='false';;
12148 esac
12149 case "$d_sfio" in
12150 $define) ;;
12151 *)      : Remove sfio from list of libraries to use
12152         case "$libs" in
12153         *-lsfio*)
12154                 echo "Removing unneeded -lsfio from library list" >&4
12155                 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
12156                 shift
12157                 libs="$*"
12158                 echo "libs = $libs" >&4
12159                 ;;
12160         esac
12161 ;;
12162 esac
12163
12164
12165 : see if shmctl exists
12166 set shmctl d_shmctl
12167 eval $inlibc
12168
12169 : see if shmget exists
12170 set shmget d_shmget
12171 eval $inlibc
12172
12173 : see if shmat exists
12174 set shmat d_shmat
12175 eval $inlibc
12176 : see what shmat returns
12177 case "$d_shmat" in
12178 "$define")
12179         $cat >shmat.c <<'END'
12180 #include <sys/shm.h>
12181 void *shmat();
12182 END
12183         if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
12184                 shmattype='void *'
12185         else
12186                 shmattype='char *'
12187         fi
12188         echo "and it returns ($shmattype)." >&4
12189         : see if a prototype for shmat is available
12190         xxx=`./findhdr sys/shm.h`
12191         $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
12192         if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
12193                 val="$define"
12194         else
12195                 val="$undef"
12196         fi
12197         $rm -f shmat.[co]
12198         ;;
12199 *)
12200         val="$undef"
12201         ;;
12202 esac
12203 set d_shmatprototype
12204 eval $setvar
12205
12206 : see if shmdt exists
12207 set shmdt d_shmdt
12208 eval $inlibc
12209
12210 : see how much of the 'shm*(2)' library is present.
12211 h_shm=true
12212 echo " "
12213 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
12214 *"$undef"*) h_shm=false;;
12215 esac
12216 case "$osname" in
12217 freebsd)
12218     case "`ipcs 2>&1`" in
12219     "SVID shared memory"*"not configured"*)
12220         echo "Your $osname does not have the shm*(2) configured." >&4
12221         h_shm=false
12222         val="$undef"
12223         set shmctl d_shmctl
12224         evat $setvar
12225         set shmget d_shmget
12226         evat $setvar
12227         set shmat d_shmat
12228         evat $setvar
12229         set shmdt d_shmdt
12230         evat $setvar
12231         ;;
12232     esac
12233     ;;
12234 esac
12235 : we could also check for sys/ipc.h ...
12236 if $h_shm && $test `./findhdr sys/shm.h`; then
12237         echo "You have the full shm*(2) library." >&4
12238         val="$define"
12239 else
12240         echo "You don't have the full shm*(2) library." >&4
12241         val="$undef"
12242 fi
12243 set d_shm
12244 eval $setvar
12245
12246 echo " "
12247 : see if we have sigaction
12248 if set sigaction val -f d_sigaction; eval $csym; $val; then
12249         echo 'sigaction() found.' >&4
12250         $cat > try.c <<'EOP'
12251 #include <stdio.h>
12252 #include <sys/types.h>
12253 #include <signal.h>
12254 int main()
12255 {
12256     struct sigaction act, oact;
12257     act.sa_flags = 0;
12258     oact.sa_handler = 0;
12259     /* so that act and oact are used */
12260     exit(act.sa_flags == 0 &&  oact.sa_handler == 0);
12261 }
12262 EOP
12263         set try
12264         if eval $compile_ok; then
12265                 val="$define"
12266         else
12267                 echo "But you don't seem to have a useable struct sigaction." >&4
12268                 val="$undef"
12269         fi
12270 else
12271         echo 'sigaction NOT found.' >&4
12272         val="$undef"
12273 fi
12274 set d_sigaction; eval $setvar
12275 $rm -f try try$_o try.c
12276
12277 : see if sigprocmask exists
12278 set sigprocmask d_sigprocmask
12279 eval $inlibc
12280
12281 : see if sigsetjmp exists
12282 echo " "
12283 case "$d_sigsetjmp" in
12284 '')
12285         $cat >try.c <<'EOP'
12286 #include <setjmp.h>
12287 sigjmp_buf env;
12288 int set = 1;
12289 int main()
12290 {
12291         if (sigsetjmp(env,1))
12292                 exit(set);
12293         set = 0;
12294         siglongjmp(env, 1);
12295         exit(1);
12296 }
12297 EOP
12298         set try
12299         if eval $compile; then
12300                 if $run ./try >/dev/null 2>&1; then
12301                         echo "POSIX sigsetjmp found." >&4
12302                         val="$define"
12303                 else
12304                         $cat >&4 <<EOM
12305 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
12306 I'll ignore them.
12307 EOM
12308                         val="$undef"
12309                 fi
12310         else
12311                 echo "sigsetjmp not found." >&4
12312                 val="$undef"
12313         fi
12314         ;;
12315 *) val="$d_sigsetjmp"
12316         case "$d_sigsetjmp" in
12317         $define) echo "POSIX sigsetjmp found." >&4;;
12318         $undef) echo "sigsetjmp not found." >&4;;
12319         esac
12320         ;;
12321 esac
12322 set d_sigsetjmp
12323 eval $setvar
12324 $rm -f try.c try
12325
12326 : see if sockatmark exists
12327 set sockatmark d_sockatmark
12328 eval $inlibc
12329
12330 : see if prototype for sockatmark is available
12331 echo " "
12332 set d_sockatmarkproto sockatmark $d_socket sys/socket.h
12333 eval $hasproto
12334
12335 : see if socks5_init exists
12336 set socks5_init d_socks5_init
12337 eval $inlibc
12338
12339 : see if prototype for setresgid is available
12340 echo " "
12341 set d_sresgproto setresgid $i_unistd unistd.h
12342 eval $hasproto
12343
12344 : see if prototype for setresuid is available
12345 echo " "
12346 set d_sresuproto setresuid $i_unistd unistd.h
12347 eval $hasproto
12348
12349 : see if sys/stat.h is available
12350 set sys/stat.h i_sysstat
12351 eval $inhdr
12352
12353
12354 : see if stat knows about block sizes
12355 echo " "
12356 echo "Checking to see if your struct stat has st_blocks field..." >&4
12357 set d_statblks stat st_blocks $i_sysstat sys/stat.h
12358 eval $hasfield
12359
12360
12361 : see if this is a sys/vfs.h system
12362 set sys/vfs.h i_sysvfs
12363 eval $inhdr
12364
12365
12366 : see if this is a sys/statfs.h system
12367 set sys/statfs.h i_sysstatfs
12368 eval $inhdr
12369
12370
12371 echo " "
12372 echo "Checking to see if your system supports struct statfs..." >&4
12373 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
12374 eval $hasstruct
12375 case "$d_statfs_s" in
12376 "$define")      echo "Yes, it does."   ;;
12377 *)              echo "No, it doesn't." ;;
12378 esac
12379
12380
12381
12382 : see if struct statfs knows about f_flags
12383 case "$d_statfs_s" in
12384 define) 
12385         echo " "
12386         echo "Checking to see if your struct statfs has f_flags field..." >&4
12387         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
12388         eval $hasfield
12389         ;;
12390 *)      val="$undef"
12391         set d_statfs_f_flags
12392         eval $setvar
12393         ;;
12394 esac
12395 case "$d_statfs_f_flags" in
12396 "$define")      echo "Yes, it does."   ;;
12397 *)              echo "No, it doesn't." ;;
12398 esac
12399
12400 : see if _ptr and _cnt from stdio act std
12401 echo " "
12402
12403 if $contains '_lbfsize' `./findhdr stdio.h` >/dev/null 2>&1 ; then
12404         echo "(Looks like you have stdio.h from BSD.)"
12405         case "$stdio_ptr" in
12406         '') stdio_ptr='((fp)->_p)'
12407                 ptr_lval=$define
12408                 ;;
12409         *)      ptr_lval=$d_stdio_ptr_lval;;
12410         esac
12411         case "$stdio_cnt" in
12412         '') stdio_cnt='((fp)->_r)'
12413                 cnt_lval=$define
12414                 ;;
12415         *)      cnt_lval=$d_stdio_cnt_lval;;
12416         esac
12417         case "$stdio_base" in
12418         '') stdio_base='((fp)->_ub._base ? (fp)->_ub._base : (fp)->_bf._base)';;
12419         esac
12420         case "$stdio_bufsiz" in
12421         '') stdio_bufsiz='((fp)->_ub._base ? (fp)->_ub._size : (fp)->_bf._size)';;
12422         esac
12423 elif $contains '_IO_fpos_t' `./findhdr stdio.h` `./findhdr libio.h` >/dev/null 2>&1 ; then
12424         echo "(Looks like you have stdio.h from Linux.)"
12425         case "$stdio_ptr" in
12426         '') stdio_ptr='((fp)->_IO_read_ptr)'
12427                 ptr_lval=$define
12428                 ;;
12429         *)      ptr_lval=$d_stdio_ptr_lval;;
12430         esac
12431         case "$stdio_cnt" in
12432         '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
12433                 cnt_lval=$undef
12434                 ;;
12435         *)      cnt_lval=$d_stdio_cnt_lval;;
12436         esac
12437         case "$stdio_base" in
12438         '') stdio_base='((fp)->_IO_read_base)';;
12439         esac
12440         case "$stdio_bufsiz" in
12441         '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
12442         esac
12443 else
12444         case "$stdio_ptr" in
12445         '') stdio_ptr='((fp)->_ptr)'
12446                 ptr_lval=$define
12447                 ;;
12448         *)      ptr_lval=$d_stdio_ptr_lval;;
12449         esac
12450         case "$stdio_cnt" in
12451         '') stdio_cnt='((fp)->_cnt)'
12452                 cnt_lval=$define
12453                 ;;
12454         *)      cnt_lval=$d_stdio_cnt_lval;;
12455         esac
12456         case "$stdio_base" in
12457         '') stdio_base='((fp)->_base)';;
12458         esac
12459         case "$stdio_bufsiz" in
12460         '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
12461         esac
12462 fi
12463
12464 : test whether _ptr and _cnt really work
12465 echo "Checking how std your stdio is..." >&4
12466 $cat >try.c <<EOP
12467 #include <stdio.h>
12468 #define FILE_ptr(fp)    $stdio_ptr
12469 #define FILE_cnt(fp)    $stdio_cnt
12470 int main() {
12471         FILE *fp = fopen("try.c", "r");
12472         char c = getc(fp);
12473         if (
12474                 18 <= FILE_cnt(fp) &&
12475                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
12476         )
12477                 exit(0);
12478         exit(1);
12479 }
12480 EOP
12481 val="$undef"
12482 set try
12483 if eval $compile && $to try.c; then
12484         if $run ./try; then
12485                 echo "Your stdio acts pretty std."
12486                 val="$define"
12487         else
12488                 echo "Your stdio isn't very std."
12489         fi
12490 else
12491         echo "Your stdio doesn't appear very std."
12492 fi
12493 $rm -f try.c try
12494 set d_stdstdio
12495 eval $setvar
12496
12497 : Can _ptr be used as an lvalue?
12498 case "$d_stdstdio$ptr_lval" in
12499 $define$define) val=$define ;;
12500 *) val=$undef ;;
12501 esac
12502 set d_stdio_ptr_lval
12503 eval $setvar
12504
12505 : Can _cnt be used as an lvalue?
12506 case "$d_stdstdio$cnt_lval" in
12507 $define$define) val=$define ;;
12508 *) val=$undef ;;
12509 esac
12510 set d_stdio_cnt_lval
12511 eval $setvar
12512
12513
12514 : test whether setting _ptr sets _cnt as a side effect
12515 d_stdio_ptr_lval_sets_cnt="$undef"
12516 d_stdio_ptr_lval_nochange_cnt="$undef"
12517 case "$d_stdio_ptr_lval$d_stdstdio" in
12518 $define$define)
12519         echo "Checking to see what happens if we set the stdio ptr..." >&4
12520 $cat >try.c <<EOP
12521 #include <stdio.h>
12522 /* Can we scream? */
12523 /* Eat dust sed :-) */
12524 /* In the buffer space, no one can hear you scream. */
12525 #define FILE_ptr(fp)    $stdio_ptr
12526 #define FILE_cnt(fp)    $stdio_cnt
12527 #include <sys/types.h>
12528 int main() {
12529         FILE *fp = fopen("try.c", "r");
12530         int c;
12531         char *ptr;
12532         size_t cnt;
12533         if (!fp) {
12534             puts("Fail even to read");
12535             exit(1);
12536         }
12537         c = getc(fp); /* Read away the first # */
12538         if (c == EOF) {
12539             puts("Fail even to read");
12540             exit(1);
12541         }
12542         if (!(
12543                 18 <= FILE_cnt(fp) &&
12544                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
12545         )) {
12546                 puts("Fail even to read");
12547                 exit (1);
12548         }
12549         ptr = (char*) FILE_ptr(fp);
12550         cnt = (size_t)FILE_cnt(fp);
12551
12552         FILE_ptr(fp) += 42;
12553
12554         if ((char*)FILE_ptr(fp) != (ptr + 42)) {
12555                 printf("Fail ptr check %p != %p", FILE_ptr(fp), (ptr + 42));
12556                 exit (1);
12557         }
12558         if (FILE_cnt(fp) <= 20) {
12559                 printf ("Fail (<20 chars to test)");
12560                 exit (1);
12561         }
12562         if (strncmp(FILE_ptr(fp), "Eat dust sed :-) */\n", 20) != 0) {
12563                 puts("Fail compare");
12564                 exit (1);
12565         }
12566         if (cnt == FILE_cnt(fp)) {
12567                 puts("Pass_unchanged");
12568                 exit (0);
12569         }       
12570         if (FILE_cnt(fp) == (cnt - 42)) {
12571                 puts("Pass_changed");
12572                 exit (0);
12573         }
12574         printf("Fail count was %d now %d\n", cnt, FILE_cnt(fp));
12575         return 1;
12576
12577 }
12578 EOP
12579         set try
12580         if eval $compile && $to try.c; then
12581                 case `$run ./try` in
12582                 Pass_changed)
12583                         echo "Increasing ptr in your stdio decreases cnt by the same amount.  Good." >&4
12584                         d_stdio_ptr_lval_sets_cnt="$define" ;;
12585                 Pass_unchanged)
12586                         echo "Increasing ptr in your stdio leaves cnt unchanged.  Good." >&4
12587                         d_stdio_ptr_lval_nochange_cnt="$define" ;;
12588                 Fail*)
12589                         echo "Increasing ptr in your stdio didn't do exactly what I expected.  We'll not be doing that then." >&4 ;;
12590                 *)
12591                         echo "It appears attempting to set ptr in your stdio is a bad plan." >&4 ;;
12592         esac
12593         else
12594                 echo "It seems we can't set ptr in your stdio.  Nevermind." >&4
12595         fi
12596         $rm -f try.c try
12597         ;;
12598 esac
12599
12600 : see if _base is also standard
12601 val="$undef"
12602 case "$d_stdstdio" in
12603 $define)
12604         $cat >try.c <<EOP
12605 #include <stdio.h>
12606 #define FILE_base(fp)   $stdio_base
12607 #define FILE_bufsiz(fp) $stdio_bufsiz
12608 int main() {
12609         FILE *fp = fopen("try.c", "r");
12610         char c = getc(fp);
12611         if (
12612                 19 <= FILE_bufsiz(fp) &&
12613                 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
12614         )
12615                 exit(0);
12616         exit(1);
12617 }
12618 EOP
12619         set try
12620         if eval $compile && $to try.c; then
12621                 if $run ./try; then
12622                         echo "And its _base field acts std."
12623                         val="$define"
12624                 else
12625                         echo "But its _base field isn't std."
12626                 fi
12627         else
12628                 echo "However, it seems to be lacking the _base field."
12629         fi
12630         $rm -f try.c try
12631         ;;
12632 esac
12633 set d_stdiobase
12634 eval $setvar
12635
12636 $cat >&4 <<EOM
12637 Checking how to access stdio streams by file descriptor number...
12638 EOM
12639 case "$stdio_stream_array" in
12640 '')     $cat >try.c <<EOCP
12641 #include <stdio.h>
12642 int main() {
12643   if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
12644     printf("yes\n");
12645 }
12646 EOCP
12647         for s in _iob __iob __sF
12648         do
12649                 set try -DSTDIO_STREAM_ARRAY=$s
12650                 if eval $compile; then
12651                         case "`$run ./try`" in
12652                         yes)    stdio_stream_array=$s; break ;;
12653                         esac
12654                 fi
12655         done
12656         $rm -f try.* try$exe_ext
12657 esac
12658 case "$stdio_stream_array" in
12659 '')     $cat >&4 <<EOM
12660 I can't figure out how to access stdio streams by file descriptor number.
12661 EOM
12662         d_stdio_stream_array="$undef"
12663         ;;
12664 *)      $cat >&4 <<EOM
12665 You can access stdio streams by file descriptor number by the $stdio_stream_array array.
12666 EOM
12667         d_stdio_stream_array="$define"
12668         ;;
12669 esac
12670
12671 : see if strcoll exists
12672 set strcoll d_strcoll
12673 eval $inlibc
12674
12675 : check for structure copying
12676 echo " "
12677 echo "Checking to see if your C compiler can copy structs..." >&4
12678 $cat >try.c <<'EOCP'
12679 int main()
12680 {
12681         struct blurfl {
12682                 int dyick;
12683         } foo, bar;
12684
12685         foo = bar;
12686 }
12687 EOCP
12688 if $cc -c try.c >/dev/null 2>&1 ; then
12689         val="$define"
12690         echo "Yup, it can."
12691 else
12692         val="$undef"
12693         echo "Nope, it can't."
12694 fi
12695 set d_strctcpy
12696 eval $setvar
12697 $rm -f try.*
12698
12699 : see if strerror and/or sys_errlist[] exist
12700 echo " "
12701 if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
12702     if set strerror val -f d_strerror; eval $csym; $val; then
12703                 echo 'strerror() found.' >&4
12704                 d_strerror="$define"
12705                 d_strerrm='strerror(e)'
12706                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
12707                         echo "(You also have sys_errlist[], so we could roll our own strerror.)" 
12708                         d_syserrlst="$define"
12709                 else
12710                         echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
12711                         d_syserrlst="$undef"
12712                 fi
12713     elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
12714                         $contains '#[   ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
12715                 echo 'strerror() found in string header.' >&4
12716                 d_strerror="$define"
12717                 d_strerrm='strerror(e)'
12718                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
12719                         echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
12720                                 d_syserrlst="$define"
12721                 else
12722                         echo "(You don't appear to have any sys_errlist[], how can this be?)"
12723                         d_syserrlst="$undef"
12724                 fi
12725     elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
12726                 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
12727                 d_strerror="$undef"
12728                 d_syserrlst="$define"
12729                 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
12730     else
12731                 echo 'strerror() and sys_errlist[] NOT found.' >&4
12732                 d_strerror="$undef"
12733                 d_syserrlst="$undef"
12734                 d_strerrm='"unknown"'
12735     fi
12736 fi
12737
12738 : see if strftime exists
12739 set strftime d_strftime
12740 eval $inlibc
12741
12742 : see if strtod exists
12743 set strtod d_strtod
12744 eval $inlibc
12745
12746 : see if strtol exists
12747 set strtol d_strtol
12748 eval $inlibc
12749
12750 : see if strtold exists
12751 set strtold d_strtold
12752 eval $inlibc
12753
12754 : see if strtoll exists
12755 set strtoll d_strtoll
12756 eval $inlibc
12757
12758 case "$d_longlong-$d_strtoll" in
12759 "$define-$define")
12760         $cat <<EOM
12761 Checking whether your strtoll() works okay...
12762 EOM
12763         $cat >try.c <<'EOCP'
12764 #include <errno.h>
12765 #ifdef __hpux
12766 #define strtoll __strtoll
12767 #endif
12768 #ifdef __EMX__
12769 #define strtoll _strtoll
12770 #endif
12771 #include <stdio.h>
12772 extern long long int strtoll(char *s, char **, int); 
12773 static int bad = 0;
12774 int check(char *s, long long ell, int een) {
12775         long long gll;
12776         errno = 0;
12777         gll = strtoll(s, 0, 10);
12778         if (!((gll == ell) && (errno == een)))
12779                 bad++;
12780 }
12781 int main() {
12782         check(" 1",                                      1LL, 0);
12783         check(" 0",                                      0LL, 0);
12784         check("-1",                                     -1LL, 0);
12785         check("-9223372036854775808", -9223372036854775808LL, 0);
12786         check("-9223372036854775808", -9223372036854775808LL, 0);
12787         check(" 9223372036854775807",  9223372036854775807LL, 0);
12788         check("-9223372036854775808", -9223372036854775808LL, 0);
12789         check(" 9223372036854775808",  9223372036854775807LL, ERANGE);
12790         check("-9223372036854775809", -9223372036854775808LL, ERANGE);
12791         if (!bad)
12792                 printf("ok\n");
12793 }
12794 EOCP
12795         set try
12796         if eval $compile; then
12797                 yyy=`$run ./try`
12798                 case "$yyy" in
12799                 ok) echo "Your strtoll() seems to be working okay." ;;
12800                 *) cat <<EOM >&4
12801 Your strtoll() doesn't seem to be working okay.
12802 EOM
12803                    d_strtoll="$undef"
12804                    ;;
12805                 esac
12806         else
12807                 echo "(I can't seem to compile the test program--assuming it doesn't)"
12808                 d_strtoll="$undef"
12809         fi
12810         ;;
12811 esac
12812
12813 : see if strtoq exists
12814 set strtoq d_strtoq
12815 eval $inlibc
12816
12817 : see if strtoul exists
12818 set strtoul d_strtoul
12819 eval $inlibc
12820
12821 case "$d_strtoul" in
12822 "$define")
12823         $cat <<EOM
12824 Checking whether your strtoul() works okay...
12825 EOM
12826         $cat >try.c <<'EOCP'
12827 #include <errno.h>
12828 #include <stdio.h>
12829 extern unsigned long int strtoul(char *s, char **, int); 
12830 static int bad = 0;
12831 void check(char *s, unsigned long eul, int een) {
12832         unsigned long gul;
12833         errno = 0;
12834         gul = strtoul(s, 0, 10);
12835         if (!((gul == eul) && (errno == een)))
12836                 bad++;
12837 }
12838 int main() {
12839         check(" 1", 1L, 0);
12840         check(" 0", 0L, 0);
12841 EOCP
12842         case "$longsize" in
12843         8)
12844             $cat >>try.c <<'EOCP'
12845         check("18446744073709551615", 18446744073709551615UL, 0);
12846         check("18446744073709551616", 18446744073709551615UL, ERANGE);
12847 #if 0 /* strtoul() for /^-/ strings is undefined. */
12848         check("-1", 18446744073709551615UL, 0);
12849         check("-18446744073709551614", 2, 0);
12850         check("-18446744073709551615", 1, 0);
12851         check("-18446744073709551616", 18446744073709551615UL, ERANGE);
12852         check("-18446744073709551617", 18446744073709551615UL, ERANGE);
12853 #endif
12854 EOCP
12855                 ;;
12856         4)
12857                     $cat >>try.c <<'EOCP'
12858         check("4294967295", 4294967295UL, 0);
12859         check("4294967296", 4294967295UL, ERANGE);
12860 #if 0 /* strtoul() for /^-/ strings is undefined. */
12861         check("-1", 4294967295UL, 0);
12862         check("-4294967294", 2, 0);
12863         check("-4294967295", 1, 0);
12864         check("-4294967296", 4294967295UL, ERANGE);
12865         check("-4294967297", 4294967295UL, ERANGE);
12866 #endif
12867 EOCP
12868                 ;;
12869         *)
12870 : Should we write these tests to be more portable by sprintf-ing
12871 : ~0 and then manipulating that char string as input for strtol?
12872                 ;;
12873         esac
12874         $cat >>try.c <<'EOCP'
12875         if (!bad)
12876                 printf("ok\n");
12877         return 0;
12878 }
12879 EOCP
12880         set try
12881         if eval $compile; then
12882                 case "`$run ./try`" in
12883                 ok) echo "Your strtoul() seems to be working okay." ;;
12884                 *) cat <<EOM >&4
12885 Your strtoul() doesn't seem to be working okay.
12886 EOM
12887                    d_strtoul="$undef"
12888                    ;;
12889                 esac
12890         fi
12891         ;;
12892 esac
12893
12894 : see if strtoull exists
12895 set strtoull d_strtoull
12896 eval $inlibc
12897
12898 case "$d_longlong-$d_strtoull" in
12899 "$define-$define")
12900         $cat <<EOM
12901 Checking whether your strtoull() works okay...
12902 EOM
12903         $cat >try.c <<'EOCP'
12904 #include <errno.h>
12905 #ifdef __hpux
12906 #define strtoull __strtoull
12907 #endif
12908 #include <stdio.h>
12909 extern unsigned long long int strtoull(char *s, char **, int); 
12910 static int bad = 0;
12911 int check(char *s, long long eull, int een) {
12912         long long gull;
12913         errno = 0;
12914         gull = strtoull(s, 0, 10);
12915         if (!((gull == eull) && (errno == een)))
12916                 bad++;
12917 }
12918 int main() {
12919         check(" 1",                                        1LL, 0);
12920         check(" 0",                                        0LL, 0);
12921         check("18446744073709551615",  18446744073709551615ULL, 0);
12922         check("18446744073709551616",  18446744073709551615ULL, ERANGE);
12923 #if 0 /* strtoull() for /^-/ strings is undefined. */
12924         check("-1",                    18446744073709551615ULL, 0);
12925         check("-18446744073709551614",                     2LL, 0);
12926         check("-18446744073709551615",                     1LL, 0);
12927         check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
12928         check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
12929 #endif
12930         if (!bad)
12931                 printf("ok\n");
12932 }
12933 EOCP
12934         set try
12935         if eval $compile; then
12936                 case "`$run ./try`" in
12937                 ok) echo "Your strtoull() seems to be working okay." ;;
12938                 *) cat <<EOM >&4
12939 Your strtoull() doesn't seem to be working okay.
12940 EOM
12941                    d_strtoull="$undef"
12942                    ;;
12943                 esac
12944         fi
12945         ;;
12946 esac
12947
12948 : see if strtouq exists
12949 set strtouq d_strtouq
12950 eval $inlibc
12951
12952 case "$d_strtouq" in
12953 "$define")
12954         $cat <<EOM
12955 Checking whether your strtouq() works okay...
12956 EOM
12957         $cat >try.c <<'EOCP'
12958 #include <errno.h>
12959 #include <stdio.h>
12960 extern unsigned long long int strtouq(char *s, char **, int); 
12961 static int bad = 0;
12962 void check(char *s, unsigned long long eull, int een) {
12963         unsigned long long gull;
12964         errno = 0;
12965         gull = strtouq(s, 0, 10);
12966         if (!((gull == eull) && (errno == een)))
12967                 bad++;
12968 }
12969 int main() {
12970         check(" 1",                                        1LL, 0);
12971         check(" 0",                                        0LL, 0);
12972         check("18446744073709551615",  18446744073709551615ULL, 0);
12973         check("18446744073709551616",  18446744073709551615ULL, ERANGE);
12974 #if 0 /* strtouq() for /^-/ strings is undefined. */
12975         check("-1",                    18446744073709551615ULL, 0);
12976         check("-18446744073709551614",                     2LL, 0);
12977         check("-18446744073709551615",                     1LL, 0);
12978         check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
12979         check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
12980 #endif
12981         if (!bad)
12982                 printf("ok\n");
12983         return 0;
12984 }
12985 EOCP
12986         set try
12987         if eval $compile; then
12988                 case "`$run ./try`" in
12989                 ok) echo "Your strtouq() seems to be working okay." ;;
12990                 *) cat <<EOM >&4
12991 Your strtouq() doesn't seem to be working okay.
12992 EOM
12993                    d_strtouq="$undef"
12994                    ;;
12995                 esac
12996         fi
12997         ;;
12998 esac
12999
13000 : see if strxfrm exists
13001 set strxfrm d_strxfrm
13002 eval $inlibc
13003
13004 : see if symlink exists
13005 set symlink d_symlink
13006 eval $inlibc
13007
13008 : see if syscall exists
13009 set syscall d_syscall
13010 eval $inlibc
13011
13012 : see if prototype for syscall is available
13013 echo " "
13014 set d_syscallproto syscall $i_unistd unistd.h
13015 eval $hasproto
13016
13017 : see if sysconf exists
13018 set sysconf d_sysconf
13019 eval $inlibc
13020
13021 : see if system exists
13022 set system d_system
13023 eval $inlibc
13024
13025 : see if tcgetpgrp exists
13026 set tcgetpgrp d_tcgetpgrp
13027 eval $inlibc
13028
13029 : see if tcsetpgrp exists
13030 set tcsetpgrp d_tcsetpgrp
13031 eval $inlibc
13032
13033 : see if prototype for telldir is available
13034 echo " "
13035 set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
13036 eval $hasproto
13037
13038 : see if this is a sys/times.h system
13039 set sys/times.h i_systimes
13040 eval $inhdr
13041
13042 : see if times exists
13043 echo " "
13044 if set times val -f d_times; eval $csym; $val; then
13045         echo 'times() found.' >&4
13046         d_times="$define"
13047         inc=''
13048         case "$i_systimes" in
13049         "$define") inc='sys/times.h';;
13050         esac
13051         rp="What is the type returned by times() on this system?"
13052         set clock_t clocktype long stdio.h sys/types.h $inc
13053         eval $typedef_ask
13054 else
13055         echo 'times() NOT found, hope that will do.' >&4
13056         d_times="$undef"
13057         clocktype='int'
13058 fi
13059
13060 : see if truncate exists
13061 set truncate d_truncate
13062 eval $inlibc
13063
13064 : see if tzname[] exists
13065 echo " "
13066 if set tzname val -a d_tzname; eval $csym; $val; then
13067         val="$define"
13068         echo 'tzname[] found.' >&4
13069 else
13070         val="$undef"
13071         echo 'tzname[] NOT found.' >&4
13072 fi
13073 set d_tzname
13074 eval $setvar
13075
13076 case "$osname" in
13077 next|rhapsody|darwin) multiarch="$define" ;;
13078 esac
13079 case "$multiarch" in
13080 ''|[nN]*) multiarch="$undef" ;;
13081 esac
13082
13083 : check for ordering of bytes in a long
13084 echo " "
13085 case "$usecrosscompile$multiarch" in
13086 *$define*)
13087         $cat <<EOM
13088 You seem to be either cross-compiling or doing a multiarchitecture build,
13089 skipping the byteorder check.
13090
13091 EOM
13092         byteorder='ffff'
13093         ;;
13094 *)
13095         case "$byteorder" in
13096         '')
13097                 $cat <<'EOM'
13098 In the following, larger digits indicate more significance.  A big-endian
13099 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
13100 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
13101 machines may have weird orders like 3412.  A Cray will report 87654321,
13102 an Alpha will report 12345678. If the test program works the default is
13103 probably right.
13104 I'm now running the test program...
13105 EOM
13106                 $cat >try.c <<'EOCP'
13107 #include <stdio.h>
13108 int main()
13109 {
13110         int i;
13111         union {
13112                 unsigned long l;
13113                 char c[sizeof(long)];
13114         } u;
13115
13116         if (sizeof(long) > 4)
13117                 u.l = (0x08070605L << 32) | 0x04030201L;
13118         else
13119                 u.l = 0x04030201L;
13120         for (i = 0; i < sizeof(long); i++)
13121                 printf("%c", u.c[i]+'0');
13122         printf("\n");
13123         exit(0);
13124 }
13125 EOCP
13126                 xxx_prompt=y
13127                 set try
13128                 if eval $compile && ./try > /dev/null; then
13129                         dflt=`$run ./try`
13130                         case "$dflt" in
13131                         [1-4][1-4][1-4][1-4]|12345678|87654321)
13132                                 echo "(The test program ran ok.)"
13133                                 echo "byteorder=$dflt"
13134                                 xxx_prompt=n
13135                         ;;
13136                         ????|????????) echo "(The test program ran ok.)" ;;
13137                         *) echo "(The test program didn't run right for some reason.)" ;;
13138                         esac
13139                 else
13140                         dflt='4321'
13141                         cat <<'EOM'
13142 (I can't seem to compile the test program.  Guessing big-endian...)
13143 EOM
13144                 fi
13145                 case "$xxx_prompt" in
13146                 y)
13147                         rp="What is the order of bytes in a long?"
13148                         . ./myread
13149                         byteorder="$ans"
13150                         ;;
13151                 *)      byteorder=$dflt
13152                         ;;
13153                 esac
13154                 ;;
13155         esac
13156         $rm -f try.c try
13157         ;;
13158 esac
13159
13160
13161 $cat <<EOM
13162
13163 Checking to see whether you can access character data unalignedly...
13164 EOM
13165 $cat >try.c <<EOCP
13166 #include <stdio.h>
13167 #define U32 $u32type
13168 #define BYTEORDER $byteorder
13169 int main() {
13170 #if BYTEORDER == 0x1234 || BYTEORDER == 0x4321
13171     U8 buf[] = "\0\0\0\1\0\0\0\0";
13172     U32 *up;
13173     int i;
13174
13175     if (sizeof(U32) != 4) {
13176         printf("sizeof(U32) is not 4, but %d\n", sizeof(U32));
13177         exit(1);
13178     }
13179
13180     fflush(stdout);
13181
13182     for (i = 0; i < 4; i++) {
13183         up = (U32*)(buf + i);
13184         if (! ((*up == 1 << (8*i)) ||   /* big-endian */
13185                (*up == 1 << (8*(3-i)))  /* little-endian */
13186               )
13187            )
13188         {
13189             printf("read failed (%x)\n", *up);
13190             exit(2);
13191         }
13192     }
13193
13194     /* write test */
13195     for (i = 0; i < 4; i++) {
13196         up = (U32*)(buf + i);
13197         *up = 0xBeef;
13198         if (*up != 0xBeef) {
13199             printf("write failed (%x)\n", *up);
13200             exit(3);
13201         }
13202     }
13203
13204     exit(0);
13205 #else
13206     printf("1\n");
13207     exit(1);
13208 #endif
13209     return 0;
13210 }
13211 EOCP
13212 set try
13213 if eval $compile_ok; then
13214         echo "(Testing for character data alignment may dump core.)" >&4
13215         $run ./try 2>&1 >/dev/null
13216         case "$?" in
13217         0)      cat >&4 <<EOM
13218 You can access character data pretty unalignedly.
13219 EOM
13220                 d_u32align="$undef"
13221                 ;;
13222         *)      cat >&4 <<EOM
13223 It seems that you must access character data in an aligned manner.
13224 EOM
13225                 d_u32align="$define"
13226                 ;;
13227         esac
13228         $rm -f core core.try.* try.core
13229 else
13230         rp='Can you access character data at unaligned addresses?'
13231         dflt='n'
13232         . ./myread
13233         case "$ans" in
13234         [yY]*)  d_u32align="$undef"  ;;
13235         *)      d_u32align="$define" ;;
13236         esac
13237 fi
13238
13239 : see if ualarm exists
13240 set ualarm d_ualarm
13241 eval $inlibc
13242
13243 : see if umask exists
13244 set umask d_umask
13245 eval $inlibc
13246
13247 : see if usleep exists
13248 set usleep d_usleep
13249 eval $inlibc
13250
13251 : see if prototype for usleep is available
13252 echo " "
13253 set d_usleepproto usleep $i_unistd unistd.h
13254 eval $hasproto
13255
13256 : see if ustat exists
13257 set ustat d_ustat
13258 eval $inlibc
13259
13260 : backward compatibility for d_hvfork
13261 if test X$d_hvfork != X; then
13262         d_vfork="$d_hvfork"
13263         d_hvfork=''
13264 fi
13265 : see if there is a vfork
13266 val=''
13267 set vfork val
13268 eval $inlibc
13269
13270 : Ok, but do we want to use it. vfork is reportedly unreliable in 
13271 : perl on Solaris 2.x, and probably elsewhere.
13272 case "$val" in
13273 $define)
13274         echo " "
13275         case "$usevfork" in
13276         false) dflt='n';;
13277         *) dflt='y';;
13278         esac
13279         cat <<'EOM'
13280  
13281 Perl can only use a vfork() that doesn't suffer from strict
13282 restrictions on calling functions or modifying global data in
13283 the child.  For example, glibc-2.1 contains such a vfork()
13284 that is unsuitable.  If your system provides a proper fork()
13285 call, chances are that you do NOT want perl to use vfork().
13286
13287 EOM
13288         rp="Do you still want to use vfork()?"
13289         . ./myread
13290         case "$ans" in
13291         y|Y) ;;
13292         *)
13293                 echo "Ok, we won't use vfork()."
13294                 val="$undef"
13295                 ;;
13296         esac
13297         ;;
13298 esac
13299 set d_vfork
13300 eval $setvar
13301 case "$d_vfork" in
13302 $define) usevfork='true';;
13303 *) usevfork='false';;
13304 esac
13305
13306 : see if this is an sysdir system
13307 set sys/dir.h i_sysdir
13308 eval $inhdr
13309
13310 : see if this is an sysndir system
13311 set sys/ndir.h i_sysndir
13312 eval $inhdr
13313
13314 : see if closedir exists
13315 set closedir d_closedir
13316 eval $inlibc
13317
13318 case "$d_closedir" in
13319 "$define")
13320         echo " "
13321         echo "Checking whether closedir() returns a status..." >&4
13322         cat > try.c <<EOM
13323 #$i_dirent I_DIRENT             /**/
13324 #$i_sysdir I_SYS_DIR            /**/
13325 #$i_sysndir I_SYS_NDIR          /**/
13326 #$i_systypes I_SYS_TYPES        /**/
13327
13328 #if defined(I_SYS_TYPES)
13329 #include <sys/types.h>
13330 #endif
13331 #if defined(I_DIRENT)
13332 #include <dirent.h>
13333 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
13334 #include <sys/dir.h>
13335 #endif
13336 #else
13337 #ifdef I_SYS_NDIR
13338 #include <sys/ndir.h>
13339 #else
13340 #ifdef I_SYS_DIR
13341 #ifdef hp9000s500
13342 #include <ndir.h>       /* may be wrong in the future */
13343 #else
13344 #include <sys/dir.h>
13345 #endif
13346 #endif
13347 #endif
13348 #endif 
13349 int main() { return closedir(opendir(".")); }
13350 EOM
13351         set try
13352         if eval $compile_ok; then
13353                 if $run ./try > /dev/null 2>&1 ; then
13354                         echo "Yes, it does."
13355                         val="$undef"
13356                 else
13357                         echo "No, it doesn't."
13358                         val="$define"
13359                 fi
13360         else
13361                 echo "(I can't seem to compile the test program--assuming it doesn't)"
13362                 val="$define"
13363         fi
13364         ;;
13365 *)
13366         val="$undef";
13367         ;;
13368 esac
13369 set d_void_closedir
13370 eval $setvar
13371 $rm -f try try.*
13372 : see if there is a wait4
13373 set wait4 d_wait4
13374 eval $inlibc
13375
13376 : see if waitpid exists
13377 set waitpid d_waitpid
13378 eval $inlibc
13379
13380 : see if wcstombs exists
13381 set wcstombs d_wcstombs
13382 eval $inlibc
13383
13384 : see if wctomb exists
13385 set wctomb d_wctomb
13386 eval $inlibc
13387
13388 : see if writev exists
13389 set writev d_writev
13390 eval $inlibc
13391
13392 : preserve RCS keywords in files with variable substitution, grrr
13393 Date='$Date'
13394 Id='$Id'
13395 Log='$Log'
13396 RCSfile='$RCSfile'
13397 Revision='$Revision'
13398
13399 : check for alignment requirements
13400 echo " "
13401 case "$usecrosscompile$multiarch" in
13402 *$define*)
13403         $cat <<EOM
13404 You seem to be either cross-compiling or doing a multiarchitecture build,
13405 skipping the memory alignment check.
13406
13407 EOM
13408         case "$alignbytes" in
13409         '') alignbytes=8 ;;
13410         esac
13411         ;;
13412 *)
13413         case "$alignbytes" in
13414         '') echo "Checking alignment constraints..." >&4
13415                 if $test "X$uselongdouble" = Xdefine -a "X$d_longdbl" = Xdefine; then
13416                         $cat >try.c <<'EOCP'
13417 typedef long double NV;
13418 EOCP
13419                 else
13420                         $cat >try.c <<'EOCP'
13421 typedef double NV;
13422 EOCP
13423                 fi
13424                 $cat >>try.c <<'EOCP'
13425 #include <stdio.h>
13426 struct foobar {
13427         char foo;
13428         NV bar;
13429 } try_algn;
13430 int main()
13431 {
13432     printf("%d\n", (int)((char *)&try_algn.bar - (char *)&try_algn.foo));
13433     return(0);
13434 }
13435 EOCP
13436                 set try
13437                 if eval $compile_ok; then
13438                         dflt=`$run ./try`
13439                 else
13440                         dflt='8'
13441                         echo "(I can't seem to compile the test program...)"
13442                 fi
13443                 ;;
13444         *) dflt="$alignbytes"
13445                 ;;
13446         esac
13447         rp="Doubles must be aligned on a how-many-byte boundary?"
13448         . ./myread
13449         alignbytes="$ans"
13450         $rm -f try.c try
13451         ;;
13452 esac
13453
13454
13455 : set the base revision
13456 baserev=5.0
13457
13458 : how do we catenate cpp tokens here?
13459 echo " "
13460 echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
13461 $cat >cpp_stuff.c <<'EOCP'
13462 #define RCAT(a,b)a/**/b
13463 #define ACAT(a,b)a ## b
13464 RCAT(Rei,ser)
13465 ACAT(Cir,cus)
13466 EOCP
13467 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
13468 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
13469         echo "Oh!  Smells like ANSI's been here." >&4
13470         echo "We can catify or stringify, separately or together!"
13471         cpp_stuff=42
13472 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
13473         echo "Ah, yes!  The good old days!" >&4
13474         echo "However, in the good old days we don't know how to stringify and"
13475         echo "catify at the same time."
13476         cpp_stuff=1
13477 else
13478         $cat >&4 <<EOM
13479 Hmm, I don't seem to be able to catenate tokens with your cpp.  You're going
13480 to have to edit the values of CAT[2-5] in config.h...
13481 EOM
13482         cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
13483 fi
13484 $rm -f cpp_stuff.*
13485
13486 : see if this is a db.h system
13487 set db.h i_db
13488 eval $inhdr
13489
13490 case "$i_db" in
13491 $define)
13492         : Check db version.
13493         echo " "
13494         echo "Checking Berkeley DB version ..." >&4
13495         $cat >try.c <<EOCP
13496 #$d_const HASCONST
13497 #ifndef HASCONST
13498 #define const
13499 #endif
13500 #include <sys/types.h>
13501 #include <stdio.h>
13502 #include <db.h>
13503 int main(int argc, char *argv[])
13504 {
13505 #ifdef DB_VERSION_MAJOR /* DB version >= 2 */
13506     int Major, Minor, Patch ;
13507     unsigned long Version ;
13508     (void)db_version(&Major, &Minor, &Patch) ;
13509     if (argc == 2) {
13510         printf("%d %d %d %d %d %d\n",
13511                DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH,
13512                Major, Minor, Patch);
13513         exit(0);
13514     }
13515     printf("You have Berkeley DB Version 2 or greater.\n");
13516
13517     printf("db.h is from Berkeley DB Version %d.%d.%d\n",
13518                 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
13519     printf("libdb is from Berkeley DB Version %d.%d.%d\n",
13520                 Major, Minor, Patch) ;
13521
13522     /* check that db.h & libdb are compatible */
13523     if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
13524         printf("db.h and libdb are incompatible.\n") ;
13525         exit(3);        
13526     }
13527
13528     printf("db.h and libdb are compatible.\n") ;
13529
13530     Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
13531                 + DB_VERSION_PATCH ;
13532
13533     /* needs to be >= 2.3.4 */
13534     if (Version < 2003004) {
13535     /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
13536         printf("Perl needs Berkeley DB 2.3.4 or greater.\n") ;
13537         exit(2);        
13538     }
13539
13540     exit(0);
13541 #else
13542 #if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
13543     if (argc == 2) {
13544         printf("1 0 0\n");
13545         exit(0);
13546     }
13547     printf("You have Berkeley DB Version 1.\n");
13548     exit(0);    /* DB version < 2: the coast is clear. */
13549 #else
13550     exit(1);    /* <db.h> not Berkeley DB? */
13551 #endif
13552 #endif
13553 }
13554 EOCP
13555         set try
13556         if eval $compile_ok && $run ./try; then
13557                 echo 'Looks OK.' >&4
13558                 set `$run ./try 1`
13559                 db_version_major=$1
13560                 db_version_minor=$2
13561                 db_version_patch=$3
13562         else
13563                 echo "I can't use Berkeley DB with your <db.h>.  I'll disable Berkeley DB." >&4
13564                 i_db=$undef
13565                 case " $libs " in
13566                 *"-ldb "*)
13567                         : Remove db from list of libraries to use
13568                         echo "Removing unusable -ldb from library list" >&4
13569                         set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
13570                         shift
13571                         libs="$*"
13572                         echo "libs = $libs" >&4
13573                         ;;
13574                 esac
13575         fi
13576         $rm -f try.*
13577         ;;
13578 esac
13579
13580 case "$i_db" in
13581 define)
13582         : Check the return type needed for hash 
13583         echo " "
13584         echo "Checking return type needed for hash for Berkeley DB ..." >&4
13585         $cat >try.c <<EOCP
13586 #$d_const HASCONST
13587 #ifndef HASCONST
13588 #define const
13589 #endif
13590 #include <sys/types.h>
13591 #include <db.h>
13592
13593 #ifndef DB_VERSION_MAJOR
13594 u_int32_t hash_cb (ptr, size)
13595 const void *ptr;
13596 size_t size;
13597 {
13598 }
13599 HASHINFO info;
13600 int main()
13601 {
13602         info.hash = hash_cb;
13603 }
13604 #endif
13605 EOCP
13606         if $cc $ccflags -c try.c >try.out 2>&1 ; then
13607                 if $contains warning try.out >>/dev/null 2>&1 ; then
13608                         db_hashtype='int'
13609                 else
13610                         db_hashtype='u_int32_t'
13611                 fi
13612         else
13613                 : XXX Maybe we should just give up here.
13614                 db_hashtype=u_int32_t
13615                 $cat try.out >&4
13616                 echo "Help:  I can't seem to compile the db test program." >&4
13617                 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
13618         fi
13619         $rm -f try.*
13620         echo "Your version of Berkeley DB uses $db_hashtype for hash."
13621         ;;
13622 *)      db_hashtype=u_int32_t
13623         ;;
13624 esac
13625 case "$i_db" in
13626 define)
13627         : Check the return type needed for prefix 
13628         echo " "
13629         echo "Checking return type needed for prefix for Berkeley DB ..." >&4
13630         cat >try.c <<EOCP
13631 #$d_const HASCONST
13632 #ifndef HASCONST
13633 #define const
13634 #endif
13635 #include <sys/types.h>
13636 #include <db.h>
13637
13638 #ifndef DB_VERSION_MAJOR
13639 size_t prefix_cb (key1, key2)
13640 const DBT *key1;
13641 const DBT *key2;
13642 {
13643 }
13644 BTREEINFO info;
13645 int main()
13646 {
13647         info.prefix = prefix_cb;
13648 }
13649 #endif
13650 EOCP
13651         if $cc $ccflags -c try.c  >try.out 2>&1 ; then
13652                 if $contains warning try.out >>/dev/null 2>&1 ; then
13653                         db_prefixtype='int'
13654                 else
13655                         db_prefixtype='size_t'
13656                 fi
13657         else
13658                 db_prefixtype='size_t'
13659                 : XXX Maybe we should just give up here.
13660                 $cat try.out >&4
13661                 echo "Help:  I can't seem to compile the db test program." >&4
13662                 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
13663         fi
13664         $rm -f try.*
13665         echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
13666         ;;
13667 *)      db_prefixtype='size_t'
13668         ;;
13669 esac
13670
13671
13672 : How can we generate normalized random numbers ?
13673 echo " "
13674 echo "Looking for a random number function..." >&4
13675 case "$randfunc" in
13676 '')
13677         if set drand48 val -f; eval $csym; $val; then
13678                 dflt="drand48"
13679                 echo "Good, found drand48()." >&4
13680         elif set random val -f; eval $csym; $val; then
13681                 dflt="random"
13682                 echo "OK, found random()." >&4
13683         else
13684                 dflt="rand"
13685                 echo "Yick, looks like I have to use rand()." >&4
13686         fi
13687         echo " "
13688         ;;
13689 *)
13690         dflt="$randfunc"
13691         ;;
13692 esac
13693 cont=true
13694
13695 case "$ccflags" in
13696 *-Dmy_rand=*|*-Dmy_srand=*)
13697         echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
13698         ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
13699         ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
13700         ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
13701         ;;
13702 esac
13703
13704 while $test "$cont"; do
13705         rp="Use which function to generate random numbers?"
13706         . ./myread
13707         if $test "$ans" = "$dflt"; then
13708                 : null
13709         else
13710                 randbits=''
13711         fi
13712         randfunc="$ans"
13713         if set $ans val -f; eval $csym; $val; then
13714                 cont=''
13715         else
13716                 dflt=y
13717                 rp="I cannot find function $ans. Use that name anyway?"
13718                 . ./myread
13719                 dflt=rand
13720                 case "$ans" in
13721                         [yY]*) cont='';;
13722                 esac
13723         fi
13724         case "$cont" in
13725         '')
13726                 case "$randfunc" in
13727                 drand48)
13728                         drand01="drand48()"
13729                         seedfunc="srand48"
13730                         randbits=48
13731                         randseedtype=long
13732                         ;;
13733                 rand|random)
13734                         case "$randbits" in
13735                         '')
13736 echo "Checking to see how many bits your $randfunc() function produces..." >&4
13737                                 $cat >try.c <<EOCP
13738 #$i_unistd I_UNISTD
13739 #$i_stdlib I_STDLIB
13740 #include <stdio.h>
13741 #ifdef I_UNISTD
13742 #  include <unistd.h>
13743 #endif
13744 #ifdef I_STDLIB
13745 #  include <stdlib.h>
13746 #endif
13747 int main()
13748 {
13749         register int i;
13750         register unsigned long tmp;
13751         register unsigned long max = 0L;
13752
13753         for (i = 1000; i; i--) {
13754                 tmp = (unsigned long) $randfunc();
13755                 if (tmp > max) max = tmp;
13756         }
13757         for (i = 0; max; i++)
13758                 max /= 2;
13759         printf("%d\n",i);
13760 }
13761 EOCP
13762                                 set try
13763                                 if eval $compile_ok; then
13764                                         dflt=`try`
13765                                 else
13766                                         dflt='?'
13767                                         echo "(I can't seem to compile the test program...)"
13768                                 fi
13769                                 ;;
13770                         *)
13771                                 dflt="$randbits"
13772                                 ;;
13773                         esac
13774                         rp="How many bits does your $randfunc() function produce?"
13775                         . ./myread
13776                         randbits="$ans"
13777                         $rm -f try.c try
13778                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
13779                         seedfunc="s$randfunc"
13780                         randseedtype=unsigned
13781                         ;;
13782                 *)
13783                         dflt="31"
13784                         rp="How many bits does your $randfunc() function produce?"
13785                         . ./myread
13786                         randbits="$ans"
13787                         seedfunc="s$randfunc"
13788                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
13789                         if set $seedfunc val -f; eval $csym; $val; then
13790                                 echo "(Using $seedfunc() to seed random generator)"
13791                         else
13792                                 echo "(Warning: no $seedfunc() to seed random generator)"
13793                                 seedfunc=rand
13794                         fi
13795                         randseedtype=unsigned
13796                         ;;
13797                 esac
13798                 ;;
13799         esac
13800 done
13801
13802 echo " "
13803 echo "Determining whether or not we are on an EBCDIC system..." >&4
13804 $cat >try.c <<'EOM'
13805 int main()
13806 {
13807   if ('M'==0xd4) return 0;
13808   return 1;
13809 }
13810 EOM
13811
13812 val=$undef
13813 set try
13814 if eval $compile_ok; then
13815         if $run ./try; then
13816                 echo "You seem to speak EBCDIC." >&4
13817                 val="$define"
13818         else
13819                 echo "Nope, no EBCDIC, probably ASCII or some ISO Latin. Or UTF-8." >&4
13820         fi
13821 else
13822         echo "I'm unable to compile the test program." >&4
13823         echo "I'll assume ASCII or some ISO Latin. Or UTF8." >&4
13824 fi
13825 $rm -f try try.*
13826 set ebcdic
13827 eval $setvar
13828
13829 echo " "
13830 $cat >&4 <<EOM
13831 Checking how to flush all pending stdio output...
13832 EOM
13833 # I only know how to find the first 32 possibly open files on SunOS.
13834 # See also hints/sunos_4_1.sh and util.c  --AD
13835 case "$osname" in
13836 sunos) $echo '#define PERL_FFLUSH_ALL_FOPEN_MAX 32' > try.c ;;
13837 esac
13838 $cat >>try.c <<EOCP
13839 #include <stdio.h>
13840 #$i_unistd I_UNISTD
13841 #ifdef I_UNISTD
13842 # include <unistd.h>
13843 #endif
13844 #$d_sysconf HAS_SYSCONF
13845 #$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY
13846 #ifdef HAS_STDIO_STREAM_ARRAY
13847 # define STDIO_STREAM_ARRAY $stdio_stream_array
13848 #endif
13849 int main() {
13850   FILE* p;
13851   unlink("try.out");
13852   p = fopen("try.out", "w");
13853 #ifdef TRY_FPUTC
13854   fputc('x', p);
13855 #else
13856 # ifdef TRY_FPRINTF
13857   fprintf(p, "x");
13858 # endif
13859 #endif
13860 #ifdef TRY_FFLUSH_NULL
13861   fflush(NULL);
13862 #endif
13863 #ifdef TRY_FFLUSH_ALL
13864   {
13865     long open_max = -1;
13866 # ifdef PERL_FFLUSH_ALL_FOPEN_MAX
13867     open_max = PERL_FFLUSH_ALL_FOPEN_MAX;
13868 # else
13869 #  if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
13870     open_max = sysconf(_SC_OPEN_MAX);
13871 #  else
13872 #   ifdef FOPEN_MAX
13873     open_max = FOPEN_MAX;
13874 #   else
13875 #    ifdef OPEN_MAX
13876     open_max = OPEN_MAX;
13877 #    else
13878 #     ifdef _NFILE
13879     open_max = _NFILE;
13880 #     endif
13881 #    endif
13882 #   endif
13883 #  endif
13884 # endif 
13885 # ifdef HAS_STDIO_STREAM_ARRAY
13886     if (open_max > 0) {
13887       long i;
13888       for (i = 0; i < open_max; i++)
13889             if (STDIO_STREAM_ARRAY[i]._file >= 0 &&
13890                 STDIO_STREAM_ARRAY[i]._file < open_max &&
13891                 STDIO_STREAM_ARRAY[i]._flag)
13892                 fflush(&STDIO_STREAM_ARRAY[i]);
13893     }   
13894   }
13895 # endif
13896 #endif
13897   _exit(42);
13898 }
13899 EOCP
13900 : first we have to find out how _not_ to flush
13901 $to try.c
13902 if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
13903     output=''
13904     set try -DTRY_FPUTC
13905     if eval $compile; then
13906             $run ./try 2>/dev/null
13907             code="$?"
13908             $from try.out
13909             if $test ! -s try.out -a "X$code" = X42; then
13910                 output=-DTRY_FPUTC
13911             fi
13912     fi
13913     case "$output" in
13914     '')
13915             set try -DTRY_FPRINTF
13916             if eval $compile; then
13917                     $run ./try 2>/dev/null
13918                     code="$?"
13919                     $from try.out
13920                     if $test ! -s try.out -a "X$code" = X42; then
13921                         output=-DTRY_FPRINTF
13922                     fi
13923             fi
13924         ;;
13925     esac
13926 fi
13927 : check for fflush NULL behaviour
13928 case "$fflushNULL" in
13929 '')     set try -DTRY_FFLUSH_NULL $output
13930         if eval $compile; then
13931                 $run ./try 2>/dev/null
13932                 code="$?"
13933                 $from try.out
13934                 if $test -s try.out -a "X$code" = X42; then
13935                         fflushNULL="`$cat try.out`"
13936                 else
13937                         if $test "X$code" != X42; then
13938                                 $cat >&4 <<EOM
13939 (If this test failed, don't worry, we'll try another method shortly.)
13940 EOM
13941                         fi
13942                 fi
13943         fi
13944         $rm -f core try.core core.try.*
13945         case "$fflushNULL" in
13946         x)      $cat >&4 <<EOM
13947 Your fflush(NULL) works okay for output streams.
13948 Let's see if it clobbers input pipes...
13949 EOM
13950 # As of mid-March 2000 all versions of Solaris appear to have a stdio
13951 # bug that improperly flushes the input end of pipes.  So we avoid the
13952 # autoflush on fork/system/exec support for now. :-(
13953 $cat >tryp.c <<EOCP
13954 #include <stdio.h>
13955 int
13956 main(int argc, char **argv)
13957 {
13958     char buf[1024];
13959     int i;
13960     char *bp = buf;
13961     while (1) {
13962         while ((i = getc(stdin)) != -1
13963                && (*bp++ = i) != '\n'
13964                && bp < &buf[1024])
13965         /* DO NOTHING */ ;
13966         *bp = '\0';
13967         fprintf(stdout, "%s", buf);
13968         fflush(NULL);
13969         if (i == -1)
13970             return 0;
13971         bp = buf;
13972     }
13973 }
13974 EOCP
13975                 fflushNULL="$define"
13976                 set tryp
13977                 if eval $compile; then
13978                     $rm -f tryp.out
13979                     $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
13980                     if cmp tryp.c tryp.out >/dev/null 2>&1; then
13981                        $cat >&4 <<EOM
13982 fflush(NULL) seems to behave okay with input streams.
13983 EOM
13984                         fflushNULL="$define"
13985                     else
13986                         $cat >&4 <<EOM
13987 Ouch, fflush(NULL) clobbers input pipes!  We will not use it.
13988 EOM
13989                         fflushNULL="$undef"
13990                     fi
13991                 fi
13992                 $rm -f core tryp.c tryp.core core.tryp.*
13993                 ;;
13994         '')     $cat >&4 <<EOM
13995 Your fflush(NULL) isn't working (contrary to ANSI C).
13996 EOM
13997                 fflushNULL="$undef"
13998                 ;;
13999         *)      $cat >&4 <<EOM
14000 Cannot figure out whether your fflush(NULL) works or not.
14001 I'm assuming it doesn't (contrary to ANSI C).
14002 EOM
14003                 fflushNULL="$undef"
14004                 ;;
14005         esac
14006         ;;
14007 $define|true|[yY]*)
14008         fflushNULL="$define"
14009         ;;
14010 *)
14011         fflushNULL="$undef"
14012         ;;
14013 esac
14014 : check explicit looping only if NULL did not work, and if the pipe
14015 : bug does not show up on an explicit flush too
14016 case "$fflushNULL" in
14017 "$undef")
14018         $cat >tryp.c <<EOCP
14019 #include <stdio.h>
14020 int
14021 main(int argc, char **argv)
14022 {
14023     char buf[1024];
14024     int i;
14025     char *bp = buf;
14026     while (1) {
14027         while ((i = getc(stdin)) != -1
14028                && (*bp++ = i) != '\n'
14029                && bp < &buf[1024])
14030         /* DO NOTHING */ ;
14031         *bp = '\0';
14032         fprintf(stdout, "%s", buf);
14033         fflush(stdin);
14034         if (i == -1)
14035             return 0;
14036         bp = buf;
14037     }
14038 }
14039 EOCP
14040         set tryp
14041         if eval $compile; then
14042             $rm -f tryp.out
14043             $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
14044             if cmp tryp.c tryp.out >/dev/null 2>&1; then
14045                $cat >&4 <<EOM
14046 Good, at least fflush(stdin) seems to behave okay when stdin is a pipe.
14047 EOM
14048                 : now check for fflushall behaviour
14049                 case "$fflushall" in
14050                 '')     set try -DTRY_FFLUSH_ALL $output
14051                         if eval $compile; then
14052                                 $cat >&4 <<EOM
14053 (Now testing the other method--but note that this also may fail.)
14054 EOM
14055                                 $run ./try 2>/dev/null
14056                                 code=$?
14057                                 $from try.out
14058                                 if $test -s try.out -a "X$code" = X42; then
14059                                         fflushall="`$cat try.out`"
14060                                 fi
14061                         fi
14062                         $rm -f core try.core core.try.*
14063                         case "$fflushall" in
14064                         x)      $cat >&4 <<EOM
14065 Whew. Flushing explicitly all the stdio streams works.
14066 EOM
14067                                 fflushall="$define"
14068                                 ;;
14069                         '')     $cat >&4 <<EOM
14070 Sigh. Flushing explicitly all the stdio streams doesn't work.
14071 EOM
14072                                 fflushall="$undef"
14073                                 ;;
14074                         *)      $cat >&4 <<EOM
14075 Cannot figure out whether flushing stdio streams explicitly works or not.
14076 I'm assuming it doesn't.
14077 EOM
14078                                 fflushall="$undef"
14079                                 ;;
14080                         esac
14081                         ;;
14082                 "$define"|true|[yY]*)
14083                         fflushall="$define"
14084                         ;;
14085                 *)
14086                         fflushall="$undef"
14087                         ;;
14088                 esac
14089             else
14090                 $cat >&4 <<EOM
14091 All is futile.  Even fflush(stdin) clobbers input pipes!
14092 EOM
14093                 fflushall="$undef"
14094             fi
14095         else
14096             fflushall="$undef"
14097         fi
14098         $rm -f core tryp.c tryp.core core.tryp.*
14099         ;;
14100 *)      fflushall="$undef"
14101         ;;
14102 esac
14103
14104 case "$fflushNULL$fflushall" in
14105 undefundef)
14106         $cat <<EOM
14107 OK, I give up.  I cannot figure out how to flush pending stdio output.
14108 We won't be flushing handles at all before fork/exec/popen.
14109 EOM
14110         ;;
14111 esac
14112 $rm -f try.* try$exe_ext
14113
14114 : Store the full pathname to the ar program for use in the C program
14115 : Respect a hint or command line value for full_ar.
14116 case "$full_ar" in
14117 '') full_ar=$ar ;;
14118 esac
14119
14120 : Store the full pathname to the sed program for use in the C program
14121 full_sed=$sed
14122
14123 : see what type gids are declared as in the kernel
14124 echo " "
14125 echo "Looking for the type for group ids returned by getgid()."
14126 set gid_t gidtype xxx stdio.h sys/types.h
14127 eval $typedef
14128 case "$gidtype" in
14129 xxx)
14130         xxx=`./findhdr sys/user.h`
14131         set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
14132         case $1 in
14133         unsigned) dflt="$1 $2" ;;
14134         *) dflt="$1" ;;
14135         esac
14136         ;;
14137 *) dflt="$gidtype";;
14138 esac
14139 case "$gidtype" in
14140 gid_t) echo "gid_t found." ;;
14141 *)      rp="What is the type for group ids returned by getgid()?"
14142         . ./myread
14143         gidtype="$ans"
14144         ;;
14145 esac
14146
14147 echo " "
14148 case "$gidtype" in
14149 *_t) zzz="$gidtype"     ;;
14150 *)   zzz="gid"          ;;
14151 esac
14152 echo "Checking the size of $zzz..." >&4 
14153 cat > try.c <<EOCP
14154 #include <sys/types.h>
14155 #include <stdio.h>
14156 int main() {
14157     printf("%d\n", (int)sizeof($gidtype));
14158     exit(0);
14159 }
14160 EOCP
14161 set try
14162 if eval $compile_ok; then
14163         yyy=`$run ./try`
14164         case "$yyy" in
14165         '')     gidsize=4
14166                 echo "(I can't execute the test program--guessing $gidsize.)" >&4
14167                 ;;
14168         *)      gidsize=$yyy
14169                 echo "Your $zzz is $gidsize bytes long."
14170                 ;;
14171         esac
14172 else
14173         gidsize=4
14174         echo "(I can't compile the test program--guessing $gidsize.)" >&4
14175 fi
14176
14177
14178 echo " "
14179 case "$gidtype" in
14180 *_t) zzz="$gidtype"     ;;
14181 *)   zzz="gid"          ;;
14182 esac
14183 echo "Checking the sign of $zzz..." >&4 
14184 cat > try.c <<EOCP
14185 #include <sys/types.h>
14186 #include <stdio.h>
14187 int main() {
14188         $gidtype foo = -1;
14189         if (foo < 0)
14190                 printf("-1\n");
14191         else
14192                 printf("1\n");
14193 }
14194 EOCP
14195 set try
14196 if eval $compile; then
14197         yyy=`$run ./try`
14198         case "$yyy" in
14199         '')     gidsign=1
14200                 echo "(I can't execute the test program--guessing unsigned.)" >&4
14201                 ;;
14202         *)      gidsign=$yyy
14203                 case "$gidsign" in
14204                  1) echo "Your $zzz is unsigned." ;;
14205                 -1) echo "Your $zzz is signed."   ;;
14206                 esac
14207                 ;;
14208         esac
14209 else
14210         gidsign=1
14211         echo "(I can't compile the test program--guessing unsigned.)" >&4
14212 fi
14213
14214
14215 echo " "
14216
14217 if $test X"$quadtype" != X; then
14218
14219 echo "Checking how to print 64-bit integers..." >&4
14220
14221 if $test X"$sPRId64" = X -a X"$quadtype" = Xint; then
14222         $cat >try.c <<'EOCP'
14223 #include <sys/types.h>
14224 #include <stdio.h>
14225 int main() {
14226   int q = 12345678901;
14227   printf("%ld\n", q);
14228 }
14229 EOCP
14230         set try
14231         if eval $compile; then
14232                 yyy=`$run ./try`
14233                 case "$yyy" in
14234                 12345678901)
14235                         sPRId64='"d"'; sPRIi64='"i"'; sPRIu64='"u"';
14236                         sPRIo64='"o"'; sPRIx64='"x"'; sPRIXU64='"X"';
14237                         echo "We will use %d."
14238                         ;;
14239                 esac
14240         fi
14241 fi
14242
14243 if $test X"$sPRId64" = X -a X"$quadtype" = Xlong; then
14244         $cat >try.c <<'EOCP'
14245 #include <sys/types.h>
14246 #include <stdio.h>
14247 int main() {
14248   long q = 12345678901;
14249   printf("%ld\n", q);
14250 }
14251 EOCP
14252         set try
14253         if eval $compile; then
14254                 yyy=`$run ./try`
14255                 case "$yyy" in
14256                 12345678901)
14257                         sPRId64='"ld"'; sPRIi64='"li"'; sPRIu64='"lu"';
14258                         sPRIo64='"lo"'; sPRIx64='"lx"'; sPRIXU64='"lX"';
14259                         echo "We will use %ld."
14260                         ;;
14261                 esac
14262         fi
14263 fi
14264
14265 if $test X"$sPRId64" = X -a X"$i_inttypes" = X"$define" -a X"$quadtype" = Xint64_t; then
14266         $cat >try.c <<'EOCP'
14267 #include <sys/types.h>
14268 #include <inttypes.h>
14269 #include <stdio.h>
14270 int main() {
14271   int64_t q = 12345678901;
14272   printf("%" PRId64 "\n", q);
14273 }
14274 EOCP
14275         set try
14276         if eval $compile; then
14277                 yyy=`$run ./try`
14278                 case "$yyy" in
14279                 12345678901)
14280                         sPRId64=PRId64; sPRIi64=PRIi64; sPRIu64=PRIu64;
14281                         sPRIo64=PRIo64; sPRIx64=PRIx64; sPRIXU64=PRIXU64;
14282                         echo "We will use the C9X style."
14283                         ;;
14284                 esac
14285         fi
14286 fi
14287
14288 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
14289         $cat >try.c <<EOCP
14290 #include <sys/types.h>
14291 #include <stdio.h>
14292 int main() {
14293   $quadtype q = 12345678901;
14294   printf("%Ld\n", q);
14295 }
14296 EOCP
14297         set try
14298         if eval $compile; then
14299                 yyy=`$run ./try`
14300                 case "$yyy" in
14301                 12345678901)
14302                         sPRId64='"Ld"'; sPRIi64='"Li"'; sPRIu64='"Lu"';
14303                         sPRIo64='"Lo"'; sPRIx64='"Lx"'; sPRIXU64='"LX"';
14304                         echo "We will use %Ld."
14305                         ;;
14306                 esac
14307         fi
14308 fi
14309
14310 if $test X"$sPRId64" = X -a X"$quadtype" = X"long long"; then
14311         $cat >try.c <<'EOCP'
14312 #include <sys/types.h>
14313 #include <stdio.h>
14314 int main() {
14315   long long q = 12345678901LL; /* AIX cc requires the LL suffix. */
14316   printf("%lld\n", q);
14317 }
14318 EOCP
14319         set try
14320         if eval $compile; then
14321                 yyy=`$run ./try`
14322                 case "$yyy" in
14323                 12345678901)
14324                         sPRId64='"lld"'; sPRIi64='"lli"'; sPRIu64='"llu"';
14325                         sPRIo64='"llo"'; sPRIx64='"llx"'; sPRIXU64='"llX"';
14326                         echo "We will use the %lld style."
14327                         ;;
14328                 esac
14329         fi
14330 fi
14331
14332 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
14333         $cat >try.c <<EOCP
14334 #include <sys/types.h>
14335 #include <stdio.h>
14336 int main() {
14337   $quadtype q = 12345678901;
14338   printf("%qd\n", q);
14339 }
14340 EOCP
14341         set try
14342         if eval $compile; then
14343                 yyy=`$run ./try`
14344                 case "$yyy" in
14345                 12345678901)
14346                         sPRId64='"qd"'; sPRIi64='"qi"'; sPRIu64='"qu"';
14347                         sPRIo64='"qo"'; sPRIx64='"qx"'; sPRIXU64='"qX"';
14348                         echo "We will use %qd."
14349                         ;;
14350                 esac
14351         fi
14352 fi
14353
14354 if $test X"$sPRId64" = X; then
14355         echo "Cannot figure out how to print 64-bit integers." >&4
14356 fi
14357
14358 $rm -f try try.*
14359
14360 fi
14361
14362 case "$sPRId64" in
14363 '')     d_PRId64="$undef"; d_PRIi64="$undef"; d_PRIu64="$undef"; 
14364         d_PRIo64="$undef"; d_PRIx64="$undef"; d_PRIXU64="$undef"; 
14365         ;;
14366 *)      d_PRId64="$define"; d_PRIi64="$define"; d_PRIu64="$define"; 
14367         d_PRIo64="$define"; d_PRIx64="$define"; d_PRIXU64="$define"; 
14368         ;;
14369 esac
14370
14371
14372 echo " "
14373 $echo "Checking the format strings to be used for Perl's internal types..." >&4
14374
14375 if $test X"$ivsize" = X8; then
14376         ivdformat="$sPRId64"
14377         uvuformat="$sPRIu64"
14378         uvoformat="$sPRIo64"
14379         uvxformat="$sPRIx64"
14380         uvXUformat="$sPRIXU64"
14381 else
14382         if $test X"$ivsize" = X"$longsize"; then
14383                 ivdformat='"ld"'
14384                 uvuformat='"lu"'
14385                 uvoformat='"lo"'
14386                 uvxformat='"lx"'
14387                 uvXUformat='"lX"'
14388         else
14389                 if $test X"$ivsize" = X"$intsize"; then
14390                         ivdformat='"d"'
14391                         uvuformat='"u"'
14392                         uvoformat='"o"'
14393                         uvxformat='"x"'
14394                         uvXUformat='"X"'
14395                 else
14396                         : far out
14397                         if $test X"$ivsize" = X"$shortsize"; then
14398                                 ivdformat='"hd"'
14399                                 uvuformat='"hu"'
14400                                 uvoformat='"ho"'
14401                                 uvxformat='"hx"'
14402                                 uvXUformat='"hX"'
14403                         fi
14404                 fi
14405         fi
14406 fi
14407
14408 if $test X"$uselongdouble" = X"$define" -a X"$d_longdbl" = X"$define" -a X"$d_PRIgldbl" = X"$define"; then
14409         nveformat="$sPRIeldbl"
14410         nvfformat="$sPRIfldbl"
14411         nvgformat="$sPRIgldbl"
14412         nvEUformat="$sPRIEUldbl"
14413         nvFUformat="$sPRIFUldbl"
14414         nvGUformat="$sPRIGUldbl"
14415 else
14416         nveformat='"e"'
14417         nvfformat='"f"'
14418         nvgformat='"g"'
14419         nvEUformat='"E"'
14420         nvFUformat='"F"'
14421         nvGUformat='"G"'
14422 fi
14423
14424 case "$ivdformat" in
14425 '') echo "$0: Fatal: failed to find format strings, cannot continue." >& 4
14426     exit 1
14427     ;;
14428 esac
14429
14430
14431 echo " "
14432 $echo "Checking the format string to be used for gids..." >&4
14433
14434 case "$gidsign" in
14435 -1)     if $test X"$gidsize" = X"$ivsize"; then
14436                 gidformat="$ivdformat"
14437         else
14438                 if $test X"$gidsize" = X"$longsize"; then
14439                         gidformat='"ld"'
14440                 else
14441                         if $test X"$gidsize" = X"$intsize"; then
14442                                 gidformat='"d"'
14443                         else
14444                                 if $test X"$gidsize" = X"$shortsize"; then
14445                                         gidformat='"hd"'
14446                                 fi
14447                         fi
14448                 fi
14449         fi
14450         ;;
14451 *)      if $test X"$gidsize" = X"$uvsize"; then
14452                 gidformat="$uvuformat"
14453         else
14454                 if $test X"$gidsize" = X"$longsize"; then
14455                         gidformat='"lu"'
14456                 else
14457                         if $test X"$gidsize" = X"$intsize"; then
14458                                 gidformat='"u"'
14459                         else
14460                                 if $test X"$gidsize" = X"$shortsize"; then
14461                                         gidformat='"hu"'
14462                                 fi
14463                         fi
14464                 fi
14465         fi
14466         ;;
14467 esac
14468
14469 : see if getgroups exists
14470 set getgroups d_getgrps
14471 eval $inlibc
14472
14473 : see if setgroups exists
14474 set setgroups d_setgrps
14475 eval $inlibc
14476
14477
14478 : Find type of 2nd arg to 'getgroups()' and 'setgroups()'
14479 echo " "
14480 case "$d_getgrps$d_setgrps" in
14481 *define*)
14482         case "$groupstype" in
14483         '') dflt="$gidtype" ;;
14484         *)  dflt="$groupstype" ;;
14485         esac
14486         $cat <<EOM
14487 What type of pointer is the second argument to getgroups() and setgroups()?
14488 Usually this is the same as group ids, $gidtype, but not always.
14489
14490 EOM
14491         rp='What type pointer is the second argument to getgroups() and setgroups()?'
14492         . ./myread
14493         groupstype="$ans"
14494         ;;
14495 *)  groupstype="$gidtype";;
14496 esac
14497
14498 echo " "
14499 echo "Checking if your $make program sets \$(MAKE)..." >&4
14500 case "$make_set_make" in
14501 '')
14502         $sed 's/^X //' > testmake.mak << 'EOF'
14503 Xall:
14504 X       @echo 'maketemp="$(MAKE)"'
14505 EOF
14506         case "`$make -f testmake.mak 2>/dev/null`" in
14507         *maketemp=*) make_set_make='#' ;;
14508         *)      make_set_make="MAKE=$make" ;;
14509         esac
14510         $rm -f testmake.mak
14511         ;;
14512 esac
14513 case "$make_set_make" in
14514 '#') echo "Yup, it does.";;
14515 *) echo "Nope, it doesn't.";;
14516 esac
14517
14518 : see what type is used for mode_t
14519 rp="What is the type used for file modes for system calls (e.g. fchmod())?"
14520 set mode_t modetype int stdio.h sys/types.h
14521 eval $typedef_ask
14522
14523 : see if stdarg is available
14524 echo " "
14525 if $test `./findhdr stdarg.h`; then
14526         echo "<stdarg.h> found." >&4
14527         valstd="$define"
14528 else
14529         echo "<stdarg.h> NOT found." >&4
14530         valstd="$undef"
14531 fi
14532
14533 : see if varags is available
14534 echo " "
14535 if $test `./findhdr varargs.h`; then
14536         echo "<varargs.h> found." >&4
14537 else
14538         echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
14539 fi
14540
14541 : set up the varargs testing programs
14542 $cat > varargs.c <<EOP
14543 #ifdef I_STDARG
14544 #include <stdarg.h>
14545 #endif
14546 #ifdef I_VARARGS
14547 #include <varargs.h>
14548 #endif
14549
14550 #ifdef I_STDARG
14551 int f(char *p, ...)
14552 #else
14553 int f(va_alist)
14554 va_dcl
14555 #endif
14556 {
14557         va_list ap;
14558 #ifndef I_STDARG
14559         char *p;
14560 #endif
14561 #ifdef I_STDARG
14562         va_start(ap,p);
14563 #else
14564         va_start(ap);
14565         p = va_arg(ap, char *);
14566 #endif
14567         va_end(ap);
14568 }
14569 EOP
14570 $cat > varargs <<EOP
14571 $startsh
14572 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
14573         echo "true"
14574 else
14575         echo "false"
14576 fi
14577 $rm -f varargs$_o
14578 EOP
14579 chmod +x varargs
14580
14581 : now check which varargs header should be included
14582 echo " "
14583 i_varhdr=''
14584 case "$valstd" in
14585 "$define")
14586         if `./varargs I_STDARG`; then
14587                 val='stdarg.h'
14588         elif `./varargs I_VARARGS`; then
14589                 val='varargs.h'
14590         fi
14591         ;;
14592 *)
14593         if `./varargs I_VARARGS`; then
14594                 val='varargs.h'
14595         fi
14596         ;;
14597 esac
14598 case "$val" in
14599 '')
14600 echo "I could not find the definition for va_dcl... You have problems..." >&4
14601         val="$undef"; set i_stdarg; eval $setvar
14602         val="$undef"; set i_varargs; eval $setvar
14603         ;;
14604 *) 
14605         set i_varhdr
14606         eval $setvar
14607         case "$i_varhdr" in
14608         stdarg.h)
14609                 val="$define"; set i_stdarg; eval $setvar
14610                 val="$undef"; set i_varargs; eval $setvar
14611                 ;;
14612         varargs.h)
14613                 val="$undef"; set i_stdarg; eval $setvar
14614                 val="$define"; set i_varargs; eval $setvar
14615                 ;;
14616         esac
14617         echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
14618 esac
14619 $rm -f varargs*
14620
14621 : see if we need va_copy
14622 echo " "
14623 case "$i_stdarg" in
14624 "$define")
14625         $cat >try.c <<EOCP
14626 #include <stdarg.h>
14627 #include <stdio.h>
14628 #$i_stdlib I_STDLIB
14629 #ifdef I_STDLIB
14630 #include <stdlib.h>
14631 #endif
14632 #include <signal.h>
14633
14634 int
14635 ivfprintf(FILE *f, const char *fmt, va_list *valp)
14636 {
14637   return vfprintf(f, fmt, *valp);
14638 }
14639  
14640 int    
14641 myvfprintf(FILE *f, const  char *fmt, va_list val)
14642 {
14643   return ivfprintf(f, fmt, &val);
14644 }
14645       
14646 int
14647 myprintf(char *fmt, ...) 
14648 {
14649   va_list val;
14650   va_start(val, fmt);
14651   return myvfprintf(stdout, fmt, val); 
14652 }         
14653
14654 int
14655 main(int ac, char **av)
14656 {
14657   signal(SIGSEGV, exit);
14658
14659   myprintf("%s%cs all right, then\n", "that", '\'');                            
14660   exit(0);      
14661 }
14662 EOCP
14663         set try
14664         if eval $compile && $run ./try 2>&1 >/dev/null; then
14665                 case "`$run ./try`" in
14666                 "that's all right, then")
14667                         okay=yes
14668                         ;;
14669                 esac
14670         fi
14671         case "$okay" in
14672         yes)    echo "It seems that you don't need va_copy()." >&4
14673                 need_va_copy="$undef"
14674                 ;;
14675         *)      echo "It seems that va_copy() or similar will be needed." >&4
14676                 need_va_copy="$define"
14677                 ;;
14678         esac
14679         $rm -f try.* core core.* *.core *.core.*
14680         ;;
14681 *)      echo "You don't have <stdarg.h>, not checking for va_copy()." >&4
14682         ;;
14683 esac
14684
14685 : define a fucntion to check prototypes
14686 $cat > protochk <<EOSH
14687 $startsh
14688 cc="$cc"
14689 optimize="$optimize"
14690 ccflags="$ccflags"
14691 prototype="$prototype"
14692 define="$define"
14693 rm=$rm
14694 EOSH
14695
14696 $cat >> protochk <<'EOSH'
14697
14698 $rm -f try.c
14699 foo="$1"
14700 shift
14701 while test $# -ge 2; do
14702         case "$1" in
14703                 $define) echo "#include <$2>" >> try.c ;;
14704                 literal) echo "$2" >> try.c ;;
14705         esac
14706     shift 2
14707 done
14708 test "$prototype" = "$define"  && echo '#define CAN_PROTOTYPE' >> try.c
14709 cat >> try.c <<'EOCP'
14710 #ifdef CAN_PROTOTYPE
14711 #define _(args) args
14712 #else
14713 #define _(args) ()
14714 #endif
14715 EOCP
14716 echo "$foo" >> try.c
14717 echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
14718 $cc $optimize $ccflags -c try.c > /dev/null 2>&1
14719 status=$?
14720 $rm -f try.[co]
14721 exit $status
14722 EOSH
14723 chmod +x protochk
14724 $eunicefix protochk
14725
14726 : see what type is used for size_t
14727 rp="What is the type used for the length parameter for string functions?"
14728 set size_t sizetype 'unsigned int' stdio.h sys/types.h
14729 eval $typedef_ask
14730
14731 : check for type of arguments to gethostbyaddr. 
14732 if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
14733         case "$d_gethbyaddr" in
14734         $define)
14735                 $cat <<EOM
14736
14737 Checking to see what type of arguments are accepted by gethostbyaddr().
14738 EOM
14739                 hdrs="$define sys/types.h
14740                         $d_socket sys/socket.h 
14741                         $i_niin netinet/in.h 
14742                         $i_netdb netdb.h
14743                         $i_unistd unistd.h"
14744                 : The first arg can 'char *' or 'void *'
14745                 : The second arg is some of integral type
14746                 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
14747                         for yyy in size_t long int; do
14748                                 case "$netdb_host_type" in
14749                                 '')     try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
14750                                         if ./protochk "$try" $hdrs; then
14751                                                 echo "Your system accepts $xxx for the first arg."
14752                                                 echo "...and $yyy for the second arg."
14753                                                 netdb_host_type="$xxx"
14754                                                 netdb_hlen_type="$yyy"
14755                                         fi
14756                                         ;;
14757                                 esac
14758                         done
14759                 done
14760                 : In case none of those worked, prompt the user.
14761                 case "$netdb_host_type" in
14762                 '')     rp='What is the type for the 1st argument to gethostbyaddr?'
14763                         dflt='char *'
14764                         . ./myread
14765                         netdb_host_type=$ans
14766                         rp='What is the type for the 2nd argument to gethostbyaddr?'
14767                         dflt="$sizetype"
14768                         . ./myread
14769                         netdb_hlen_type=$ans
14770                         ;;
14771                 esac
14772                 ;;
14773         *)      : no gethostbyaddr, so pick harmless defaults
14774                 netdb_host_type='char *'
14775                 netdb_hlen_type="$sizetype"
14776                 ;;
14777         esac
14778         # Remove the "const" if needed. -- but then we'll have a 
14779         # prototype clash!
14780         # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
14781 fi
14782
14783 : check for type of argument to gethostbyname. 
14784 if test "X$netdb_name_type" = X ; then
14785         case "$d_gethbyname" in
14786         $define)
14787                 $cat <<EOM
14788
14789 Checking to see what type of argument is accepted by gethostbyname().
14790 EOM
14791                 hdrs="$define sys/types.h
14792                         $d_socket sys/socket.h 
14793                         $i_niin netinet/in.h 
14794                         $i_netdb netdb.h
14795                         $i_unistd unistd.h"
14796                 for xxx in "const char *" "char *"; do
14797                         case "$netdb_name_type" in
14798                         '')     try="extern struct hostent *gethostbyname($xxx);"
14799                                 if ./protochk "$try" $hdrs; then
14800                                         echo "Your system accepts $xxx."
14801                                         netdb_name_type="$xxx"
14802                                 fi
14803                                 ;;
14804                         esac
14805                 done
14806                 : In case none of those worked, prompt the user.
14807                 case "$netdb_name_type" in
14808                 '')     rp='What is the type for the 1st argument to gethostbyname?'
14809                         dflt='char *'
14810                         . ./myread
14811                         netdb_name_type=$ans
14812                         ;;
14813                 esac
14814                 ;;
14815         *)      : no gethostbyname, so pick harmless default
14816                 netdb_name_type='char *'
14817                 ;;
14818         esac
14819 fi
14820
14821 : check for type of 1st argument to getnetbyaddr. 
14822 if test "X$netdb_net_type" = X ; then
14823         case "$d_getnbyaddr" in
14824         $define)
14825                 $cat <<EOM
14826
14827 Checking to see what type of 1st argument is accepted by getnetbyaddr().
14828 EOM
14829                 hdrs="$define sys/types.h
14830                         $d_socket sys/socket.h 
14831                         $i_niin netinet/in.h 
14832                         $i_netdb netdb.h
14833                         $i_unistd unistd.h"
14834                 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
14835                         case "$netdb_net_type" in
14836                         '')     try="extern struct netent *getnetbyaddr($xxx, int);"
14837                                 if ./protochk "$try" $hdrs; then
14838                                         echo "Your system accepts $xxx."
14839                                         netdb_net_type="$xxx"
14840                                 fi
14841                                 ;;
14842                         esac
14843                 done
14844                 : In case none of those worked, prompt the user.
14845                 case "$netdb_net_type" in
14846                 '')     rp='What is the type for the 1st argument to getnetbyaddr?'
14847                         dflt='long'
14848                         . ./myread
14849                         netdb_net_type=$ans
14850                         ;;
14851                 esac
14852                 ;;
14853         *)      : no getnetbyaddr, so pick harmless default
14854                 netdb_net_type='long'
14855                 ;;
14856         esac
14857 fi
14858 : locate the preferred pager for this system
14859 case "$pager" in
14860 '')
14861         dflt=''
14862         case "$pg" in
14863         /*) dflt=$pg;;
14864         [a-zA-Z]:/*) dflt=$pg;;
14865         esac
14866         case "$more" in
14867         /*) dflt=$more;;
14868         [a-zA-Z]:/*) dflt=$more;;
14869         esac
14870         case "$less" in
14871         /*) dflt=$less;;
14872         [a-zA-Z]:/*) dflt=$less;;
14873         esac
14874         case "$dflt" in
14875         '') dflt=/usr/ucb/more;;
14876         esac
14877         ;;
14878 *) dflt="$pager";;
14879 esac
14880 echo " "
14881 fn=f/
14882 rp='What pager is used on your system?'
14883 . ./getfile
14884 pager="$ans"
14885
14886 : see what type pids are declared as in the kernel
14887 rp="What is the type of process ids on this system?"
14888 set pid_t pidtype int stdio.h sys/types.h
14889 eval $typedef_ask
14890
14891 : Find earliest binary compatible site_perl subdirectory perl can use.
14892 case "$bincompat5005" in
14893 "$define") xs_apiversion='5.005' ;;
14894 *) xs_apiversion=$version ;;   # The current site_perl version.
14895 esac
14896 : Find earliest pure perl site_perl subdirectory perl can use.
14897 : The versioned directories started at 5.005.
14898 pm_apiversion='5.005'
14899
14900 : see if ar generates random libraries by itself
14901 echo " "
14902 echo "Checking how to generate random libraries on your machine..." >&4
14903 echo 'int bar1() { return bar2(); }' > bar1.c
14904 echo 'int bar2() { return 2; }' > bar2.c
14905 $cat > foo.c <<'EOP'
14906 int main() { printf("%d\n", bar1()); exit(0); }
14907 EOP
14908 $cc $ccflags -c bar1.c >/dev/null 2>&1
14909 $cc $ccflags -c bar2.c >/dev/null 2>&1
14910 $cc $ccflags -c foo.c >/dev/null 2>&1
14911 $ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
14912 if $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
14913         $run ./foobar >/dev/null 2>&1; then
14914         echo "$ar appears to generate random libraries itself."
14915         orderlib=false
14916         ranlib=":"
14917 elif $ar ts bar$_a >/dev/null 2>&1 &&
14918         $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
14919         $run ./foobar >/dev/null 2>&1; then
14920                 echo "a table of contents needs to be added with '$ar ts'."
14921                 orderlib=false
14922                 ranlib="$ar ts"
14923 else
14924         case "$ranlib" in
14925         :) ranlib='';;
14926         '')
14927                 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
14928                 $test -f $ranlib || ranlib=''
14929                 ;;
14930         esac
14931         if $test -n "$ranlib"; then
14932                 echo "your system has '$ranlib'; we'll use that."
14933                 orderlib=false
14934         else
14935                 echo "your system doesn't seem to support random libraries"
14936                 echo "so we'll use lorder and tsort to order the libraries."
14937                 orderlib=true
14938                 ranlib=":"
14939         fi
14940 fi
14941 $rm -f foo* bar* 
14942
14943 : check for type of arguments to select. 
14944 case "$selecttype" in
14945 '') case "$d_select" in
14946         $define)
14947                 echo " "
14948                 $cat <<EOM
14949 Checking to see what type of arguments are accepted by select().
14950 EOM
14951                 hdrs="$define sys/types.h
14952                         $i_systime sys/time.h 
14953                         $i_sysselct sys/select.h
14954                         $d_socket sys/socket.h"
14955                 : The first arg can be int, unsigned, or size_t
14956                 : The last arg may or may not be 'const'
14957                 val=''
14958                 : void pointer has been seen but using that
14959                 : breaks the selectminbits test
14960                 for xxx in 'fd_set *' 'int *'; do
14961                         for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
14962                                 for tmo in 'struct timeval *' 'const struct timeval *'; do
14963                                         case "$val" in
14964                                         '')     try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
14965                                                 if ./protochk "$try" $hdrs; then
14966                                                         echo "Your system accepts $xxx."
14967                                                         val="$xxx"
14968                                                 fi
14969                                                 ;;
14970                                         esac
14971                                 done
14972                         done
14973                 done
14974                 case "$val" in
14975                 '')     rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
14976                         case "$d_fd_set" in
14977                                 $define) dflt="fd_set *" ;;
14978                                 *)              dflt="int *" ;;
14979                         esac
14980                         . ./myread
14981                         val=$ans
14982                         ;;
14983                 esac
14984                 selecttype="$val"
14985                 ;;
14986         *)      : no select, so pick a harmless default
14987                 selecttype='int *'
14988                 ;;
14989         esac
14990         ;;
14991 esac
14992
14993 : check for the select 'width'
14994 case "$selectminbits" in
14995 '') case "$d_select" in
14996         $define)
14997                 $cat <<EOM
14998
14999 Checking to see on how many bits at a time your select() operates...
15000 EOM
15001                 $cat >try.c <<EOCP
15002 #include <sys/types.h>
15003 #$i_time I_TIME
15004 #$i_systime I_SYS_TIME
15005 #$i_systimek I_SYS_TIME_KERNEL
15006 #ifdef I_TIME
15007 #   include <time.h>
15008 #endif
15009 #ifdef I_SYS_TIME
15010 #   ifdef I_SYS_TIME_KERNEL
15011 #       define KERNEL
15012 #   endif
15013 #   include <sys/time.h>
15014 #   ifdef I_SYS_TIME_KERNEL
15015 #       undef KERNEL
15016 #   endif
15017 #endif
15018 #$i_sysselct I_SYS_SELECT
15019 #ifdef I_SYS_SELECT
15020 #include <sys/select.h>
15021 #endif
15022 #$d_socket HAS_SOCKET
15023 #ifdef HAS_SOCKET
15024 #   include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
15025 #endif
15026 #include <stdio.h>
15027 $selecttype b;
15028 #define S sizeof(*(b))
15029 #define MINBITS 64
15030 #define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
15031 #define NBITS  (NBYTES * 8)
15032 int main() {
15033     char s[NBYTES];
15034     struct timeval t;
15035     int i;
15036     FILE* fp;
15037     int fd;
15038
15039     fclose(stdin);
15040     fp = fopen("try.c", "r");
15041     if (fp == 0)
15042       exit(1);
15043     fd = fileno(fp);
15044     if (fd < 0)
15045       exit(2);
15046     b = ($selecttype)s;
15047     for (i = 0; i < NBITS; i++)
15048         FD_SET(i, b);
15049     t.tv_sec  = 0;
15050     t.tv_usec = 0;
15051     select(fd + 1, b, 0, 0, &t);
15052     for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
15053     printf("%d\n", i + 1);
15054     return 0;
15055 }
15056 EOCP
15057                 set try
15058                 if eval $compile_ok; then
15059                         selectminbits=`$run ./try`
15060                         case "$selectminbits" in
15061                         '')     cat >&4 <<EOM
15062 Cannot figure out on how many bits at a time your select() operates.
15063 I'll play safe and guess it is 32 bits.
15064 EOM
15065                                 selectminbits=32
15066                                 bits="32 bits"
15067                                 ;;
15068                         1)      bits="1 bit" ;;
15069                         *)      bits="$selectminbits bits" ;;
15070                         esac
15071                         echo "Your select() operates on $bits at a time." >&4
15072                 else
15073                         rp='What is the minimum number of bits your select() operates on?'
15074                         case "$byteorder" in
15075                         1234|12345678)  dflt=32 ;;
15076                         *)              dflt=1  ;;
15077                         esac
15078                         . ./myread
15079                         val=$ans
15080                         selectminbits="$val"
15081                 fi
15082                 $rm -f try.* try
15083                 ;;
15084         *)      : no select, so pick a harmless default
15085                 selectminbits='32'
15086                 ;;
15087         esac
15088         ;;
15089 esac
15090
15091 : Trace out the files included by signal.h, then look for SIGxxx names.
15092 : Remove SIGARRAYSIZE used by HPUX.
15093 : Remove SIGSTKSIZE used by Linux.
15094 : Remove SIGSTKSZ used by Posix.
15095 : Remove SIGTYP void lines used by OS2.
15096 : Some cpps, like os390, dont give the file name anywhere
15097 if [ "X$fieldn" = X ]; then
15098         : Just make some guesses.  We check them later.
15099         xxx='/usr/include/signal.h /usr/include/sys/signal.h'
15100 else
15101         xxx=`echo '#include <signal.h>' |
15102         $cppstdin $cppminus $cppflags 2>/dev/null |
15103         $grep '^[       ]*#.*include' | 
15104         $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sed 's!\\\\\\\\!/!g' | $sort | $uniq`
15105 fi
15106 : Check this list of files to be sure we have parsed the cpp output ok.
15107 : This will also avoid potentially non-existent files, such 
15108 : as ../foo/bar.h
15109 xxxfiles=''
15110 for xx in $xxx /dev/null ; do
15111         $test -f "$xx" && xxxfiles="$xxxfiles $xx"
15112 done
15113 : If we have found no files, at least try signal.h
15114 case "$xxxfiles" in
15115 '')     xxxfiles=`./findhdr signal.h` ;;
15116 esac
15117 xxx=`awk '
15118 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
15119         print substr($2, 4, 20)
15120 }
15121 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
15122         print substr($3, 4, 20)
15123 }' $xxxfiles`
15124 : Append some common names just in case the awk scan failed.
15125 xxx="$xxx ABRT ALRM BUS CANCEL CHLD CLD CONT DIL EMT FPE"
15126 xxx="$xxx FREEZE HUP ILL INT IO IOT KILL LOST LWP PHONE"
15127 xxx="$xxx PIPE POLL PROF PWR QUIT RTMAX RTMIN SEGV STKFLT STOP"
15128 xxx="$xxx SYS TERM THAW TRAP TSTP TTIN TTOU URG USR1 USR2"
15129 xxx="$xxx USR3 USR4 VTALRM WAITING WINCH WIND WINDOW XCPU XFSZ"
15130
15131 : generate a few handy files for later
15132 $cat > signal.c <<'EOCP'
15133 #include <sys/types.h>
15134 #include <signal.h>
15135 #include <stdio.h>
15136 int main() {
15137
15138 /* Strange style to avoid deeply-nested #if/#else/#endif */
15139 #ifndef NSIG
15140 #  ifdef _NSIG
15141 #    define NSIG (_NSIG)
15142 #  endif
15143 #endif
15144
15145 #ifndef NSIG
15146 #  ifdef SIGMAX
15147 #    define NSIG (SIGMAX+1)
15148 #  endif
15149 #endif
15150
15151 #ifndef NSIG
15152 #  ifdef SIG_MAX
15153 #    define NSIG (SIG_MAX+1)
15154 #  endif
15155 #endif
15156
15157 #ifndef NSIG
15158 #  ifdef MAXSIG
15159 #    define NSIG (MAXSIG+1)
15160 #  endif
15161 #endif
15162
15163 #ifndef NSIG
15164 #  ifdef MAX_SIG
15165 #    define NSIG (MAX_SIG+1)
15166 #  endif
15167 #endif
15168
15169 #ifndef NSIG
15170 #  ifdef SIGARRAYSIZE
15171 #    define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
15172 #  endif
15173 #endif
15174
15175 #ifndef NSIG
15176 #  ifdef _sys_nsig
15177 #    define NSIG (_sys_nsig) /* Solaris 2.5 */
15178 #  endif
15179 #endif
15180
15181 /* Default to some arbitrary number that's big enough to get most
15182    of the common signals.
15183 */
15184 #ifndef NSIG
15185 #    define NSIG 50
15186 #endif
15187
15188 printf("NSIG %d\n", NSIG);
15189
15190 #ifndef JUST_NSIG
15191
15192 EOCP
15193
15194 echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
15195 {
15196         printf "#ifdef SIG"; printf $1; printf "\n"
15197         printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
15198         printf $1; printf ");\n"
15199         printf "#endif\n"
15200 }
15201 END {
15202         printf "#endif /* JUST_NSIG */\n";
15203         printf "exit(0);\n}\n";
15204 }
15205 ' >>signal.c
15206 $cat >signal.awk <<'EOP'
15207 BEGIN { ndups = 0 }
15208 $1 ~ /^NSIG$/ { nsig = $2 }
15209 ($1 !~ /^NSIG$/) && (NF == 2) {
15210     if ($2 > maxsig) { maxsig = $2 }
15211     if (sig_name[$2]) {
15212         dup_name[ndups] = $1
15213         dup_num[ndups] = $2
15214         ndups++ 
15215     }
15216     else {
15217         sig_name[$2] = $1
15218         sig_num[$2] = $2
15219     }
15220 }
15221 END { 
15222     if (nsig == 0) {
15223         nsig = maxsig + 1
15224     }
15225     printf("NSIG %d\n", nsig);
15226     for (n = 1; n < nsig; n++) {
15227         if (sig_name[n]) {
15228             printf("%s %d\n", sig_name[n], sig_num[n])
15229         }
15230         else {
15231             printf("NUM%d %d\n", n, n) 
15232         }
15233     }
15234     for (n = 0; n < ndups; n++) {
15235         printf("%s %d\n", dup_name[n], dup_num[n])
15236     }
15237 }
15238 EOP
15239 $cat >signal_cmd <<EOS
15240 $startsh
15241 if $test -s signal.lst; then
15242     echo "Using your existing signal.lst file"
15243         exit 0
15244 fi
15245 xxx="$xxx"
15246 EOS
15247 $cat >>signal_cmd <<'EOS'
15248
15249 set signal
15250 if eval $compile_ok; then
15251         $run ./signal$_exe | $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
15252 else
15253         echo "(I can't seem be able to compile the whole test program)" >&4
15254         echo "(I'll try it in little pieces.)" >&4
15255         set signal -DJUST_NSIG
15256         if eval $compile_ok; then
15257                 $run ./signal$_exe > signal.nsg
15258                 $cat signal.nsg
15259         else
15260                 echo "I can't seem to figure out how many signals you have." >&4
15261                 echo "Guessing 50." >&4
15262                 echo 'NSIG 50' > signal.nsg
15263         fi
15264         : Now look at all the signal names, one at a time.
15265         for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
15266                 $cat > signal.c <<EOCP
15267 #include <sys/types.h>
15268 #include <signal.h>
15269 #include <stdio.h>
15270 int main() {
15271 printf("$xx %d\n", SIG${xx});
15272 return 0;
15273 }
15274 EOCP
15275                 set signal
15276                 if eval $compile; then
15277                         echo "SIG${xx} found."
15278                         $run ./signal$_exe  >> signal.ls1
15279                 else
15280                         echo "SIG${xx} NOT found."
15281                 fi
15282         done
15283         if $test -s signal.ls1; then
15284                 $cat signal.nsg signal.ls1 |
15285                         $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
15286         fi
15287
15288 fi
15289 if $test -s signal.lst; then
15290         :
15291 else
15292         echo "(AAK! I can't compile the test programs -- Guessing)" >&4
15293         echo 'kill -l' >signal
15294         set X `csh -f <signal`
15295         $rm -f signal
15296         shift
15297         case $# in
15298         0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
15299         esac
15300         echo $@ | $tr ' ' $trnl | \
15301             $awk '{ printf "%s %d\n", $1, ++s; }
15302                   END { printf "NSIG %d\n", ++s }' >signal.lst
15303 fi
15304 $rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
15305 EOS
15306 chmod a+x signal_cmd
15307 $eunicefix signal_cmd
15308
15309 : generate list of signal names
15310 echo " "
15311 case "$sig_name_init" in
15312 '') doinit=yes ;;
15313 *)  case "$sig_num_init" in
15314     ''|*,*) doinit=yes ;;
15315     esac ;;
15316 esac
15317 case "$doinit" in
15318 yes)
15319         echo "Generating a list of signal names and numbers..." >&4
15320         . ./signal_cmd
15321         sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
15322         sig_name=`$awk 'BEGIN { printf "ZERO " }
15323                         !/^NSIG/ { printf "%s ", $1 }' signal.lst`
15324         sig_num=`$awk  'BEGIN { printf "0 " }
15325                         !/^NSIG/ { printf "%d ", $2 }' signal.lst`
15326         sig_name_init=`$awk 'BEGIN      { printf "\"ZERO\", " }
15327                              !/^NSIG/   { printf "\"%s\", ", $1 }
15328                              END        { printf "0\n" }' signal.lst`
15329         sig_num_init=`$awk  'BEGIN      { printf "0, " }
15330                              !/^NSIG/   { printf "%d, ", $2}
15331                              END        { printf "0\n"}' signal.lst`
15332         ;;
15333 esac
15334 echo "The following $sig_count signals are available:"
15335 echo " "
15336 echo $sig_name | $awk \
15337 'BEGIN { linelen = 0 }
15338 {
15339         for (i = 1; i <= NF; i++) {
15340                 name = "SIG" $i " "
15341                 linelen = linelen + length(name)
15342                 if (linelen > 70) {
15343                         printf "\n"
15344                         linelen = length(name)
15345                 }
15346                 printf "%s", name
15347         }
15348         printf "\n"
15349 }'
15350 sig_size=`echo $sig_name | awk '{print NF}'`
15351 $rm -f signal signal.c signal.awk signal.lst signal_cmd 
15352
15353 echo " "
15354 case "$sizetype" in
15355 *_t) zzz="$sizetype"    ;;
15356 *)   zzz="filesize"     ;;
15357 esac
15358 echo "Checking the size of $zzz..." >&4 
15359 cat > try.c <<EOCP
15360 #include <sys/types.h>
15361 #include <stdio.h>
15362 int main() {
15363     printf("%d\n", (int)sizeof($sizetype));
15364     exit(0);
15365 }
15366 EOCP
15367 set try
15368 if eval $compile_ok; then
15369         yyy=`$run ./try`
15370         case "$yyy" in
15371         '')     sizesize=4
15372                 echo "(I can't execute the test program--guessing $sizesize.)" >&4
15373                 ;;
15374         *)      sizesize=$yyy
15375                 echo "Your $zzz size is $sizesize bytes."
15376                 ;;
15377         esac
15378 else
15379         sizesize=4
15380         echo "(I can't compile the test program--guessing $sizesize.)" >&4
15381 fi
15382
15383
15384 : check for socklen_t
15385 echo " "
15386 echo "Checking to see if you have socklen_t..." >&4
15387 $cat >try.c <<EOCP
15388 #include <sys/types.h>
15389 #$d_socket HAS_SOCKET
15390 #ifdef HAS_SOCKET
15391 #include <sys/socket.h>
15392 #endif
15393 int main() { socklen_t x = 16; }
15394 EOCP
15395 set try
15396 if eval $compile; then
15397         val="$define"
15398         echo "You have socklen_t."
15399 else
15400         val="$undef"
15401         echo "You do not have socklen_t."
15402         case "$sizetype" in
15403         size_t) echo "(You do have size_t, that might work. Some people are happy with just an int.)" ;;
15404         esac
15405 fi
15406 $rm -f try try.*
15407 set d_socklen_t
15408 eval $setvar
15409
15410 : see if this is a socks.h system
15411 set socks.h i_socks
15412 eval $inhdr
15413
15414 : check for type of the size argument to socket calls
15415 case "$d_socket" in
15416 "$define")
15417         $cat <<EOM
15418
15419 Checking to see what type is the last argument of accept().
15420 EOM
15421         yyy=''
15422         case "$d_socklen_t" in
15423         "$define") yyy="$yyy socklen_t"
15424         esac
15425         yyy="$yyy $sizetype int long unsigned"
15426         for xxx in $yyy; do
15427                 case "$socksizetype" in
15428                 '')     try="extern int accept(int, struct sockaddr *, $xxx *);"
15429                         case "$usesocks" in
15430                         "$define")
15431                                 if ./protochk "$try" $i_systypes sys/types.h $d_socket sys/socket.h literal '#define INCLUDE_PROTOTYPES' $i_socks socks.h.; then
15432                                         echo "Your system accepts '$xxx *' for the last argument of accept()."
15433                                         socksizetype="$xxx"
15434                                 fi
15435                                 ;;
15436                         *)      if ./protochk "$try"  $i_systypes sys/types.h $d_socket sys/socket.h; then
15437                                         echo "Your system accepts '$xxx *' for the last argument of accept()."
15438                                         socksizetype="$xxx"
15439                                 fi
15440                                 ;;
15441                         esac
15442                         ;;
15443                 esac
15444         done
15445 : In case none of those worked, prompt the user.
15446         case "$socksizetype" in
15447         '')     rp='What is the type for socket address structure sizes?'
15448                 dflt='int'
15449                 . ./myread
15450                 socksizetype=$ans
15451                 ;;
15452         esac
15453         ;;
15454 *)      : no sockets, so pick relatively harmless default
15455         socksizetype='int'
15456         ;;
15457 esac
15458
15459 : see what type is used for signed size_t
15460 set ssize_t ssizetype int stdio.h sys/types.h
15461 eval $typedef
15462 dflt="$ssizetype"
15463 $cat > try.c <<EOM
15464 #include <stdio.h>
15465 #include <sys/types.h>
15466 #define Size_t $sizetype
15467 #define SSize_t $dflt
15468 int main()
15469 {
15470         if (sizeof(Size_t) == sizeof(SSize_t))
15471                 printf("$dflt\n");
15472         else if (sizeof(Size_t) == sizeof(int))
15473                 printf("int\n");
15474         else 
15475                 printf("long\n");
15476         exit(0);
15477 }
15478 EOM
15479 echo " "
15480 set try
15481 if eval $compile_ok && $run ./try > /dev/null; then
15482         ssizetype=`$run ./try`
15483         echo "I'll be using $ssizetype for functions returning a byte count." >&4
15484 else
15485         $cat >&4 <<EOM
15486 Help! I can't compile and run the ssize_t test program: please enlighten me!
15487 (This is probably a misconfiguration in your system or libraries, and
15488 you really ought to fix it.  Still, I'll try anyway.)
15489
15490 I need a type that is the same size as $sizetype, but is guaranteed to
15491 be signed.  Common values are ssize_t, int and long.
15492
15493 EOM
15494         rp="What signed type is the same size as $sizetype?"
15495         . ./myread
15496         ssizetype="$ans"
15497 fi
15498 $rm -f try try.*
15499
15500 : see what type of char stdio uses.
15501 echo " "
15502 echo '#include <stdio.h>' | $cppstdin $cppminus > stdioh
15503 if $contains 'unsigned.*char.*_ptr;' stdioh >/dev/null 2>&1 ; then
15504         echo "Your stdio uses unsigned chars." >&4
15505         stdchar="unsigned char"
15506 else
15507         echo "Your stdio uses signed chars." >&4
15508         stdchar="char"
15509 fi
15510 $rm -f stdioh
15511
15512
15513
15514 : see if time exists
15515 echo " "
15516 if test "X$d_time" = X -o X"$timetype" = X; then
15517     if set time val -f d_time; eval $csym; $val; then
15518                 echo 'time() found.' >&4
15519                 val="$define"
15520                 rp="What is the type returned by time() on this system?"
15521                 set time_t timetype long stdio.h sys/types.h
15522                 eval $typedef_ask
15523     else
15524                 echo 'time() not found, hope that will do.' >&4
15525                 val="$undef"
15526                 timetype='int';
15527     fi
15528     set d_time
15529     eval $setvar
15530 fi
15531
15532 : see what type uids are declared as in the kernel
15533 echo " "
15534 echo "Looking for the type for user ids returned by getuid()."
15535 set uid_t uidtype xxx stdio.h sys/types.h
15536 eval $typedef
15537 case "$uidtype" in
15538 xxx)
15539         xxx=`./findhdr sys/user.h`
15540         set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
15541         case $1 in
15542         unsigned) dflt="$1 $2" ;;
15543         *) dflt="$1" ;;
15544         esac
15545         ;;
15546 *) dflt="$uidtype";;
15547 esac
15548 case "$uidtype" in
15549 uid_t)  echo "uid_t found." ;;
15550 *)      rp="What is the type for user ids returned by getuid()?"
15551         . ./myread
15552         uidtype="$ans"
15553         ;;
15554 esac
15555
15556 echo " "
15557 case "$uidtype" in
15558 *_t) zzz="$uidtype"     ;;
15559 *)   zzz="uid"          ;;
15560 esac
15561 echo "Checking the size of $zzz..." >&4 
15562 cat > try.c <<EOCP
15563 #include <sys/types.h>
15564 #include <stdio.h>
15565 int main() {
15566     printf("%d\n", (int)sizeof($uidtype));
15567     exit(0);
15568 }
15569 EOCP
15570 set try
15571 if eval $compile_ok; then
15572         yyy=`$run ./try`
15573         case "$yyy" in
15574         '')     uidsize=4
15575                 echo "(I can't execute the test program--guessing $uidsize.)" >&4
15576                 ;;
15577         *)      uidsize=$yyy
15578                 echo "Your $zzz is $uidsize bytes long."
15579                 ;;
15580         esac
15581 else
15582         uidsize=4
15583         echo "(I can't compile the test program--guessing $uidsize.)" >&4
15584 fi
15585
15586 echo " "
15587 case "$uidtype" in
15588 *_t) zzz="$uidtype"     ;;
15589 *)   zzz="uid"          ;;
15590 esac
15591 echo "Checking the sign of $zzz..." >&4
15592 cat > try.c <<EOCP
15593 #include <sys/types.h>
15594 #include <stdio.h>
15595 int main() {
15596         $uidtype foo = -1;
15597         if (foo < 0)
15598                 printf("-1\n");
15599         else
15600                 printf("1\n");
15601 }
15602 EOCP
15603 set try
15604 if eval $compile; then
15605         yyy=`$run ./try`
15606         case "$yyy" in
15607         '')     uidsign=1
15608                 echo "(I can't execute the test program--guessing unsigned.)" >&4
15609                 ;;
15610         *)      uidsign=$yyy
15611                 case "$uidsign" in
15612                  1) echo "Your $zzz is unsigned." ;;
15613                 -1) echo "Your $zzz is signed."   ;;
15614                 esac
15615                 ;;
15616         esac
15617 else
15618         uidsign=1
15619         echo "(I can't compile the test program--guessing unsigned.)" >&4
15620 fi
15621
15622
15623
15624 echo " "
15625 $echo "Checking the format string to be used for uids..." >&4
15626
15627 case "$uidsign" in
15628 -1)     if $test X"$uidsize" = X"$ivsize"; then
15629                 uidformat="$ivdformat"
15630         else
15631                 if $test X"$uidsize" = X"$longsize"; then
15632                         uidformat='"ld"'
15633                 else
15634                         if $test X"$uidsize" = X"$intsize"; then
15635                                 uidformat='"d"'
15636                         else
15637                                 if $test X"$uidsize" = X"$shortsize"; then
15638                                         uidformat='"hd"'
15639                                 fi
15640                         fi
15641                 fi
15642         fi
15643         ;;
15644 *)      if $test X"$uidsize" = X"$uvsize"; then
15645                 uidformat="$uvuformat"
15646         else
15647                 if $test X"$uidsize" = X"$longsize"; then
15648                         uidformat='"lu"'
15649                 else
15650                         if $test X"$uidsize" = X"$intsize"; then
15651                                 uidformat='"u"'
15652                         else
15653                                 if $test X"$uidsize" = X"$shortsize"; then
15654                                         uidformat='"hu"'
15655                                 fi
15656                         fi
15657                 fi
15658         fi
15659         ;;
15660 esac
15661
15662 : determine compiler compiler
15663 case "$yacc" in
15664 '')
15665         dflt=yacc;;
15666 *)
15667         dflt="$yacc";;
15668 esac
15669 echo " "
15670 comp='yacc'
15671 if $test -f "$byacc"; then
15672         dflt="$byacc"
15673         comp="byacc or $comp"
15674 fi
15675 if $test -f "$bison"; then
15676         comp="$comp or bison -y"
15677 fi
15678 rp="Which compiler compiler ($comp) shall I use?"
15679 . ./myread
15680 yacc="$ans"
15681 case "$yacc" in
15682 *bis*)
15683         case "$yacc" in
15684         *-y*) ;;
15685         *)
15686                 yacc="$yacc -y"
15687                 echo "(Adding -y option to bison to get yacc-compatible behaviour.)"
15688                 ;;
15689         esac
15690         ;;
15691 esac
15692
15693 : see if fcntl.h is there
15694 val=''
15695 set fcntl.h val
15696 eval $inhdr
15697
15698 : see if we can include fcntl.h
15699 case "$val" in
15700 "$define")
15701         echo " "
15702         if $h_fcntl; then
15703                 val="$define"
15704                 echo "We'll be including <fcntl.h>." >&4
15705         else
15706                 val="$undef"
15707                 if $h_sysfile; then
15708         echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
15709                 else
15710                         echo "We won't be including <fcntl.h>." >&4
15711                 fi
15712         fi
15713         ;;
15714 *)
15715         h_fcntl=false
15716         val="$undef"
15717         ;;
15718 esac
15719 set i_fcntl
15720 eval $setvar
15721
15722 : see if this is a iconv.h system
15723 set iconv.h i_iconv
15724 eval $inhdr
15725
15726 : see if this is a ieeefp.h system
15727 set ieeefp.h i_ieeefp
15728 eval $inhdr
15729
15730 : see if this is a libutil.h system
15731 set libutil.h i_libutil
15732 eval $inhdr
15733
15734 : see if locale.h is available
15735 set locale.h i_locale
15736 eval $inhdr
15737
15738 : see if mach cthreads are available
15739 if test "X$usethreads" = "X$define"; then
15740         set mach/cthreads.h i_machcthr
15741         eval $inhdr
15742 else
15743         i_machcthr="$undef"
15744 fi
15745
15746
15747
15748 : see if this is a math.h system
15749 set math.h i_math
15750 eval $inhdr
15751
15752 : see if this is a mntent.h system
15753 set mntent.h i_mntent
15754 eval $inhdr
15755
15756 : see if ndbm.h is available
15757 set ndbm.h t_ndbm
15758 eval $inhdr
15759 case "$t_ndbm" in
15760 $define)
15761         : see if dbm_open exists
15762         set dbm_open d_dbm_open
15763         eval $inlibc
15764         case "$d_dbm_open" in
15765         $undef)
15766                 t_ndbm="$undef"
15767                 echo "We won't be including <ndbm.h>"
15768                 ;;
15769         esac
15770         ;;
15771 esac
15772 val="$t_ndbm"
15773 set i_ndbm
15774 eval $setvar
15775
15776 : see if net/errno.h is available
15777 val=''
15778 set net/errno.h val
15779 eval $inhdr
15780
15781 : Unfortunately, it causes problems on some systems.  Arrgh.
15782 case "$val" in
15783 $define)
15784         cat > try.c <<'EOM'
15785 #include <stdio.h>
15786 #include <errno.h>
15787 #include <net/errno.h>
15788 int func()
15789 {
15790         return ENOTSOCK;
15791 }
15792 EOM
15793         if $cc $ccflags -c try.c >/dev/null 2>&1; then
15794                 echo "We'll be including <net/errno.h>." >&4
15795         else
15796                 echo "We won't be including <net/errno.h>." >&4
15797                 val="$undef"
15798         fi
15799         $rm -f try.* try
15800         ;;
15801 esac
15802 set i_neterrno
15803 eval $setvar
15804
15805 : see if netinet/tcp.h is available
15806 set netinet/tcp.h i_netinettcp
15807 eval $inhdr
15808
15809 : see if this is a poll.h system
15810 set poll.h i_poll
15811 eval $inhdr
15812
15813 : see if this is a prot.h system
15814 set prot.h i_prot
15815 eval $inhdr
15816
15817 echo " "
15818 $echo "Guessing which symbols your C compiler and preprocessor define..." >&4 
15819 $cat <<'EOSH' > Cppsym.know
15820 a29k ABI64 aegis AES_SOURCE AIX AIX32 AIX370
15821 AIX41 AIX42 AIX43 AIX_SOURCE aixpc ALL_SOURCE
15822 alliant alpha am29000 AM29000 AMD64 amiga AMIGAOS AMIX
15823 ansi ANSI_C_SOURCE apollo ardent ARM32 atarist att386 att3b
15824 BeOS BIG_ENDIAN BIT_MSF bsd BSD bsd43 bsd4_2 bsd4_3 BSD4_3 bsd4_4
15825 BSD_4_3 BSD_4_4 BSD_NET2 BSD_TIME BSD_TYPES BSDCOMPAT bsdi
15826 bull c cadmus clipper CMU COFF COMPILER_VERSION
15827 concurrent convex cpu cray CRAY CRAYMPP ctix CX_UX
15828 CYGWIN DGUX DGUX_SOURCE DJGPP dmert DOLPHIN DPX2 DSO
15829 Dynix DynixPTX ELF encore EPI EXTENSIONS FILE_OFFSET_BITS
15830 FreeBSD GCC_NEW_VARARGS gcos gcx gimpel
15831 GNU_SOURCE GNUC GNUC_MINOR GO32 gould GOULD_PN
15832 H3050R H3050RX hbullx20 hcx host_mips
15833 hp200 hp300 hp700 HP700 hp800 hp9000
15834 hp9000s200 hp9000s300 hp9000s400 hp9000s500
15835 hp9000s700 hp9000s800 hp9k8 hp_osf hppa hpux HPUX_SOURCE
15836 i186 i286 i386 i486 i586 i686 i8086 i80960 i860 I960
15837 IA64 iAPX286 ibm ibm032 ibmesa IBMR2 ibmrt ILP32 ILP64
15838 INLINE_INTRINSICS INTRINSICS INT64 interdata is68k ksr1
15839 LANGUAGE_C LARGE_FILE_API LARGEFILE64_SOURCE
15840 LARGEFILE_SOURCE LFS64_LARGEFILE LFS_LARGEFILE
15841 Linux LITTLE_ENDIAN LONG64 LONG_DOUBLE LONG_LONG
15842 LONGDOUBLE LONGLONG LP64 luna luna88k Lynx
15843 M68000 m68k m88100 m88k M88KBCS_TARGET M_COFF
15844 M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM M_SYS3
15845 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX MACH machine MachTen
15846 MATH_HAS_NO_SIDE_EFFECTS
15847 mc300 mc500 mc68000 mc68010 mc68020 mc68030 mc68040
15848 mc68060 mc68k mc68k32 mc700 mc88000 mc88100 merlin
15849 mert MiNT mips MIPS_FPSET MIPS_ISA MIPS_SIM MIPS_SZINT
15850 MIPS_SZLONG MIPS_SZPTR MIPSEB MIPSEL MODERN_C motorola
15851 mpeix MSDOS MTXINU MULTIMAX mvs MVS n16 ncl_el ncl_mr
15852 NetBSD news1500 news1700 news1800 news1900 news3700
15853 news700 news800 news900 NeXT NLS nonstopux ns16000 ns32000
15854 ns32016 ns32332 ns32k nsc32000
15855 OCS88 OEMVS OpenBSD os OS2 OS390 osf OSF1 OSF_SOURCE
15856 pa_risc PA_RISC1_1 PA_RISC2_0 PARAGON parisc
15857 pc532 pdp11 PGC PIC plexus PORTAR posix
15858 POSIX1B_SOURCE POSIX2_SOURCE POSIX4_SOURCE
15859 POSIX_C_SOURCE POSIX_SOURCE POWER
15860 PROTOTYPES PWB pyr QNX R3000 REENTRANT RES Rhapsody RISC6000
15861 riscix riscos RT S390 SA110 scs SCO sequent sgi SGI_SOURCE SH3 sinix
15862 SIZE_INT SIZE_LONG SIZE_PTR SOCKET_SOURCE SOCKETS_SOURCE
15863 sony sony_news sonyrisc sparc sparclite spectrum
15864 stardent stdc STDC_EXT stratos sun sun3 sun386
15865 Sun386i svr3 svr4 SVR4_2 SVR4_SOURCE svr5
15866 SX system SYSTYPE_BSD SYSTYPE_BSD43 SYSTYPE_BSD44
15867 SYSTYPE_SVR4 SYSTYPE_SVR5 SYSTYPE_SYSV SYSV SYSV3 SYSV4 SYSV5
15868 sysV68 sysV88 Tek4132 Tek4300 titan
15869 TM3200 TM5400 TM5600
15870 tower tower32 tower32_200 tower32_600 tower32_700
15871 tower32_800 tower32_850 tss
15872 u370 u3b u3b2 u3b20 u3b200 u3b20d u3b5
15873 ultrix UMAXV UnicomPBB UnicomPBD UNICOS UNICOSMK
15874 unix UNIX95 UNIX99 unixpc unos USGr4 USGr4_2
15875 Utek UTek UTS UWIN uxpm uxps vax venix VMESA vms xenix Xenix286
15876 XOPEN_SOURCE XOPEN_SOURCE_EXTENDED XPG2 XPG2_EXTENDED
15877 XPG3 XPG3_EXTENDED XPG4 XPG4_EXTENDED
15878 z8000
15879 EOSH
15880 # Maybe put other stuff here too.
15881 cat <<EOSH >>Cppsym.know
15882 $osname
15883 EOSH
15884 ./tr '[a-z]' '[A-Z]' < Cppsym.know > Cppsym.a
15885 ./tr '[A-Z]' '[a-z]' < Cppsym.know > Cppsym.b
15886 $cat Cppsym.know > Cppsym.c
15887 $cat Cppsym.a Cppsym.b Cppsym.c | $tr ' ' $trnl | $sort | $uniq > Cppsym.know
15888 $rm -f Cppsym.a Cppsym.b Cppsym.c
15889 cat <<EOSH > Cppsym
15890 $startsh
15891 if $test \$# -gt 0; then
15892     echo \$* | $tr " " "$trnl" | ./Cppsym.try > Cppsym.got
15893     if $test -s Cppsym.got; then
15894         $rm -f Cppsym.got
15895         exit 0
15896     fi
15897     $rm -f Cppsym.got
15898     exit 1
15899 else
15900     $tr " " "$trnl" | ./Cppsym.try
15901     exit 0
15902 fi
15903 EOSH
15904 chmod +x Cppsym
15905 $eunicefix Cppsym
15906 cat <<EOSH > Cppsym.try
15907 $startsh
15908 cat <<'EOCP' > try.c
15909 #include <stdio.h>
15910 int main() {
15911 EOCP
15912 $awk \\
15913 EOSH
15914 cat <<'EOSH' >> Cppsym.try
15915 'length($1) > 0 {
15916     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
15917     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
15918     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
15919     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
15920 }'       >> try.c
15921 echo 'return 0;}' >> try.c
15922 EOSH
15923 cat <<EOSH >> Cppsym.try
15924 ccflags="$ccflags"
15925 case "$osname-$gccversion" in
15926 irix-) ccflags="\$ccflags -woff 1178" ;;
15927 os2-*) ccflags="\$ccflags -Zlinker /PM:VIO" ;;
15928 esac
15929 $cc -o try $optimize \$ccflags $ldflags try.c $libs && $run ./try
15930 EOSH
15931 chmod +x Cppsym.try
15932 $eunicefix Cppsym.try
15933 ./Cppsym < Cppsym.know > Cppsym.true
15934 : now check the C compiler for additional symbols
15935 postprocess_cc_v=''
15936 case "$osname" in
15937 aix) postprocess_cc_v="|$tr , ' '" ;;
15938 esac
15939 $cat >ccsym <<EOS
15940 $startsh
15941 $cat >tmp.c <<EOF
15942 extern int foo;
15943 EOF
15944 for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
15945 do
15946         case "\$i" in
15947         -D*) echo "\$i" | $sed 's/^-D//';;
15948         -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A\(.*\)(\(.*\))/\1=\2/';;
15949         esac
15950 done
15951 $rm -f try.c
15952 EOS
15953 postprocess_cc_v=''
15954 chmod +x ccsym
15955 $eunicefix ccsym
15956 ./ccsym > ccsym1.raw
15957 if $test -s ccsym1.raw; then
15958        $sort ccsym1.raw | $uniq >ccsym.raw
15959 else
15960        mv ccsym1.raw ccsym.raw
15961 fi
15962
15963 $awk '/\=/ { print $0; next }
15964         { print $0"=1" }' ccsym.raw >ccsym.list
15965 $awk '/\=/ { print $0; next }
15966         { print $0"=1" }' Cppsym.true >ccsym.true
15967 $comm -13 ccsym.true ccsym.list >ccsym.own
15968 $comm -12 ccsym.true ccsym.list >ccsym.com
15969 $comm -23 ccsym.true ccsym.list >ccsym.cpp
15970 also=''
15971 if $test -z ccsym.raw; then
15972         echo "Your C compiler doesn't seem to define any symbols!" >&4
15973         echo " "
15974         echo "However, your C preprocessor defines the following symbols:"
15975         $cat Cppsym.true
15976         ccsymbols=''
15977         cppsymbols=`$cat Cppsym.true`
15978         cppsymbols=`echo $cppsymbols`
15979         cppccsymbols="$cppsymbols"
15980 else
15981         if $test -s ccsym.com; then
15982                 echo "Your C compiler and pre-processor define these symbols:"
15983                 $sed -e 's/\(..*\)=.*/\1/' ccsym.com
15984                 also='also '
15985                 symbols='ones'
15986                 cppccsymbols=`$cat ccsym.com`
15987                 cppccsymbols=`echo $cppccsymbols`
15988                 $test "$silent" || sleep 1
15989         fi
15990         if $test -s ccsym.cpp; then
15991                 $test "$also" && echo " "
15992                 echo "Your C pre-processor ${also}defines the following symbols:"
15993                 $sed -e 's/\(..*\)=.*/\1/' ccsym.cpp
15994                 also='further '
15995                 cppsymbols=`$cat ccsym.cpp`
15996                 cppsymbols=`echo $cppsymbols`
15997                 $test "$silent" || sleep 1
15998         fi
15999         if $test -s ccsym.own; then
16000                 $test "$also" && echo " "
16001                 echo "Your C compiler ${also}defines the following cpp symbols:"
16002                 $sed -e 's/\(..*\)=1/\1/' ccsym.own
16003                 $sed -e 's/\(..*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
16004                 ccsymbols=`$cat ccsym.own`
16005                 ccsymbols=`echo $ccsymbols`
16006                 $test "$silent" || sleep 1
16007         fi
16008 fi
16009
16010 : see if this is a termio system
16011 val="$undef"
16012 val2="$undef"
16013 val3="$undef"
16014 if $test `./findhdr termios.h`; then
16015         set tcsetattr i_termios
16016         eval $inlibc
16017         val3="$i_termios"
16018 fi
16019 echo " "
16020 case "$val3" in
16021 "$define") echo "You have POSIX termios.h... good!" >&4;;
16022 *) if ./Cppsym pyr; then
16023                 case "`/bin/universe`" in
16024                 ucb) if $test `./findhdr sgtty.h`; then
16025                                 val2="$define"
16026                                 echo "<sgtty.h> found." >&4
16027                         else
16028                                 echo "System is pyramid with BSD universe."
16029                                 echo "<sgtty.h> not found--you could have problems." >&4
16030                         fi;;
16031                 *) if $test `./findhdr termio.h`; then
16032                                 val="$define"
16033                                 echo "<termio.h> found." >&4
16034                         else
16035                                 echo "System is pyramid with USG universe."
16036                                 echo "<termio.h> not found--you could have problems." >&4
16037                         fi;;
16038                 esac
16039         elif ./usg; then
16040                 if $test `./findhdr termio.h`; then
16041                         echo "<termio.h> found." >&4
16042                         val="$define"
16043                 elif $test `./findhdr sgtty.h`; then
16044                         echo "<sgtty.h> found." >&4
16045                         val2="$define"
16046                 else
16047 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
16048                 fi
16049         else
16050                 if $test `./findhdr sgtty.h`; then
16051                         echo "<sgtty.h> found." >&4
16052                         val2="$define"
16053                 elif $test `./findhdr termio.h`; then
16054                         echo "<termio.h> found." >&4
16055                         val="$define"
16056                 else
16057 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
16058                 fi
16059         fi;;
16060 esac
16061 set i_termio; eval $setvar
16062 val=$val2; set i_sgtty; eval $setvar
16063 val=$val3; set i_termios; eval $setvar
16064
16065 : see if this is a shadow.h system
16066 set shadow.h i_shadow
16067 eval $inhdr
16068
16069 : see if stddef is available
16070 set stddef.h i_stddef
16071 eval $inhdr
16072
16073 : see if this is a sunmath.h system
16074 set sunmath.h i_sunmath
16075 eval $inhdr
16076
16077 : see if sys/access.h is available
16078 set sys/access.h i_sysaccess
16079 eval $inhdr
16080
16081 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
16082 set sys/filio.h i_sysfilio
16083 eval $inhdr
16084 echo " "
16085 if $test `./findhdr sys/ioctl.h`; then
16086         val="$define"
16087         echo '<sys/ioctl.h> found.' >&4
16088 else
16089         val="$undef"
16090         if $test $i_sysfilio = "$define"; then
16091             echo '<sys/ioctl.h> NOT found.' >&4
16092         else
16093                 $test $i_sgtty = "$define" && xxx="sgtty.h"
16094                 $test $i_termio = "$define" && xxx="termio.h"
16095                 $test $i_termios = "$define" && xxx="termios.h"
16096 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
16097         fi
16098 fi
16099 set i_sysioctl
16100 eval $setvar
16101
16102 : see if socket ioctl defs are in sys/sockio.h
16103 echo " "
16104 xxx=`./findhdr sys/sockio.h`
16105 if $test "$xxx"; then
16106         if $contains SIOCATMARK $xxx >/dev/null 2>&1; then
16107                 val="$define"
16108                 echo "You have socket ioctls defined in <sys/sockio.h>." >&4
16109         else
16110                 val="$undef"
16111                 echo "No socket ioctls found in <sys/sockio.h>." >&4
16112         fi
16113 else
16114         val="$undef"
16115         $cat <<EOM
16116 <sys/sockio.h> not found, assuming socket ioctls are in <sys/ioctl.h>.
16117 EOM
16118 fi
16119 set i_syssockio
16120 eval $setvar
16121
16122
16123 : see if this is a syslog.h system
16124 set syslog.h i_syslog
16125 eval $inhdr
16126
16127
16128 : see if this is a sys/mode.h system
16129 set sys/mode.h i_sysmode
16130 eval $inhdr
16131
16132 : see if sys/resource.h has to be included
16133 set sys/resource.h i_sysresrc
16134 eval $inhdr
16135
16136 : see if sys/security.h is available
16137 set sys/security.h i_syssecrt
16138 eval $inhdr
16139
16140 : see if this is a sys/statvfs.h system
16141 set sys/statvfs.h i_sysstatvfs
16142 eval $inhdr
16143
16144 : see if this is a sys/un.h system
16145 set sys/un.h i_sysun
16146 eval $inhdr
16147
16148
16149 : see if this is a sys/utsname.h system
16150 set sys/utsname.h i_sysutsname
16151 eval $inhdr
16152
16153 : see if this is a syswait system
16154 set sys/wait.h i_syswait
16155 eval $inhdr
16156
16157 : see if this is a ustat.h system
16158 set ustat.h i_ustat
16159 eval $inhdr
16160
16161 : see if this is an utime system
16162 set utime.h i_utime
16163 eval $inhdr
16164
16165 : see if this is a values.h system
16166 set values.h i_values
16167 eval $inhdr
16168
16169 : see if this is a vfork system
16170 case "$d_vfork" in
16171 "$define")
16172         set vfork.h i_vfork
16173         eval $inhdr
16174         ;;
16175 *)
16176         i_vfork="$undef"
16177         ;;
16178 esac
16179
16180 : see if gdbm.h is available
16181 set gdbm.h t_gdbm
16182 eval $inhdr
16183 case "$t_gdbm" in
16184 $define)
16185         : see if gdbm_open exists
16186         set gdbm_open d_gdbm_open
16187         eval $inlibc
16188         case "$d_gdbm_open" in
16189         $undef)
16190                 t_gdbm="$undef"
16191                 echo "We won't be including <gdbm.h>"
16192                 ;;
16193         esac
16194         ;;
16195 esac
16196 val="$t_gdbm"
16197 set i_gdbm
16198 eval $setvar
16199
16200 echo " "
16201 echo "Looking for extensions..." >&4
16202 : If we are using the old config.sh, known_extensions may contain
16203 : old or inaccurate or duplicate values.
16204 known_extensions=''
16205 nonxs_extensions=''
16206 : We do not use find because it might not be available.
16207 : We do not just use MANIFEST because the user may have dropped
16208 : some additional extensions into the source tree and expect them
16209 : to be built.
16210
16211 : Function to recursively find available extensions, ignoring DynaLoader
16212 : NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
16213 find_extensions='
16214     for xxx in *; do
16215        case "$xxx" in
16216            DynaLoader|dynaload) ;;
16217            *)
16218            if $test -f $xxx/$xxx.xs; then
16219                known_extensions="$known_extensions $1$xxx";
16220            elif $test -f $xxx/Makefile.PL; then
16221                nonxs_extensions="$nonxs_extensions $1$xxx";
16222            else
16223                if $test -d $xxx -a $# -lt 10; then
16224                    set $1$xxx/ $*;
16225                    cd $xxx;
16226                    eval $find_extensions;
16227                    cd ..;
16228                    shift;
16229                fi;
16230            fi
16231            ;;
16232        esac;
16233     done'
16234 tdir=`pwd`
16235 cd $rsrc/ext
16236 set X
16237 shift
16238 eval $find_extensions
16239 set X $nonxs_extensions
16240 shift
16241 nonxs_extensions="$*"
16242 set X $known_extensions
16243 shift
16244 known_extensions="$*"
16245 cd $tdir
16246
16247 : Now see which are supported on this system.
16248 avail_ext=''
16249 for xxx in $known_extensions ; do
16250         case "$xxx" in
16251         DB_File|db_file)
16252                 case "$i_db" in
16253                 $define) avail_ext="$avail_ext $xxx" ;;
16254                 esac
16255                 ;;
16256         GDBM_File|gdbm_fil)
16257                 case "$i_gdbm" in 
16258                 $define) avail_ext="$avail_ext $xxx" ;;
16259                 esac
16260                 ;;
16261         I18N/Langinfo|i18n_lan)
16262                 case "$i_langinfo$d_nl_langinfo" in 
16263                 $define$define) avail_ext="$avail_ext $xxx" ;;
16264                 esac
16265                 ;;
16266         NDBM_File|ndbm_fil)
16267                 case "$i_ndbm" in
16268                 $define)
16269                     case "$osname-$use64bitint" in
16270                     cygwin-*|hpux-define)
16271                         case "$libs" in
16272                         *-lndbm*) avail_ext="$avail_ext $xxx" ;;
16273                         esac
16274                         ;;
16275                     *) avail_ext="$avail_ext $xxx" ;;
16276                     esac
16277                     ;;
16278                 esac
16279                 ;;
16280         ODBM_File|odbm_fil) 
16281                 case "${i_dbm}${i_rpcsvcdbm}" in
16282                 *"${define}"*)
16283                     case "$osname-$use64bitint" in
16284                     cygwin-*|hpux-define)
16285                         case "$libs" in
16286                         *-ldbm*) avail_ext="$avail_ext $xxx" ;;
16287                         esac
16288                         ;;
16289                     *) avail_ext="$avail_ext $xxx" ;;
16290                     esac
16291                     ;;
16292                 esac
16293                 ;;
16294         POSIX|posix)
16295                 case "$useposix" in
16296                 true|define|y) avail_ext="$avail_ext $xxx" ;;
16297                 esac
16298                 ;;
16299         Opcode|opcode)
16300                 case "$useopcode" in
16301                 true|define|y) avail_ext="$avail_ext $xxx" ;;
16302                 esac
16303                 ;;
16304         Socket|socket)
16305                 case "$d_socket" in 
16306                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
16307                 esac
16308                 ;;
16309         Sys/Syslog|sys/syslog)
16310                 : XXX syslog requires socket
16311                 case "$d_socket" in 
16312                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
16313                 esac
16314                 ;;
16315         Thread|thread)
16316                 case "$usethreads" in
16317                 true|$define|y)
16318                         case "$useithreads" in
16319                         $undef|false|[nN]*) avail_ext="$avail_ext $xxx" ;;
16320                         esac
16321                 esac
16322                 ;;
16323         IPC/SysV|ipc/sysv)
16324                 : XXX Do we need a useipcsysv variable here
16325                 case "${d_msg}${d_sem}${d_shm}" in 
16326                 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
16327                 esac
16328                 ;;
16329         *)      avail_ext="$avail_ext $xxx"
16330                 ;;
16331         esac
16332 done
16333
16334 set X $avail_ext
16335 shift
16336 avail_ext="$*"
16337
16338 : Now see which nonxs extensions are supported on this system.
16339 : For now assume all are.
16340 nonxs_ext=''
16341 for xxx in $nonxs_extensions ; do
16342         case "$xxx" in
16343         *)      nonxs_ext="$nonxs_ext $xxx"
16344                 ;;
16345         esac
16346 done
16347
16348 set X $nonxs_ext
16349 shift
16350 nonxs_ext="$*"
16351
16352 case $usedl in
16353 $define)
16354         $cat <<EOM
16355 A number of extensions are supplied with $package.  You may choose to
16356 compile these extensions for dynamic loading (the default), compile
16357 them into the $package executable (static loading), or not include
16358 them at all.  Answer "none" to include no extensions.
16359 Note that DynaLoader is always built and need not be mentioned here.
16360
16361 EOM
16362         case "$dynamic_ext" in
16363         '') dflt="$avail_ext" ;;
16364         *)      dflt="$dynamic_ext"
16365                 # Perhaps we are reusing an old out-of-date config.sh.
16366                 case "$hint" in
16367                 previous)
16368                         if test X"$dynamic_ext" != X"$avail_ext"; then
16369                                 $cat <<EOM
16370 NOTICE:  Your previous config.sh list may be incorrect. 
16371 The extensions now available to you are 
16372         ${avail_ext}
16373 but the default list from your previous config.sh is
16374         ${dynamic_ext} 
16375
16376 EOM
16377                         fi
16378                         ;;
16379                 esac
16380                 ;;
16381         esac
16382         case "$dflt" in
16383         '')     dflt=none;;
16384         esac
16385         rp="What extensions do you wish to load dynamically?"
16386         . ./myread
16387         case "$ans" in
16388         none) dynamic_ext=' ' ;;
16389         *) dynamic_ext="$ans" ;;
16390         esac
16391
16392         case "$static_ext" in
16393         '')
16394                 : Exclude those already listed in dynamic linking
16395                 dflt=''
16396                 for xxx in $avail_ext; do
16397                         case " $dynamic_ext " in
16398                         *" $xxx "*) ;;
16399                         *) dflt="$dflt $xxx" ;;
16400                         esac
16401                 done
16402                 set X $dflt
16403                 shift
16404                 dflt="$*"
16405                 ;;
16406         *)  dflt="$static_ext" 
16407                 ;;
16408         esac
16409
16410         case "$dflt" in
16411         '')     dflt=none;;
16412         esac
16413         rp="What extensions do you wish to load statically?"
16414         . ./myread
16415         case "$ans" in
16416         none) static_ext=' ' ;;
16417         *) static_ext="$ans" ;;
16418         esac
16419         ;;
16420 *)
16421         $cat <<EOM
16422 A number of extensions are supplied with $package.  Answer "none" 
16423 to include no extensions. 
16424 Note that DynaLoader is always built and need not be mentioned here.
16425
16426 EOM
16427         case "$static_ext" in
16428         '') dflt="$avail_ext" ;;
16429         *)      dflt="$static_ext"
16430                 # Perhaps we are reusing an old out-of-date config.sh.
16431                 case "$hint" in
16432                 previous)
16433                         if test X"$static_ext" != X"$avail_ext"; then
16434                                 $cat <<EOM
16435 NOTICE:  Your previous config.sh list may be incorrect. 
16436 The extensions now available to you are 
16437         ${avail_ext}
16438 but the default list from your previous config.sh is
16439         ${static_ext} 
16440
16441 EOM
16442                         fi
16443                         ;;
16444                 esac
16445                 ;;
16446         esac
16447         : Exclude those that are not xs extensions
16448         case "$dflt" in
16449         '')     dflt=none;;
16450         esac
16451         rp="What extensions do you wish to include?"
16452         . ./myread
16453         case "$ans" in
16454         none) static_ext=' ' ;;
16455         *) static_ext="$ans" ;;
16456         esac
16457         ;;
16458 esac
16459
16460 set X $dynamic_ext $static_ext $nonxs_ext
16461 shift
16462 extensions="$*"
16463
16464 : Remove libraries needed only for extensions
16465 : The appropriate ext/Foo/Makefile.PL will add them back in, if necessary.
16466 : The exception is SunOS 4.x, which needs them.
16467 case "${osname}X${osvers}" in
16468 sunos*X4*)
16469     perllibs="$libs"
16470     ;;
16471 *) case "$usedl" in
16472     $define|true|[yY]*)
16473             set X `echo " $libs " | sed -e 's@ -lndbm @ @' -e 's@ -lgdbm @ @' -e 's@ -ldbm @ @' -e 's@ -ldb @ @'` 
16474             shift
16475             perllibs="$*"
16476             ;;
16477     *)  perllibs="$libs"
16478             ;;
16479     esac
16480     ;;
16481 esac
16482
16483 : Remove build directory name from cppstdin so it can be used from
16484 : either the present location or the final installed location.
16485 echo " "
16486 : Get out of the UU directory to get correct path name.
16487 cd ..
16488 case "$cppstdin" in
16489 `pwd`/cppstdin)
16490         echo "Stripping down cppstdin path name"
16491         cppstdin=cppstdin
16492         ;;
16493 esac
16494 cd UU
16495
16496 : end of configuration questions
16497 echo " "
16498 echo "End of configuration questions."
16499 echo " "
16500
16501 : back to where it started
16502 if test -d ../UU; then
16503         cd ..
16504 fi
16505
16506 : configuration may be patched via a 'config.over' file
16507 if $test -f config.over; then
16508         echo " "
16509         dflt=y
16510         rp='I see a config.over file.  Do you wish to load it?'
16511         . UU/myread
16512         case "$ans" in
16513         n*) echo "OK, I'll ignore it.";;
16514         *)      . ./config.over
16515                 echo "Configuration override changes have been loaded."
16516                 ;;
16517         esac
16518 fi
16519
16520 : in case they want portability, strip down executable paths
16521 case "$d_portable" in
16522 "$define")
16523         echo " "
16524         echo "Stripping down executable paths..." >&4
16525         for file in $loclist $trylist; do
16526                 eval temp=\$$file
16527                 eval $file=`basename $temp`
16528         done
16529         ;;
16530 esac
16531
16532 : create config.sh file
16533 echo " "
16534 echo "Creating config.sh..." >&4
16535 $spitshell <<EOT >config.sh
16536 $startsh
16537 #
16538 # This file was produced by running the Configure script. It holds all the
16539 # definitions figured out by Configure. Should you modify one of these values,
16540 # do not forget to propagate your changes by running "Configure -der". You may
16541 # instead choose to run each of the .SH files by yourself, or "Configure -S".
16542 #
16543
16544 # Package name      : $package
16545 # Source directory  : $src
16546 # Configuration time: $cf_time
16547 # Configured by     : $cf_by
16548 # Target system     : $myuname
16549
16550 Author='$Author'
16551 Date='$Date'
16552 Header='$Header'
16553 Id='$Id'
16554 Locker='$Locker'
16555 Log='$Log'
16556 Mcc='$Mcc'
16557 RCSfile='$RCSfile'
16558 Revision='$Revision'
16559 Source='$Source'
16560 State='$State'
16561 _a='$_a'
16562 _exe='$_exe'
16563 _o='$_o'
16564 afs='$afs'
16565 afsroot='$afsroot'
16566 alignbytes='$alignbytes'
16567 ansi2knr='$ansi2knr'
16568 aphostname='$aphostname'
16569 api_revision='$api_revision'
16570 api_subversion='$api_subversion'
16571 api_version='$api_version'
16572 api_versionstring='$api_versionstring'
16573 ar='$ar'
16574 archlib='$archlib'
16575 archlibexp='$archlibexp'
16576 archname64='$archname64'
16577 archname='$archname'
16578 archobjs='$archobjs'
16579 awk='$awk'
16580 baserev='$baserev'
16581 bash='$bash'
16582 bin='$bin'
16583 bincompat5005='$bincompat5005'
16584 binexp='$binexp'
16585 bison='$bison'
16586 byacc='$byacc'
16587 byteorder='$byteorder'
16588 c='$c'
16589 castflags='$castflags'
16590 cat='$cat'
16591 cc='$cc'
16592 cccdlflags='$cccdlflags'
16593 ccdlflags='$ccdlflags'
16594 ccflags='$ccflags'
16595 ccflags_uselargefiles='$ccflags_uselargefiles'
16596 ccname='$ccname'
16597 ccsymbols='$ccsymbols'
16598 ccversion='$ccversion'
16599 cf_by='$cf_by'
16600 cf_email='$cf_email'
16601 cf_time='$cf_time'
16602 charsize='$charsize'
16603 chgrp='$chgrp'
16604 chmod='$chmod'
16605 chown='$chown'
16606 clocktype='$clocktype'
16607 comm='$comm'
16608 compress='$compress'
16609 contains='$contains'
16610 cp='$cp'
16611 cpio='$cpio'
16612 cpp='$cpp'
16613 cpp_stuff='$cpp_stuff'
16614 cppccsymbols='$cppccsymbols'
16615 cppflags='$cppflags'
16616 cpplast='$cpplast'
16617 cppminus='$cppminus'
16618 cpprun='$cpprun'
16619 cppstdin='$cppstdin'
16620 cppsymbols='$cppsymbols'
16621 cryptlib='$cryptlib'
16622 csh='$csh'
16623 d_Gconvert='$d_Gconvert'
16624 d_PRIEUldbl='$d_PRIEUldbl'
16625 d_PRIFUldbl='$d_PRIFUldbl'
16626 d_PRIGUldbl='$d_PRIGUldbl'
16627 d_PRIXU64='$d_PRIXU64'
16628 d_PRId64='$d_PRId64'
16629 d_PRIeldbl='$d_PRIeldbl'
16630 d_PRIfldbl='$d_PRIfldbl'
16631 d_PRIgldbl='$d_PRIgldbl'
16632 d_PRIi64='$d_PRIi64'
16633 d_PRIo64='$d_PRIo64'
16634 d_PRIu64='$d_PRIu64'
16635 d_PRIx64='$d_PRIx64'
16636 d_SCNfldbl='$d_SCNfldbl'
16637 d__fwalk='$d__fwalk'
16638 d_access='$d_access'
16639 d_accessx='$d_accessx'
16640 d_alarm='$d_alarm'
16641 d_archlib='$d_archlib'
16642 d_atolf='$d_atolf'
16643 d_atoll='$d_atoll'
16644 d_attribut='$d_attribut'
16645 d_bcmp='$d_bcmp'
16646 d_bcopy='$d_bcopy'
16647 d_bincompat5005='$d_bincompat5005'
16648 d_bsd='$d_bsd'
16649 d_bsdgetpgrp='$d_bsdgetpgrp'
16650 d_bsdsetpgrp='$d_bsdsetpgrp'
16651 d_bzero='$d_bzero'
16652 d_casti32='$d_casti32'
16653 d_castneg='$d_castneg'
16654 d_charvspr='$d_charvspr'
16655 d_chown='$d_chown'
16656 d_chroot='$d_chroot'
16657 d_chsize='$d_chsize'
16658 d_closedir='$d_closedir'
16659 d_cmsghdr_s='$d_cmsghdr_s'
16660 d_const='$d_const'
16661 d_crypt='$d_crypt'
16662 d_csh='$d_csh'
16663 d_cuserid='$d_cuserid'
16664 d_dbl_dig='$d_dbl_dig'
16665 d_dbminitproto='$d_dbminitproto'
16666 d_difftime='$d_difftime'
16667 d_dirnamlen='$d_dirnamlen'
16668 d_dlerror='$d_dlerror'
16669 d_dlopen='$d_dlopen'
16670 d_dlsymun='$d_dlsymun'
16671 d_dosuid='$d_dosuid'
16672 d_drand48proto='$d_drand48proto'
16673 d_dup2='$d_dup2'
16674 d_eaccess='$d_eaccess'
16675 d_endgrent='$d_endgrent'
16676 d_endhent='$d_endhent'
16677 d_endnent='$d_endnent'
16678 d_endpent='$d_endpent'
16679 d_endpwent='$d_endpwent'
16680 d_endsent='$d_endsent'
16681 d_eofnblk='$d_eofnblk'
16682 d_eunice='$d_eunice'
16683 d_fchdir='$d_fchdir'
16684 d_fchmod='$d_fchmod'
16685 d_fchown='$d_fchown'
16686 d_fcntl='$d_fcntl'
16687 d_fcntl_can_lock='$d_fcntl_can_lock'
16688 d_fd_macros='$d_fd_macros'
16689 d_fd_set='$d_fd_set'
16690 d_fds_bits='$d_fds_bits'
16691 d_fgetpos='$d_fgetpos'
16692 d_flexfnam='$d_flexfnam'
16693 d_flock='$d_flock'
16694 d_flockproto='$d_flockproto'
16695 d_fork='$d_fork'
16696 d_fpathconf='$d_fpathconf'
16697 d_fpos64_t='$d_fpos64_t'
16698 d_frexpl='$d_frexpl'
16699 d_fs_data_s='$d_fs_data_s'
16700 d_fseeko='$d_fseeko'
16701 d_fsetpos='$d_fsetpos'
16702 d_fstatfs='$d_fstatfs'
16703 d_fstatvfs='$d_fstatvfs'
16704 d_fsync='$d_fsync'
16705 d_ftello='$d_ftello'
16706 d_ftime='$d_ftime'
16707 d_getcwd='$d_getcwd'
16708 d_getespwnam='$d_getespwnam'
16709 d_getfsstat='$d_getfsstat'
16710 d_getgrent='$d_getgrent'
16711 d_getgrps='$d_getgrps'
16712 d_gethbyaddr='$d_gethbyaddr'
16713 d_gethbyname='$d_gethbyname'
16714 d_gethent='$d_gethent'
16715 d_gethname='$d_gethname'
16716 d_gethostprotos='$d_gethostprotos'
16717 d_getitimer='$d_getitimer'
16718 d_getlogin='$d_getlogin'
16719 d_getmnt='$d_getmnt'
16720 d_getmntent='$d_getmntent'
16721 d_getnbyaddr='$d_getnbyaddr'
16722 d_getnbyname='$d_getnbyname'
16723 d_getnent='$d_getnent'
16724 d_getnetprotos='$d_getnetprotos'
16725 d_getpagsz='$d_getpagsz'
16726 d_getpbyname='$d_getpbyname'
16727 d_getpbynumber='$d_getpbynumber'
16728 d_getpent='$d_getpent'
16729 d_getpgid='$d_getpgid'
16730 d_getpgrp2='$d_getpgrp2'
16731 d_getpgrp='$d_getpgrp'
16732 d_getppid='$d_getppid'
16733 d_getprior='$d_getprior'
16734 d_getprotoprotos='$d_getprotoprotos'
16735 d_getprpwnam='$d_getprpwnam'
16736 d_getpwent='$d_getpwent'
16737 d_getsbyname='$d_getsbyname'
16738 d_getsbyport='$d_getsbyport'
16739 d_getsent='$d_getsent'
16740 d_getservprotos='$d_getservprotos'
16741 d_getspnam='$d_getspnam'
16742 d_gettimeod='$d_gettimeod'
16743 d_gnulibc='$d_gnulibc'
16744 d_grpasswd='$d_grpasswd'
16745 d_hasmntopt='$d_hasmntopt'
16746 d_htonl='$d_htonl'
16747 d_iconv='$d_iconv'
16748 d_index='$d_index'
16749 d_inetaton='$d_inetaton'
16750 d_int64_t='$d_int64_t'
16751 d_isascii='$d_isascii'
16752 d_isnan='$d_isnan'
16753 d_isnanl='$d_isnanl'
16754 d_killpg='$d_killpg'
16755 d_lchown='$d_lchown'
16756 d_ldbl_dig='$d_ldbl_dig'
16757 d_link='$d_link'
16758 d_locconv='$d_locconv'
16759 d_lockf='$d_lockf'
16760 d_longdbl='$d_longdbl'
16761 d_longlong='$d_longlong'
16762 d_lseekproto='$d_lseekproto'
16763 d_lstat='$d_lstat'
16764 d_madvise='$d_madvise'
16765 d_mblen='$d_mblen'
16766 d_mbstowcs='$d_mbstowcs'
16767 d_mbtowc='$d_mbtowc'
16768 d_memchr='$d_memchr'
16769 d_memcmp='$d_memcmp'
16770 d_memcpy='$d_memcpy'
16771 d_memmove='$d_memmove'
16772 d_memset='$d_memset'
16773 d_mkdir='$d_mkdir'
16774 d_mkdtemp='$d_mkdtemp'
16775 d_mkfifo='$d_mkfifo'
16776 d_mkstemp='$d_mkstemp'
16777 d_mkstemps='$d_mkstemps'
16778 d_mktime='$d_mktime'
16779 d_mmap='$d_mmap'
16780 d_modfl='$d_modfl'
16781 d_modfl_pow32_bug='$d_modfl_pow32_bug'
16782 d_mprotect='$d_mprotect'
16783 d_msg='$d_msg'
16784 d_msg_ctrunc='$d_msg_ctrunc'
16785 d_msg_dontroute='$d_msg_dontroute'
16786 d_msg_oob='$d_msg_oob'
16787 d_msg_peek='$d_msg_peek'
16788 d_msg_proxy='$d_msg_proxy'
16789 d_msgctl='$d_msgctl'
16790 d_msgget='$d_msgget'
16791 d_msghdr_s='$d_msghdr_s'
16792 d_msgrcv='$d_msgrcv'
16793 d_msgsnd='$d_msgsnd'
16794 d_msync='$d_msync'
16795 d_munmap='$d_munmap'
16796 d_mymalloc='$d_mymalloc'
16797 d_nice='$d_nice'
16798 d_nl_langinfo='$d_nl_langinfo'
16799 d_nv_preserves_uv='$d_nv_preserves_uv'
16800 d_nv_preserves_uv_bits='$d_nv_preserves_uv_bits'
16801 d_off64_t='$d_off64_t'
16802 d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
16803 d_oldpthreads='$d_oldpthreads'
16804 d_oldsock='$d_oldsock'
16805 d_open3='$d_open3'
16806 d_pathconf='$d_pathconf'
16807 d_pause='$d_pause'
16808 d_perl_otherlibdirs='$d_perl_otherlibdirs'
16809 d_phostname='$d_phostname'
16810 d_pipe='$d_pipe'
16811 d_poll='$d_poll'
16812 d_portable='$d_portable'
16813 d_pthread_atfork='$d_pthread_atfork'
16814 d_pthread_yield='$d_pthread_yield'
16815 d_pwage='$d_pwage'
16816 d_pwchange='$d_pwchange'
16817 d_pwclass='$d_pwclass'
16818 d_pwcomment='$d_pwcomment'
16819 d_pwexpire='$d_pwexpire'
16820 d_pwgecos='$d_pwgecos'
16821 d_pwpasswd='$d_pwpasswd'
16822 d_pwquota='$d_pwquota'
16823 d_qgcvt='$d_qgcvt'
16824 d_quad='$d_quad'
16825 d_readdir='$d_readdir'
16826 d_readlink='$d_readlink'
16827 d_readv='$d_readv'
16828 d_recvmsg='$d_recvmsg'
16829 d_rename='$d_rename'
16830 d_rewinddir='$d_rewinddir'
16831 d_rmdir='$d_rmdir'
16832 d_safebcpy='$d_safebcpy'
16833 d_safemcpy='$d_safemcpy'
16834 d_sanemcmp='$d_sanemcmp'
16835 d_sbrkproto='$d_sbrkproto'
16836 d_sched_yield='$d_sched_yield'
16837 d_scm_rights='$d_scm_rights'
16838 d_seekdir='$d_seekdir'
16839 d_select='$d_select'
16840 d_sem='$d_sem'
16841 d_semctl='$d_semctl'
16842 d_semctl_semid_ds='$d_semctl_semid_ds'
16843 d_semctl_semun='$d_semctl_semun'
16844 d_semget='$d_semget'
16845 d_semop='$d_semop'
16846 d_sendmsg='$d_sendmsg'
16847 d_setegid='$d_setegid'
16848 d_seteuid='$d_seteuid'
16849 d_setgrent='$d_setgrent'
16850 d_setgrps='$d_setgrps'
16851 d_sethent='$d_sethent'
16852 d_setitimer='$d_setitimer'
16853 d_setlinebuf='$d_setlinebuf'
16854 d_setlocale='$d_setlocale'
16855 d_setnent='$d_setnent'
16856 d_setpent='$d_setpent'
16857 d_setpgid='$d_setpgid'
16858 d_setpgrp2='$d_setpgrp2'
16859 d_setpgrp='$d_setpgrp'
16860 d_setprior='$d_setprior'
16861 d_setproctitle='$d_setproctitle'
16862 d_setpwent='$d_setpwent'
16863 d_setregid='$d_setregid'
16864 d_setresgid='$d_setresgid'
16865 d_setresuid='$d_setresuid'
16866 d_setreuid='$d_setreuid'
16867 d_setrgid='$d_setrgid'
16868 d_setruid='$d_setruid'
16869 d_setsent='$d_setsent'
16870 d_setsid='$d_setsid'
16871 d_setvbuf='$d_setvbuf'
16872 d_sfio='$d_sfio'
16873 d_shm='$d_shm'
16874 d_shmat='$d_shmat'
16875 d_shmatprototype='$d_shmatprototype'
16876 d_shmctl='$d_shmctl'
16877 d_shmdt='$d_shmdt'
16878 d_shmget='$d_shmget'
16879 d_sigaction='$d_sigaction'
16880 d_sigprocmask='$d_sigprocmask'
16881 d_sigsetjmp='$d_sigsetjmp'
16882 d_sockatmark='$d_sockatmark'
16883 d_sockatmarkproto='$d_sockatmarkproto'
16884 d_socket='$d_socket'
16885 d_socklen_t='$d_socklen_t'
16886 d_sockpair='$d_sockpair'
16887 d_socks5_init='$d_socks5_init'
16888 d_sqrtl='$d_sqrtl'
16889 d_sresgproto='$d_sresgproto'
16890 d_sresuproto='$d_sresuproto'
16891 d_statblks='$d_statblks'
16892 d_statfs_f_flags='$d_statfs_f_flags'
16893 d_statfs_s='$d_statfs_s'
16894 d_statvfs='$d_statvfs'
16895 d_stdio_cnt_lval='$d_stdio_cnt_lval'
16896 d_stdio_ptr_lval='$d_stdio_ptr_lval'
16897 d_stdio_ptr_lval_nochange_cnt='$d_stdio_ptr_lval_nochange_cnt'
16898 d_stdio_ptr_lval_sets_cnt='$d_stdio_ptr_lval_sets_cnt'
16899 d_stdio_stream_array='$d_stdio_stream_array'
16900 d_stdiobase='$d_stdiobase'
16901 d_stdstdio='$d_stdstdio'
16902 d_strchr='$d_strchr'
16903 d_strcoll='$d_strcoll'
16904 d_strctcpy='$d_strctcpy'
16905 d_strerrm='$d_strerrm'
16906 d_strerror='$d_strerror'
16907 d_strftime='$d_strftime'
16908 d_strtod='$d_strtod'
16909 d_strtol='$d_strtol'
16910 d_strtold='$d_strtold'
16911 d_strtoll='$d_strtoll'
16912 d_strtoq='$d_strtoq'
16913 d_strtoul='$d_strtoul'
16914 d_strtoull='$d_strtoull'
16915 d_strtouq='$d_strtouq'
16916 d_strxfrm='$d_strxfrm'
16917 d_suidsafe='$d_suidsafe'
16918 d_symlink='$d_symlink'
16919 d_syscall='$d_syscall'
16920 d_syscallproto='$d_syscallproto'
16921 d_sysconf='$d_sysconf'
16922 d_sysernlst='$d_sysernlst'
16923 d_syserrlst='$d_syserrlst'
16924 d_system='$d_system'
16925 d_tcgetpgrp='$d_tcgetpgrp'
16926 d_tcsetpgrp='$d_tcsetpgrp'
16927 d_telldir='$d_telldir'
16928 d_telldirproto='$d_telldirproto'
16929 d_time='$d_time'
16930 d_times='$d_times'
16931 d_truncate='$d_truncate'
16932 d_tzname='$d_tzname'
16933 d_u32align='$d_u32align'
16934 d_ualarm='$d_ualarm'
16935 d_umask='$d_umask'
16936 d_uname='$d_uname'
16937 d_union_semun='$d_union_semun'
16938 d_usleep='$d_usleep'
16939 d_usleepproto='$d_usleepproto'
16940 d_ustat='$d_ustat'
16941 d_vendorarch='$d_vendorarch'
16942 d_vendorbin='$d_vendorbin'
16943 d_vendorlib='$d_vendorlib'
16944 d_vfork='$d_vfork'
16945 d_void_closedir='$d_void_closedir'
16946 d_voidsig='$d_voidsig'
16947 d_voidtty='$d_voidtty'
16948 d_volatile='$d_volatile'
16949 d_vprintf='$d_vprintf'
16950 d_wait4='$d_wait4'
16951 d_waitpid='$d_waitpid'
16952 d_wcstombs='$d_wcstombs'
16953 d_wctomb='$d_wctomb'
16954 d_writev='$d_writev'
16955 d_xenix='$d_xenix'
16956 date='$date'
16957 db_hashtype='$db_hashtype'
16958 db_prefixtype='$db_prefixtype'
16959 db_version_major='$db_version_major'
16960 db_version_minor='$db_version_minor'
16961 db_version_patch='$db_version_patch'
16962 defvoidused='$defvoidused'
16963 direntrytype='$direntrytype'
16964 dlext='$dlext'
16965 dlsrc='$dlsrc'
16966 doublesize='$doublesize'
16967 drand01='$drand01'
16968 dynamic_ext='$dynamic_ext'
16969 eagain='$eagain'
16970 ebcdic='$ebcdic'
16971 echo='$echo'
16972 egrep='$egrep'
16973 emacs='$emacs'
16974 eunicefix='$eunicefix'
16975 exe_ext='$exe_ext'
16976 expr='$expr'
16977 extensions='$extensions'
16978 fflushNULL='$fflushNULL'
16979 fflushall='$fflushall'
16980 find='$find'
16981 firstmakefile='$firstmakefile'
16982 flex='$flex'
16983 fpossize='$fpossize'
16984 fpostype='$fpostype'
16985 freetype='$freetype'
16986 from='$from'
16987 full_ar='$full_ar'
16988 full_csh='$full_csh'
16989 full_sed='$full_sed'
16990 gccosandvers='$gccosandvers'
16991 gccversion='$gccversion'
16992 gidformat='$gidformat'
16993 gidsign='$gidsign'
16994 gidsize='$gidsize'
16995 gidtype='$gidtype'
16996 glibpth='$glibpth'
16997 grep='$grep'
16998 groupcat='$groupcat'
16999 groupstype='$groupstype'
17000 gzip='$gzip'
17001 h_fcntl='$h_fcntl'
17002 h_sysfile='$h_sysfile'
17003 hint='$hint'
17004 hostcat='$hostcat'
17005 i16size='$i16size'
17006 i16type='$i16type'
17007 i32size='$i32size'
17008 i32type='$i32type'
17009 i64size='$i64size'
17010 i64type='$i64type'
17011 i8size='$i8size'
17012 i8type='$i8type'
17013 i_arpainet='$i_arpainet'
17014 i_bsdioctl='$i_bsdioctl'
17015 i_db='$i_db'
17016 i_dbm='$i_dbm'
17017 i_dirent='$i_dirent'
17018 i_dld='$i_dld'
17019 i_dlfcn='$i_dlfcn'
17020 i_fcntl='$i_fcntl'
17021 i_float='$i_float'
17022 i_gdbm='$i_gdbm'
17023 i_grp='$i_grp'
17024 i_iconv='$i_iconv'
17025 i_ieeefp='$i_ieeefp'
17026 i_inttypes='$i_inttypes'
17027 i_langinfo='$i_langinfo'
17028 i_libutil='$i_libutil'
17029 i_limits='$i_limits'
17030 i_locale='$i_locale'
17031 i_machcthr='$i_machcthr'
17032 i_malloc='$i_malloc'
17033 i_math='$i_math'
17034 i_memory='$i_memory'
17035 i_mntent='$i_mntent'
17036 i_ndbm='$i_ndbm'
17037 i_netdb='$i_netdb'
17038 i_neterrno='$i_neterrno'
17039 i_netinettcp='$i_netinettcp'
17040 i_niin='$i_niin'
17041 i_poll='$i_poll'
17042 i_prot='$i_prot'
17043 i_pthread='$i_pthread'
17044 i_pwd='$i_pwd'
17045 i_rpcsvcdbm='$i_rpcsvcdbm'
17046 i_sfio='$i_sfio'
17047 i_sgtty='$i_sgtty'
17048 i_shadow='$i_shadow'
17049 i_socks='$i_socks'
17050 i_stdarg='$i_stdarg'
17051 i_stddef='$i_stddef'
17052 i_stdlib='$i_stdlib'
17053 i_string='$i_string'
17054 i_sunmath='$i_sunmath'
17055 i_sysaccess='$i_sysaccess'
17056 i_sysdir='$i_sysdir'
17057 i_sysfile='$i_sysfile'
17058 i_sysfilio='$i_sysfilio'
17059 i_sysin='$i_sysin'
17060 i_sysioctl='$i_sysioctl'
17061 i_syslog='$i_syslog'
17062 i_sysmman='$i_sysmman'
17063 i_sysmode='$i_sysmode'
17064 i_sysmount='$i_sysmount'
17065 i_sysndir='$i_sysndir'
17066 i_sysparam='$i_sysparam'
17067 i_sysresrc='$i_sysresrc'
17068 i_syssecrt='$i_syssecrt'
17069 i_sysselct='$i_sysselct'
17070 i_syssockio='$i_syssockio'
17071 i_sysstat='$i_sysstat'
17072 i_sysstatfs='$i_sysstatfs'
17073 i_sysstatvfs='$i_sysstatvfs'
17074 i_systime='$i_systime'
17075 i_systimek='$i_systimek'
17076 i_systimes='$i_systimes'
17077 i_systypes='$i_systypes'
17078 i_sysuio='$i_sysuio'
17079 i_sysun='$i_sysun'
17080 i_sysutsname='$i_sysutsname'
17081 i_sysvfs='$i_sysvfs'
17082 i_syswait='$i_syswait'
17083 i_termio='$i_termio'
17084 i_termios='$i_termios'
17085 i_time='$i_time'
17086 i_unistd='$i_unistd'
17087 i_ustat='$i_ustat'
17088 i_utime='$i_utime'
17089 i_values='$i_values'
17090 i_varargs='$i_varargs'
17091 i_varhdr='$i_varhdr'
17092 i_vfork='$i_vfork'
17093 ignore_versioned_solibs='$ignore_versioned_solibs'
17094 inc_version_list='$inc_version_list'
17095 inc_version_list_init='$inc_version_list_init'
17096 incpath='$incpath'
17097 inews='$inews'
17098 installarchlib='$installarchlib'
17099 installbin='$installbin'
17100 installman1dir='$installman1dir'
17101 installman3dir='$installman3dir'
17102 installprefix='$installprefix'
17103 installprefixexp='$installprefixexp'
17104 installprivlib='$installprivlib'
17105 installscript='$installscript'
17106 installsitearch='$installsitearch'
17107 installsitebin='$installsitebin'
17108 installsitelib='$installsitelib'
17109 installstyle='$installstyle'
17110 installusrbinperl='$installusrbinperl'
17111 installvendorarch='$installvendorarch'
17112 installvendorbin='$installvendorbin'
17113 installvendorlib='$installvendorlib'
17114 intsize='$intsize'
17115 issymlink='$issymlink'
17116 ivdformat='$ivdformat'
17117 ivsize='$ivsize'
17118 ivtype='$ivtype'
17119 known_extensions='$known_extensions'
17120 ksh='$ksh'
17121 ld='$ld'
17122 lddlflags='$lddlflags'
17123 ldflags='$ldflags'
17124 ldflags_uselargefiles='$ldflags_uselargefiles'
17125 ldlibpthname='$ldlibpthname'
17126 less='$less'
17127 lib_ext='$lib_ext'
17128 libc='$libc'
17129 libperl='$libperl'
17130 libpth='$libpth'
17131 libs='$libs'
17132 libsdirs='$libsdirs'
17133 libsfiles='$libsfiles'
17134 libsfound='$libsfound'
17135 libspath='$libspath'
17136 libswanted='$libswanted'
17137 libswanted_uselargefiles='$libswanted_uselargefiles'
17138 line='$line'
17139 lint='$lint'
17140 lkflags='$lkflags'
17141 ln='$ln'
17142 lns='$lns'
17143 locincpth='$locincpth'
17144 loclibpth='$loclibpth'
17145 longdblsize='$longdblsize'
17146 longlongsize='$longlongsize'
17147 longsize='$longsize'
17148 lp='$lp'
17149 lpr='$lpr'
17150 ls='$ls'
17151 lseeksize='$lseeksize'
17152 lseektype='$lseektype'
17153 mail='$mail'
17154 mailx='$mailx'
17155 make='$make'
17156 make_set_make='$make_set_make'
17157 mallocobj='$mallocobj'
17158 mallocsrc='$mallocsrc'
17159 malloctype='$malloctype'
17160 man1dir='$man1dir'
17161 man1direxp='$man1direxp'
17162 man1ext='$man1ext'
17163 man3dir='$man3dir'
17164 man3direxp='$man3direxp'
17165 man3ext='$man3ext'
17166 mips_type='$mips_type'
17167 mkdir='$mkdir'
17168 mmaptype='$mmaptype'
17169 modetype='$modetype'
17170 more='$more'
17171 multiarch='$multiarch'
17172 mv='$mv'
17173 myarchname='$myarchname'
17174 mydomain='$mydomain'
17175 myhostname='$myhostname'
17176 myuname='$myuname'
17177 n='$n'
17178 need_va_copy='$need_va_copy'
17179 netdb_hlen_type='$netdb_hlen_type'
17180 netdb_host_type='$netdb_host_type'
17181 netdb_name_type='$netdb_name_type'
17182 netdb_net_type='$netdb_net_type'
17183 nm='$nm'
17184 nm_opt='$nm_opt'
17185 nm_so_opt='$nm_so_opt'
17186 nonxs_ext='$nonxs_ext'
17187 nroff='$nroff'
17188 nvEUformat='$nvEUformat'
17189 nvFUformat='$nvFUformat'
17190 nvGUformat='$nvGUformat'
17191 nveformat='$nveformat'
17192 nvfformat='$nvfformat'
17193 nvgformat='$nvgformat'
17194 nvsize='$nvsize'
17195 nvtype='$nvtype'
17196 o_nonblock='$o_nonblock'
17197 obj_ext='$obj_ext'
17198 old_pthread_create_joinable='$old_pthread_create_joinable'
17199 optimize='$optimize'
17200 orderlib='$orderlib'
17201 osname='$osname'
17202 osvers='$osvers'
17203 otherlibdirs='$otherlibdirs'
17204 package='$package'
17205 pager='$pager'
17206 passcat='$passcat'
17207 patchlevel='$patchlevel'
17208 path_sep='$path_sep'
17209 perl5='$perl5'
17210 perl='$perl'
17211 perl_patchlevel='$perl_patchlevel'
17212 perladmin='$perladmin'
17213 perllibs='$perllibs'
17214 perlpath='$perlpath'
17215 pg='$pg'
17216 phostname='$phostname'
17217 pidtype='$pidtype'
17218 plibpth='$plibpth'
17219 pm_apiversion='$pm_apiversion'
17220 pmake='$pmake'
17221 pr='$pr'
17222 prefix='$prefix'
17223 prefixexp='$prefixexp'
17224 privlib='$privlib'
17225 privlibexp='$privlibexp'
17226 prototype='$prototype'
17227 ptrsize='$ptrsize'
17228 quadkind='$quadkind'
17229 quadtype='$quadtype'
17230 randbits='$randbits'
17231 randfunc='$randfunc'
17232 randseedtype='$randseedtype'
17233 ranlib='$ranlib'
17234 rd_nodata='$rd_nodata'
17235 revision='$revision'
17236 rm='$rm'
17237 rmail='$rmail'
17238 run='$run'
17239 runnm='$runnm'
17240 sPRIEUldbl='$sPRIEUldbl'
17241 sPRIFUldbl='$sPRIFUldbl'
17242 sPRIGUldbl='$sPRIGUldbl'
17243 sPRIXU64='$sPRIXU64'
17244 sPRId64='$sPRId64'
17245 sPRIeldbl='$sPRIeldbl'
17246 sPRIfldbl='$sPRIfldbl'
17247 sPRIgldbl='$sPRIgldbl'
17248 sPRIi64='$sPRIi64'
17249 sPRIo64='$sPRIo64'
17250 sPRIu64='$sPRIu64'
17251 sPRIx64='$sPRIx64'
17252 sSCNfldbl='$sSCNfldbl'
17253 sched_yield='$sched_yield'
17254 scriptdir='$scriptdir'
17255 scriptdirexp='$scriptdirexp'
17256 sed='$sed'
17257 seedfunc='$seedfunc'
17258 selectminbits='$selectminbits'
17259 selecttype='$selecttype'
17260 sendmail='$sendmail'
17261 sh='$sh'
17262 shar='$shar'
17263 sharpbang='$sharpbang'
17264 shmattype='$shmattype'
17265 shortsize='$shortsize'
17266 shrpenv='$shrpenv'
17267 shsharp='$shsharp'
17268 sig_count='$sig_count'
17269 sig_name='$sig_name'
17270 sig_name_init='$sig_name_init'
17271 sig_num='$sig_num'
17272 sig_num_init='$sig_num_init'
17273 sig_size='$sig_size'
17274 signal_t='$signal_t'
17275 sitearch='$sitearch'
17276 sitearchexp='$sitearchexp'
17277 sitebin='$sitebin'
17278 sitebinexp='$sitebinexp'
17279 sitelib='$sitelib'
17280 sitelib_stem='$sitelib_stem'
17281 sitelibexp='$sitelibexp'
17282 siteprefix='$siteprefix'
17283 siteprefixexp='$siteprefixexp'
17284 sizesize='$sizesize'
17285 sizetype='$sizetype'
17286 sleep='$sleep'
17287 smail='$smail'
17288 so='$so'
17289 sockethdr='$sockethdr'
17290 socketlib='$socketlib'
17291 socksizetype='$socksizetype'
17292 sort='$sort'
17293 spackage='$spackage'
17294 spitshell='$spitshell'
17295 src='$src'
17296 ssizetype='$ssizetype'
17297 startperl='$startperl'
17298 startsh='$startsh'
17299 static_ext='$static_ext'
17300 stdchar='$stdchar'
17301 stdio_base='$stdio_base'
17302 stdio_bufsiz='$stdio_bufsiz'
17303 stdio_cnt='$stdio_cnt'
17304 stdio_filbuf='$stdio_filbuf'
17305 stdio_ptr='$stdio_ptr'
17306 stdio_stream_array='$stdio_stream_array'
17307 strings='$strings'
17308 submit='$submit'
17309 subversion='$subversion'
17310 sysman='$sysman'
17311 tail='$tail'
17312 tar='$tar'
17313 targetarch='$targetarch'
17314 tbl='$tbl'
17315 tee='$tee'
17316 test='$test'
17317 timeincl='$timeincl'
17318 timetype='$timetype'
17319 to='$to'
17320 touch='$touch'
17321 tr='$tr'
17322 trnl='$trnl'
17323 troff='$troff'
17324 u16size='$u16size'
17325 u16type='$u16type'
17326 u32size='$u32size'
17327 u32type='$u32type'
17328 u64size='$u64size'
17329 u64type='$u64type'
17330 u8size='$u8size'
17331 u8type='$u8type'
17332 uidformat='$uidformat'
17333 uidsign='$uidsign'
17334 uidsize='$uidsize'
17335 uidtype='$uidtype'
17336 uname='$uname'
17337 uniq='$uniq'
17338 uquadtype='$uquadtype'
17339 use5005threads='$use5005threads'
17340 use64bitall='$use64bitall'
17341 use64bitint='$use64bitint'
17342 usecrosscompile='$usecrosscompile'
17343 usedl='$usedl'
17344 useithreads='$useithreads'
17345 uselargefiles='$uselargefiles'
17346 uselongdouble='$uselongdouble'
17347 usemorebits='$usemorebits'
17348 usemultiplicity='$usemultiplicity'
17349 usemymalloc='$usemymalloc'
17350 usenm='$usenm'
17351 useopcode='$useopcode'
17352 useperlio='$useperlio'
17353 useposix='$useposix'
17354 usereentrant='$usereentrant'
17355 usesfio='$usesfio'
17356 useshrplib='$useshrplib'
17357 usesocks='$usesocks'
17358 usethreads='$usethreads'
17359 usevendorprefix='$usevendorprefix'
17360 usevfork='$usevfork'
17361 usrinc='$usrinc'
17362 uuname='$uuname'
17363 uvXUformat='$uvXUformat'
17364 uvoformat='$uvoformat'
17365 uvsize='$uvsize'
17366 uvtype='$uvtype'
17367 uvuformat='$uvuformat'
17368 uvxformat='$uvxformat'
17369 vendorarch='$vendorarch'
17370 vendorarchexp='$vendorarchexp'
17371 vendorbin='$vendorbin'
17372 vendorbinexp='$vendorbinexp'
17373 vendorlib='$vendorlib'
17374 vendorlib_stem='$vendorlib_stem'
17375 vendorlibexp='$vendorlibexp'
17376 vendorprefix='$vendorprefix'
17377 vendorprefixexp='$vendorprefixexp'
17378 version='$version'
17379 version_patchlevel_string='$version_patchlevel_string'
17380 versiononly='$versiononly'
17381 vi='$vi'
17382 voidflags='$voidflags'
17383 xlibpth='$xlibpth'
17384 xs_apiversion='$xs_apiversion'
17385 yacc='$yacc'
17386 yaccflags='$yaccflags'
17387 zcat='$zcat'
17388 zip='$zip'
17389 EOT
17390
17391 : Add in command line options if available
17392 $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
17393
17394 : add special variables
17395 $test -f $src/patchlevel.h && \
17396 awk '/^#define[         ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
17397 echo "PERL_PATCHLEVEL=$perl_patchlevel" >>config.sh
17398 echo "PERL_CONFIG_SH=true" >>config.sh
17399
17400 : propagate old symbols
17401 if $test -f UU/config.sh; then
17402         <UU/config.sh $sort | $uniq >UU/oldconfig.sh
17403         sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
17404         $sort | $uniq -u >UU/oldsyms
17405         set X `cat UU/oldsyms`
17406         shift
17407         case $# in
17408         0) ;;
17409         *)
17410                 cat <<EOM
17411 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
17412 EOM
17413                 echo "# Variables propagated from previous config.sh file." >>config.sh
17414                 for sym in `cat UU/oldsyms`; do
17415                         echo "    Propagating $hint variable "'$'"$sym..."
17416                         eval 'tmp="$'"${sym}"'"'
17417                         echo "$tmp" | \
17418                                 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
17419                 done
17420                 ;;
17421         esac
17422 fi
17423
17424 : Finish up by extracting the .SH files
17425 case "$alldone" in
17426 exit)
17427         $rm -rf UU
17428         echo "Extraction done."
17429         exit 0
17430         ;;
17431 cont)
17432         ;;
17433 '')
17434         dflt=''
17435         nostick=true
17436         $cat <<EOM
17437
17438 If you'd like to make any changes to the config.sh file before I begin
17439 to configure things, do it as a shell escape now (e.g. !vi config.sh).
17440
17441 EOM
17442         rp="Press return or use a shell escape to edit config.sh:"
17443         . UU/myread
17444         nostick=''
17445         case "$ans" in
17446         '') ;;
17447         *) : in case they cannot read
17448                 sh 1>&4 -c "$ans";;
17449         esac
17450         ;;
17451 esac
17452
17453 : if this fails, just run all the .SH files by hand
17454 . ./config.sh
17455
17456 echo " "
17457 exec 1>&4
17458 pwd=`pwd`
17459 . ./UU/extract
17460 cd $pwd
17461
17462 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
17463         dflt=y
17464         case "$silent" in
17465         true) ;;
17466         *)
17467                 $cat <<EOM
17468
17469 Now you need to generate make dependencies by running "$make depend".
17470 You might prefer to run it in background: "$make depend > makedepend.out &"
17471 It can take a while, so you might not want to run it right now.
17472
17473 EOM
17474                 ;;
17475         esac
17476         rp="Run $make depend now?"
17477         . UU/myread
17478         case "$ans" in
17479         y*)
17480                 $make depend && echo "Now you must run '$make'."
17481                 ;;
17482         *)
17483                 echo "You must run '$make depend' then '$make'."
17484                 ;;
17485         esac
17486 elif test -f [Mm]akefile; then
17487         echo " "
17488         echo "Now you must run a $make."
17489 else
17490         echo "Configure done."
17491 fi
17492
17493 if $test -f Policy.sh; then
17494     $cat <<EOM
17495
17496 If you compile $package on a different machine or from a different object
17497 directory, copy the Policy.sh file from this object directory to the
17498 new one before you run Configure -- this will help you with most of
17499 the policy defaults.
17500
17501 EOM
17502 fi
17503 if $test -f config.msg; then
17504     echo "Hmm.  I also noted the following information while running:"
17505     echo " "
17506     $cat config.msg >&4
17507     $rm -f config.msg
17508 fi
17509 $rm -f kit*isdone ark*isdone
17510 $rm -rf UU
17511
17512 : End of Configure
17513