spaceship and refs
[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 Mon Nov 19 22:50:26 GMT 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                 case "X${MACHTYPE:-nonesuchmach}" in
69                 *cygwin) ;;
70                 *) p_=\; ;;
71                 esac
72         fi
73 fi
74
75 : Proper PATH setting
76 paths='/bin /usr/bin /usr/local/bin /usr/ucb /usr/local /usr/lbin'
77 paths="$paths /opt/bin /opt/local/bin /opt/local /opt/lbin"
78 paths="$paths /usr/5bin /etc /usr/gnu/bin /usr/new /usr/new/bin /usr/nbin"
79 paths="$paths /opt/gnu/bin /opt/new /opt/new/bin /opt/nbin"
80 paths="$paths /sys5.3/bin /sys5.3/usr/bin /bsd4.3/bin /bsd4.3/usr/ucb"
81 paths="$paths /bsd4.3/usr/bin /usr/bsd /bsd43/bin /usr/ccs/bin"
82 paths="$paths /etc /usr/lib /usr/ucblib /lib /usr/ccs/lib"
83 paths="$paths /sbin /usr/sbin /usr/libexec"
84
85 for p in $paths
86 do
87         case "$p_$PATH$p_" in
88         *$p_$p$p_*) ;;
89         *) test -d $p && PATH=$PATH$p_$p ;;
90         esac
91 done
92
93 PATH=.$p_$PATH
94 export PATH
95
96 : shall we be using ksh?
97 inksh=''
98 needksh=''
99 avoidksh=''
100 newsh=/bin/ksh
101 changesh=''
102 if (PATH=.; alias -x) >/dev/null 2>&1; then
103                 inksh=true
104 fi
105 if test -f /hp-ux -a -f /bin/ksh; then
106         needksh='to avoid sh bug in "here document" expansion'
107 fi
108 if test -d /usr/lpp -a -f /usr/bin/bsh -a -f /usr/bin/uname; then
109         if test X`/usr/bin/uname -v` = X4; then
110                 avoidksh="to avoid AIX 4's /bin/sh"
111                 newsh=/usr/bin/bsh
112         fi
113 fi
114 if test -f /osf_boot -a -f /usr/sbin/setld; then
115         if test X`/usr/bin/uname -s` = XOSF1; then
116                 avoidksh="to avoid Digital UNIX' ksh"
117                 newsh=/bin/sh
118                 unset BIN_SH # if this is 'xpg4' sh will start up ksh
119         fi
120 fi
121 case "$inksh/$needksh" in
122 /[a-z]*)
123                 ENV=''
124                 changesh=true
125                 reason="$needksh"
126         ;;
127 esac
128 case "$inksh/$avoidksh" in
129 true/[a-z]*)
130         changesh=true
131         reason="$avoidksh"
132         ;;
133 esac
134 case "$inksh/$needksh-$avoidksh-" in
135 true/--)
136                 cat <<EOM
137 (I see you are using the Korn shell.  Some ksh's blow up on $me,
138 mainly on older exotic systems.  If yours does, try the Bourne shell instead.)
139 EOM
140         ;;
141 esac
142 case "$changesh" in
143 true)
144         echo "(Feeding myself to $newsh $reason.)"
145         case "$0" in
146         Configure|*/Configure) exec $newsh $0 "$@";;
147         *) exec $newsh Configure "$@";;
148         esac
149         ;;
150 esac
151
152 : if needed set CDPATH to a harmless value that is not chatty
153 : avoid bash 2.02 problems with empty CDPATH.
154 case "$CDPATH" in
155 '')     ;;
156 *)      case "$SHELL" in
157         *bash*) CDPATH='.' ;;
158         *)              CDPATH='' ;;
159         esac
160         ;;
161 esac
162 : Configure runs within the UU subdirectory
163 test -d UU || mkdir UU
164 cd UU && rm -f ./*
165
166 ccname=''
167 ccversion=''
168 ccsymbols=''
169 cppccsymbols=''
170 cppsymbols=''
171 from=''
172 run=''
173 targetarch=''
174 to=''
175 usecrosscompile=''
176 perllibs=''
177 dynamic_ext=''
178 extensions=''
179 known_extensions=''
180 nonxs_ext=''
181 static_ext=''
182 useopcode=''
183 useposix=''
184 extras=''
185 d_bsd=''
186 d_eunice=''
187 d_xenix=''
188 eunicefix=''
189 Mcc=''
190 ar=''
191 awk=''
192 bash=''
193 bison=''
194 byacc=''
195 cat=''
196 chgrp=''
197 chmod=''
198 chown=''
199 comm=''
200 compress=''
201 cp=''
202 cpio=''
203 cpp=''
204 csh=''
205 date=''
206 echo=''
207 egrep=''
208 emacs=''
209 expr=''
210 find=''
211 flex=''
212 grep=''
213 gzip=''
214 inews=''
215 ksh=''
216 less=''
217 line=''
218 lint=''
219 ln=''
220 lp=''
221 lpr=''
222 ls=''
223 mail=''
224 mailx=''
225 make=''
226 mkdir=''
227 more=''
228 mv=''
229 nm=''
230 nroff=''
231 perl=''
232 pg=''
233 pmake=''
234 pr=''
235 rm=''
236 rmail=''
237 sed=''
238 sendmail=''
239 shar=''
240 sleep=''
241 smail=''
242 sort=''
243 submit=''
244 tail=''
245 tar=''
246 tbl=''
247 tee=''
248 test=''
249 touch=''
250 tr=''
251 troff=''
252 uname=''
253 uniq=''
254 uuname=''
255 vi=''
256 zcat=''
257 zip=''
258 full_ar=''
259 full_sed=''
260 libswanted=''
261 hint=''
262 myuname=''
263 osname=''
264 osvers=''
265 Author=''
266 Date=''
267 Header=''
268 Id=''
269 Locker=''
270 Log=''
271 RCSfile=''
272 Revision=''
273 Source=''
274 State=''
275 _a=''
276 _exe=''
277 _o=''
278 archobjs=''
279 exe_ext=''
280 firstmakefile=''
281 lib_ext=''
282 obj_ext=''
283 path_sep=''
284 afs=''
285 afsroot=''
286 alignbytes=''
287 ansi2knr=''
288 archlib=''
289 archlibexp=''
290 d_archlib=''
291 installarchlib=''
292 archname=''
293 myarchname=''
294 d_atolf=''
295 d_atoll=''
296 baserev=''
297 bin=''
298 binexp=''
299 installbin=''
300 bincompat5005=''
301 d_bincompat5005=''
302 byteorder=''
303 cc=''
304 ccflags=''
305 cppflags=''
306 ldflags=''
307 lkflags=''
308 locincpth=''
309 optimize=''
310 cf_email=''
311 cf_by=''
312 cf_time=''
313 charsize=''
314 contains=''
315 cpp_stuff=''
316 cpplast=''
317 cppminus=''
318 cpprun=''
319 cppstdin=''
320 d__fwalk=''
321 d_access=''
322 d_accessx=''
323 d_alarm=''
324 d_attribut=''
325 d_bcmp=''
326 d_bcopy=''
327 d_bzero=''
328 d_casti32=''
329 castflags=''
330 d_castneg=''
331 d_chown=''
332 d_chroot=''
333 d_chsize=''
334 d_class=''
335 d_closedir=''
336 d_void_closedir=''
337 d_cmsghdr_s=''
338 d_const=''
339 cryptlib=''
340 d_crypt=''
341 d_csh=''
342 full_csh=''
343 d_cuserid=''
344 d_dbl_dig=''
345 d_dbminitproto=''
346 d_difftime=''
347 d_dlerror=''
348 d_dlopen=''
349 d_dlsymun=''
350 d_dosuid=''
351 d_suidsafe=''
352 d_drand48proto=''
353 d_dup2=''
354 d_eaccess=''
355 d_endgrent=''
356 d_endhent=''
357 d_endnent=''
358 d_endpent=''
359 d_endpwent=''
360 d_endsent=''
361 d_fchdir=''
362 d_fchmod=''
363 d_fchown=''
364 d_fcntl=''
365 d_fcntl_can_lock=''
366 d_fd_macros=''
367 d_fd_set=''
368 d_fds_bits=''
369 d_fgetpos=''
370 d_finite=''
371 d_finitel=''
372 d_flexfnam=''
373 d_flock=''
374 d_flockproto=''
375 d_fork=''
376 d_fp_class=''
377 d_fpclass=''
378 d_fpclassify=''
379 d_fpclassl=''
380 d_fpos64_t=''
381 d_frexpl=''
382 d_fs_data_s=''
383 d_fseeko=''
384 d_fsetpos=''
385 d_fstatfs=''
386 d_fsync=''
387 d_ftello=''
388 d_ftime=''
389 d_gettimeod=''
390 d_Gconvert=''
391 d_getcwd=''
392 d_getespwnam=''
393 d_getfsstat=''
394 d_getgrent=''
395 d_getgrps=''
396 d_gethbyaddr=''
397 d_gethbyname=''
398 d_gethent=''
399 aphostname=''
400 d_gethname=''
401 d_phostname=''
402 d_uname=''
403 d_gethostprotos=''
404 d_getitimer=''
405 d_getlogin=''
406 d_getmnt=''
407 d_getmntent=''
408 d_getnbyaddr=''
409 d_getnbyname=''
410 d_getnent=''
411 d_getnetprotos=''
412 d_getpagsz=''
413 d_getpent=''
414 d_getpgid=''
415 d_getpgrp2=''
416 d_bsdgetpgrp=''
417 d_getpgrp=''
418 d_getppid=''
419 d_getprior=''
420 d_getpbyname=''
421 d_getpbynumber=''
422 d_getprotoprotos=''
423 d_getprpwnam=''
424 d_getpwent=''
425 d_getsent=''
426 d_getservprotos=''
427 d_getspnam=''
428 d_getsbyname=''
429 d_getsbyport=''
430 d_gnulibc=''
431 d_hasmntopt=''
432 d_htonl=''
433 d_inetaton=''
434 d_int64_t=''
435 d_isascii=''
436 d_isfinite=''
437 d_isinf=''
438 d_isnan=''
439 d_isnanl=''
440 d_killpg=''
441 d_lchown=''
442 d_ldbl_dig=''
443 d_link=''
444 d_locconv=''
445 d_lockf=''
446 d_longdbl=''
447 longdblsize=''
448 d_longlong=''
449 longlongsize=''
450 d_lseekproto=''
451 d_lstat=''
452 d_madvise=''
453 d_mblen=''
454 d_mbstowcs=''
455 d_mbtowc=''
456 d_memchr=''
457 d_memcmp=''
458 d_memcpy=''
459 d_memmove=''
460 d_memset=''
461 d_mkdir=''
462 d_mkdtemp=''
463 d_mkfifo=''
464 d_mkstemp=''
465 d_mkstemps=''
466 d_mktime=''
467 d_mmap=''
468 mmaptype=''
469 d_modfl=''
470 d_modfl_pow32_bug=''
471 d_mprotect=''
472 d_msg=''
473 d_msgctl=''
474 d_msgget=''
475 d_msghdr_s=''
476 d_msgrcv=''
477 d_msgsnd=''
478 d_msync=''
479 d_munmap=''
480 d_nice=''
481 d_nl_langinfo=''
482 d_off64_t=''
483 d_open3=''
484 d_fpathconf=''
485 d_pathconf=''
486 d_pause=''
487 d_pipe=''
488 d_poll=''
489 d_portable=''
490 d_old_pthread_create_joinable=''
491 old_pthread_create_joinable=''
492 d_pthread_atfork=''
493 d_pthread_yield=''
494 d_sched_yield=''
495 sched_yield=''
496 d_qgcvt=''
497 d_readdir=''
498 d_rewinddir=''
499 d_seekdir=''
500 d_telldir=''
501 d_readlink=''
502 d_readv=''
503 d_recvmsg=''
504 d_rename=''
505 d_rmdir=''
506 d_safebcpy=''
507 d_safemcpy=''
508 d_sanemcmp=''
509 d_sbrkproto=''
510 d_select=''
511 d_sem=''
512 d_semctl=''
513 d_semget=''
514 d_semop=''
515 d_sendmsg=''
516 d_setegid=''
517 d_seteuid=''
518 d_setgrent=''
519 d_setgrps=''
520 d_sethent=''
521 d_setitimer=''
522 d_setlinebuf=''
523 d_setlocale=''
524 d_setnent=''
525 d_setpent=''
526 d_setpgid=''
527 d_setpgrp2=''
528 d_bsdsetpgrp=''
529 d_setpgrp=''
530 d_setprior=''
531 d_setproctitle=''
532 d_setpwent=''
533 d_setregid=''
534 d_setresgid=''
535 d_setresuid=''
536 d_setreuid=''
537 d_setrgid=''
538 d_setruid=''
539 d_setsent=''
540 d_setsid=''
541 d_setvbuf=''
542 d_sfio=''
543 usesfio=''
544 d_shm=''
545 d_shmat=''
546 d_shmatprototype=''
547 shmattype=''
548 d_shmctl=''
549 d_shmdt=''
550 d_shmget=''
551 d_sigaction=''
552 d_sigprocmask=''
553 d_sigsetjmp=''
554 d_sockatmark=''
555 d_sockatmarkproto=''
556 d_msg_ctrunc=''
557 d_msg_dontroute=''
558 d_msg_oob=''
559 d_msg_peek=''
560 d_msg_proxy=''
561 d_oldsock=''
562 d_scm_rights=''
563 d_socket=''
564 d_sockpair=''
565 sockethdr=''
566 socketlib=''
567 d_socklen_t=''
568 d_socks5_init=''
569 d_sqrtl=''
570 d_sresgproto=''
571 d_sresuproto=''
572 d_statblks=''
573 d_statfs_f_flags=''
574 d_statfs_s=''
575 d_fstatvfs=''
576 d_statvfs=''
577 d_stdio_cnt_lval=''
578 d_stdio_ptr_lval=''
579 d_stdio_ptr_lval_nochange_cnt=''
580 d_stdio_ptr_lval_sets_cnt=''
581 d_stdiobase=''
582 d_stdstdio=''
583 stdio_base=''
584 stdio_bufsiz=''
585 stdio_cnt=''
586 stdio_filbuf=''
587 stdio_ptr=''
588 d_index=''
589 d_strchr=''
590 d_strcoll=''
591 d_strctcpy=''
592 d_strerrm=''
593 d_strerror=''
594 d_sysernlst=''
595 d_syserrlst=''
596 d_strftime=''
597 d_strtod=''
598 d_strtol=''
599 d_strtold=''
600 d_strtoll=''
601 d_strtoq=''
602 d_strtoul=''
603 d_strtoull=''
604 d_strtouq=''
605 d_strxfrm=''
606 d_symlink=''
607 d_syscall=''
608 d_syscallproto=''
609 d_sysconf=''
610 d_system=''
611 d_tcgetpgrp=''
612 d_tcsetpgrp=''
613 d_telldirproto=''
614 d_time=''
615 timetype=''
616 clocktype=''
617 d_times=''
618 d_truncate=''
619 d_tzname=''
620 d_u32align=''
621 d_ualarm=''
622 d_umask=''
623 d_semctl_semid_ds=''
624 d_semctl_semun=''
625 d_union_semun=''
626 d_unordered=''
627 d_usleep=''
628 d_usleepproto=''
629 d_ustat=''
630 d_vfork=''
631 usevfork=''
632 d_voidsig=''
633 signal_t=''
634 d_volatile=''
635 d_charvspr=''
636 d_vprintf=''
637 d_wait4=''
638 d_waitpid=''
639 d_wcstombs=''
640 d_wctomb=''
641 d_writev=''
642 dlext=''
643 cccdlflags=''
644 ccdlflags=''
645 dlsrc=''
646 ld=''
647 lddlflags=''
648 usedl=''
649 doublesize=''
650 ebcdic=''
651 fflushNULL=''
652 fflushall=''
653 fpossize=''
654 fpostype=''
655 gccosandvers=''
656 gccversion=''
657 gidformat=''
658 gidsign=''
659 gidsize=''
660 gidtype=''
661 groupstype=''
662 h_fcntl=''
663 h_sysfile=''
664 i_arpainet=''
665 db_hashtype=''
666 db_prefixtype=''
667 db_version_major=''
668 db_version_minor=''
669 db_version_patch=''
670 i_db=''
671 i_dbm=''
672 i_rpcsvcdbm=''
673 d_dirnamlen=''
674 direntrytype=''
675 i_dirent=''
676 i_dld=''
677 i_dlfcn=''
678 i_fcntl=''
679 i_float=''
680 i_fp=''
681 i_fp_class=''
682 i_gdbm=''
683 d_grpasswd=''
684 i_grp=''
685 i_ieeefp=''
686 i_inttypes=''
687 i_langinfo=''
688 i_libutil=''
689 i_limits=''
690 i_locale=''
691 i_machcthr=''
692 i_malloc=''
693 i_math=''
694 i_memory=''
695 i_mntent=''
696 i_ndbm=''
697 i_netdb=''
698 i_neterrno=''
699 i_netinettcp=''
700 i_niin=''
701 i_sysin=''
702 i_poll=''
703 i_prot=''
704 i_pthread=''
705 d_pwage=''
706 d_pwchange=''
707 d_pwclass=''
708 d_pwcomment=''
709 d_pwexpire=''
710 d_pwgecos=''
711 d_pwpasswd=''
712 d_pwquota=''
713 i_pwd=''
714 i_sfio=''
715 i_shadow=''
716 i_socks=''
717 i_stddef=''
718 i_stdlib=''
719 i_string=''
720 strings=''
721 i_sunmath=''
722 i_sysaccess=''
723 i_sysdir=''
724 i_sysfile=''
725 d_voidtty=''
726 i_bsdioctl=''
727 i_sysfilio=''
728 i_sysioctl=''
729 i_syssockio=''
730 i_syslog=''
731 i_sysmman=''
732 i_sysmode=''
733 i_sysmount=''
734 i_sysndir=''
735 i_sysparam=''
736 i_sysresrc=''
737 i_syssecrt=''
738 i_sysselct=''
739 i_sysstat=''
740 i_sysstatfs=''
741 i_sysstatvfs=''
742 i_systimes=''
743 i_systypes=''
744 i_sysuio=''
745 i_sysun=''
746 i_sysutsname=''
747 i_sysvfs=''
748 i_syswait=''
749 i_sgtty=''
750 i_termio=''
751 i_termios=''
752 i_systime=''
753 i_systimek=''
754 i_time=''
755 timeincl=''
756 i_unistd=''
757 i_ustat=''
758 i_utime=''
759 i_values=''
760 i_stdarg=''
761 i_varargs=''
762 i_varhdr=''
763 i_vfork=''
764 inc_version_list=''
765 inc_version_list_init=''
766 installprefix=''
767 installprefixexp=''
768 installstyle=''
769 installusrbinperl=''
770 intsize=''
771 longsize=''
772 shortsize=''
773 issymlink=''
774 libc=''
775 ldlibpthname=''
776 libperl=''
777 shrpenv=''
778 useshrplib=''
779 glibpth=''
780 libpth=''
781 loclibpth=''
782 plibpth=''
783 xlibpth=''
784 ignore_versioned_solibs=''
785 libs=''
786 libsdirs=''
787 libsfiles=''
788 libsfound=''
789 libspath=''
790 lns=''
791 d_PRIEUldbl=''
792 d_PRIFUldbl=''
793 d_PRIGUldbl=''
794 d_PRIeldbl=''
795 d_PRIfldbl=''
796 d_PRIgldbl=''
797 d_SCNfldbl=''
798 sPRIEUldbl=''
799 sPRIFUldbl=''
800 sPRIGUldbl=''
801 sPRIeldbl=''
802 sPRIfldbl=''
803 sPRIgldbl=''
804 sSCNfldbl=''
805 lseeksize=''
806 lseektype=''
807 make_set_make=''
808 d_mymalloc=''
809 freetype=''
810 mallocobj=''
811 mallocsrc=''
812 malloctype=''
813 usemymalloc=''
814 installman1dir=''
815 man1dir=''
816 man1direxp=''
817 man1ext=''
818 installman3dir=''
819 man3dir=''
820 man3direxp=''
821 man3ext=''
822 modetype=''
823 multiarch=''
824 mydomain=''
825 myhostname=''
826 phostname=''
827 c=''
828 n=''
829 d_eofnblk=''
830 eagain=''
831 o_nonblock=''
832 rd_nodata=''
833 need_va_copy=''
834 netdb_hlen_type=''
835 netdb_host_type=''
836 netdb_name_type=''
837 netdb_net_type=''
838 groupcat=''
839 hostcat=''
840 passcat=''
841 orderlib=''
842 ranlib=''
843 d_perl_otherlibdirs=''
844 otherlibdirs=''
845 package=''
846 spackage=''
847 pager=''
848 api_revision=''
849 api_subversion=''
850 api_version=''
851 api_versionstring=''
852 patchlevel=''
853 perl_patchlevel=''
854 revision=''
855 subversion=''
856 version=''
857 version_patchlevel_string=''
858 perl5=''
859 perladmin=''
860 perlpath=''
861 d_nv_preserves_uv=''
862 d_nv_preserves_uv_bits=''
863 i16size=''
864 i16type=''
865 i32size=''
866 i32type=''
867 i64size=''
868 i64type=''
869 i8size=''
870 i8type=''
871 ivsize=''
872 ivtype=''
873 nvsize=''
874 nvtype=''
875 u16size=''
876 u16type=''
877 u32size=''
878 u32type=''
879 u64size=''
880 u64type=''
881 u8size=''
882 u8type=''
883 uvsize=''
884 uvtype=''
885 ivdformat=''
886 nvEUformat=''
887 nvFUformat=''
888 nvGUformat=''
889 nveformat=''
890 nvfformat=''
891 nvgformat=''
892 uvXUformat=''
893 uvoformat=''
894 uvuformat=''
895 uvxformat=''
896 pidtype=''
897 prefix=''
898 prefixexp=''
899 installprivlib=''
900 privlib=''
901 privlibexp=''
902 d_procselfexe=''
903 prototype=''
904 ptrsize=''
905 d_PRIXU64=''
906 d_PRId64=''
907 d_PRIi64=''
908 d_PRIo64=''
909 d_PRIu64=''
910 d_PRIx64=''
911 sPRIXU64=''
912 sPRId64=''
913 sPRIi64=''
914 sPRIo64=''
915 sPRIu64=''
916 sPRIx64=''
917 d_quad=''
918 quadkind=''
919 quadtype=''
920 uquadtype=''
921 drand01=''
922 randbits=''
923 randfunc=''
924 randseedtype=''
925 seedfunc=''
926 installscript=''
927 scriptdir=''
928 scriptdirexp=''
929 selectminbits=''
930 selecttype=''
931 sh=''
932 sig_count=''
933 sig_name=''
934 sig_name_init=''
935 sig_num=''
936 sig_num_init=''
937 sig_size=''
938 installsitearch=''
939 sitearch=''
940 sitearchexp=''
941 installsitebin=''
942 sitebin=''
943 sitebinexp=''
944 installsitelib=''
945 sitelib=''
946 sitelib_stem=''
947 sitelibexp=''
948 siteprefix=''
949 siteprefixexp=''
950 sizesize=''
951 sizetype=''
952 so=''
953 socksizetype=''
954 sharpbang=''
955 shsharp=''
956 spitshell=''
957 src=''
958 ssizetype=''
959 startperl=''
960 startsh=''
961 stdchar=''
962 d_stdio_stream_array=''
963 stdio_stream_array=''
964 sysman=''
965 trnl=''
966 uidformat=''
967 uidsign=''
968 uidsize=''
969 uidtype=''
970 archname64=''
971 use64bitall=''
972 use64bitint=''
973 ccflags_uselargefiles=''
974 ldflags_uselargefiles=''
975 libswanted_uselargefiles=''
976 uselargefiles=''
977 uselongdouble=''
978 usemorebits=''
979 usemultiplicity=''
980 nm_opt=''
981 nm_so_opt=''
982 runnm=''
983 usenm=''
984 useperlio=''
985 usesocks=''
986 d_oldpthreads=''
987 use5005threads=''
988 useithreads=''
989 usereentrant=''
990 usethreads=''
991 incpath=''
992 mips_type=''
993 usrinc=''
994 d_vendorarch=''
995 installvendorarch=''
996 vendorarch=''
997 vendorarchexp=''
998 d_vendorbin=''
999 installvendorbin=''
1000 vendorbin=''
1001 vendorbinexp=''
1002 d_vendorlib=''
1003 installvendorlib=''
1004 vendorlib=''
1005 vendorlib_stem=''
1006 vendorlibexp=''
1007 usevendorprefix=''
1008 vendorprefix=''
1009 vendorprefixexp=''
1010 versiononly=''
1011 defvoidused=''
1012 voidflags=''
1013 pm_apiversion=''
1014 xs_apiversion=''
1015 yacc=''
1016 yaccflags=''
1017 CONFIG=''
1018
1019 define='define'
1020 undef='undef'
1021 smallmach='pdp11 i8086 z8000 i80286 iAPX286'
1022 rmlist=''
1023
1024 : We must find out about Eunice early
1025 eunicefix=':'
1026 if test -f /etc/unixtovms; then
1027         eunicefix=/etc/unixtovms
1028 fi
1029 if test -f /etc/unixtovms.exe; then
1030         eunicefix=/etc/unixtovms.exe
1031 fi
1032
1033 i_whoami=''
1034 : Possible local include directories to search.
1035 : Set locincpth to "" in a hint file to defeat local include searches.
1036 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
1037 locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
1038 :
1039 : no include file wanted by default
1040 inclwanted=''
1041
1042 : Trailing extension.  Override this in a hint file, if needed.
1043 _exe=''
1044 : Extra object files, if any, needed on this platform.
1045 archobjs=''
1046 groupstype=''
1047 libnames=''
1048 : change the next line if compiling for Xenix/286 on Xenix/386
1049 xlibpth='/usr/lib/386 /lib/386'
1050 : Possible local library directories to search.
1051 loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
1052 loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
1053
1054 : general looking path for locating libraries
1055 glibpth="/lib /usr/lib $xlibpth"
1056 glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
1057 test -f /usr/shlib/libc.so && glibpth="/usr/shlib $glibpth"
1058 test -f /shlib/libc.so     && glibpth="/shlib $glibpth"
1059
1060 : Private path used by Configure to find libraries.  Its value
1061 : is prepended to libpth. This variable takes care of special
1062 : machines, like the mips.  Usually, it should be empty.
1063 plibpth=''
1064
1065 : default library list
1066 libswanted=''
1067 : some systems want to use only the non-versioned libso:s
1068 ignore_versioned_solibs=''
1069 : full support for void wanted by default
1070 defvoidused=15
1071
1072 ccname=''
1073 ccversion=''
1074 perllibs=''
1075 : set useposix=false in your hint file to disable the POSIX extension.
1076 useposix=true
1077 : set useopcode=false in your hint file to disable the Opcode extension.
1078 useopcode=true
1079 archname64=''
1080 ccflags_uselargefiles=''
1081 ldflags_uselargefiles=''
1082 libswanted_uselargefiles=''
1083 : set usemultiplicity on the Configure command line to enable multiplicity.
1084 : set usesocks on the Configure command line to enable socks.
1085 archname=''
1086 : set usethreads on the Configure command line to enable threads.
1087 usereentrant='undef'
1088 : List of libraries we want.
1089 : If anyone needs -lnet, put it in a hint file.
1090 libswanted='sfio socket bind inet nsl nm ndbm gdbm dbm db malloc dl'
1091 libswanted="$libswanted dld ld sun m c cposix posix"
1092 libswanted="$libswanted ndir dir crypt sec"
1093 libswanted="$libswanted ucb bsd BSD PW x util"
1094 : We probably want to search /usr/shlib before most other libraries.
1095 : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
1096 glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
1097 glibpth="/usr/shlib $glibpth"
1098 : Do not use vfork unless overridden by a hint file.
1099 usevfork=false
1100
1101 : Find the basic shell for Bourne shell scripts
1102 case "$sh" in
1103 '')
1104         case "$SYSTYPE" in
1105         *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
1106         *) xxx='/bin/sh';;
1107         esac
1108         if test -f "$xxx"; then
1109                 sh="$xxx"
1110         else
1111                 : Build up a list and do a single loop so we can 'break' out.
1112                 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1113                 for xxx in sh bash ksh pdksh ash; do
1114                         for p in $pth; do
1115                                 try="$try ${p}/${xxx}"
1116                         done
1117                 done
1118                 for xxx in $try; do
1119                         if test -f "$xxx"; then
1120                                 sh="$xxx";
1121                                 break
1122                         elif test -f "$xxx.exe"; then
1123                                 sh="$xxx";
1124                                 break
1125                         fi
1126                 done
1127         fi
1128         ;;
1129 esac
1130
1131 case "$sh" in
1132 '')     cat <<EOM >&2
1133 $me:  Fatal Error:  I can't find a Bourne Shell anywhere.  
1134
1135 Usually it's in /bin/sh.  How did you even get this far?
1136 Please contact me (Perl Maintainers) at perlbug@perl.org and 
1137 we'll try to straighten this all out.
1138 EOM
1139         exit 1
1140         ;;
1141 esac
1142
1143 : see if sh knows # comments
1144 if `$sh -c '#' >/dev/null 2>&1`; then
1145         shsharp=true
1146         spitshell=cat
1147         xcat=/bin/cat
1148         test -f $xcat || xcat=/usr/bin/cat
1149         echo "#!$xcat" >sharp
1150         $eunicefix sharp
1151         chmod +x sharp
1152         ./sharp > today
1153         if test -s today; then
1154                 sharpbang='#!'
1155         else
1156                 echo "#! $xcat" > sharp
1157                 $eunicefix sharp
1158                 chmod +x sharp
1159                 ./sharp > today
1160                 if test -s today; then
1161                         sharpbang='#! '
1162                 else
1163                         sharpbang=': use '
1164                 fi
1165         fi
1166 else
1167         echo " "
1168         echo "Your $sh doesn't grok # comments--I will strip them later on."
1169         shsharp=false
1170         cd ..
1171         echo "exec grep -v '^[  ]*#'" >spitshell
1172         chmod +x spitshell
1173         $eunicefix spitshell
1174         spitshell=`pwd`/spitshell
1175         cd UU
1176         echo "I presume that if # doesn't work, #! won't work either!"
1177         sharpbang=': use '
1178 fi
1179 rm -f sharp today
1180
1181 : figure out how to guarantee sh startup
1182 case "$startsh" in
1183 '') startsh=${sharpbang}${sh} ;;
1184 *)
1185 esac
1186 cat >sharp <<EOSS
1187 $startsh
1188 set abc
1189 test "$?abc" != 1
1190 EOSS
1191
1192 chmod +x sharp
1193 $eunicefix sharp
1194 if ./sharp; then
1195         : echo "Yup, it does."
1196 else
1197         echo "Hmm... '$startsh' does not guarantee sh startup..."
1198         echo "You may have to fix up the shell scripts to make sure $sh runs them."
1199 fi
1200 rm -f sharp
1201
1202
1203 : Save command line options in file UU/cmdline.opt for later use in
1204 : generating config.sh.
1205 cat > cmdline.opt <<EOSH
1206 # Configure command line arguments.
1207 config_arg0='$0'
1208 config_args='$*'
1209 config_argc=$#
1210 EOSH
1211 argn=1
1212 args_exp=''
1213 args_sep=''
1214 for arg in "$@"; do
1215         cat >>cmdline.opt <<EOSH
1216 config_arg$argn='$arg'
1217 EOSH
1218         # Extreme backslashitis: replace each ' by '"'"'
1219         cat <<EOC | sed -e "s/'/'"'"'"'"'"'"'/g" > cmdl.opt
1220 $arg
1221 EOC
1222         arg_exp=`cat cmdl.opt`
1223         args_exp="$args_exp$args_sep'$arg_exp'"
1224         argn=`expr $argn + 1`
1225         args_sep=' '
1226 done
1227 # args_exp is good for restarting self: eval "set X $args_exp"; shift; $0 "$@"
1228 # used by ./hints/os2.sh
1229 rm -f cmdl.opt
1230
1231 : produce awk script to parse command line options
1232 cat >options.awk <<'EOF'
1233 BEGIN {
1234         optstr = "A:dD:eEf:hKOrsSU:V";  # getopt-style specification
1235
1236         len = length(optstr);
1237         for (i = 1; i <= len; i++) {
1238                 c = substr(optstr, i, 1);
1239                 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
1240                 if (a == ":") {
1241                         arg[c] = 1;
1242                         i++;
1243                 }
1244                 opt[c] = 1;
1245         }
1246 }
1247 {
1248         expect = 0;
1249         str = $0;
1250         if (substr(str, 1, 1) != "-") {
1251                 printf("'%s'\n", str);
1252                 next;
1253         }
1254         len = length($0);
1255         for (i = 2; i <= len; i++) {
1256                 c = substr(str, i, 1);
1257                 if (!opt[c]) {
1258                         printf("-%s\n", substr(str, i));
1259                         next;
1260                 }
1261                 printf("-%s\n", c);
1262                 if (arg[c]) {
1263                         if (i < len)
1264                                 printf("'%s'\n", substr(str, i + 1));
1265                         else
1266                                 expect = 1;
1267                         next;
1268                 }
1269         }
1270 }
1271 END {
1272         if (expect)
1273                 print "?";
1274 }
1275 EOF
1276
1277 : process the command line options
1278 set X `for arg in "$@"; do echo "X$arg"; done |
1279         sed -e s/X// | awk -f options.awk`
1280 eval "set $*"
1281 shift
1282 rm -f options.awk
1283
1284 : set up default values
1285 fastread=''
1286 reuseval=false
1287 config_sh=''
1288 alldone=''
1289 error=''
1290 silent=''
1291 extractsh=''
1292 override=''
1293 knowitall=''
1294 rm -f optdef.sh posthint.sh
1295 cat >optdef.sh <<EOS
1296 $startsh
1297 EOS
1298
1299
1300 : option parsing
1301 while test $# -gt 0; do
1302         case "$1" in
1303         -d) shift; fastread=yes;;
1304         -e) shift; alldone=cont;;
1305         -f)
1306                 shift
1307                 cd ..
1308                 if test -r "$1"; then
1309                         config_sh="$1"
1310                 else
1311                         echo "$me: cannot read config file $1." >&2
1312                         error=true
1313                 fi
1314                 cd UU
1315                 shift;;
1316         -h) shift; error=true;;
1317         -r) shift; reuseval=true;;
1318         -s) shift; silent=true; realsilent=true;;
1319         -E) shift; alldone=exit;;
1320         -K) shift; knowitall=true;;
1321         -O) shift; override=true;;
1322         -S) shift; silent=true; extractsh=true;;
1323         -D)
1324                 shift
1325                 case "$1" in
1326                 *=)
1327                         echo "$me: use '-U symbol=', not '-D symbol='." >&2
1328                         echo "$me: ignoring -D $1" >&2
1329                         ;;
1330                 *=*) echo "$1" | \
1331                                 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1332                 *) echo "$1='define'" >> optdef.sh;;
1333                 esac
1334                 shift
1335                 ;;
1336         -U)
1337                 shift
1338                 case "$1" in
1339                 *=) echo "$1" >> optdef.sh;;
1340                 *=*)
1341                         echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1342                         echo "$me: ignoring -U $1" >&2
1343                         ;;
1344                 *) echo "$1='undef'" >> optdef.sh;;
1345                 esac
1346                 shift
1347                 ;;
1348         -A)
1349             shift
1350             xxx=''
1351             yyy="$1"
1352             zzz=''
1353             uuu=undef
1354             case "$yyy" in
1355             *=*) zzz=`echo $yyy|sed 's!=.*!!'`
1356                  case "$zzz" in
1357                  *:*) zzz='' ;;
1358                  *)   xxx=append
1359                       zzz=" "`echo $yyy|sed 's!^[^=]*=!!'` 
1360                       yyy=`echo $yyy|sed 's!=.*!!'` ;;
1361                  esac
1362                  ;;
1363             esac
1364             case "$xxx" in
1365             '')  case "$yyy" in
1366                  *:*) xxx=`echo $yyy|sed 's!:.*!!'`
1367                       yyy=`echo $yyy|sed 's!^[^:]*:!!'`
1368                       zzz=`echo $yyy|sed 's!^[^=]*=!!'`
1369                       yyy=`echo $yyy|sed 's!=.*!!'` ;;
1370                  *)   xxx=`echo $yyy|sed 's!:.*!!'`
1371                       yyy=`echo $yyy|sed 's!^[^:]*:!!'` ;;
1372                  esac
1373                  ;;       
1374             esac
1375             case "$xxx" in
1376             append)
1377                 echo "$yyy=\"\${$yyy}$zzz\""    >> posthint.sh ;;
1378             clear)
1379                 echo "$yyy=''"                  >> posthint.sh ;;
1380             define)
1381                 case "$zzz" in
1382                 '') zzz=define ;;
1383                 esac
1384                 echo "$yyy='$zzz'"              >> posthint.sh ;;
1385             eval)
1386                 echo "eval \"$yyy=$zzz\""       >> posthint.sh ;;
1387             prepend)
1388                 echo "$yyy=\"$zzz\${$yyy}\""    >> posthint.sh ;;
1389             undef)
1390                 case "$zzz" in
1391                 '') zzz="$uuu" ;;
1392                 esac
1393                 echo "$yyy=$zzz"                >> posthint.sh ;;
1394             *)  echo "$me: unknown -A command '$xxx', ignoring -A $1" >&2 ;;
1395             esac
1396             shift
1397             ;;
1398         -V) echo "$me generated by metaconfig 3.0 PL70." >&2
1399             exit 0;;
1400         --) break;;
1401         -*) echo "$me: unknown option $1" >&2; shift; error=true;;
1402         *) break;;
1403         esac
1404 done
1405
1406 case "$error" in
1407 true)
1408         cat >&2 <<EOM
1409 Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
1410                  [-U symbol] [-U symbol=] [-A command:symbol...]
1411   -d : use defaults for all answers.
1412   -e : go on without questioning past the production of config.sh.
1413   -f : specify an alternate default configuration file.
1414   -h : print this help message and exit (with an error status).
1415   -r : reuse C symbols value if possible (skips costly nm extraction).
1416   -s : silent mode, only echoes questions and essential information.
1417   -D : define symbol to have some value:
1418          -D symbol         symbol gets the value 'define'
1419          -D symbol=value   symbol gets the value 'value'
1420   -E : stop at the end of questions, after having produced config.sh.
1421   -K : do not use unless you know what you are doing.
1422   -O : let -D and -U override definitions from loaded configuration file.
1423   -S : perform variable substitutions on all .SH files (can mix with -f)
1424   -U : undefine symbol:
1425          -U symbol    symbol gets the value 'undef'
1426          -U symbol=   symbol gets completely empty
1427   -A : manipulate symbol after the platform specific hints have been applied:
1428          -A symbol=value                append " "value to symbol
1429          -A append:symbol=value         append value to symbol
1430          -A define:symbol=value         define symbol to have value
1431          -A clear:symbol                define symbol to be ''
1432          -A define:symbol               define symbol to be 'define'
1433          -A eval:symbol=value           define symbol to be eval of value
1434          -A prepend:symbol=value        prepend value to symbol
1435          -A undef:symbol                define symbol to be 'undef'
1436          -A undef:symbol=               define symbol to be ''
1437   -V : print version number and exit (with a zero status).
1438 EOM
1439         exit 1
1440         ;;
1441 esac
1442
1443 : Sanity checks
1444 case "$fastread$alldone" in
1445 yescont|yesexit) ;;
1446 *)
1447         case "$extractsh" in
1448         true) ;;
1449         *)
1450                 if test ! -t 0; then
1451                         echo "Say 'sh Configure', not 'sh <Configure'"
1452                         exit 1
1453                 fi
1454                 ;;
1455         esac
1456         ;;
1457 esac
1458
1459 exec 4>&1
1460 case "$silent" in
1461 true) exec 1>/dev/null;;
1462 esac
1463
1464 : run the defines and the undefines, if any, but leave the file out there...
1465 touch optdef.sh
1466 . ./optdef.sh
1467 : create the posthint manipulation script and leave the file out there...
1468 touch posthint.sh
1469
1470 : set package name
1471 package=perl5
1472 first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1473 last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1474 case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1475 ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1476 *) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1477 esac
1478
1479 : Some greps do not return status, grrr.
1480 echo "grimblepritz" >grimble
1481 if grep blurfldyick grimble >/dev/null 2>&1 ; then
1482         contains=contains
1483 elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1484         contains=grep
1485 else
1486         contains=contains
1487 fi
1488 rm -f grimble
1489 : the following should work in any shell
1490 case "$contains" in
1491 contains*)
1492         echo " "
1493         echo "AGH!  Grep doesn't return a status.  Attempting remedial action."
1494         cat >contains <<'EOSS'
1495 grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1496 EOSS
1497 chmod +x contains
1498 esac
1499
1500 : Find the path to the source tree
1501 case "$src" in
1502 '') case "$0" in
1503     */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`
1504          case "$src" in
1505          /*)    ;;
1506          .)     ;;
1507          *)     src=`cd ../$src && pwd` ;;
1508          esac
1509          ;;
1510     *)   src='.';;
1511     esac;;
1512 esac
1513 case "$src" in
1514 '')     src=/
1515         rsrc=/
1516         ;;
1517 /*) rsrc="$src";;
1518 *) rsrc="../$src";;
1519 esac
1520 if test -f $rsrc/Configure && \
1521         $contains "^package=$package$" $rsrc/Configure >/dev/null 2>&1
1522 then
1523    : found it, so we are ok.
1524 else
1525         rsrc=''
1526         for src in . .. ../.. ../../.. ../../../..; do
1527                 if test -f ../$src/Configure && \
1528                         $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1529                 then
1530                         rsrc=../$src
1531                         break
1532                 fi
1533         done
1534 fi
1535 case "$rsrc" in
1536 '')
1537         cat <<EOM >&4
1538
1539 Sorry, I can't seem to locate the source dir for $package.  Please start
1540 Configure with an explicit path -- i.e. /some/path/Configure.
1541
1542 EOM
1543         exit 1
1544         ;;
1545 ../.)   rsrc='..';;
1546 *)
1547         echo " "
1548         echo "Sources for $package found in \"$src\"." >&4
1549         ;;
1550 esac
1551
1552 : script used to extract .SH files with variable substitutions
1553 cat >extract <<'EOS'
1554 PERL_CONFIG_SH=true
1555 echo "Doing variable substitutions on .SH files..."
1556 if test -f MANIFEST; then
1557         set x `awk '{print $1}' < MANIFEST | grep '\.SH$'`
1558 else
1559         echo "(Looking for .SH files under the source directory.)"
1560         set x `(cd $src; find . -name "*.SH" -print)`
1561 fi
1562 shift
1563 case $# in
1564 0) set x `(cd $src; echo *.SH)`; shift;;
1565 esac
1566 if test ! -f $src/$1; then
1567         shift
1568 fi
1569 mkdir_p='
1570 name=$1;
1571 create="";
1572 while test $name; do
1573         if test ! -d "$name"; then
1574                 create="$name $create";
1575                 name=`echo $name | sed -e "s|^[^/]*$||"`;
1576                 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
1577         else
1578                 name="";
1579         fi;
1580 done;
1581 for file in $create; do
1582         mkdir $file;
1583 done
1584 '
1585 for file in $*; do
1586         case "$src" in
1587         ".")
1588                 case "$file" in
1589                 */*)
1590                         dir=`expr X$file : 'X\(.*\)/'`
1591                         file=`expr X$file : 'X.*/\(.*\)'`
1592                         (cd $dir && . ./$file)
1593                         ;;
1594                 *)
1595                         . ./$file
1596                         ;;
1597                 esac
1598                 ;;
1599         *)
1600                 case "$file" in
1601                 */*)
1602                         dir=`expr X$file : 'X\(.*\)/'`
1603                         file=`expr X$file : 'X.*/\(.*\)'`
1604                         (set x $dir; shift; eval $mkdir_p)
1605                         sh <$src/$dir/$file
1606                         ;;
1607                 *)
1608                         sh <$src/$file
1609                         ;;
1610                 esac
1611                 ;;
1612         esac
1613 done
1614 if test -f $src/config_h.SH; then
1615         if test ! -f config.h; then
1616         : oops, they left it out of MANIFEST, probably, so do it anyway.
1617         . $src/config_h.SH
1618         fi
1619 fi
1620 EOS
1621
1622 : extract files and exit if asked to do so
1623 case "$extractsh" in
1624 true)
1625         case "$realsilent" in
1626         true) ;;
1627         *) exec 1>&4;;
1628         esac
1629         case "$config_sh" in
1630         '') config_sh='config.sh';;
1631         esac
1632         echo " "
1633         echo "Fetching answers from $config_sh..."
1634         cd ..
1635         . $config_sh
1636         test "$override" && . ./optdef.sh
1637         echo " "
1638         . UU/extract
1639         rm -rf UU
1640         echo "Extraction done."
1641         exit 0
1642         ;;
1643 esac
1644
1645 : Eunice requires " " instead of "", can you believe it
1646 echo " "
1647 : Here we go...
1648 echo "Beginning of configuration questions for $package."
1649
1650 trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1651
1652 : first determine how to suppress newline on echo command
1653 echo " "
1654 echo "Checking echo to see how to suppress newlines..."
1655 (echo "hi there\c" ; echo " ") >.echotmp
1656 if $contains c .echotmp >/dev/null 2>&1 ; then
1657         echo "...using -n."
1658         n='-n'
1659         c=''
1660 else
1661         cat <<'EOM'
1662 ...using \c
1663 EOM
1664         n=''
1665         c='\c'
1666 fi
1667 echo $n "The star should be here-->$c"
1668 echo '*'
1669 rm -f .echotmp
1670
1671 : Now test for existence of everything in MANIFEST
1672 echo " "
1673 if test -f $rsrc/MANIFEST; then
1674         echo "First let's make sure your kit is complete.  Checking..." >&4
1675         awk '$1 !~ /PACK[A-Z]+/ {print $1}' $rsrc/MANIFEST | split -50
1676         rm -f missing
1677         tmppwd=`pwd`
1678         for filelist in x??; do
1679                 (cd $rsrc; ls `cat $tmppwd/$filelist` >/dev/null 2>>$tmppwd/missing)
1680         done
1681         if test -s missing; then
1682                 cat missing >&4
1683                 cat >&4 <<'EOM'
1684
1685 THIS PACKAGE SEEMS TO BE INCOMPLETE.
1686
1687 You have the option of continuing the configuration process, despite the
1688 distinct possibility that your kit is damaged, by typing 'y'es.  If you
1689 do, don't blame me if something goes wrong.  I advise you to type 'n'o
1690 and contact the author (perlbug@perl.org).
1691
1692 EOM
1693                 echo $n "Continue? [n] $c" >&4
1694                 read ans
1695                 case "$ans" in
1696                 y*)
1697                         echo "Continuing..." >&4
1698                         rm -f missing
1699                         ;;
1700                 *)
1701                         echo "ABORTING..." >&4
1702                         kill $$
1703                         ;;
1704                 esac
1705         else
1706                 echo "Looks good..."
1707         fi
1708 else
1709         echo "There is no MANIFEST file.  I hope your kit is complete !"
1710 fi
1711 rm -f missing x??
1712
1713 echo " "
1714 : Find the appropriate value for a newline for tr
1715 if test -n "$DJGPP"; then
1716        trnl='\012'
1717 fi
1718 if test X"$trnl" = X; then
1719         case "`echo foo|tr '\n' x 2>/dev/null`" in
1720         foox) trnl='\n' ;;
1721         esac
1722 fi
1723 if test X"$trnl" = X; then
1724         case "`echo foo|tr '\012' x 2>/dev/null`" in
1725         foox) trnl='\012' ;;
1726         esac
1727 fi
1728 if test X"$trnl" = X; then
1729         cat <<EOM >&2
1730
1731 $me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
1732
1733 EOM
1734         exit 1
1735 fi
1736
1737 : compute the number of columns on the terminal for proper question formatting
1738 case "$COLUMNS" in
1739 '') COLUMNS='80';;
1740 esac
1741
1742 : set up the echo used in my read
1743 myecho="case \"\$xxxm\" in
1744 '') echo $n \"\$rp $c\" >&4;;
1745 *) case \"\$rp\" in
1746         '') echo $n \"[\$xxxm] $c\";;
1747         *)
1748                 if test \`echo \"\$rp [\$xxxm]  \" | wc -c\` -ge $COLUMNS; then
1749                         echo \"\$rp\" >&4
1750                         echo $n \"[\$xxxm] $c\" >&4
1751                 else
1752                         echo $n \"\$rp [\$xxxm] $c\" >&4
1753                 fi
1754                 ;;
1755         esac;;
1756 esac"
1757
1758 : now set up to do reads with possible shell escape and default assignment
1759 cat <<EOSC >myread
1760 $startsh
1761 xxxm=\$dflt
1762 $myecho
1763 ans='!'
1764 case "\$fastread" in
1765 yes) case "\$dflt" in
1766         '') ;;
1767         *) ans='';
1768                 case "\$silent-\$rp" in
1769                 true-) ;;
1770                 *) echo " " >&4;;
1771                 esac;;
1772         esac;;
1773 *) case "\$silent" in
1774         true) case "\$rp" in
1775                 '') ans='';;
1776                 esac;;
1777         esac;;
1778 esac
1779 while expr "X\$ans" : "X!" >/dev/null; do
1780         read answ
1781         set x \$xxxm
1782         shift
1783         aok=''; eval "ans=\\"\$answ\\"" && aok=y
1784         case  "\$answ" in
1785         "!")
1786                 sh 1>&4
1787                 echo " "
1788                 $myecho
1789                 ;;
1790         !*)
1791                 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
1792                 shift
1793                 sh 1>&4 -c "\$*"
1794                 echo " "
1795                 $myecho
1796                 ;;
1797         "\$ans")
1798                 case "\$ans" in
1799                 \\&*)
1800                         set x \`expr "X\$ans" : "X&\(.*\)\$"\`
1801                         shift
1802                         case "\$1" in
1803                         -d)
1804                                 fastread=yes
1805                                 echo "(OK, I'll run with -d after this question.)" >&4
1806                                 ;;
1807                         -*)
1808                                 echo "*** Sorry, \$1 not supported yet." >&4
1809                                 ;;
1810                         esac
1811                         $myecho
1812                         ans=!
1813                         ;;
1814                 esac;;
1815         *)
1816                 case "\$aok" in
1817                 y)
1818                         echo "*** Substitution done -- please confirm."
1819                         xxxm="\$ans"
1820                         ans=\`echo $n "\$ans$c" | tr '$trnl' ' '\`
1821                         xxxm="\$ans"
1822                         ans=!
1823                         ;;
1824                 *)
1825                         echo "*** Error -- try again."
1826                         ans=!
1827                         ;;
1828                 esac
1829                 $myecho
1830                 ;;
1831         esac
1832         case "\$ans\$xxxm\$nostick" in
1833         '')
1834                 ans=!
1835                 $myecho
1836                 ;;
1837         esac
1838 done
1839 case "\$ans" in
1840 '') ans="\$xxxm";;
1841 esac
1842 EOSC
1843
1844 : create .config dir to save info across Configure sessions
1845 test -d ../.config || mkdir ../.config
1846 cat >../.config/README <<EOF
1847 This directory created by Configure to save information that should
1848 persist across sessions for $package.
1849
1850 You may safely delete it if you wish.
1851 EOF
1852
1853 xversion=`awk '/define[         ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
1854 case "$usedevel" in
1855 $define|true|[yY]*) ;;
1856 *) case "$xversion" in
1857    *[13579])
1858         cat >&4 <<EOH
1859 *** WHOA THERE!!! ***
1860
1861     This is an UNSTABLE DEVELOPMENT release.
1862     The version of this $package distribution is $xversion, that is, odd,
1863     (as opposed to even) and that signifies a development release.
1864     If you want a maintenance release, you want an even-numbered version.
1865
1866     Do ***NOT*** install this into production use.
1867     Data corruption and crashes are possible.
1868
1869     It is most seriously suggested that you do not continue any further
1870     unless you want to help in developing and debugging Perl.
1871
1872     If you *still* want to build perl, you can answer 'y' now,
1873     or pass -Dusedevel to Configure.
1874
1875 EOH
1876         rp='Do you really want to continue?'
1877         dflt='n'
1878         . ./myread
1879         case "$ans" in
1880         [yY]) echo >&4 "Okay, continuing."
1881               usedevel="$define" ;;
1882         *) echo >&4 "Okay, bye."
1883            exit 1
1884            ;;
1885         esac
1886         ;;
1887     esac
1888     ;;
1889 esac
1890 case "$usedevel" in
1891 $define|true|[yY]*)
1892         case "$versiononly" in
1893         '') versiononly="$define" ;;
1894         esac
1895         case "$installusrbinperl" in
1896         '') installusrbinperl="$undef" ;;
1897         esac
1898         ;;
1899 esac
1900
1901 : general instructions
1902 needman=true
1903 firsttime=true
1904 user=`(logname) 2>/dev/null`
1905 case "$user" in
1906 '') user=`whoami 2>&1`;;
1907 esac
1908 if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
1909         firsttime=false
1910         echo " "
1911         rp='Would you like to see the instructions?'
1912         dflt=n
1913         . ./myread
1914         case "$ans" in
1915         [yY]*) ;;
1916         *) needman=false;;
1917         esac
1918 fi
1919 if $needman; then
1920         cat <<EOH
1921
1922 This installation shell script will examine your system and ask you questions
1923 to determine how the perl5 package should be installed. If you get
1924 stuck on a question, you may use a ! shell escape to start a subshell or
1925 execute a command.  Many of the questions will have default answers in square
1926 brackets; typing carriage return will give you the default.
1927
1928 On some of the questions which ask for file or directory names you are allowed
1929 to use the ~name construct to specify the login directory belonging to "name",
1930 even if you don't have a shell which knows about that.  Questions where this is
1931 allowed will be marked "(~name ok)".
1932
1933 EOH
1934         rp=''
1935         dflt='Type carriage return to continue'
1936         . ./myread
1937         cat <<'EOH'
1938
1939 The prompter used in this script allows you to use shell variables and
1940 backticks in your answers.  You may use $1, $2, etc...  to refer to the words
1941 in the default answer, as if the default line was a set of arguments given to a
1942 script shell.  This means you may also use $* to repeat the whole default line,
1943 so you do not have to re-type everything to add something to the default.
1944
1945 Everytime there is a substitution, you will have to confirm.  If there is an
1946 error (e.g. an unmatched backtick), the default answer will remain unchanged
1947 and you will be prompted again.
1948
1949 If you are in a hurry, you may run 'Configure -d'.  This will bypass nearly all
1950 the questions and use the computed defaults (or the previous answers if there
1951 was already a config.sh file). Type 'Configure -h' for a list of options.
1952 You may also start interactively and then answer '& -d' at any prompt to turn
1953 on the non-interactive behaviour for the remainder of the execution.
1954
1955 EOH
1956         . ./myread
1957         cat <<EOH
1958
1959 Much effort has been expended to ensure that this shell script will run on any
1960 Unix system.  If despite that it blows up on yours, your best bet is to edit
1961 Configure and run it again.  If you can't run Configure for some reason,
1962 you'll have to generate a config.sh file by hand.  Whatever problems you
1963 have, let me (perlbug@perl.org) know how I blew it.
1964
1965 This installation script affects things in two ways:
1966
1967 1) it may do direct variable substitutions on some of the files included
1968    in this kit.
1969 2) it builds a config.h file for inclusion in C programs.  You may edit
1970    any of these files as the need arises after running this script.
1971
1972 If you make a mistake on a question, there is no easy way to back up to it
1973 currently.  The easiest thing to do is to edit config.sh and rerun all the SH
1974 files.  Configure will offer to let you do this before it runs the SH files.
1975
1976 EOH
1977         dflt='Type carriage return to continue'
1978         . ./myread
1979         case "$firsttime" in
1980         true) echo $user >>../.config/instruct;;
1981         esac
1982 fi
1983
1984 : find out where common programs are
1985 echo " "
1986 echo "Locating common programs..." >&4
1987 cat <<EOSC >loc
1988 $startsh
1989 case \$# in
1990 0) exit 1;;
1991 esac
1992 thing=\$1
1993 shift
1994 dflt=\$1
1995 shift
1996 for dir in \$*; do
1997         case "\$thing" in
1998         .)
1999         if test -d \$dir/\$thing; then
2000                 echo \$dir
2001                 exit 0
2002         fi
2003         ;;
2004         *)
2005         for thisthing in \$dir/\$thing; do
2006                 : just loop through to pick last item
2007         done
2008         if test -f \$thisthing; then
2009                 echo \$thisthing
2010                 exit 0
2011         elif test -f \$dir/\$thing.exe; then
2012                 if test -n "$DJGPP"; then
2013                         echo \$dir/\$thing.exe
2014                 else
2015                         : on Eunice apparently
2016                         echo \$dir/\$thing
2017                 fi
2018                 exit 0
2019         fi
2020         ;;
2021         esac
2022 done
2023 echo \$dflt
2024 exit 1
2025 EOSC
2026 chmod +x loc
2027 $eunicefix loc
2028 loclist="
2029 awk
2030 cat
2031 chmod
2032 comm
2033 cp
2034 echo
2035 expr
2036 grep
2037 ls
2038 make
2039 mkdir
2040 rm
2041 sed
2042 sort
2043 touch
2044 tr
2045 uniq
2046 "
2047 trylist="
2048 Mcc
2049 ar
2050 bison
2051 byacc
2052 cpp
2053 csh
2054 date
2055 egrep
2056 gzip
2057 less
2058 ln
2059 more
2060 nm
2061 nroff
2062 pg
2063 test
2064 uname
2065 zip
2066 "
2067 pth=`echo $PATH | sed -e "s/$p_/ /g"`
2068 pth="$pth /lib /usr/lib"
2069 for file in $loclist; do
2070         eval xxx=\$$file
2071         case "$xxx" in
2072         /*|?:[\\/]*)
2073                 if test -f "$xxx"; then
2074                         : ok
2075                 else
2076                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2077                         xxx=`./loc $file $file $pth`
2078                 fi
2079                 ;;
2080         '') xxx=`./loc $file $file $pth`;;
2081         *) xxx=`./loc $xxx $xxx $pth`;;
2082         esac
2083         eval $file=$xxx
2084         eval _$file=$xxx
2085         case "$xxx" in
2086         /*)
2087                 echo $file is in $xxx.
2088                 ;;
2089         ?:[\\/]*)
2090                 echo $file is in $xxx.
2091                 ;;
2092         *)
2093                 echo "I don't know where '$file' is, and my life depends on it." >&4
2094                 echo "Go find a public domain implementation or fix your PATH setting!" >&4
2095                 exit 1
2096                 ;;
2097         esac
2098 done
2099 echo " "
2100 echo "Don't worry if any of the following aren't found..."
2101 say=offhand
2102 for file in $trylist; do
2103         eval xxx=\$$file
2104         case "$xxx" in
2105         /*|?:[\\/]*)
2106                 if test -f "$xxx"; then
2107                         : ok
2108                 else
2109                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2110                         xxx=`./loc $file $file $pth`
2111                 fi
2112                 ;;
2113         '') xxx=`./loc $file $file $pth`;;
2114         *) xxx=`./loc $xxx $xxx $pth`;;
2115         esac
2116         eval $file=$xxx
2117         eval _$file=$xxx
2118         case "$xxx" in
2119         /*)
2120                 echo $file is in $xxx.
2121                 ;;
2122         ?:[\\/]*)
2123                 echo $file is in $xxx.
2124                 ;;
2125         *)
2126                 echo "I don't see $file out there, $say."
2127                 say=either
2128                 ;;
2129         esac
2130 done
2131 case "$egrep" in
2132 egrep)
2133         echo "Substituting grep for egrep."
2134         egrep=$grep
2135         ;;
2136 esac
2137 case "$ln" in
2138 ln)
2139         echo "Substituting cp for ln."
2140         ln=$cp
2141         ;;
2142 esac
2143 case "$test" in
2144 test)
2145         echo "Hopefully test is built into your sh."
2146         ;;
2147 *)
2148         if `sh -c "PATH= test true" >/dev/null 2>&1`; then
2149                 echo "Using the test built into your sh."
2150                 test=test
2151                 _test=test
2152         fi
2153         ;;
2154 esac
2155 case "$echo" in
2156 echo)
2157         echo "Hopefully echo is built into your sh."
2158         ;;
2159 '') ;;
2160 *)
2161         echo " "
2162 echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
2163         $echo $n "hi there$c" >foo1
2164         echo $n "hi there$c" >foo2
2165         if cmp foo1 foo2 >/dev/null 2>&1; then
2166                 echo "They are compatible.  In fact, they may be identical."
2167         else
2168                 case "$n" in
2169                 '-n') n='' c='\c';;
2170                 *) n='-n' c='';;
2171                 esac
2172                 cat <<FOO
2173 They are not compatible!  You are probably running ksh on a non-USG system.
2174 I'll have to use $echo instead of the builtin, since Bourne shell doesn't
2175 have echo built in and we may have to run some Bourne shell scripts.  That
2176 means I'll have to use '$n$c' to suppress newlines now.  Life is ridiculous.
2177
2178 FOO
2179                 $echo $n "The star should be here-->$c"
2180                 $echo "*"
2181         fi
2182         $rm -f foo1 foo2
2183         ;;
2184 esac
2185
2186 cat <<EOS >checkcc
2187 $startsh
2188 EOS
2189 cat <<'EOSC' >>checkcc
2190 case "$cc" in
2191 '') ;;
2192 *)  $rm -f try try.*
2193     $cat >try.c <<EOM
2194 int main(int argc, char *argv[]) {
2195   return 0;
2196 }
2197 EOM
2198     if $cc -o try $ccflags $ldflags try.c; then
2199        :
2200     else
2201         echo "Uh-oh, the C compiler '$cc' doesn't seem to be working." >&4
2202         despair=yes
2203         trygcc=yes
2204         case "$cc" in
2205         *gcc*) trygcc=no ;;
2206         esac
2207         case "`$cc -v -c try.c 2>&1`" in
2208         *gcc*) trygcc=no ;;
2209         esac
2210         if $test X"$trygcc" = Xyes; then
2211             if gcc -o try -c try.c; then
2212                 echo " "
2213                 echo "You seem to have a working gcc, though." >&4
2214                 rp="Would you like to use it?"
2215                 dflt=y
2216                 if $test -f myread; then
2217                     . ./myread
2218                 else
2219                     if $test -f UU/myread; then
2220                         . ./UU/myread
2221                     else
2222                         echo "Cannot find myread, sorry.  Aborting." >&2
2223                         exit 1
2224                     fi
2225                 fi  
2226                 case "$ans" in
2227                 [yY]*) cc=gcc; ccname=gcc; ccflags=''; despair=no ;;
2228                 esac
2229             fi
2230         fi
2231         if $test X"$despair" = Xyes; then
2232             $cat >&4 <<EOM
2233 You need to find a working C compiler.
2234 Either (purchase and) install the C compiler supplied by your OS vendor,
2235 or for a free C compiler try http://gcc.gnu.org/
2236 I cannot continue any further, aborting.
2237 EOM
2238             exit 1
2239         fi
2240     fi
2241     $rm -f try try.*
2242     ;;
2243 esac
2244 EOSC
2245
2246 : determine whether symbolic links are supported
2247 echo " "
2248 $touch blurfl
2249 if $ln -s blurfl sym > /dev/null 2>&1 ; then
2250         echo "Symbolic links are supported." >&4
2251         lns="$ln -s"
2252 else
2253         echo "Symbolic links are NOT supported." >&4
2254         lns="$ln"
2255 fi
2256 $rm -f blurfl sym
2257
2258 : determine whether symbolic links are supported
2259 echo " "
2260 case "$lns" in
2261 *"ln -s")
2262         echo "Checking how to test for symbolic links..." >&4
2263         $lns blurfl sym
2264         if $test "X$issymlink" = X; then
2265                 sh -c "PATH= test -h sym" >/dev/null 2>&1
2266                 if test $? = 0; then
2267                         issymlink="test -h"
2268                 fi              
2269         fi
2270         if $test "X$issymlink" = X; then
2271                 if  $test -h >/dev/null 2>&1; then
2272                         issymlink="$test -h"
2273                         echo "Your builtin 'test -h' may be broken, I'm using external '$test -h'." >&4
2274                 fi              
2275         fi
2276         if $test "X$issymlink" = X; then
2277                 if $test -L sym 2>/dev/null; then
2278                         issymlink="$test -L"
2279                 fi
2280         fi
2281         if $test "X$issymlink" != X; then
2282                 echo "You can test for symbolic links with '$issymlink'." >&4
2283         else
2284                 echo "I do not know how you can test for symbolic links." >&4
2285         fi
2286         $rm -f blurfl sym
2287         ;;
2288 *)      echo "No symbolic links, so not testing for their testing..." >&4
2289         ;;
2290 esac
2291 echo " "
2292
2293
2294 case "$mksymlinks" in
2295 $define|true|[yY]*)
2296         case "$src" in
2297         ''|'.') echo "Cannot create symlinks in the original directory." >&4
2298                 exit 1
2299                 ;;
2300         *)      case "$lns:$issymlink" in
2301                 *"ln -s:"*"test -"?)
2302                         echo "Creating the symbolic links..." >&4
2303                         echo "(First creating the subdirectories...)" >&4
2304                         cd ..
2305                         awk '{print $1}' $src/MANIFEST | grep / | sed 's:/[^/]*$::' | sort -u | while true; do
2306                                 read directory
2307                                 test -z "$directory" && break
2308                                 mkdir -p $directory
2309                         done
2310                         # Sanity check 1.
2311                         if test ! -d t/base; then
2312                                 echo "Failed to create the subdirectories.  Aborting." >&4
2313                                 exit 1
2314                         fi
2315                         echo "(Then creating the symlinks...)" >&4
2316                         awk '{print $1}' $src/MANIFEST | while true; do
2317                                 read filename
2318                                 test -z "$filename" && break
2319                                 if test -f $filename; then
2320                                         if $issymlink $filename; then
2321                                                 rm -f $filename
2322                                         fi
2323                                 fi
2324                                 if test -f $filename; then
2325                                         echo "$filename already exists, not symlinking."
2326                                 else
2327                                         ln -s $src/$filename $filename
2328                                 fi
2329                         done
2330                         # Sanity check 2.
2331                         if test ! -f t/base/lex.t; then
2332                                 echo "Failed to create the symlinks (t/base/lex.t missing).  Aborting." >&4
2333                                 exit 1
2334                         fi
2335                         cd UU
2336                         ;;
2337                 *)      echo "(I cannot figure out how to do symbolic links, ignoring mksymlinks)." >&4
2338                         ;;
2339                 esac
2340                 ;;
2341         esac
2342         ;;
2343 esac
2344
2345
2346 case "$usecrosscompile" in
2347 $define|true|[yY]*)
2348         $echo "Cross-compiling..."
2349         croak=''
2350         case "$cc" in
2351         *-*-gcc) # A cross-compiling gcc, probably.
2352             targetarch=`$echo $cc|$sed 's/-gcc$//'`
2353             ar=$targetarch-ar
2354             # leave out ld, choosing it is more complex
2355             nm=$targetarch-nm
2356             ranlib=$targetarch-ranlib
2357             $echo 'extern int foo;' > try.c
2358             set X `$cc -v -E try.c 2>&1 | $awk '/^#include </,/^End of search /'|$grep '/include'`
2359             shift
2360             if $test $# -gt 0; then
2361                 incpth="$incpth $*"
2362                 incpth="`$echo $incpth|$sed 's/^ //'`"
2363                 echo "Guessing incpth '$incpth'." >&4
2364                 for i in $*; do
2365                     j="`$echo $i|$sed 's,/include$,/lib,'`"
2366                     if $test -d $j; then
2367                         libpth="$libpth $j"
2368                     fi
2369                 done   
2370                 libpth="`$echo $libpth|$sed 's/^ //'`"
2371                 echo "Guessing libpth '$libpth'." >&4
2372             fi
2373             $rm -f try.c
2374             ;;
2375         esac
2376         case "$targetarch" in
2377         '') echo "Targetarch not defined." >&4; croak=y ;;
2378         *)  echo "Using targetarch $targetarch." >&4 ;;
2379         esac
2380         case "$incpth" in
2381         '') echo "Incpth not defined." >&4; croak=y ;;
2382         *)  echo "Using incpth '$incpth'." >&4 ;;
2383         esac
2384         case "$libpth" in
2385         '') echo "Libpth not defined." >&4; croak=y ;;
2386         *)  echo "Using libpth '$libpth'." >&4 ;;
2387         esac
2388         case "$usrinc" in
2389         '') for i in $incpth; do
2390                 if $test -f $i/errno.h -a -f $i/stdio.h -a -f $i/time.h; then
2391                     usrinc=$i
2392                     echo "Guessing usrinc $usrinc." >&4
2393                     break
2394                 fi
2395             done
2396             case "$usrinc" in
2397             '') echo "Usrinc not defined." >&4; croak=y ;;
2398             esac
2399             ;;
2400         *)  echo "Using usrinc $usrinc." >&4 ;;
2401         esac
2402         case "$targethost" in
2403         '') echo "Targethost not defined." >&4; croak=y ;;
2404         *)  echo "Using targethost $targethost." >&4
2405         esac
2406         locincpth=' '
2407         loclibpth=' '
2408         case "$croak" in
2409         y) echo "Cannot continue, aborting." >&4; exit 1 ;;
2410         esac
2411         case "$src" in
2412         /*) run=$src/Cross/run
2413             targetmkdir=$src/Cross/mkdir
2414             to=$src/Cross/to
2415             from=$src/Cross/from
2416             ;;
2417         *)  pwd=`$test -f ../Configure & cd ..; pwd`
2418             run=$pwd/Cross/run
2419             targetmkdir=$pwd/Cross/mkdir
2420             to=$pwd/Cross/to
2421             from=$pwd/Cross/from
2422             ;;
2423         esac
2424         case "$targetrun" in
2425         '') targetrun=ssh ;;
2426         esac
2427         case "$targetto" in
2428         '') targetto=scp ;;
2429         esac
2430         case "$targetfrom" in
2431         '') targetfrom=scp ;;
2432         esac
2433         run=$run-$targetrun
2434         to=$to-$targetto
2435         from=$from-$targetfrom
2436         case "$targetdir" in
2437         '')  targetdir=/tmp
2438              echo "Guessing targetdir $targetdir." >&4
2439              ;;
2440         esac
2441         case "$targetuser" in
2442         '')  targetuser=root
2443              echo "Guessing targetuser $targetuser." >&4
2444              ;;
2445         esac
2446         case "$targetfrom" in
2447         scp)    q=-q ;;
2448         *)      q='' ;;
2449         esac
2450         case "$targetrun" in
2451         ssh|rsh)
2452             cat >$run <<EOF
2453 #!/bin/sh
2454 case "\$1" in
2455 -cwd)
2456   shift
2457   cwd=\$1
2458   shift
2459   ;;
2460 esac
2461 case "\$cwd" in
2462 '') cwd=$targetdir ;;
2463 esac
2464 exe=\$1
2465 shift
2466 if $test ! -f \$exe.xok; then
2467   $to \$exe
2468   $touch \$exe.xok
2469 fi
2470 $targetrun -l $targetuser $targethost "cd \$cwd && ./\$exe \$@"
2471 EOF
2472             ;;
2473         *)  echo "Unknown targetrun '$targetrun'" >&4
2474             exit 1
2475             ;;
2476         esac
2477         case "$targetmkdir" in
2478         */Cross/mkdir)
2479             cat >$targetmkdir <<EOF
2480 #!/bin/sh
2481 $targetrun -l $targetuser $targethost "mkdir -p \$@"
2482 EOF
2483             $chmod a+rx $targetmkdir
2484             ;;
2485         *)  echo "Unknown targetmkdir '$targetmkdir'" >&4
2486             exit 1
2487             ;;
2488         esac
2489         case "$targetto" in
2490         scp|rcp)
2491             cat >$to <<EOF
2492 #!/bin/sh
2493 for f in \$@
2494 do
2495   case "\$f" in
2496   /*)
2497     $targetmkdir \`dirname \$f\`
2498     $targetto $q \$f $targetuser@$targethost:\$f            || exit 1
2499     ;;
2500   *)
2501     $targetmkdir $targetdir/\`dirname \$f\`
2502     $targetto $q \$f $targetuser@$targethost:$targetdir/\$f || exit 1
2503     ;;
2504   esac
2505 done
2506 exit 0
2507 EOF
2508             ;;
2509         cp) cat >$to <<EOF
2510 #!/bin/sh
2511 for f in \$@
2512 do
2513   case "\$f" in
2514   /*)
2515     $mkdir -p $targetdir/\`dirname \$f\`
2516     $cp \$f $targetdir/\$f || exit 1
2517     ;;
2518   *)
2519     $targetmkdir $targetdir/\`dirname \$f\`
2520     $cp \$f $targetdir/\$f || exit 1
2521     ;;
2522   esac
2523 done
2524 exit 0
2525 EOF
2526             ;;
2527         *)  echo "Unknown targetto '$targetto'" >&4
2528             exit 1
2529             ;;
2530         esac
2531         case "$targetfrom" in
2532         scp|rcp)
2533           cat >$from <<EOF
2534 #!/bin/sh
2535 for f in \$@
2536 do
2537   $rm -f \$f
2538   $targetfrom $q $targetuser@$targethost:$targetdir/\$f . || exit 1
2539 done
2540 exit 0
2541 EOF
2542             ;;
2543         cp) cat >$from <<EOF
2544 #!/bin/sh
2545 for f in \$@
2546 do
2547   $rm -f \$f
2548   cp $targetdir/\$f . || exit 1
2549 done
2550 exit 0
2551 EOF
2552             ;;
2553         *)  echo "Unknown targetfrom '$targetfrom'" >&4
2554             exit 1
2555             ;;
2556         esac
2557         if $test ! -f $run; then
2558             echo "Target 'run' script '$run' not found." >&4
2559         else
2560             $chmod a+rx $run
2561         fi
2562         if $test ! -f $to; then
2563             echo "Target 'to' script '$to' not found." >&4
2564         else
2565             $chmod a+rx $to
2566         fi
2567         if $test ! -f $from; then
2568             echo "Target 'from' script '$from' not found." >&4
2569         else
2570             $chmod a+rx $from
2571         fi
2572         if $test ! -f $run -o ! -f $to -o ! -f $from; then
2573             exit 1
2574         fi
2575         cat >&4 <<EOF
2576 Using '$run' for remote execution,
2577 and '$from' and '$to'
2578 for remote file transfer.
2579 EOF
2580         ;;
2581 *)      run=''
2582         to=:
2583         from=:
2584         usecrosscompile='undef'
2585         targetarch=''
2586         ;;
2587 esac
2588
2589 : see whether [:lower:] and [:upper:] are supported character classes
2590 echo " "
2591 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
2592 ABYZ)
2593         echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
2594         up='[:upper:]'
2595         low='[:lower:]'
2596         ;;
2597 *)      # There is a discontinuity in EBCDIC between 'I' and 'J'
2598         # (0xc9 and 0xd1), therefore that is a nice testing point.
2599         if test "X$up" = X -o "X$low" = X; then
2600             case "`echo IJ | $tr '[I-J]' '[i-j]' 2>/dev/null`" in
2601             ij) up='[A-Z]'
2602                 low='[a-z]'
2603                 ;;
2604             esac
2605         fi
2606         if test "X$up" = X -o "X$low" = X; then
2607             case "`echo IJ | $tr I-J i-j 2>/dev/null`" in
2608             ij) up='A-Z'
2609                 low='a-z'
2610                 ;;
2611             esac
2612         fi
2613         if test "X$up" = X -o "X$low" = X; then
2614             case "`echo IJ | od -x 2>/dev/null`" in
2615             *C9D1*|*c9d1*)
2616                 echo "Hey, this might be EBCDIC." >&4
2617                 if test "X$up" = X -o "X$low" = X; then
2618                     case "`echo IJ | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
2619                     ij) up='[A-IJ-RS-Z]'
2620                         low='[a-ij-rs-z]'
2621                         ;;
2622                     esac
2623                 fi
2624                 if test "X$up" = X -o "X$low" = X; then
2625                     case "`echo IJ | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
2626                     ij) up='A-IJ-RS-Z'
2627                         low='a-ij-rs-z'
2628                         ;;
2629                     esac
2630                 fi
2631                 ;;
2632             esac
2633         fi
2634 esac
2635 case "`echo IJ | $tr \"$up\" \"$low\" 2>/dev/null`" in
2636 ij)
2637     echo "Using $up and $low to convert case." >&4
2638     ;;
2639 *)
2640     echo "I don't know how to translate letters from upper to lower case." >&4
2641     echo "Your tr is not acting any way I know of." >&4
2642     exit 1
2643     ;;
2644 esac
2645 : set up the translation script tr, must be called with ./tr of course
2646 cat >tr <<EOSC
2647 $startsh
2648 case "\$1\$2" in
2649 '[A-Z][a-z]') exec $tr '$up' '$low';;
2650 '[a-z][A-Z]') exec $tr '$low' '$up';;
2651 esac
2652 exec $tr "\$@"
2653 EOSC
2654 chmod +x tr
2655 $eunicefix tr
2656
2657 : Try to determine whether config.sh was made on this system
2658 case "$config_sh" in
2659 '')
2660 myuname=`$uname -a 2>/dev/null`
2661 $test -z "$myuname" && myuname=`hostname 2>/dev/null`
2662 # tr '[A-Z]' '[a-z]' would not work in EBCDIC
2663 # because the A-Z/a-z are not consecutive.
2664 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
2665         ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
2666 newmyuname="$myuname"
2667 dflt=n
2668 case "$knowitall" in
2669 '')
2670         if test -f ../config.sh; then
2671                 if $contains myuname= ../config.sh >/dev/null 2>&1; then
2672                         eval "`grep myuname= ../config.sh`"
2673                 fi
2674                 if test "X$myuname" = "X$newmyuname"; then
2675                         dflt=y
2676                 fi
2677         fi
2678         ;;
2679 *) dflt=y;;
2680 esac
2681
2682 : Get old answers from old config file if Configure was run on the
2683 : same system, otherwise use the hints.
2684 hint=default
2685 cd ..
2686 if test -f config.sh; then
2687         echo " "
2688         rp="I see a config.sh file.  Shall I use it to set the defaults?"
2689         . UU/myread
2690         case "$ans" in
2691         n*|N*) echo "OK, I'll ignore it."
2692                 mv config.sh config.sh.old
2693                 myuname="$newmyuname"
2694                 ;;
2695         *)  echo "Fetching default answers from your old config.sh file..." >&4
2696                 tmp_n="$n"
2697                 tmp_c="$c"
2698                 tmp_sh="$sh"
2699                 . ./config.sh
2700                 cp config.sh UU
2701                 n="$tmp_n"
2702                 c="$tmp_c"
2703                 : Older versions did not always set $sh.  Catch re-use of such
2704                 : an old config.sh.
2705                 case "$sh" in
2706                 '') sh="$tmp_sh" ;;
2707                 esac
2708                 hint=previous
2709                 ;;
2710         esac
2711 fi
2712 . ./UU/checkcc
2713 if test ! -f config.sh; then
2714         $cat <<EOM
2715
2716 First time through, eh?  I have some defaults handy for some systems
2717 that need some extra help getting the Configure answers right:
2718
2719 EOM
2720         (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/   /g' >&4
2721         dflt=''
2722         : Half the following guesses are probably wrong... If you have better
2723         : tests or hints, please send them to perlbug@perl.org
2724         : The metaconfig authors would also appreciate a copy...
2725         $test -f /irix && osname=irix
2726         $test -f /xenix && osname=sco_xenix
2727         $test -f /dynix && osname=dynix
2728         $test -f /dnix && osname=dnix
2729         $test -f /lynx.os && osname=lynxos
2730         $test -f /unicos && osname=unicos && osvers=`$uname -r`
2731         $test -f /unicosmk && osname=unicosmk && osvers=`$uname -r`
2732         $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
2733         $test -f /bin/mips && /bin/mips && osname=mips
2734         $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
2735                 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
2736         $test -d /usr/apollo/bin && osname=apollo
2737         $test -f /etc/saf/_sactab && osname=svr4
2738         $test -d /usr/include/minix && osname=minix
2739         if $test -d /MachTen -o -d /MachTen_Folder; then
2740                 osname=machten
2741                 if $test -x /sbin/version; then
2742                         osvers=`/sbin/version | $awk '{print $2}' |
2743                         $sed -e 's/[A-Za-z]$//'`
2744                 elif $test -x /usr/etc/version; then
2745                         osvers=`/usr/etc/version | $awk '{print $2}' |
2746                         $sed -e 's/[A-Za-z]$//'`
2747                 else
2748                         osvers="$2.$3"
2749                 fi
2750         fi
2751
2752         $test -f /sys/posix.dll &&
2753                 $test -f /usr/bin/what &&
2754                 set X `/usr/bin/what /sys/posix.dll` &&
2755                 $test "$3" = UWIN &&
2756                 osname=uwin &&
2757                 osvers="$5"
2758
2759         if $test -f $uname; then
2760                 set X $myuname
2761                 shift
2762
2763                 case "$5" in
2764                 fps*) osname=fps ;;
2765                 mips*)
2766                         case "$4" in
2767                         umips) osname=umips ;;
2768                         *) osname=mips ;;
2769                         esac;;
2770                 [23]100) osname=mips ;;
2771                 next*) osname=next ;;
2772                 i386*)
2773                         tmp=`/bin/uname -X 2>/dev/null|awk '/3\.2v[45]/{ print $(NF) }'`
2774                         if $test "$tmp" != "" -a "$3" = "3.2" -a -f '/etc/systemid'; then
2775                                 osname='sco'
2776                                 osvers=$tmp
2777                         elif $test -f /etc/kconfig; then
2778                                 osname=isc
2779                                 if test "$lns" = "$ln -s"; then
2780                                         osvers=4
2781                                 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
2782                                         osvers=3
2783                                 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
2784                                         osvers=2
2785                                 fi
2786                         fi
2787                         tmp=''
2788                         ;;
2789                 pc*)
2790                         if test -n "$DJGPP"; then
2791                                 osname=dos
2792                                 osvers=djgpp
2793                         fi
2794                         ;;
2795                 esac
2796
2797                 case "$1" in
2798                 aix) osname=aix
2799                         tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
2800                         case "$tmp" in
2801                         'not found') osvers="$4"."$3" ;;
2802                         '<3240'|'<>3240') osvers=3.2.0 ;;
2803                         '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
2804                         '=3250'|'>3250') osvers=3.2.5 ;;
2805                         *) osvers=$tmp;;
2806                         esac
2807                         ;;
2808                 bsd386) osname=bsd386
2809                         osvers=`$uname -r`
2810                         ;;
2811                 cygwin*) osname=cygwin
2812                         osvers="$3"
2813                         ;;
2814                 *dc.osx) osname=dcosx
2815                         osvers="$3"
2816                         ;;
2817                 dnix) osname=dnix
2818                         osvers="$3"
2819                         ;;
2820                 domainos) osname=apollo
2821                         osvers="$3"
2822                         ;;
2823                 dgux) osname=dgux 
2824                         osvers="$3"
2825                         ;;
2826                 dynixptx*) osname=dynixptx
2827                         osvers=`echo "$4"|sed 's/^v//'`
2828                         ;;
2829                 freebsd) osname=freebsd 
2830                         osvers="$3" ;;
2831                 genix) osname=genix ;;
2832                 hp*) osname=hpux 
2833                         osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
2834                         ;;
2835                 irix*) osname=irix
2836                         case "$3" in
2837                         4*) osvers=4 ;;
2838                         5*) osvers=5 ;;
2839                         *)      osvers="$3" ;;
2840                         esac
2841                         ;;
2842                 linux) osname=linux
2843                         case "$3" in
2844                         *)      osvers="$3" ;;
2845                         esac
2846                         ;;
2847                 MiNT) osname=mint
2848                         ;;
2849                 netbsd*) osname=netbsd
2850                         osvers="$3"
2851                         ;;
2852                 news-os) osvers="$3"
2853                         case "$3" in
2854                         4*) osname=newsos4 ;;
2855                         *) osname=newsos ;;
2856                         esac
2857                         ;;
2858                 next*) osname=next ;;
2859                 nonstop-ux) osname=nonstopux ;;
2860                 POSIX-BC | posix-bc ) osname=posix-bc
2861                         osvers="$3"
2862                         ;;
2863                 powerux | power_ux | powermax_os | powermaxos | \
2864                 powerunix | power_unix) osname=powerux
2865                         osvers="$3"
2866                         ;;
2867                 qnx) osname=qnx
2868                         osvers="$4"
2869                         ;;
2870                 solaris) osname=solaris
2871                         case "$3" in
2872                         5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2873                         *)      osvers="$3" ;;
2874                         esac
2875                         ;;
2876                 sunos) osname=sunos
2877                         case "$3" in
2878                         5*) osname=solaris
2879                                 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2880                         *)      osvers="$3" ;;
2881                         esac
2882                         ;;
2883                 titanos) osname=titanos
2884                         case "$3" in
2885                         1*) osvers=1 ;;
2886                         2*) osvers=2 ;;
2887                         3*) osvers=3 ;;
2888                         4*) osvers=4 ;;
2889                         *)      osvers="$3" ;;
2890                         esac
2891                         ;;
2892                 ultrix) osname=ultrix
2893                         osvers="$3"
2894                         ;;
2895                 osf1|mls+)      case "$5" in
2896                                 alpha)
2897                                         osname=dec_osf
2898                                         osvers=`sizer -v | awk '{print $3}' |  tr '[A-Z]' '[a-z]' | sed 's/^[xvt]//'`
2899                                         case "$osvers" in
2900                                         [1-9].[0-9]*) ;;
2901                                         *) osvers=`echo "$3" | sed 's/^[xvt]//'` ;;
2902                                         esac
2903                                         ;;
2904                         hp*)    osname=hp_osf1  ;;
2905                         mips)   osname=mips_osf1 ;;
2906                         esac
2907                         ;;
2908                 unixware) osname=svr5
2909                         osvers="$4"
2910                         ;;
2911                 uts) osname=uts
2912                         osvers="$3"
2913                         ;;
2914                 $2) case "$osname" in
2915                         *isc*) ;;
2916                         *freebsd*) ;;
2917                         svr*)
2918                                 : svr4.x or possibly later
2919                                 case "svr$3" in 
2920                                 ${osname}*)
2921                                         osname=svr$3
2922                                         osvers=$4
2923                                         ;;
2924                                 esac
2925                                 case "$osname" in
2926                                 svr4.0)
2927                                         : Check for ESIX
2928                                         if test -f /stand/boot ; then
2929                                                 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
2930                                                 if test -n "$INITPROG" -a -f "$INITPROG"; then
2931                         isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
2932                                                         if test -n "$isesix"; then
2933                                                                 osname=esix4
2934                                                         fi
2935                                                 fi
2936                                         fi
2937                                         ;;
2938                                 esac
2939                                 ;;
2940                         *)      if test -f /etc/systemid; then
2941                                         osname=sco
2942                                         set `echo $3 | $sed 's/\./ /g'` $4
2943                                         if $test -f $src/hints/sco_$1_$2_$3.sh; then
2944                                                 osvers=$1.$2.$3
2945                                         elif $test -f $src/hints/sco_$1_$2.sh; then
2946                                                 osvers=$1.$2
2947                                         elif $test -f $src/hints/sco_$1.sh; then
2948                                                 osvers=$1
2949                                         fi
2950                                 else
2951                                         case "$osname" in
2952                                         '') : Still unknown.  Probably a generic Sys V.
2953                                                 osname="sysv"
2954                                                 osvers="$3"
2955                                                 ;;
2956                                         esac
2957                                 fi
2958                                 ;;
2959                         esac
2960                         ;;
2961                 *)      case "$osname" in
2962                         '') : Still unknown.  Probably a generic BSD.
2963                                 osname="$1"
2964                                 osvers="$3"
2965                                 ;;
2966                         esac
2967                         ;;
2968                 esac
2969         else
2970                 if test -f /vmunix -a -f $src/hints/news_os.sh; then
2971                         (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
2972                         if $contains news-os UU/kernel.what >/dev/null 2>&1; then
2973                                 osname=news_os
2974                         fi
2975                         $rm -f UU/kernel.what
2976                 elif test -d c:/.; then
2977                         set X $myuname
2978                         osname=os2
2979                         osvers="$5"
2980                 fi
2981         fi
2982         
2983         case "$targetarch" in
2984         '') ;;
2985         *)  hostarch=$osname
2986             osname=`echo $targetarch|sed 's,^[^-]*-,,'`
2987             osvers=''
2988             ;;
2989         esac
2990
2991         : Now look for a hint file osname_osvers, unless one has been
2992         : specified already.
2993         case "$hintfile" in
2994         ''|' ')
2995                 file=`echo "${osname}_${osvers}" | $sed -e 's%\.%_%g' -e 's%_$%%'`
2996                 : Also try without trailing minor version numbers.
2997                 xfile=`echo $file | $sed -e 's%_[^_]*$%%'`
2998                 xxfile=`echo $xfile | $sed -e 's%_[^_]*$%%'`
2999                 xxxfile=`echo $xxfile | $sed -e 's%_[^_]*$%%'`
3000                 xxxxfile=`echo $xxxfile | $sed -e 's%_[^_]*$%%'`
3001                 case "$file" in
3002                 '') dflt=none ;;
3003                 *)  case "$osvers" in
3004                         '') dflt=$file
3005                                 ;;
3006                         *)  if $test -f $src/hints/$file.sh ; then
3007                                         dflt=$file
3008                                 elif $test -f $src/hints/$xfile.sh ; then
3009                                         dflt=$xfile
3010                                 elif $test -f $src/hints/$xxfile.sh ; then
3011                                         dflt=$xxfile
3012                                 elif $test -f $src/hints/$xxxfile.sh ; then
3013                                         dflt=$xxxfile
3014                                 elif $test -f $src/hints/$xxxxfile.sh ; then
3015                                         dflt=$xxxxfile
3016                                 elif $test -f "$src/hints/${osname}.sh" ; then
3017                                         dflt="${osname}"
3018                                 else
3019                                         dflt=none
3020                                 fi
3021                                 ;;
3022                         esac
3023                         ;;
3024                 esac
3025                 if $test -f Policy.sh ; then
3026                         case "$dflt" in
3027                         *Policy*) ;;
3028                         none) dflt="Policy" ;;
3029                         *) dflt="Policy $dflt" ;;
3030                         esac
3031                 fi
3032                 ;;
3033         *)
3034                 dflt=`echo $hintfile | $sed 's/\.sh$//'`
3035                 ;;
3036         esac
3037
3038         if $test -f Policy.sh ; then
3039                 $cat <<EOM
3040
3041 There's also a Policy hint file available, which should make the
3042 site-specific (policy) questions easier to answer.
3043 EOM
3044
3045         fi
3046
3047         $cat <<EOM
3048
3049 You may give one or more space-separated answers, or "none" if appropriate.
3050 A well-behaved OS will have no hints, so answering "none" or just "Policy"
3051 is a good thing.  DO NOT give a wrong version or a wrong OS.
3052
3053 EOM
3054
3055         rp="Which of these apply, if any?"
3056         . UU/myread
3057         tans=$ans
3058         for file in $tans; do
3059                 if $test X$file = XPolicy -a -f Policy.sh; then
3060                         . Policy.sh
3061                         $cat Policy.sh >> UU/config.sh
3062                 elif $test -f $src/hints/$file.sh; then
3063                         . $src/hints/$file.sh
3064                         $cat $src/hints/$file.sh >> UU/config.sh
3065                 elif $test X"$tans" = X -o X"$tans" = Xnone ; then
3066                         : nothing
3067                 else
3068                         : Give one chance to correct a possible typo.
3069                         echo "$file.sh does not exist"
3070                         dflt=$file
3071                         rp="hint to use instead?"
3072                         . UU/myread
3073                         for file in $ans; do
3074                                 if $test -f "$src/hints/$file.sh"; then
3075                                         . $src/hints/$file.sh
3076                                         $cat $src/hints/$file.sh >> UU/config.sh
3077                                 elif $test X$ans = X -o X$ans = Xnone ; then
3078                                         : nothing
3079                                 else
3080                                         echo "$file.sh does not exist -- ignored."
3081                                 fi
3082                         done
3083                 fi
3084         done
3085
3086         hint=recommended
3087         : Remember our hint file for later.
3088         if $test -f "$src/hints/$file.sh" ; then
3089                 hintfile="$file"
3090         else
3091                 hintfile=''
3092         fi
3093 fi
3094 cd UU
3095 ;;
3096 *)
3097         echo " "
3098         echo "Fetching default answers from $config_sh..." >&4
3099         tmp_n="$n"
3100         tmp_c="$c"
3101         cd ..
3102         cp $config_sh config.sh 2>/dev/null
3103         chmod +w config.sh
3104         . ./config.sh
3105         cd UU
3106         cp ../config.sh .
3107         n="$tmp_n"
3108         c="$tmp_c"
3109         hint=previous
3110         ;;
3111 esac
3112 test "$override" && . ./optdef.sh
3113
3114 : Restore computed paths
3115 for file in $loclist $trylist; do
3116         eval $file="\$_$file"
3117 done
3118
3119 cat << EOM
3120
3121 Configure uses the operating system name and version to set some defaults.
3122 The default value is probably right if the name rings a bell. Otherwise,
3123 since spelling matters for me, either accept the default or answer "none"
3124 to leave it blank.
3125
3126 EOM
3127 case "$osname" in
3128         ''|' ')
3129                 case "$hintfile" in
3130                 ''|' '|none) dflt=none ;;
3131                 *)  dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
3132                 esac
3133                 ;;
3134         *) dflt="$osname" ;;
3135 esac
3136 rp="Operating system name?"
3137 . ./myread
3138 case "$ans" in
3139 none)  osname='' ;;
3140 *) osname=`echo "$ans" | $sed -e 's/[   ][      ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
3141 esac
3142 echo " "
3143 case "$osvers" in
3144         ''|' ')
3145                 case "$hintfile" in
3146                 ''|' '|none) dflt=none ;;
3147                 *)      dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
3148                         dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
3149                         case "$dflt" in
3150                         ''|' ') dflt=none ;;
3151                         esac
3152                         ;;
3153                 esac
3154                 ;;
3155         *) dflt="$osvers" ;;
3156 esac
3157 rp="Operating system version?"
3158 . ./myread
3159 case "$ans" in
3160 none)  osvers='' ;;
3161 *) osvers="$ans" ;;
3162 esac
3163
3164
3165 . ./posthint.sh
3166
3167 : who configured the system
3168 cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
3169 cf_by=`(logname) 2>/dev/null`
3170 case "$cf_by" in
3171 "")
3172         cf_by=`(whoami) 2>/dev/null`
3173         case "$cf_by" in
3174         "") cf_by=unknown ;;
3175         esac ;;
3176 esac
3177
3178 : set up the script used to warn in case of inconsistency
3179 cat <<EOS >whoa
3180 $startsh
3181 EOS
3182 cat <<'EOSC' >>whoa
3183 dflt=y
3184 echo " "
3185 echo "*** WHOA THERE!!! ***" >&4
3186 echo "    The $hint value for \$$var on this machine was \"$was\"!" >&4
3187 rp="    Keep the $hint value?"
3188 . ./myread
3189 case "$ans" in
3190 y) td=$was; tu=$was;;
3191 esac
3192 EOSC
3193
3194 : function used to set $1 to $val
3195 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
3196 case "$val$was" in
3197 $define$undef) . ./whoa; eval "$var=\$td";;
3198 $undef$define) . ./whoa; eval "$var=\$tu";;
3199 *) eval "$var=$val";;
3200 esac'
3201
3202 case "$usethreads" in
3203 $define|true|[yY]*)     dflt='y';;
3204 *) dflt='n';;
3205 esac
3206 cat <<EOM
3207
3208 Perl can be built to take advantage of threads on some systems.
3209 To do so, Configure can be run with -Dusethreads.
3210
3211 Note that threading is a highly experimental feature, and
3212 some known race conditions still remain.  If you choose to try
3213 it, be very sure to not actually deploy it for production
3214 purposes.  README.threads has more details, and is required
3215 reading if you enable threads.
3216
3217 If this doesn't make any sense to you, just accept the default '$dflt'.
3218 EOM
3219 rp='Build a threading Perl?'
3220 . ./myread
3221 case "$ans" in
3222 y|Y)    val="$define" ;;
3223 *)      val="$undef" ;;
3224 esac
3225 set usethreads
3226 eval $setvar
3227
3228 case "$usethreads" in
3229 $define)
3230         $cat <<EOM
3231
3232 As of 5.5.640, Perl has two different internal threading implementations,
3233 the 5.005 version (5005threads) and an interpreter-based version
3234 (ithreads) that has one interpreter per thread.  Both are very 
3235 experimental.  This arrangement exists to help developers work out
3236 which one is better.
3237
3238 If you're a casual user, you probably don't want interpreter-threads
3239 at this time.  There doesn't yet exist a way to create threads from
3240 within Perl in this model, i.e., "use Thread;" will NOT work.
3241 EOM
3242         : Default to ithreads unless overridden on command line or with
3243         : old config.sh
3244         dflt='y'
3245         case "$use5005threads" in
3246                 $define|true|[yY]*) dflt='n';;
3247         esac
3248         case "$useithreads" in
3249                 $undef|false|[nN]*) dflt='n';;
3250         esac
3251         rp='Use interpreter-based ithreads?'
3252         . ./myread
3253         case "$ans" in
3254         y|Y)    val="$define" ;;
3255         *)      val="$undef" ;;
3256         esac
3257         set useithreads
3258         eval $setvar
3259         : Now set use5005threads to the opposite value.
3260         case "$useithreads" in
3261         $define) val="$undef" ;;
3262         *) val="$define" ;;
3263         esac
3264         set use5005threads
3265         eval $setvar
3266         ;;
3267 *)
3268         useithreads="$undef"
3269         use5005threads="$undef"
3270         ;;
3271 esac
3272
3273 case "$useithreads$use5005threads" in
3274 "$define$define")
3275         $cat >&4 <<EOM
3276
3277 You cannot have both the ithreads and the 5.005 threads enabled
3278 at the same time.  Disabling the 5.005 threads since they are
3279 much less stable than the ithreads.
3280
3281 EOM
3282         use5005threads="$undef"
3283         ;;
3284 esac
3285
3286 case "$d_oldpthreads" in
3287 '')     : Configure tests would be welcome here.  For now, assume undef.
3288         val="$undef" ;;
3289 *)      val="$d_oldpthreads" ;;
3290 esac
3291 set d_oldpthreads
3292 eval $setvar
3293
3294
3295 case "$usethreads" in
3296 "$define"|true|[yY]*)
3297 : Look for a hint-file generated 'call-back-unit'.  If the
3298 : user has specified that a threading perl is to be built,
3299 : we may need to set or change some other defaults.
3300         if $test -f usethreads.cbu; then
3301                 echo "Your platform has some specific hints for threaded builds, using them..."
3302                 . ./usethreads.cbu
3303         else
3304                 $cat <<EOM
3305 (Your platform doesn't have any specific hints for threaded builds.
3306  Assuming POSIX threads, then.)
3307 EOM
3308         fi
3309         ;;
3310 esac
3311
3312 cat <<EOM
3313
3314 Perl can be built so that multiple Perl interpreters can coexist
3315 within the same Perl executable.
3316 EOM
3317
3318 case "$useithreads" in
3319 $define)
3320         cat <<EOM
3321 This multiple interpreter support is required for interpreter-based threads.
3322 EOM
3323         val="$define"
3324         ;;
3325 *)      case "$usemultiplicity" in
3326         $define|true|[yY]*)     dflt='y';;
3327         *) dflt='n';;
3328         esac
3329         echo " "
3330         echo "If this doesn't make any sense to you, just accept the default '$dflt'."
3331         rp='Build Perl for multiplicity?'
3332         . ./myread
3333         case "$ans" in
3334         y|Y)    val="$define" ;;
3335         *)      val="$undef" ;;
3336         esac
3337         ;;
3338 esac
3339 set usemultiplicity
3340 eval $setvar
3341
3342
3343 case "$usemorebits" in
3344 "$define"|true|[yY]*)
3345         use64bitint="$define"
3346         uselongdouble="$define"
3347         usemorebits="$define"
3348         ;;
3349 *)      usemorebits="$undef"
3350         ;;
3351 esac
3352
3353 : make some quick guesses about what we are up against
3354 echo " "
3355 $echo $n "Hmm...  $c"
3356 echo exit 1 >bsd
3357 echo exit 1 >usg
3358 echo exit 1 >v7
3359 echo exit 1 >osf1
3360 echo exit 1 >eunice
3361 echo exit 1 >xenix
3362 echo exit 1 >venix
3363 echo exit 1 >os2
3364 d_bsd="$undef"
3365 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
3366 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
3367 then
3368         echo "Looks kind of like an OSF/1 system, but we'll see..."
3369         echo exit 0 >osf1
3370 elif test `echo abc | $tr a-z A-Z` = Abc ; then
3371         xxx=`./loc addbib blurfl $pth`
3372         if $test -f $xxx; then
3373         echo "Looks kind of like a USG system with BSD features, but we'll see..."
3374                 echo exit 0 >bsd
3375                 echo exit 0 >usg
3376         else
3377                 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
3378                         echo "Looks kind of like an extended USG system, but we'll see..."
3379                 else
3380                         echo "Looks kind of like a USG system, but we'll see..."
3381                 fi
3382                 echo exit 0 >usg
3383         fi
3384 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
3385         echo "Looks kind of like a BSD system, but we'll see..."
3386         d_bsd="$define"
3387         echo exit 0 >bsd
3388 else
3389         echo "Looks kind of like a Version 7 system, but we'll see..."
3390         echo exit 0 >v7
3391 fi
3392 case "$eunicefix" in
3393 *unixtovms*)
3394         $cat <<'EOI'
3395 There is, however, a strange, musty smell in the air that reminds me of
3396 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
3397 EOI
3398         echo exit 0 >eunice
3399         d_eunice="$define"
3400 : it so happens the Eunice I know will not run shell scripts in Unix format
3401         ;;
3402 *)
3403         echo " "
3404         echo "Congratulations.  You aren't running Eunice."
3405         d_eunice="$undef"
3406         ;;
3407 esac
3408 : Detect OS2.  The p_ variable is set above in the Head.U unit.
3409 : Note that this also -- wrongly -- detects e.g. dos-djgpp, which also uses
3410 : semicolon as a patch separator
3411 case "$p_" in
3412 :) ;;
3413 *)
3414         $cat <<'EOI'
3415 I have the feeling something is not exactly right, however...don't tell me...
3416 lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
3417 (Or you may be running DOS with DJGPP.)
3418 EOI
3419         echo exit 0 >os2
3420         ;;
3421 esac
3422 if test -f /xenix; then
3423         echo "Actually, this looks more like a XENIX system..."
3424         echo exit 0 >xenix
3425         d_xenix="$define"
3426 else
3427         echo " "
3428         echo "It's not Xenix..."
3429         d_xenix="$undef"
3430 fi
3431 chmod +x xenix
3432 $eunicefix xenix
3433 if test -f /venix; then
3434         echo "Actually, this looks more like a VENIX system..."
3435         echo exit 0 >venix
3436 else
3437         echo " "
3438         if ./xenix; then
3439                 : null
3440         else
3441                 echo "Nor is it Venix..."
3442         fi
3443 fi
3444 chmod +x bsd usg v7 osf1 eunice xenix venix os2
3445 $eunicefix bsd usg v7 osf1 eunice xenix venix os2
3446 $rm -f foo
3447
3448 case "$cc" in
3449 '') dflt=cc;;
3450 *) dflt="$cc";;
3451 esac
3452 rp="Use which C compiler?"
3453 . ./myread
3454 cc="$ans"
3455 : Look for a hint-file generated 'call-back-unit'.  Now that the
3456 : user has specified the compiler, we may need to set or change some
3457 : other defaults.
3458 if $test -f cc.cbu; then
3459     . ./cc.cbu
3460 fi
3461 . ./checkcc
3462
3463 echo " "
3464 echo "Checking for GNU cc in disguise and/or its version number..." >&4
3465 $cat >try.c <<EOM
3466 #include <stdio.h>
3467 int main() {
3468 #ifdef __GNUC__
3469 #ifdef __VERSION__
3470         printf("%s\n", __VERSION__);
3471 #else
3472         printf("%s\n", "1");
3473 #endif
3474 #endif
3475         exit(0);
3476 }
3477 EOM
3478 if $cc -o try $ccflags $ldflags try.c; then
3479         gccversion=`$run ./try`
3480         case "$gccversion" in
3481         '') echo "You are not using GNU cc." ;;
3482         *)  echo "You are using GNU cc $gccversion."
3483             ccname=gcc  
3484             ;;
3485         esac
3486 else
3487         echo " "
3488         echo "*** WHOA THERE!!! ***" >&4
3489         echo "    Your C compiler \"$cc\" doesn't seem to be working!" >&4
3490         case "$knowitall" in
3491         '')
3492         echo "    You'd better start hunting for one and let me know about it." >&4
3493                 exit 1
3494                 ;;
3495         esac
3496 fi
3497 $rm -f try try.*
3498 case "$gccversion" in
3499 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3500 esac
3501 case "$gccversion" in
3502 '') gccosandvers='' ;;
3503 *) gccshortvers=`echo "$gccversion"|sed 's/ .*//'`
3504    gccosandvers=`$cc -v 2>&1|grep '/specs$'|sed "s!.*/[^-/]*-[^-/]*-\([^-/]*\)/$gccshortvers/specs!\1!"`
3505    gccshortvers=''
3506    case "$gccosandvers" in
3507    $osname) gccosandvers='' ;; # linux gccs seem to have no linux osvers, grr
3508    $osname$osvers) ;; # looking good
3509    $osname*) cat <<EOM >&4
3510
3511 *** WHOA THERE!!! ***
3512
3513     Your gcc has not been compiled for the exact release of
3514     your operating system ($gccosandvers versus $osname$osvers).
3515
3516     In general it is a good idea to keep gcc synchronized with
3517     the operating system because otherwise serious problems
3518     may ensue when trying to compile software, like Perl.
3519
3520     I'm trying to be optimistic here, though, and will continue.
3521     If later during the configuration and build icky compilation
3522     problems appear (headerfile conflicts being the most common
3523     manifestation), I suggest reinstalling the gcc to match
3524     your operating system release.
3525
3526 EOM
3527       ;;
3528    *) gccosandvers='' ;; # failed to parse, better be silent
3529    esac
3530    ;;
3531 esac
3532 case "$ccname" in
3533 '') ccname="$cc" ;;
3534 esac
3535
3536
3537 : decide how portable to be.  Allow command line overrides.
3538 case "$d_portable" in
3539 "$undef") ;;
3540 *)      d_portable="$define" ;;
3541 esac
3542
3543 : set up shell script to do ~ expansion
3544 cat >filexp <<EOSS
3545 $startsh
3546 : expand filename
3547 case "\$1" in
3548  ~/*|~)
3549         echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
3550         ;;
3551  ~*)
3552         if $test -f /bin/csh; then
3553                 /bin/csh -f -c "glob \$1"
3554                 failed=\$?
3555                 echo ""
3556                 exit \$failed
3557         else
3558                 name=\`$expr x\$1 : '..\([^/]*\)'\`
3559                 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
3560                 if $test ! -d "\$dir"; then
3561                         me=\`basename \$0\`
3562                         echo "\$me: can't locate home directory for: \$name" >&2
3563                         exit 1
3564                 fi
3565                 case "\$1" in
3566                 */*)
3567                         echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
3568                         ;;
3569                 *)
3570                         echo \$dir
3571                         ;;
3572                 esac
3573         fi
3574         ;;
3575 *)
3576         echo \$1
3577         ;;
3578 esac
3579 EOSS
3580 chmod +x filexp
3581 $eunicefix filexp
3582
3583 : now set up to get a file name
3584 cat <<EOS >getfile
3585 $startsh
3586 EOS
3587 cat <<'EOSC' >>getfile
3588 tilde=''
3589 fullpath=''
3590 already=''
3591 skip=''
3592 none_ok=''
3593 exp_file=''
3594 nopath_ok=''
3595 orig_rp="$rp"
3596 orig_dflt="$dflt"
3597 case "$gfpth" in
3598 '') gfpth='.' ;;
3599 esac
3600
3601 case "$fn" in
3602 *\(*)
3603         expr $fn : '.*(\(.*\)).*' | $tr ',' $trnl >getfile.ok
3604         fn=`echo $fn | sed 's/(.*)//'`
3605         ;;
3606 esac
3607
3608 case "$fn" in
3609 *:*)
3610         loc_file=`expr $fn : '.*:\(.*\)'`
3611         fn=`expr $fn : '\(.*\):.*'`
3612         ;;
3613 esac
3614
3615 case "$fn" in
3616 *~*) tilde=true;;
3617 esac
3618 case "$fn" in
3619 */*) fullpath=true;;
3620 esac
3621 case "$fn" in
3622 *+*) skip=true;;
3623 esac
3624 case "$fn" in
3625 *n*) none_ok=true;;
3626 esac
3627 case "$fn" in
3628 *e*) exp_file=true;;
3629 esac
3630 case "$fn" in
3631 *p*) nopath_ok=true;;
3632 esac
3633
3634 case "$fn" in
3635 *f*) type='File';;
3636 *d*) type='Directory';;
3637 *l*) type='Locate';;
3638 esac
3639
3640 what="$type"
3641 case "$what" in
3642 Locate) what='File';;
3643 esac
3644
3645 case "$exp_file" in
3646 '')
3647         case "$d_portable" in
3648         "$define") ;;
3649         *) exp_file=true;;
3650         esac
3651         ;;
3652 esac
3653
3654 cd ..
3655 while test "$type"; do
3656         redo=''
3657         rp="$orig_rp"
3658         dflt="$orig_dflt"
3659         case "$tilde" in
3660         true) rp="$rp (~name ok)";;
3661         esac
3662         . UU/myread
3663         if test -f UU/getfile.ok && \
3664                 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
3665         then
3666                 value="$ans"
3667                 ansexp="$ans"
3668                 break
3669         fi
3670         case "$ans" in
3671         none)
3672                 value=''
3673                 ansexp=''
3674                 case "$none_ok" in
3675                 true) type='';;
3676                 esac
3677                 ;;
3678         *)
3679                 case "$tilde" in
3680                 '') value="$ans"
3681                         ansexp="$ans";;
3682                 *)
3683                         value=`UU/filexp $ans`
3684                         case $? in
3685                         0)
3686                                 if test "$ans" != "$value"; then
3687                                         echo "(That expands to $value on this system.)"
3688                                 fi
3689                                 ;;
3690                         *) value="$ans";;
3691                         esac
3692                         ansexp="$value"
3693                         case "$exp_file" in
3694                         '') value="$ans";;
3695                         esac
3696                         ;;
3697                 esac
3698                 case "$fullpath" in
3699                 true)
3700                         case "$ansexp" in
3701                         /*) value="$ansexp" ;;
3702                         [a-zA-Z]:/*) value="$ansexp" ;;
3703                         *)
3704                                 redo=true
3705                                 case "$already" in
3706                                 true)
3707                                 echo "I shall only accept a full path name, as in /bin/ls." >&4
3708                                 echo "Use a ! shell escape if you wish to check pathnames." >&4
3709                                         ;;
3710                                 *)
3711                                 echo "Please give a full path name, starting with slash." >&4
3712                                         case "$tilde" in
3713                                         true)
3714                                 echo "Note that using ~name is ok provided it expands well." >&4
3715                                                 already=true
3716                                                 ;;
3717                                         esac
3718                                 esac
3719                                 ;;
3720                         esac
3721                         ;;
3722                 esac
3723                 case "$redo" in
3724                 '')
3725                         case "$type" in
3726                         File)
3727                                 for fp in $gfpth; do
3728                                         if test "X$fp" = X.; then
3729                                             pf="$ansexp"
3730                                         else    
3731                                             pf="$fp/$ansexp"
3732                                         fi
3733                                         if test -f "$pf"; then
3734                                                 type=''
3735                                         elif test -r "$pf" || (test -h "$pf") >/dev/null 2>&1
3736                                         then
3737                                                 echo "($value is not a plain file, but that's ok.)"
3738                                                 type=''
3739                                         fi
3740                                         if test X"$type" = X; then
3741                                             value="$pf"
3742                                             break
3743                                         fi
3744                                 done
3745                                 ;;
3746                         Directory)
3747                                 for fp in $gfpth; do
3748                                         if test "X$fp" = X.; then
3749                                             dir="$ans"
3750                                             direxp="$ansexp"
3751                                         else    
3752                                             dir="$fp/$ansexp"
3753                                             direxp="$fp/$ansexp"
3754                                         fi
3755                                         if test -d "$direxp"; then
3756                                                 type=''
3757                                                 value="$dir"
3758                                                 break
3759                                         fi
3760                                 done
3761                                 ;;
3762                         Locate)
3763                                 if test -d "$ansexp"; then
3764                                         echo "(Looking for $loc_file in directory $value.)"
3765                                         value="$value/$loc_file"
3766                                         ansexp="$ansexp/$loc_file"
3767                                 fi
3768                                 if test -f "$ansexp"; then
3769                                         type=''
3770                                 fi
3771                                 case "$nopath_ok" in
3772                                 true)   case "$value" in
3773                                         */*) ;;
3774                                         *)      echo "Assuming $value will be in people's path."
3775                                                 type=''
3776                                                 ;;
3777                                         esac
3778                                         ;;
3779                                 esac
3780                                 ;;
3781                         esac
3782
3783                         case "$skip" in
3784                         true) type='';
3785                         esac
3786
3787                         case "$type" in
3788                         '') ;;
3789                         *)
3790                                 if test "$fastread" = yes; then
3791                                         dflt=y
3792                                 else
3793                                         dflt=n
3794                                 fi
3795                                 rp="$what $value doesn't exist.  Use that name anyway?"
3796                                 . UU/myread
3797                                 dflt=''
3798                                 case "$ans" in
3799                                 y*) type='';;
3800                                 *) echo " ";;
3801                                 esac
3802                                 ;;
3803                         esac
3804                         ;;
3805                 esac
3806                 ;;
3807         esac
3808 done
3809 cd UU
3810 ans="$value"
3811 rp="$orig_rp"
3812 dflt="$orig_dflt"
3813 rm -f getfile.ok
3814 test "X$gfpthkeep" != Xy && gfpth=""
3815 EOSC
3816
3817 : What should the include directory be ?
3818 echo " "
3819 $echo $n "Hmm...  $c"
3820 dflt='/usr/include'
3821 incpath=''
3822 mips_type=''
3823 if $test -f /bin/mips && /bin/mips; then
3824         echo "Looks like a MIPS system..."
3825         $cat >usr.c <<'EOCP'
3826 #ifdef SYSTYPE_BSD43
3827 /bsd43
3828 #endif
3829 EOCP
3830         if cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
3831                 dflt='/bsd43/usr/include'
3832                 incpath='/bsd43'
3833                 mips_type='BSD 4.3'
3834         else
3835                 mips_type='System V'
3836         fi
3837         $rm -f usr.c usr.out
3838         echo "and you're compiling with the $mips_type compiler and libraries."
3839         xxx_prompt=y
3840         echo "exit 0" >mips
3841 else
3842         echo "Doesn't look like a MIPS system."
3843         xxx_prompt=n
3844         echo "exit 1" >mips
3845 fi
3846 chmod +x mips
3847 $eunicefix mips
3848 case "$usrinc" in
3849 '') ;;
3850 *) dflt="$usrinc";;
3851 esac
3852 case "$xxx_prompt" in
3853 y)      fn=d/
3854         echo " "
3855         rp='Where are the include files you want to use?'
3856         . ./getfile
3857         usrinc="$ans"
3858         ;;
3859 *)      usrinc="$dflt"
3860         ;;
3861 esac
3862
3863 : see how we invoke the C preprocessor
3864 echo " "
3865 echo "Now, how can we feed standard input to your C preprocessor..." >&4
3866 cat <<'EOT' >testcpp.c
3867 #define ABC abc
3868 #define XYZ xyz
3869 ABC.XYZ
3870 EOT
3871 cd ..
3872 if test ! -f cppstdin; then
3873         if test "X$osname" = "Xaix" -a "X$gccversion" = X; then
3874                 # AIX cc -E doesn't show the absolute headerfile
3875                 # locations but we'll cheat by using the -M flag.
3876                 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
3877         else
3878                 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
3879         fi
3880 else
3881         echo "Keeping your $hint cppstdin wrapper."
3882 fi
3883 chmod 755 cppstdin
3884 wrapper=`pwd`/cppstdin
3885 ok='false'
3886 cd UU
3887
3888 if $test "X$cppstdin" != "X" && \
3889         $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
3890         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3891 then
3892         echo "You used to use $cppstdin $cppminus so we'll use that again."
3893         case "$cpprun" in
3894         '') echo "But let's see if we can live without a wrapper..." ;;
3895         *)
3896                 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
3897                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3898                 then
3899                         echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
3900                         ok='true'
3901                 else
3902                         echo "(However, $cpprun $cpplast does not work, let's see...)"
3903                 fi
3904                 ;;
3905         esac
3906 else
3907         case "$cppstdin" in
3908         '') ;;
3909         *)
3910                 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
3911                 ;;
3912         esac
3913 fi
3914
3915 if $ok; then
3916         : nothing
3917 elif echo 'Maybe "'"$cc"' -E" will work...'; \
3918         $cc -E <testcpp.c >testcpp.out 2>&1; \
3919         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3920         echo "Yup, it does."
3921         x_cpp="$cc -E"
3922         x_minus='';
3923 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
3924         $cc -E - <testcpp.c >testcpp.out 2>&1; \
3925         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3926         echo "Yup, it does."
3927         x_cpp="$cc -E"
3928         x_minus='-';
3929 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
3930         $cc -P <testcpp.c >testcpp.out 2>&1; \
3931         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3932         echo "Yipee, that works!"
3933         x_cpp="$cc -P"
3934         x_minus='';
3935 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
3936         $cc -P - <testcpp.c >testcpp.out 2>&1; \
3937         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3938         echo "At long last!"
3939         x_cpp="$cc -P"
3940         x_minus='-';
3941 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
3942         $cpp <testcpp.c >testcpp.out 2>&1; \
3943         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3944         echo "It works!"
3945         x_cpp="$cpp"
3946         x_minus='';
3947 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
3948         $cpp - <testcpp.c >testcpp.out 2>&1; \
3949         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3950         echo "Hooray, it works!  I was beginning to wonder."
3951         x_cpp="$cpp"
3952         x_minus='-';
3953 elif echo 'Uh-uh.  Time to get fancy.  Trying a wrapper...'; \
3954         $wrapper <testcpp.c >testcpp.out 2>&1; \
3955         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3956         x_cpp="$wrapper"
3957         x_minus=''
3958         echo "Eureka!"
3959 else
3960         dflt=''
3961         rp="No dice.  I can't find a C preprocessor.  Name one:"
3962         . ./myread
3963         x_cpp="$ans"
3964         x_minus=''
3965         $x_cpp <testcpp.c >testcpp.out 2>&1
3966         if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3967                 echo "OK, that will do." >&4
3968         else
3969 echo "Sorry, I can't get that to work.  Go find one and rerun Configure." >&4
3970                 exit 1
3971         fi
3972 fi
3973
3974 case "$ok" in
3975 false)
3976         cppstdin="$x_cpp"
3977         cppminus="$x_minus"
3978         cpprun="$x_cpp"
3979         cpplast="$x_minus"
3980         set X $x_cpp
3981         shift
3982         case "$1" in
3983         "$cpp")
3984                 echo "Perhaps can we force $cc -E using a wrapper..."
3985                 if $wrapper <testcpp.c >testcpp.out 2>&1; \
3986                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3987                 then
3988                         echo "Yup, we can."
3989                         cppstdin="$wrapper"
3990                         cppminus='';
3991                 else
3992                         echo "Nope, we'll have to live without it..."
3993                 fi
3994                 ;;
3995         esac
3996         case "$cpprun" in
3997         "$wrapper")
3998                 cpprun=''
3999                 cpplast=''
4000                 ;;
4001         esac
4002         ;;
4003 esac
4004
4005 case "$cppstdin" in
4006 "$wrapper"|'cppstdin') ;;
4007 *) $rm -f $wrapper;;
4008 esac
4009 $rm -f testcpp.c testcpp.out
4010
4011 : Set private lib path
4012 case "$plibpth" in
4013 '') if ./mips; then
4014                 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
4015         fi;;
4016 esac
4017 case "$libpth" in
4018 ' ') dlist='';;
4019 '') dlist="$loclibpth $plibpth $glibpth";;
4020 *) dlist="$libpth";;
4021 esac
4022
4023 : Now check and see which directories actually exist, avoiding duplicates
4024 libpth=''
4025 for xxx in $dlist
4026 do
4027     if $test -d $xxx; then
4028                 case " $libpth " in
4029                 *" $xxx "*) ;;
4030                 *) libpth="$libpth $xxx";;
4031                 esac
4032     fi
4033 done
4034 $cat <<'EOM'
4035
4036 Some systems have incompatible or broken versions of libraries.  Among
4037 the directories listed in the question below, please remove any you
4038 know not to be holding relevant libraries, and add any that are needed.
4039 Say "none" for none.
4040
4041 EOM
4042 case "$libpth" in
4043 '') dflt='none';;
4044 *)
4045         set X $libpth
4046         shift
4047         dflt=${1+"$@"}
4048         ;;
4049 esac
4050 rp="Directories to use for library searches?"
4051 . ./myread
4052 case "$ans" in
4053 none) libpth=' ';;
4054 *) libpth="$ans";;
4055 esac
4056
4057 : compute shared library extension
4058 case "$so" in
4059 '')
4060         if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
4061                 dflt='sl'
4062         else
4063                 dflt='so'
4064         fi
4065         ;;
4066 *) dflt="$so";;
4067 esac
4068 $cat <<EOM
4069
4070 On some systems, shared libraries may be available.  Answer 'none' if
4071 you want to suppress searching of shared libraries for the remainder
4072 of this configuration.
4073
4074 EOM
4075 rp='What is the file extension used for shared libraries?'
4076 . ./myread
4077 so="$ans"
4078
4079 : Define several unixisms.
4080 : Hints files or command line option can be used to override them.
4081 : The convoluted testing is in case hints files set either the old
4082 : or the new name.
4083 case "$_exe" in
4084 '')     case "$exe_ext" in
4085     '') ;;
4086         *)      _exe="$exe_ext" ;;
4087         esac
4088         ;;
4089 esac
4090 case "$_a" in
4091 '')     case "$lib_ext" in
4092     '') _a='.a';;
4093         *)      _a="$lib_ext" ;;
4094         esac
4095         ;;
4096 esac
4097 case "$_o" in
4098 '') case "$obj_ext" in
4099         '')     _o='.o';;
4100         *)      _o="$obj_ext";;
4101         esac
4102         ;;
4103 esac
4104 case "$p_" in
4105 '') case "$path_sep" in
4106         '')     p_=':';;
4107         *)      p_="$path_sep";;
4108         esac
4109         ;;
4110 esac
4111 exe_ext=$_exe
4112 lib_ext=$_a
4113 obj_ext=$_o
4114 path_sep=$p_
4115
4116 : Which makefile gets called first.  This is used by make depend.
4117 case "$firstmakefile" in
4118 '') firstmakefile='makefile';;
4119 esac
4120
4121 case "$usesocks" in
4122 $define|true|[yY]*)     dflt='y';;
4123 *) dflt='n';;
4124 esac
4125 cat <<EOM
4126
4127 Perl can be built to use the SOCKS proxy protocol library.  To do so,
4128 Configure must be run with -Dusesocks.  If you use SOCKS you also need
4129 to use the PerlIO abstraction layer, this will be implicitly selected.
4130
4131 If this doesn't make any sense to you, just accept the default '$dflt'.
4132 EOM
4133 rp='Build Perl for SOCKS?'
4134 . ./myread
4135 case "$ans" in
4136 y|Y)    val="$define" ;;     
4137 *)      val="$undef" ;;
4138 esac
4139 set usesocks
4140 eval $setvar
4141
4142 case "$usesocks" in
4143 $define|true|[yY]*) useperlio="$define";;
4144 esac
4145
4146 : Looking for optional libraries
4147 echo " "
4148 echo "Checking for optional libraries..." >&4
4149 case "$libs" in
4150 ' '|'') dflt='';;
4151 *) dflt="$libs";;
4152 esac
4153 case "$libswanted" in
4154 '') libswanted='c_s';;
4155 esac
4156 case "$usesocks" in
4157 "$define") libswanted="$libswanted socks5 socks5_sh" ;;
4158 esac
4159 libsfound=''
4160 libsfiles=''
4161 libsdirs=''
4162 libspath=''
4163 for thisdir in $libpth $xlibpth; do
4164   test -d $thisdir && libspath="$libspath $thisdir"
4165 done
4166 for thislib in $libswanted; do
4167         for thisdir in $libspath; do
4168             xxx=''
4169             if $test ! -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
4170                 xxx=`ls $thisdir/lib$thislib.$so.[0-9] 2>/dev/null|tail -1`
4171                 $test -f "$xxx" && eval $libscheck
4172                 $test -f "$xxx" && libstyle=shared
4173             fi
4174             if test ! -f "$xxx"; then
4175                 xxx=$thisdir/lib$thislib.$so
4176                 $test -f "$xxx" && eval $libscheck
4177                 $test -f "$xxx" && libstyle=shared
4178             fi  
4179             if test ! -f "$xxx"; then
4180                 xxx=$thisdir/lib$thislib$_a
4181                 $test -f "$xxx" && eval $libscheck
4182                 $test -f "$xxx" && libstyle=static
4183             fi
4184             if test ! -f "$xxx"; then
4185                 xxx=$thisdir/$thislib$_a
4186                 $test -f "$xxx" && eval $libscheck
4187                 $test -f "$xxx" && libstyle=static
4188             fi
4189             if test ! -f "$xxx"; then
4190                 xxx=$thisdir/lib${thislib}_s$_a
4191                 $test -f "$xxx" && eval $libscheck
4192                 $test -f "$xxx" && libstyle=static
4193                 $test -f "$xxx" && thislib=${thislib}_s
4194             fi
4195             if test ! -f "$xxx"; then
4196                 xxx=$thisdir/Slib$thislib$_a
4197                 $test -f "$xxx" && eval $libscheck
4198                 $test -f "$xxx" && libstyle=static
4199             fi
4200             if $test -f "$xxx"; then
4201                 case "$libstyle" in
4202                 shared) echo "Found -l$thislib (shared)." ;;
4203                 static) echo "Found -l$thislib." ;;
4204                 *)      echo "Found -l$thislib ($libstyle)." ;;
4205                 esac
4206                 case " $dflt " in
4207                 *"-l$thislib "*);;
4208                 *) dflt="$dflt -l$thislib"
4209                    libsfound="$libsfound $xxx"
4210                    yyy=`basename $xxx`
4211                    libsfiles="$libsfiles $yyy"
4212                    yyy=`echo $xxx|$sed -e "s%/$yyy\\$%%"`
4213                    case " $libsdirs " in
4214                    *" $yyy "*) ;;
4215                    *) libsdirs="$libsdirs $yyy" ;;
4216                    esac
4217                    ;;
4218                 esac
4219                 break
4220             fi  
4221         done
4222         if $test ! -f "$xxx"; then
4223             echo "No -l$thislib."
4224         fi
4225 done
4226 set X $dflt
4227 shift
4228 dflt="$*"
4229 case "$libs" in
4230 '') dflt="$dflt";;
4231 *) dflt="$libs";;
4232 esac
4233 case "$dflt" in
4234 ' '|'') dflt='none';;
4235 esac
4236
4237 $cat <<EOM
4238
4239 In order to compile $package on your machine, a number of libraries
4240 are usually needed.  Include any other special libraries here as well.
4241 Say "none" for none.  The default list is almost always right.
4242 EOM
4243
4244 echo " "
4245 rp="What libraries to use?"
4246 . ./myread
4247 case "$ans" in
4248 none) libs=' ';;
4249 *) libs="$ans";;
4250 esac
4251
4252 : determine optimization, if desired, or use for debug flag also
4253 case "$optimize" in
4254 ' '|$undef) dflt='none';;
4255 '') dflt='-O';;
4256 *) dflt="$optimize";;
4257 esac
4258 $cat <<EOH
4259
4260 By default, $package compiles with the -O flag to use the optimizer.
4261 Alternately, you might want to use the symbolic debugger, which uses
4262 the -g flag (on traditional Unix systems).  Either flag can be
4263 specified here.  To use neither flag, specify the word "none".
4264
4265 EOH
4266 rp="What optimizer/debugger flag should be used?"
4267 . ./myread
4268 optimize="$ans"
4269 case "$optimize" in
4270 'none') optimize=" ";;
4271 esac
4272
4273 dflt=''
4274 : We will not override a previous value, but we might want to
4275 : augment a hint file
4276 case "$hint" in
4277 default|recommended)
4278         case "$gccversion" in
4279         1*) dflt='-fpcc-struct-return' ;;
4280         esac
4281         case "$optimize" in
4282         *-g*) dflt="$dflt -DDEBUGGING";;
4283         esac
4284         case "$gccversion" in
4285         2*) if test -d /etc/conf/kconfig.d &&
4286                         $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
4287                 then
4288                         dflt="$dflt -posix"
4289                 fi
4290                 ;;
4291         esac
4292         case "$gccversion" in
4293         1*) ;;
4294         2.[0-8]*) ;;
4295         ?*)     echo " "
4296                 echo "Checking if your compiler accepts -fno-strict-aliasing" 2>&1
4297                 echo 'int main(void) { return 0; }' > gcctest.c
4298                 if $cc -O2 -fno-strict-aliasing -o gcctest gcctest.c; then
4299                         echo "Yes, it does." 2>&1
4300                         case "$ccflags" in
4301                         *strict-aliasing*) 
4302                                 echo "Leaving current flags $ccflags alone." 2>&1
4303                                 ;;
4304                         *) dflt="$dflt -fno-strict-aliasing" ;;
4305                         esac
4306                 else
4307                         echo "Nope, it doesn't, but that's ok." 2>&1
4308                 fi
4309                 ;;
4310         esac
4311         ;;
4312 esac
4313
4314 case "$mips_type" in
4315 *BSD*|'') inclwanted="$locincpth $usrinc";;
4316 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
4317 esac
4318 for thisincl in $inclwanted; do
4319         if $test -d $thisincl; then
4320                 if $test x$thisincl != x$usrinc; then
4321                         case "$dflt" in
4322                         *" -I$thisincl "*);;
4323                         *) dflt="$dflt -I$thisincl ";;
4324                         esac
4325                 fi
4326         fi
4327 done
4328
4329 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
4330         xxx=true;
4331 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
4332         xxx=true;
4333 else
4334         xxx=false;
4335 fi;
4336 if $xxx; then
4337         case "$dflt" in
4338         *$2*);;
4339         *) dflt="$dflt -D$2";;
4340         esac;
4341 fi'
4342
4343 set signal.h LANGUAGE_C; eval $inctest
4344
4345 case "$usesocks" in
4346 $define)
4347         ccflags="$ccflags -DSOCKS"
4348         ;;
4349 esac
4350
4351 case "$hint" in
4352 default|recommended) dflt="$ccflags $dflt" ;;
4353 *) dflt="$ccflags";;
4354 esac
4355
4356 case "$dflt" in
4357 ''|' ') dflt=none;;
4358 esac
4359
4360 $cat <<EOH
4361
4362 Your C compiler may want other flags.  For this question you should include
4363 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
4364 but you should NOT include libraries or ld flags like -lwhatever.  If you
4365 want $package to honor its debug switch, you should include -DDEBUGGING here.
4366 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
4367
4368 To use no flags, specify the word "none".
4369
4370 EOH
4371 set X $dflt
4372 shift
4373 dflt=${1+"$@"}
4374 rp="Any additional cc flags?"
4375 . ./myread
4376 case "$ans" in
4377 none) ccflags='';;
4378 *) ccflags="$ans";;
4379 esac
4380
4381 : the following weeds options from ccflags that are of no interest to cpp
4382 case "$cppflags" in
4383 '') cppflags="$ccflags" ;;
4384 *)  cppflags="$cppflags $ccflags" ;;
4385 esac
4386 case "$gccversion" in
4387 1*) cppflags="$cppflags -D__GNUC__"
4388 esac
4389 case "$mips_type" in
4390 '');;
4391 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
4392 esac
4393 case "$cppflags" in
4394 '');;
4395 *)
4396         echo " "
4397         echo "Let me guess what the preprocessor flags are..." >&4
4398         set X $cppflags
4399         shift
4400         cppflags=''
4401         $cat >cpp.c <<'EOM'
4402 #define BLURFL foo
4403
4404 BLURFL xx LFRULB
4405 EOM
4406         previous=''
4407         for flag in $*
4408         do
4409                 case "$flag" in
4410                 -*) ftry="$flag";;
4411                 *) ftry="$previous $flag";;
4412                 esac
4413                 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
4414                         >cpp1.out 2>/dev/null && \
4415                         $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
4416                         >cpp2.out 2>/dev/null && \
4417                         $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
4418                         $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
4419                 then
4420                         cppflags="$cppflags $ftry"
4421                         previous=''
4422                 else
4423                         previous="$flag"
4424                 fi
4425         done
4426         set X $cppflags
4427         shift
4428         cppflags=${1+"$@"}
4429         case "$cppflags" in
4430         *-*)  echo "They appear to be: $cppflags";;
4431         esac
4432         $rm -f cpp.c cpp?.out
4433         ;;
4434 esac
4435
4436 : flags used in final linking phase
4437 case "$ldflags" in
4438 '') if ./venix; then
4439                 dflt='-i -z'
4440         else
4441                 dflt=''
4442         fi
4443         case "$ccflags" in
4444         *-posix*) dflt="$dflt -posix" ;;
4445         esac
4446         ;;
4447 *) dflt="$ldflags";;
4448 esac
4449
4450 : Try to guess additional flags to pick up local libraries.
4451 for thislibdir in $libpth; do
4452         case " $loclibpth " in
4453         *" $thislibdir "*)
4454                 case "$dflt " in 
4455                 *"-L$thislibdir "*) ;;
4456                 *)  dflt="$dflt -L$thislibdir" ;;
4457                 esac
4458                 ;;
4459         esac
4460 done
4461
4462 case "$dflt" in
4463 '') dflt='none' ;;
4464 esac
4465
4466 $cat <<EOH
4467
4468 Your C linker may need flags.  For this question you should
4469 include -L/whatever and any other flags used by the C linker, but you
4470 should NOT include libraries like -lwhatever.
4471
4472 Make sure you include the appropriate -L/path flags if your C linker
4473 does not normally search all of the directories you specified above,
4474 namely
4475         $libpth
4476 To use no flags, specify the word "none".
4477
4478 EOH
4479
4480 rp="Any additional ld flags (NOT including libraries)?"
4481 . ./myread
4482 case "$ans" in
4483 none) ldflags='';;
4484 *) ldflags="$ans";;
4485 esac
4486 rmlist="$rmlist pdp11"
4487
4488 : coherency check
4489 echo " "
4490 echo "Checking your choice of C compiler and flags for coherency..." >&4
4491 $cat > try.c <<'EOF'
4492 #include <stdio.h>
4493 int main() { printf("Ok\n"); exit(0); }
4494 EOF
4495 set X $cc -o try $optimize $ccflags $ldflags try.c $libs
4496 shift
4497 $cat >try.msg <<'EOM'
4498 I've tried to compile and run the following simple program:
4499
4500 EOM
4501 $cat try.c >> try.msg
4502
4503 $cat >> try.msg <<EOM
4504
4505 I used the command:
4506
4507         $*
4508         $run ./try
4509
4510 and I got the following output:
4511
4512 EOM
4513 dflt=y
4514 if $sh -c "$cc -o try $optimize $ccflags $ldflags try.c $libs" >>try.msg 2>&1; then
4515         if $sh -c "$run ./try" >>try.msg 2>&1; then
4516                 xxx=`$run ./try`
4517                 case "$xxx" in
4518                 "Ok") dflt=n ;;
4519                 *)      echo 'The program compiled OK, but produced no output.' >> try.msg
4520                         case " $libs " in
4521                         *" -lsfio "*)
4522                                 cat >> try.msg <<'EOQS'
4523 If $libs contains -lsfio, and sfio is mis-configured, then it
4524 sometimes (apparently) runs and exits with a 0 status, but with no
4525 output!  It may have to do with sfio's use of _exit vs. exit.
4526
4527 EOQS
4528                                 rp="You have a big problem.  Shall I abort Configure"
4529                                 dflt=y
4530                                 ;;
4531                         esac
4532                         ;;
4533                 esac
4534         else
4535                 echo "The program compiled OK, but exited with status $?." >>try.msg
4536                 rp="You have a problem.  Shall I abort Configure"
4537                 dflt=y
4538         fi
4539 else
4540         echo "I can't compile the test program." >>try.msg
4541         rp="You have a BIG problem.  Shall I abort Configure"
4542         dflt=y
4543 fi
4544 case "$dflt" in
4545 y)
4546         $cat try.msg >&4
4547         case "$knowitall" in
4548         '')
4549                 echo "(The supplied flags or libraries might be incorrect.)"
4550                 ;;
4551         *) dflt=n;;
4552         esac
4553         echo " "
4554         . ./myread
4555         case "$ans" in
4556         n*|N*) ;;
4557         *)      echo "Ok.  Stopping Configure." >&4
4558                 exit 1
4559                 ;;
4560         esac
4561         ;;
4562 n) echo "OK, that should do.";;
4563 esac
4564 $rm -f try try.* core
4565
4566 : define a shorthand compile call
4567 compile='
4568 mc_file=$1;
4569 shift;
4570 $cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs > /dev/null 2>&1;'
4571 : define a shorthand compile call for compilations that should be ok.
4572 compile_ok='
4573 mc_file=$1;
4574 shift;
4575 $cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs;'
4576
4577 : check for lengths of integral types
4578 echo " "
4579 case "$intsize" in
4580 '')
4581         echo "Checking to see how big your integers are..." >&4
4582         $cat >try.c <<'EOCP'
4583 #include <stdio.h>
4584 int main()
4585 {
4586         printf("intsize=%d;\n", (int)sizeof(int));
4587         printf("longsize=%d;\n", (int)sizeof(long));
4588         printf("shortsize=%d;\n", (int)sizeof(short));
4589         exit(0);
4590 }
4591 EOCP
4592         set try
4593         if eval $compile_ok && $run ./try > /dev/null; then
4594                 eval `$run ./try`
4595                 echo "Your integers are $intsize bytes long."
4596                 echo "Your long integers are $longsize bytes long."
4597                 echo "Your short integers are $shortsize bytes long."
4598         else
4599                 $cat >&4 <<EOM
4600 !
4601 Help! I can't compile and run the intsize test program: please enlighten me!
4602 (This is probably a misconfiguration in your system or libraries, and
4603 you really ought to fix it.  Still, I'll try anyway.)
4604 !
4605 EOM
4606                 dflt=4
4607                 rp="What is the size of an integer (in bytes)?"
4608                 . ./myread
4609                 intsize="$ans"
4610                 dflt=$intsize
4611                 rp="What is the size of a long integer (in bytes)?"
4612                 . ./myread
4613                 longsize="$ans"
4614                 dflt=2
4615                 rp="What is the size of a short integer (in bytes)?"
4616                 . ./myread
4617                 shortsize="$ans"
4618         fi
4619         ;;
4620 esac
4621 $rm -f try try.*
4622
4623 : check for void type
4624 echo " "
4625 echo "Checking to see how well your C compiler groks the void type..." >&4
4626 case "$voidflags" in
4627 '')
4628         $cat >try.c <<'EOCP'
4629 #if TRY & 1
4630 void sub() {
4631 #else
4632 sub() {
4633 #endif
4634         extern void moo();      /* function returning void */
4635         void (*goo)();          /* ptr to func returning void */
4636 #if TRY & 8
4637         void *hue;              /* generic ptr */
4638 #endif
4639 #if TRY & 2
4640         void (*foo[10])();
4641 #endif
4642
4643 #if TRY & 4
4644         if(goo == moo) {
4645                 exit(0);
4646         }
4647 #endif
4648         exit(0);
4649 }
4650 int main() { sub(); }
4651 EOCP
4652         if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
4653                 voidflags=$defvoidused
4654         echo "Good.  It appears to support void to the level $package wants.">&4
4655                 if $contains warning .out >/dev/null 2>&1; then
4656                         echo "However, you might get some warnings that look like this:"
4657                         $cat .out
4658                 fi
4659         else
4660 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
4661                 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
4662                         echo "It supports 1..."
4663                         if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
4664                                 echo "It also supports 2..."
4665                                 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
4666                                         voidflags=7
4667                                         echo "And it supports 4 but not 8 definitely."
4668                                 else
4669                                         echo "It doesn't support 4..."
4670                                         if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
4671                                                 voidflags=11
4672                                                 echo "But it supports 8."
4673                                         else
4674                                                 voidflags=3
4675                                                 echo "Neither does it support 8."
4676                                         fi
4677                                 fi
4678                         else
4679                                 echo "It does not support 2..."
4680                                 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
4681                                         voidflags=13
4682                                         echo "But it supports 4 and 8."
4683                                 else
4684                                         if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
4685                                                 voidflags=5
4686                                                 echo "And it supports 4 but has not heard about 8."
4687                                         else
4688                                                 echo "However it supports 8 but not 4."
4689                                         fi
4690                                 fi
4691                         fi
4692                 else
4693                         echo "There is no support at all for void."
4694                         voidflags=0
4695                 fi
4696         fi
4697 esac
4698 case "$voidflags" in
4699 "$defvoidused") ;;
4700 *)      $cat >&4 <<'EOM'
4701   Support flag bits are:
4702     1: basic void declarations.
4703     2: arrays of pointers to functions returning void.
4704     4: operations between pointers to and addresses of void functions.
4705     8: generic void pointers.
4706 EOM
4707         dflt="$voidflags";
4708         rp="Your void support flags add up to what?"
4709         . ./myread
4710         voidflags="$ans"
4711         ;;
4712 esac
4713 $rm -f try.* .out
4714
4715 : check for length of pointer
4716 echo " "
4717 case "$ptrsize" in
4718 '')
4719         echo "Checking to see how big your pointers are..." >&4
4720         if test "$voidflags" -gt 7; then
4721                 echo '#define VOID_PTR char *' > try.c
4722         else
4723                 echo '#define VOID_PTR void *' > try.c
4724         fi
4725         $cat >>try.c <<'EOCP'
4726 #include <stdio.h>
4727 int main()
4728 {
4729     printf("%d\n", (int)sizeof(VOID_PTR));
4730     exit(0);
4731 }
4732 EOCP
4733         set try
4734         if eval $compile_ok; then
4735                 ptrsize=`$run ./try`
4736                 echo "Your pointers are $ptrsize bytes long."
4737         else
4738                 dflt='4'
4739                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
4740                 rp="What is the size of a pointer (in bytes)?"
4741                 . ./myread
4742                 ptrsize="$ans"
4743         fi
4744         ;;
4745 esac
4746 $rm -f try.c try
4747
4748 : check for long long
4749 echo " "
4750 echo "Checking to see if you have long long..." >&4
4751 echo 'int main() { long long x = 7; return 0; }' > try.c
4752 set try
4753 if eval $compile; then
4754         val="$define"
4755         echo "You have long long."
4756 else
4757         val="$undef"
4758         echo "You do not have long long."
4759 fi
4760 $rm try.*
4761 set d_longlong
4762 eval $setvar
4763
4764 : check for length of long long
4765 case "${d_longlong}${longlongsize}" in
4766 $define)
4767         echo " "
4768         echo "Checking to see how big your long longs are..." >&4
4769         $cat >try.c <<'EOCP'
4770 #include <stdio.h>
4771 int main()
4772 {
4773     printf("%d\n", (int)sizeof(long long));
4774     return(0);
4775 }
4776 EOCP
4777         set try
4778         if eval $compile_ok; then
4779                 longlongsize=`$run ./try`
4780                 echo "Your long longs are $longlongsize bytes long."
4781         else
4782                 dflt='8'
4783                 echo " "
4784                 echo "(I can't seem to compile the test program.  Guessing...)"
4785                 rp="What is the size of a long long (in bytes)?"
4786                 . ./myread
4787                 longlongsize="$ans"
4788         fi
4789         if $test "X$longsize" = "X$longlongsize"; then
4790                 echo "(That isn't any different from an ordinary long.)"
4791         fi      
4792         ;;
4793 esac
4794 $rm -f try.* try
4795
4796 : determine filename position in cpp output
4797 echo " "
4798 echo "Computing filename position in cpp output for #include directives..." >&4
4799 echo '#include <stdio.h>' > foo.c
4800 $cat >fieldn <<EOF
4801 $startsh
4802 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
4803 $grep '^[       ]*#.*stdio\.h' | \
4804 while read cline; do
4805         pos=1
4806         set \$cline
4807         while $test \$# -gt 0; do
4808                 if $test -r \`echo \$1 | $tr -d '"'\`; then
4809                         echo "\$pos"
4810                         exit 0
4811                 fi
4812                 shift
4813                 pos=\`expr \$pos + 1\`
4814         done
4815 done
4816 EOF
4817 chmod +x fieldn
4818 fieldn=`./fieldn`
4819 $rm -f foo.c fieldn
4820 case $fieldn in
4821 '') pos='???';;
4822 1) pos=first;;
4823 2) pos=second;;
4824 3) pos=third;;
4825 *) pos="${fieldn}th";;
4826 esac
4827 echo "Your cpp writes the filename in the $pos field of the line."
4828
4829 : locate header file
4830 $cat >findhdr <<EOF
4831 $startsh
4832 wanted=\$1
4833 name=''
4834 for usrincdir in $usrinc
4835 do
4836         if test -f \$usrincdir/\$wanted; then
4837                 echo "\$usrincdir/\$wanted"
4838                 exit 0
4839         fi
4840 done
4841 awkprg='{ print \$$fieldn }'
4842 echo "#include <\$wanted>" > foo\$\$.c
4843 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
4844 $grep "^[       ]*#.*\$wanted" | \
4845 while read cline; do
4846         name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
4847         case "\$name" in
4848         *[/\\\\]\$wanted) echo "\$name"; exit 1;;
4849         *[\\\\/]\$wanted) echo "\$name"; exit 1;;
4850         *) exit 2;;
4851         esac;
4852 done;
4853 #
4854 # status = 0: grep returned 0 lines, case statement not executed
4855 # status = 1: headerfile found
4856 # status = 2: while loop executed, no headerfile found
4857 #
4858 status=\$?
4859 $rm -f foo\$\$.c;
4860 if test \$status -eq 1; then
4861         exit 0;
4862 fi
4863 exit 1
4864 EOF
4865 chmod +x findhdr
4866
4867 : define an alternate in-header-list? function
4868 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
4869 cont=true; xxf="echo \"<\$1> found.\" >&4";
4870 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
4871 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
4872 esac;
4873 case $# in 4) instead=instead;; *) instead="at last";; esac;
4874 while $test "$cont"; do
4875         xxx=`./findhdr $1`
4876         var=$2; eval "was=\$$2";
4877         if $test "$xxx" && $test -r "$xxx";
4878         then eval $xxf;
4879         eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
4880                 cont="";
4881         else eval $xxnf;
4882         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
4883         set $yyy; shift; shift; yyy=$@;
4884         case $# in 0) cont="";;
4885         2) xxf="echo \"but I found <\$1> $instead.\" >&4";
4886                 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
4887         *) xxf="echo \"but I found <\$1\> instead.\" >&4";
4888                 xxnf="echo \"there is no <\$1>, ...\" >&4";;
4889         esac;
4890 done;
4891 while $test "$yyy";
4892 do set $yyy; var=$2; eval "was=\$$2";
4893         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
4894         set $yyy; shift; shift; yyy=$@;
4895 done'
4896
4897 : see if inttypes.h is available
4898 : we want a real compile instead of Inhdr because some systems
4899 : have an inttypes.h which includes non-existent headers
4900 echo " "
4901 $cat >try.c <<EOCP
4902 #include <inttypes.h>
4903 int main() {
4904         static int32_t foo32 = 0x12345678;
4905 }
4906 EOCP
4907 set try
4908 if eval $compile; then
4909         echo "<inttypes.h> found." >&4
4910         val="$define"
4911 else
4912         echo "<inttypes.h> NOT found." >&4
4913         val="$undef"
4914 fi
4915 $rm -f try.c try
4916 set i_inttypes
4917 eval $setvar
4918
4919 : check for int64_t
4920 echo " "
4921 echo "Checking to see if you have int64_t..." >&4
4922 $cat >try.c <<EOCP
4923 #include <sys/types.h>
4924 #$i_inttypes I_INTTYPES
4925 #ifdef I_INTTYPES
4926 #include <inttypes.h>
4927 #endif
4928 int main() { int64_t x = 7; }
4929 EOCP
4930 set try
4931 if eval $compile; then
4932         val="$define"
4933         echo "You have int64_t."
4934 else
4935         val="$undef"
4936         echo "You do not have int64_t."
4937 fi
4938 $rm -f try try.*
4939 set d_int64_t
4940 eval $setvar
4941
4942
4943 echo " "
4944 echo "Checking which 64-bit integer type we could use..." >&4
4945
4946 case "$intsize" in
4947 8) val=int
4948    set quadtype
4949    eval $setvar
4950    val='"unsigned int"'
4951    set uquadtype
4952    eval $setvar
4953    quadkind=1
4954    ;;
4955 *) case "$longsize" in
4956    8) val=long
4957       set quadtype
4958       eval $setvar
4959       val='"unsigned long"'
4960       set uquadtype
4961       eval $setvar
4962       quadkind=2
4963       ;;
4964    *) case "$d_longlong:$longlongsize" in
4965       define:8)
4966         val='"long long"'
4967         set quadtype
4968         eval $setvar
4969         val='"unsigned long long"'
4970         set uquadtype
4971         eval $setvar
4972         quadkind=3
4973         ;;
4974       *) case "$d_int64_t" in
4975          define)
4976            val=int64_t
4977            set quadtype
4978            eval $setvar
4979            val=uint64_t
4980            set uquadtype
4981            eval $setvar
4982            quadkind=4
4983            ;;
4984          esac
4985          ;;
4986       esac
4987       ;;
4988    esac
4989    ;;
4990 esac
4991
4992 case "$quadtype" in
4993 '')     echo "Alas, no 64-bit integer types in sight." >&4
4994         d_quad="$undef"
4995         ;;
4996 *)      echo "We could use '$quadtype' for 64-bit integers." >&4
4997         d_quad="$define"
4998         ;;
4999 esac
5000
5001
5002 case "$uselonglong" in
5003 "$define"|true|[yY]*)
5004         cat <<EOM >&4
5005
5006 *** Configure -Duselonglong is deprecated, using -Duse64bitint instead.
5007 EOM
5008         use64bitint="$define"
5009         ;;
5010 esac                          
5011 case "$use64bits" in
5012 "$define"|true|[yY]*)
5013         cat <<EOM >&4
5014
5015 *** Configure -Duse64bits is deprecated, using -Duse64bitint instead.
5016 EOM
5017         use64bitint="$define"
5018         ;;
5019 esac                          
5020 case "$use64bitints" in
5021 "$define"|true|[yY]*)
5022         cat <<EOM >&4
5023
5024 *** There is no Configure -Duse64bitints, using -Duse64bitint instead.
5025 EOM
5026         use64bitint="$define"
5027         ;;
5028 esac                          
5029 case "$use64bitsint" in
5030 "$define"|true|[yY]*)
5031         cat <<EOM >&4
5032
5033 *** There is no Configure -Duse64bitsint, using -Duse64bitint instead.
5034 EOM
5035         use64bitint="$define"
5036         ;;
5037 esac                          
5038 case "$uselonglongs" in
5039 "$define"|true|[yY]*)
5040         cat <<EOM >&4
5041
5042 *** There is no Configure -Duselonglongs, using -Duse64bitint instead.
5043 EOM
5044         use64bitint="$define"
5045         ;;
5046 esac                          
5047 case "$use64bitsall" in
5048 "$define"|true|[yY]*)
5049         cat <<EOM >&4
5050
5051 *** There is no Configure -Duse64bitsall, using -Duse64bitall instead.
5052 EOM
5053         use64bitall="$define"
5054         ;;
5055 esac                          
5056
5057 case "$ccflags" in
5058 *-DUSE_LONG_LONG*|*-DUSE_64_BIT_INT*|*-DUSE_64_BIT_ALL*) use64bitint="$define";;
5059 esac
5060 case "$use64bitall" in
5061 "$define"|true|[yY]*) use64bitint="$define" ;;
5062 esac
5063
5064 case "$longsize" in
5065 8) cat <<EOM
5066
5067 You have natively 64-bit long integers.
5068 EOM
5069    val="$define"
5070    ;;
5071 *) case "$use64bitint" in
5072    "$define"|true|[yY]*) dflt='y';;
5073    *) dflt='n';;
5074    esac
5075    case "$d_quad" in
5076    "$define") ;;
5077    *) dflt='n' ;;
5078    esac
5079    cat <<EOM
5080
5081 Perl can be built to take advantage of 64-bit integer types
5082 on some systems.  To do so, Configure can be run with -Duse64bitint.
5083 Choosing this option will most probably introduce binary incompatibilities.
5084
5085 If this doesn't make any sense to you, just accept the default '$dflt'.
5086 (The default has been chosen based on your configuration.)
5087 EOM
5088    rp='Try to use 64-bit integers, if available?'
5089    . ./myread
5090    case "$ans" in
5091    [yY]*) val="$define" ;;
5092    *)     val="$undef"  ;;
5093    esac
5094    ;;
5095 esac
5096 set use64bitint
5097 eval $setvar
5098
5099 case "$use64bitall" in
5100 "$define"|true|[yY]*) dflt='y' ;;
5101 *) case "$longsize" in
5102    8) dflt='y' ;;
5103    *) dflt='n' ;;
5104    esac
5105    ;;
5106 esac    
5107 cat <<EOM
5108
5109 You may also choose to try maximal 64-bitness.  It means using as much
5110 64-bitness as possible on the platform.  This in turn means even more
5111 binary incompatibilities.  On the other hand, your platform may not
5112 have any more 64-bitness available than what you already have chosen.
5113
5114 If this doesn't make any sense to you, just accept the default '$dflt'.
5115 (The default has been chosen based on your configuration.)
5116 EOM
5117 rp='Try to use maximal 64-bit support, if available?'
5118 . ./myread
5119 case "$ans" in
5120 [yY]*) val="$define" ;;
5121 *)     val="$undef"  ;;
5122 esac
5123 set use64bitall
5124 eval $setvar
5125 case "$use64bitall" in
5126 "$define")
5127         case "$use64bitint" in
5128         "$undef")
5129                 cat <<EOM
5130
5131 Since you have chosen a maximally 64-bit build, I'm also turning on
5132 the use of 64-bit integers.
5133 EOM
5134                 use64bitint="$define" ;;
5135         esac
5136         ;;
5137 esac
5138
5139 case "$use64bitall" in
5140 "$define"|true|[yY]*)
5141         case "$ptrsize" in
5142         4)      cat <<EOM >&4
5143
5144 *** You have chosen a maximally 64-bit build, but your pointers
5145 *** are only 4 bytes wide, disabling maximal 64-bitness.
5146
5147 EOM
5148                 use64bitall="$undef"
5149                 case "$use64bitint" in
5150                 "$define"|true|[yY]*) ;;
5151                 *)      cat <<EOM >&4
5152
5153 *** Downgrading from maximal 64-bitness to using 64-bit integers.
5154
5155 EOM
5156                         use64bitint="$define"
5157                         ;;
5158                 esac
5159                 ;;
5160         esac
5161         ;;
5162 esac
5163
5164 case "$use64bitint" in
5165 "$define"|true|[yY]*)
5166 : Look for a hint-file generated 'call-back-unit'.  If the
5167 : user has specified that a 64-bit perl is to be built,
5168 : we may need to set or change some other defaults.
5169         if $test -f use64bitint.cbu; then
5170                 echo "Your platform has some specific hints for 64-bit integers, using them..."
5171                 . ./use64bitint.cbu
5172         fi
5173         case "$longsize" in
5174         4) case "$archname64" in
5175            '') archname64=64int ;;
5176            esac
5177            ;;
5178         esac
5179         ;;
5180 esac
5181
5182 case "$use64bitall" in
5183 "$define"|true|[yY]*)
5184 : Look for a hint-file generated 'call-back-unit'.  If the
5185 : user has specified that a maximally 64-bit perl is to be built,
5186 : we may need to set or change some other defaults.
5187         if $test -f use64bitall.cbu; then
5188                 echo "Your platform has some specific hints for 64-bit builds, using them..."
5189                 . ./use64bitall.cbu
5190         fi
5191         case "$longsize" in
5192         4) case "$archname64" in
5193            ''|64int) archname64=64all ;;
5194            esac
5195            ;;
5196         esac
5197         ;;
5198 esac
5199
5200 echo " "
5201 echo "Checking for GNU C Library..." >&4
5202 cat >try.c <<EOM
5203 #include <stdio.h>
5204 int main()
5205 {
5206 #ifdef __GLIBC__
5207     exit(0);
5208 #else
5209     exit(1);
5210 #endif
5211 }
5212 EOM
5213 set try
5214 if eval $compile_ok && $run ./try; then
5215         val="$define"
5216         echo "You are using the GNU C Library"
5217 else
5218         val="$undef"
5219         echo "You are not using the GNU C Library"
5220 fi
5221 $rm -f try try.*
5222 set d_gnulibc
5223 eval $setvar
5224
5225 : see if nm is to be used to determine whether a symbol is defined or not
5226 case "$usenm" in
5227 '')
5228         dflt=''
5229         case "$d_gnulibc" in
5230         "$define")
5231                 echo " "
5232                 echo "nm probably won't work on the GNU C Library." >&4
5233                 dflt=n
5234                 ;;
5235         esac
5236         case "$dflt" in
5237         '') 
5238                 if $test "$osname" = aix -a ! -f /lib/syscalls.exp; then
5239                         echo " "
5240                         echo "Whoops!  This is an AIX system without /lib/syscalls.exp!" >&4
5241                         echo "'nm' won't be sufficient on this sytem." >&4
5242                         dflt=n
5243                 fi
5244                 ;;
5245         esac
5246         case "$dflt" in
5247         '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
5248                 if $test $dflt -gt 20; then
5249                         dflt=y
5250                 else
5251                         dflt=n
5252                 fi
5253                 ;;
5254         esac
5255         ;;
5256 *)
5257         case "$usenm" in
5258         true|$define) dflt=y;;
5259         *) dflt=n;;
5260         esac
5261         ;;
5262 esac
5263 $cat <<EOM
5264
5265 I can use $nm to extract the symbols from your C libraries. This
5266 is a time consuming task which may generate huge output on the disk (up
5267 to 3 megabytes) but that should make the symbols extraction faster. The
5268 alternative is to skip the 'nm' extraction part and to compile a small
5269 test program instead to determine whether each symbol is present. If
5270 you have a fast C compiler and/or if your 'nm' output cannot be parsed,
5271 this may be the best solution.
5272
5273 You probably shouldn't let me use 'nm' if you are using the GNU C Library.
5274
5275 EOM
5276 rp="Shall I use $nm to extract C symbols from the libraries?"
5277 . ./myread
5278 case "$ans" in
5279 [Nn]*) usenm=false;;
5280 *) usenm=true;;
5281 esac
5282
5283 runnm=$usenm
5284 case "$reuseval" in
5285 true) runnm=false;;
5286 esac
5287
5288 : nm options which may be necessary
5289 case "$nm_opt" in
5290 '') if $test -f /mach_boot; then
5291                 nm_opt=''       # Mach
5292         elif $test -d /usr/ccs/lib; then
5293                 nm_opt='-p'     # Solaris (and SunOS?)
5294         elif $test -f /dgux; then
5295                 nm_opt='-p'     # DG-UX
5296         elif $test -f /lib64/rld; then
5297                 nm_opt='-p'     # 64-bit Irix
5298         else
5299                 nm_opt=''
5300         fi;;
5301 esac
5302
5303 : nm options which may be necessary for shared libraries but illegal
5304 : for archive libraries.  Thank you, Linux.
5305 case "$nm_so_opt" in
5306 '')     case "$myuname" in
5307         *linux*)
5308                 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
5309                         nm_so_opt='--dynamic'
5310                 fi
5311                 ;;
5312         esac
5313         ;;
5314 esac
5315
5316 case "$runnm" in
5317 true)
5318 : get list of predefined functions in a handy place
5319 echo " "
5320 case "$libc" in
5321 '') libc=unknown
5322         case "$libs" in
5323         *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
5324         esac
5325         ;;
5326 esac
5327 case "$libs" in
5328 '') ;;
5329 *)  for thislib in $libs; do
5330         case "$thislib" in
5331         -lc|-lc_s)
5332                 : Handle C library specially below.
5333                 ;;
5334         -l*)
5335                 thislib=`echo $thislib | $sed -e 's/^-l//'`
5336                 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
5337                         :
5338                 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
5339                         :
5340                 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
5341                         :
5342                 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
5343                         :
5344                 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
5345                         :
5346                 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
5347                         :
5348                 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
5349                         :
5350                 else
5351                         try=''
5352                 fi
5353                 libnames="$libnames $try"
5354                 ;;
5355         *) libnames="$libnames $thislib" ;;
5356         esac
5357         done
5358         ;;
5359 esac
5360 xxx=normal
5361 case "$libc" in
5362 unknown)
5363         set /lib/libc.$so
5364         for xxx in $libpth; do
5365                 $test -r $1 || set $xxx/libc.$so
5366                 : The messy sed command sorts on library version numbers.
5367                 $test -r $1 || \
5368                         set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
5369                         tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
5370                                 h
5371                                 s/[0-9][0-9]*/0000&/g
5372                                 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
5373                                 G
5374                                 s/\n/ /' | \
5375                          $sort | $sed -e 's/^.* //'`
5376                 eval set \$$#
5377         done
5378         $test -r $1 || set /usr/ccs/lib/libc.$so
5379         $test -r $1 || set /lib/libsys_s$_a
5380         ;;
5381 *)
5382         set blurfl
5383         ;;
5384 esac
5385 if $test -r "$1"; then
5386         echo "Your (shared) C library seems to be in $1."
5387         libc="$1"
5388 elif $test -r /lib/libc && $test -r /lib/clib; then
5389         echo "Your C library seems to be in both /lib/clib and /lib/libc."
5390         xxx=apollo
5391         libc='/lib/clib /lib/libc'
5392         if $test -r /lib/syslib; then
5393                 echo "(Your math library is in /lib/syslib.)"
5394                 libc="$libc /lib/syslib"
5395         fi
5396 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
5397         echo "Your C library seems to be in $libc, as you said before."
5398 elif $test -r $incpath/usr/lib/libc$_a; then
5399         libc=$incpath/usr/lib/libc$_a;
5400         echo "Your C library seems to be in $libc.  That's fine."
5401 elif $test -r /lib/libc$_a; then
5402         libc=/lib/libc$_a;
5403         echo "Your C library seems to be in $libc.  You're normal."
5404 else
5405         if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
5406                 :
5407         elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
5408                 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
5409         elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
5410                 :
5411         elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
5412                 :
5413         elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
5414                 :
5415         else
5416                 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
5417         fi
5418         if $test -r "$tans"; then
5419                 echo "Your C library seems to be in $tans, of all places."
5420                 libc=$tans
5421         else
5422                 libc='blurfl'
5423         fi
5424 fi
5425 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
5426         dflt="$libc"
5427         cat <<EOM
5428
5429 If the guess above is wrong (which it might be if you're using a strange
5430 compiler, or your machine supports multiple models), you can override it here.
5431
5432 EOM
5433 else
5434         dflt=''
5435         echo $libpth | $tr ' ' $trnl | $sort | $uniq > libpath
5436         cat >&4 <<EOM
5437 I can't seem to find your C library.  I've looked in the following places:
5438
5439 EOM
5440         $sed 's/^/      /' libpath
5441         cat <<EOM
5442
5443 None of these seems to contain your C library. I need to get its name...
5444
5445 EOM
5446 fi
5447 fn=f
5448 rp='Where is your C library?'
5449 . ./getfile
5450 libc="$ans"
5451
5452 echo " "
5453 echo $libc $libnames | $tr ' ' $trnl | $sort | $uniq > libnames
5454 set X `cat libnames`
5455 shift
5456 xxx=files
5457 case $# in 1) xxx=file; esac
5458 echo "Extracting names from the following $xxx for later perusal:" >&4
5459 echo " "
5460 $sed 's/^/      /' libnames >&4
5461 echo " "
5462 $echo $n "This may take a while...$c" >&4
5463
5464 for file in $*; do
5465         case $file in
5466         *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
5467         *) $nm $nm_opt $file 2>/dev/null;;
5468         esac
5469 done >libc.tmp
5470
5471 $echo $n ".$c"
5472 $grep fprintf libc.tmp > libc.ptf
5473 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
5474 xrun='eval "<libc.tmp $com >libc.list"; echo "done" >&4'
5475 xxx='[ADTSIW]'
5476 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx  *_[_.]*//p' -e 's/^.* $xxx  *//p'";\
5477         eval $xscan;\
5478         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5479                 eval $xrun
5480 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
5481         eval $xscan;\
5482         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5483                 eval $xrun
5484 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
5485         eval $xscan;\
5486         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5487                 eval $xrun
5488 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
5489         eval $xscan;\
5490         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5491                 eval $xrun
5492 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
5493         eval $xscan;\
5494         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5495                 eval $xrun
5496 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
5497         eval $xscan;\
5498         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5499                 eval $xrun
5500 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
5501                                 -e '/ file/d' -e 's/^\([^       ]*\).*/\1/p'";\
5502         eval $xscan;\
5503         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5504                 eval $xrun
5505 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
5506         eval $xscan;\
5507         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5508                 eval $xrun
5509 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
5510         eval $xscan;\
5511         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5512                 eval $xrun
5513 elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
5514         eval $xscan;\
5515         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5516                 eval $xrun
5517 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
5518         eval $xscan;\
5519         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5520                 eval $xrun
5521 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
5522         eval $xscan;\
5523         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5524                 eval $xrun
5525 elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
5526         eval $xscan;\
5527         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5528                 eval $xrun
5529 elif com="sed -n -e 's/^__.*//' -e 's/[       ]*D[    ]*[0-9]*.*//p'";\
5530         eval $xscan;\
5531         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5532                 eval $xrun
5533 else
5534         $nm -p $* 2>/dev/null >libc.tmp
5535         $grep fprintf libc.tmp > libc.ptf
5536         if com="$sed -n -e 's/^.* [ADTSIW]  *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
5537                 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
5538         then
5539                 nm_opt='-p'
5540                 eval $xrun
5541         else
5542                 echo " "
5543                 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
5544                 com=''
5545                 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
5546                         for thisname in $libnames $libc; do
5547                                 $ar t $thisname >>libc.tmp
5548                         done
5549                         $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
5550                         echo "Ok." >&4
5551                 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
5552                         # Repeat libc to extract forwarders to DLL entries too
5553                         for thisname in $libnames $libc; do
5554                                 $ar tv $thisname >>libc.tmp
5555                                 # Revision 50 of EMX has bug in $ar.
5556                                 # it will not extract forwarders to DLL entries
5557                                 # Use emximp which will extract exactly them.
5558                                 emximp -o tmp.imp $thisname \
5559                                     2>/dev/null && \
5560                                     $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
5561                                     < tmp.imp >>libc.tmp
5562                                 $rm tmp.imp
5563                         done
5564                         $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
5565                         echo "Ok." >&4
5566                 else
5567                         echo "$ar didn't seem to work right." >&4
5568                         echo "Maybe this is a Cray...trying bld instead..." >&4
5569                         if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
5570                         then
5571                                 for thisname in $libnames; do
5572                                         bld t $libnames | \
5573                                         $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
5574                                         $ar t $thisname >>libc.tmp
5575                                 done
5576                                 echo "Ok." >&4
5577                         else
5578                                 echo "That didn't work either.  Giving up." >&4
5579                                 exit 1
5580                         fi
5581                 fi
5582         fi
5583 fi
5584 nm_extract="$com"
5585 if $test -f /lib/syscalls.exp; then
5586         echo " "
5587         echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
5588         $sed -n 's/^\([^        ]*\)[   ]*syscall[0-9]*[        ]*$/\1/p' /lib/syscalls.exp >>libc.list
5589 fi
5590 ;;
5591 esac
5592 $rm -f libnames libpath
5593
5594 : is a C symbol defined?
5595 csym='tlook=$1;
5596 case "$3" in
5597 -v) tf=libc.tmp; tc=""; tdc="";;
5598 -a) tf=libc.tmp; tc="[0]"; tdc="[]";;
5599 *) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";;
5600 esac;
5601 tx=yes;
5602 case "$reuseval-$4" in
5603 true-) ;;
5604 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
5605 esac;
5606 case "$tx" in
5607 yes)
5608         case "$runnm" in
5609         true)
5610                 if $contains $tlook $tf >/dev/null 2>&1;
5611                 then tval=true;
5612                 else tval=false;
5613                 fi;;
5614         *)
5615                 echo "int main() { extern short $1$tdc; printf(\"%hd\", $1$tc); }" > t.c;
5616                 if $cc -o t $optimize $ccflags $ldflags t.c $libs >/dev/null 2>&1;
5617                 then tval=true;
5618                 else tval=false;
5619                 fi;
5620                 $rm -f t t.c;;
5621         esac;;
5622 *)
5623         case "$tval" in
5624         $define) tval=true;;
5625         *) tval=false;;
5626         esac;;
5627 esac;
5628 eval "$2=$tval"'
5629
5630 : define an is-in-libc? function
5631 inlibc='echo " "; td=$define; tu=$undef;
5632 sym=$1; var=$2; eval "was=\$$2";
5633 tx=yes;
5634 case "$reuseval$was" in
5635 true) ;;
5636 true*) tx=no;;
5637 esac;
5638 case "$tx" in
5639 yes)
5640         set $sym tres -f;
5641         eval $csym;
5642         case "$tres" in
5643         true)
5644                 echo "$sym() found." >&4;
5645                 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
5646         *)
5647                 echo "$sym() NOT found." >&4;
5648                 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
5649         esac;;
5650 *)
5651         case "$was" in
5652         $define) echo "$sym() found." >&4;;
5653         *) echo "$sym() NOT found." >&4;;
5654         esac;;
5655 esac'
5656
5657 : see if sqrtl exists
5658 set sqrtl d_sqrtl
5659 eval $inlibc
5660
5661 case "$ccflags" in
5662 *-DUSE_LONG_DOUBLE*|*-DUSE_MORE_BITS*) uselongdouble="$define" ;;
5663 esac
5664
5665 case "$uselongdouble" in
5666 $define|true|[yY]*)     dflt='y';;
5667 *) dflt='n';;
5668 esac
5669 cat <<EOM
5670
5671 Perl can be built to take advantage of long doubles which
5672 (if available) may give more accuracy and range for floating point numbers.
5673
5674 If this doesn't make any sense to you, just accept the default '$dflt'.
5675 EOM
5676 rp='Try to use long doubles if available?'
5677 . ./myread
5678 case "$ans" in
5679 y|Y)    val="$define"   ;;
5680 *)      val="$undef"    ;;
5681 esac
5682 set uselongdouble
5683 eval $setvar
5684
5685 case "$uselongdouble" in
5686 true|[yY]*) uselongdouble="$define" ;;
5687 esac
5688
5689 case "$uselongdouble" in
5690 $define)
5691 : Look for a hint-file generated 'call-back-unit'.  If the
5692 : user has specified that long doubles should be used,
5693 : we may need to set or change some other defaults.
5694         if $test -f uselongdouble.cbu; then
5695                 echo "Your platform has some specific hints for long doubles, using them..."
5696                 . ./uselongdouble.cbu
5697         else
5698                 $cat <<EOM
5699 (Your platform doesn't have any specific hints for long doubles.)
5700 EOM
5701         fi
5702         ;;
5703 esac
5704
5705 case "$uselongdouble:$d_sqrtl" in
5706 $define:$undef)
5707                 $cat <<EOM >&4
5708
5709 *** You requested the use of long doubles but you do not seem to have
5710 *** the mathematic functions for long doubles.  I'm disabling the use
5711 *** of long doubles.
5712
5713 EOM
5714         uselongdouble=$undef
5715         ;;
5716 esac
5717
5718 : check for length of double
5719 echo " "
5720 case "$doublesize" in
5721 '')
5722         echo "Checking to see how big your double precision numbers are..." >&4
5723         $cat >try.c <<'EOCP'
5724 #include <stdio.h>
5725 int main()
5726 {
5727     printf("%d\n", (int)sizeof(double));
5728     exit(0);
5729 }
5730 EOCP
5731         set try
5732         if eval $compile_ok; then
5733                 doublesize=`$run ./try`
5734                 echo "Your double is $doublesize bytes long."
5735         else
5736                 dflt='8'
5737                 echo "(I can't seem to compile the test program.  Guessing...)"
5738                 rp="What is the size of a double precision number (in bytes)?"
5739                 . ./myread
5740                 doublesize="$ans"
5741         fi
5742         ;;
5743 esac
5744 $rm -f try.c try
5745
5746 : check for long doubles
5747 echo " "
5748 echo "Checking to see if you have long double..." >&4
5749 echo 'int main() { long double x = 7.0; }' > try.c
5750 set try
5751 if eval $compile; then
5752         val="$define"
5753         echo "You have long double."
5754 else
5755         val="$undef"
5756         echo "You do not have long double."
5757 fi
5758 $rm try.*
5759 set d_longdbl
5760 eval $setvar
5761
5762 : check for length of long double
5763 case "${d_longdbl}${longdblsize}" in
5764 $define)
5765         echo " "
5766         echo "Checking to see how big your long doubles are..." >&4
5767         $cat >try.c <<'EOCP'
5768 #include <stdio.h>
5769 int main()
5770 {
5771         printf("%d\n", sizeof(long double));
5772 }
5773 EOCP
5774         set try
5775         set try
5776         if eval $compile; then
5777                 longdblsize=`$run ./try`
5778                 echo "Your long doubles are $longdblsize bytes long."
5779         else
5780                 dflt='8'
5781                 echo " "
5782                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
5783                 rp="What is the size of a long double (in bytes)?"
5784                 . ./myread
5785                 longdblsize="$ans"
5786         fi
5787         if $test "X$doublesize" = "X$longdblsize"; then
5788                 echo "(That isn't any different from an ordinary double.)"
5789         fi      
5790         ;;
5791 esac
5792 $rm -f try.* try
5793
5794 case "$useperlio" in
5795 $define|true|[yY]*|'')  dflt='y';;
5796 *) dflt='n';;
5797 esac
5798 cat <<EOM
5799
5800 Previous version of $package used the standard IO mechanisms as
5801 defined in <stdio.h>.  Versions 5.003_02 and later of $package allow
5802 alternate IO mechanisms via the PerlIO abstraction layer, but the
5803 stdio mechanism is still available if needed.  The abstraction layer
5804 can use AT&T's sfio (if you already have sfio installed) or regular stdio.
5805 Using PerlIO with sfio may cause problems with some extension modules.
5806
5807 If this doesn't make any sense to you, just accept the default '$dflt'.
5808 EOM
5809 rp='Use the PerlIO abstraction layer?'
5810 . ./myread
5811 case "$ans" in
5812 y|Y) 
5813         val="$define"
5814         ;;
5815 *)      
5816         echo "Ok, doing things the stdio way."
5817         val="$undef"
5818         ;;
5819 esac
5820 set useperlio
5821 eval $setvar 
5822
5823 case "$usesocks" in
5824 $define|true|[yY]*)
5825         case "$useperlio" in
5826         $define|true|[yY]*) ;;
5827         *)      cat >&4 <<EOM
5828
5829 You are using the SOCKS proxy protocol library which means that you
5830 should also use the PerlIO layer.  You may be headed for trouble.
5831
5832 EOM
5833                 ;;
5834         esac
5835         ;;
5836 esac
5837
5838         
5839 : determine the architecture name
5840 echo " "
5841 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
5842         tarch=`arch`"-$osname"
5843 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
5844         if uname -m > tmparch 2>&1 ; then
5845                 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
5846                         -e 's/$/'"-$osname/" tmparch`
5847         else
5848                 tarch="$osname"
5849         fi
5850         $rm -f tmparch
5851 else
5852         tarch="$osname"
5853 fi
5854 case "$myarchname" in
5855 ''|"$tarch") ;;
5856 *)
5857         echo "(Your architecture name used to be $myarchname.)"
5858         archname=''
5859         ;;
5860 esac
5861 case "$targetarch" in
5862 '') ;;
5863 *)  archname=`echo $targetarch|sed 's,^[^-]*-,,'` ;;
5864 esac
5865 myarchname="$tarch"
5866 case "$archname" in
5867 '') dflt="$tarch";;
5868 *) dflt="$archname";;
5869 esac
5870 rp='What is your architecture name'
5871 . ./myread
5872 archname="$ans"
5873 case "$usethreads" in
5874 $define)
5875         echo "Threads selected." >&4
5876         case "$archname" in
5877         *-thread*) echo "...and architecture name already has -thread." >&4
5878                 ;;
5879         *)      archname="$archname-thread"
5880                 echo "...setting architecture name to $archname." >&4
5881                 ;;
5882         esac
5883         ;;
5884 esac
5885 case "$usemultiplicity" in
5886 $define)
5887         echo "Multiplicity selected." >&4
5888         case "$archname" in
5889         *-multi*) echo "...and architecture name already has -multi." >&4
5890                 ;;
5891         *)      archname="$archname-multi"
5892                 echo "...setting architecture name to $archname." >&4
5893                 ;;
5894         esac
5895         ;;
5896 esac
5897 case "$use64bitint$use64bitall" in
5898 *"$define"*)
5899         case "$archname64" in
5900         '')
5901                 echo "This architecture is naturally 64-bit, not changing architecture name." >&4
5902                 ;;
5903         *)
5904                 case "$use64bitint" in
5905                 "$define") echo "64 bit integers selected." >&4 ;;
5906                 esac
5907                 case "$use64bitall" in
5908                 "$define") echo "Maximal 64 bitness selected." >&4 ;;
5909                 esac
5910                 case "$archname" in
5911                 *-$archname64*) echo "...and architecture name already has $archname64." >&4
5912                         ;;
5913                 *)      archname="$archname-$archname64"
5914                         echo "...setting architecture name to $archname." >&4
5915                         ;;
5916                 esac
5917                 ;;
5918         esac
5919 esac
5920 case "$uselongdouble" in
5921 $define)
5922         echo "Long doubles selected." >&4
5923         case "$longdblsize" in
5924         $doublesize)
5925                 echo "...but long doubles are equal to doubles, not changing architecture name." >&4
5926                 ;;
5927         *)
5928                 case "$archname" in
5929                 *-ld*) echo "...and architecture name already has -ld." >&4
5930                         ;;
5931                 *)      archname="$archname-ld"
5932                         echo "...setting architecture name to $archname." >&4
5933                         ;;
5934                 esac
5935                 ;;
5936         esac
5937         ;;
5938 esac
5939 case "$useperlio" in
5940 $define)
5941         echo "Perlio selected." >&4
5942         ;;
5943 *)
5944         echo "Perlio not selected, using stdio." >&4
5945         case "$archname" in
5946         *-stdio*) echo "...and architecture name already has -stdio." >&4
5947                 ;;
5948         *)      archname="$archname-stdio"
5949                 echo "...setting architecture name to $archname." >&4
5950                 ;;
5951         esac
5952         ;;
5953 esac
5954
5955 : determine root of directory hierarchy where package will be installed.
5956 case "$prefix" in
5957 '')
5958         dflt=`./loc . /usr/local /usr/local /local /opt /usr`
5959         ;;
5960 *)
5961         dflt="$prefix"
5962         ;;
5963 esac
5964 $cat <<EOM
5965
5966 By default, $package will be installed in $dflt/bin, manual pages
5967 under $dflt/man, etc..., i.e. with $dflt as prefix for all
5968 installation directories. Typically this is something like /usr/local.
5969 If you wish to have binaries under /usr/bin but other parts of the
5970 installation under /usr/local, that's ok: you will be prompted
5971 separately for each of the installation directories, the prefix being
5972 only used to set the defaults.
5973
5974 EOM
5975 fn=d~
5976 rp='Installation prefix to use?'
5977 . ./getfile
5978 oldprefix=''
5979 case "$prefix" in
5980 '') ;;
5981 *)
5982         case "$ans" in
5983         "$prefix") ;;
5984         *) oldprefix="$prefix";;
5985         esac
5986         ;;
5987 esac
5988 prefix="$ans"
5989 prefixexp="$ansexp"
5990
5991 case "$afsroot" in
5992 '')     afsroot=/afs ;;
5993 *)      afsroot=$afsroot ;;
5994 esac
5995
5996 : is AFS running?
5997 echo " "
5998 case "$afs" in
5999 $define|true)   afs=true ;;
6000 $undef|false)   afs=false ;;
6001 *)      if test -d $afsroot; then
6002                 afs=true
6003         else
6004                 afs=false
6005         fi
6006         ;;
6007 esac
6008 if $afs; then
6009         echo "AFS may be running... I'll be extra cautious then..." >&4
6010 else
6011         echo "AFS does not seem to be running..." >&4
6012 fi
6013
6014 : determine installation prefix for where package is to be installed.
6015 if $afs; then 
6016 $cat <<EOM
6017
6018 Since you are running AFS, I need to distinguish the directory in which
6019 files will reside from the directory in which they are installed (and from
6020 which they are presumably copied to the former directory by occult means).
6021
6022 EOM
6023         case "$installprefix" in
6024         '') dflt=`echo $prefix | sed 's#^/afs/#/afs/.#'`;;
6025         *) dflt="$installprefix";;
6026         esac
6027 else
6028 $cat <<EOM
6029
6030 In some special cases, particularly when building $package for distribution,
6031 it is convenient to distinguish between the directory in which files should 
6032 be installed from the directory ($prefix) in which they 
6033 will eventually reside.  For most users, these two directories are the same.
6034
6035 EOM
6036         case "$installprefix" in
6037         '') dflt=$prefix ;;
6038         *) dflt=$installprefix;;
6039         esac
6040 fi
6041 fn=d~
6042 rp='What installation prefix should I use for installing files?'
6043 . ./getfile
6044 installprefix="$ans"
6045 installprefixexp="$ansexp"
6046
6047 : set the prefixit variable, to compute a suitable default value
6048 prefixit='case "$3" in
6049 ""|none)
6050         case "$oldprefix" in
6051         "") eval "$1=\"\$$2\"";;
6052         *)
6053                 case "$3" in
6054                 "") eval "$1=";;
6055                 none)
6056                         eval "tp=\"\$$2\"";
6057                         case "$tp" in
6058                         ""|" ") eval "$1=\"\$$2\"";;
6059                         *) eval "$1=";;
6060                         esac;;
6061                 esac;;
6062         esac;;
6063 *)
6064         eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
6065         case "$tp" in
6066         --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
6067         /*-$oldprefix/*|\~*-$oldprefix/*)
6068                 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
6069         *) eval "$1=\"\$$2\"";;
6070         esac;;
6071 esac'
6072
6073 : get the patchlevel
6074 echo " "
6075 echo "Getting the current patchlevel..." >&4
6076 if $test -r $rsrc/patchlevel.h;then
6077         revision=`awk '/define[         ]+PERL_REVISION/ {print $3}' $rsrc/patchlevel.h`
6078         patchlevel=`awk '/define[       ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
6079         subversion=`awk '/define[       ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
6080         api_revision=`awk '/define[     ]+PERL_API_REVISION/ {print $3}' $rsrc/patchlevel.h`
6081         api_version=`awk '/define[      ]+PERL_API_VERSION/ {print $3}' $rsrc/patchlevel.h`
6082         api_subversion=`awk '/define[   ]+PERL_API_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
6083        perl_patchlevel=`grep ',"DEVEL[0-9][0-9]*"' $rsrc/patchlevel.h|sed 's/[^0-9]//g'`
6084 else
6085         revision=0
6086         patchlevel=0
6087         subversion=0
6088         api_revision=0
6089         api_version=0
6090         api_subversion=0
6091         perl_patchlevel=0
6092         $echo "(You do not have patchlevel.h.  Eek.)"
6093 fi
6094 if $test -r $rsrc/.patch ; then  
6095         if $test "`cat $rsrc/.patch`" -gt "$perl_patchlevel" ; then
6096                 perl_patchlevel=`cat $rsrc/.patch`
6097         fi
6098 fi
6099 : Define a handy string here to avoid duplication in myconfig.SH and configpm.
6100 version_patchlevel_string="version $patchlevel subversion $subversion"
6101 case "$perl_patchlevel" in
6102 0|'') ;;
6103 *) version_patchlevel_string="$version_patchlevel_string patch $perl_patchlevel" ;;
6104 esac
6105
6106 $echo "(You have $package $version_patchlevel_string.)"
6107
6108 case "$osname" in
6109 dos|vms)
6110         : XXX Should be a Configure test for double-dots in filenames.
6111         version=`echo $revision $patchlevel $subversion | \
6112                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
6113         api_versionstring=`echo $api_revision $api_version $api_subversion | \
6114                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
6115         ;;
6116 *)
6117         version=`echo $revision $patchlevel $subversion | \
6118                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
6119         api_versionstring=`echo $api_revision $api_version $api_subversion | \
6120                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
6121         ;;
6122 esac
6123 : Special case the 5.005_xx maintenance series, which used 5.005
6124 : without any subversion label as a subdirectory in $sitelib
6125 if test "${api_revision}${api_version}${api_subversion}" = "550"; then
6126         api_versionstring='5.005'
6127 fi
6128
6129 : determine installation style
6130 : For now, try to deduce it from prefix unless it is already set.
6131 : Reproduce behavior of 5.005 and earlier, maybe drop that in 5.7.
6132 case "$installstyle" in
6133 '')     case "$prefix" in
6134                 *perl*) dflt='lib';;
6135                 *) dflt='lib/perl5' ;;
6136         esac
6137         ;;
6138 *)      dflt="$installstyle" ;;
6139 esac
6140 : Probably not worth prompting for this since we prompt for all
6141 : the directories individually, and the prompt would be too long and
6142 : confusing anyway.
6143 installstyle=$dflt
6144
6145 : determine where private library files go
6146 : Usual default is /usr/local/lib/perl5/$version.
6147 : Also allow things like /opt/perl/lib/$version, since 
6148 : /opt/perl/lib/perl5... would be redundant.
6149 : The default "style" setting is made in installstyle.U
6150 case "$installstyle" in
6151 *lib/perl5*) set dflt privlib lib/$package/$version ;;
6152 *)       set dflt privlib lib/$version ;;
6153 esac
6154 eval $prefixit
6155 $cat <<EOM
6156
6157 There are some auxiliary files for $package that need to be put into a
6158 private library directory that is accessible by everyone.
6159
6160 EOM
6161 fn=d~+
6162 rp='Pathname where the private library files will reside?'
6163 . ./getfile
6164 privlib="$ans"
6165 privlibexp="$ansexp"
6166 : Change installation prefix, if necessary.
6167 if $test X"$prefix" != X"$installprefix"; then
6168         installprivlib=`echo $privlibexp | sed "s#^$prefix#$installprefix#"`
6169 else
6170         installprivlib="$privlibexp"
6171 fi
6172
6173 : set the prefixup variable, to restore leading tilda escape
6174 prefixup='case "$prefixexp" in
6175 "$prefix") ;;
6176 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
6177 esac'
6178
6179 : determine where public architecture dependent libraries go
6180 set archlib archlib
6181 eval $prefixit
6182 : privlib default is /usr/local/lib/$package/$version
6183 : archlib default is /usr/local/lib/$package/$version/$archname
6184 : privlib may have an optional trailing /share.
6185 tdflt=`echo $privlib | $sed 's,/share$,,'`
6186 tdflt=$tdflt/$archname
6187 case "$archlib" in
6188 '')     dflt=$tdflt
6189         ;;
6190 *)      dflt="$archlib"
6191     ;;
6192 esac
6193 $cat <<EOM
6194
6195 $spackage contains architecture-dependent library files.  If you are
6196 sharing libraries in a heterogeneous environment, you might store
6197 these files in a separate location.  Otherwise, you can just include
6198 them with the rest of the public library files.
6199
6200 EOM
6201 fn=d+~
6202 rp='Where do you want to put the public architecture-dependent libraries?'
6203 . ./getfile
6204 archlib="$ans"
6205 archlibexp="$ansexp"
6206 if $test X"$archlib" = X"$privlib"; then
6207         d_archlib="$undef"
6208 else
6209         d_archlib="$define"
6210 fi
6211 : Change installation prefix, if necessary.
6212 if $test X"$prefix" != X"$installprefix"; then
6213         installarchlib=`echo $archlibexp | sed "s#^$prefix#$installprefix#"`
6214 else
6215         installarchlib="$archlibexp"
6216 fi
6217
6218
6219 : Binary compatibility with 5.005 is not possible for builds
6220 : with advanced features
6221 case "$usethreads$usemultiplicity" in
6222 *define*)
6223         bincompat5005="$undef"
6224         d_bincompat5005="$undef"
6225         ;;
6226 *)      $cat <<EOM
6227
6228 This version of Perl can be compiled for binary compatibility with 5.005.
6229 If you decide to do so, you will be able to continue using most of the
6230 extensions that were compiled for Perl 5.005.
6231
6232 EOM
6233         case "$bincompat5005$d_bincompat5005" in
6234         *"$undef"*) dflt=n ;;
6235         *) dflt=y ;;
6236         esac
6237         rp='Binary compatibility with Perl 5.005?'
6238         . ./myread
6239         case "$ans" in
6240         y*) val="$define" ;;
6241         *)  val="$undef" ;;
6242         esac
6243         set d_bincompat5005
6244         eval $setvar
6245         case "$d_bincompat5005" in
6246         "$define")
6247                 bincompat5005="$define"
6248                 ;;
6249         *)      bincompat5005="$undef"
6250                 d_bincompat5005="$undef"
6251                 ;;
6252         esac
6253         ;;
6254 esac
6255
6256
6257 : see if setuid scripts can be secure
6258 $cat <<EOM
6259
6260 Some kernels have a bug that prevents setuid #! scripts from being
6261 secure.  Some sites have disabled setuid #! scripts because of this.
6262
6263 First let's decide if your kernel supports secure setuid #! scripts.
6264 (If setuid #! scripts would be secure but have been disabled anyway,
6265 don't say that they are secure if asked.)
6266
6267 EOM
6268
6269 val="$undef"
6270 if $test -d /dev/fd; then
6271         echo "#!$ls" >reflect
6272         chmod +x,u+s reflect
6273         ./reflect >flect 2>&1
6274         if $contains "/dev/fd" flect >/dev/null; then
6275                 echo "Congratulations, your kernel has secure setuid scripts!" >&4
6276                 val="$define"
6277         else
6278                 $cat <<EOM
6279 If you are not sure if they are secure, I can check but I'll need a
6280 username and password different from the one you are using right now.
6281 If you don't have such a username or don't want me to test, simply
6282 enter 'none'.
6283
6284 EOM
6285                 rp='Other username to test security of setuid scripts with?'
6286                 dflt='none'
6287                 . ./myread
6288                 case "$ans" in
6289                 n|none)
6290                         case "$d_suidsafe" in
6291                         '')     echo "I'll assume setuid scripts are *not* secure." >&4
6292                                 dflt=n;;
6293                         "$undef")
6294                                 echo "Well, the $hint value is *not* secure." >&4
6295                                 dflt=n;;
6296                         *)      echo "Well, the $hint value *is* secure." >&4
6297                                 dflt=y;;
6298                         esac
6299                         ;;
6300                 *)
6301                         $rm -f reflect flect
6302                         echo "#!$ls" >reflect
6303                         chmod +x,u+s reflect
6304                         echo >flect
6305                         chmod a+w flect
6306                         echo '"su" will (probably) prompt you for '"$ans's password."
6307                         su $ans -c './reflect >flect'
6308                         if $contains "/dev/fd" flect >/dev/null; then
6309                                 echo "Okay, it looks like setuid scripts are secure." >&4
6310                                 dflt=y
6311                         else
6312                                 echo "I don't think setuid scripts are secure." >&4
6313                                 dflt=n
6314                         fi
6315                         ;;
6316                 esac
6317                 rp='Does your kernel have *secure* setuid scripts?'
6318                 . ./myread
6319                 case "$ans" in
6320                 [yY]*)  val="$define";;
6321                 *)      val="$undef";;
6322                 esac
6323         fi
6324 else
6325         echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
6326         echo "(That's for file descriptors, not floppy disks.)"
6327         val="$undef"
6328 fi
6329 set d_suidsafe
6330 eval $setvar
6331
6332 $rm -f reflect flect
6333
6334 : now see if they want to do setuid emulation
6335 echo " "
6336 val="$undef"
6337 case "$d_suidsafe" in
6338 "$define")
6339         val="$undef"
6340         echo "No need to emulate SUID scripts since they are secure here." >& 4
6341         ;;
6342 *)
6343         $cat <<EOM
6344 Some systems have disabled setuid scripts, especially systems where
6345 setuid scripts cannot be secure.  On systems where setuid scripts have
6346 been disabled, the setuid/setgid bits on scripts are currently
6347 useless.  It is possible for $package to detect those bits and emulate
6348 setuid/setgid in a secure fashion.  This emulation will only work if
6349 setuid scripts have been disabled in your kernel.
6350
6351 EOM
6352         case "$d_dosuid" in
6353         "$define") dflt=y ;;
6354         *) dflt=n ;;
6355         esac
6356         rp="Do you want to do setuid/setgid emulation?"
6357         . ./myread
6358         case "$ans" in
6359         [yY]*)  val="$define";;
6360         *)      val="$undef";;
6361         esac
6362         ;;
6363 esac
6364 set d_dosuid
6365 eval $setvar
6366
6367 : see if this is a malloc.h system
6368 set malloc.h i_malloc
6369 eval $inhdr
6370
6371 : see if stdlib is available
6372 set stdlib.h i_stdlib
6373 eval $inhdr
6374
6375 : determine which malloc to compile in
6376 echo " "
6377 case "$usemymalloc" in
6378 [yY]*|true|$define)     dflt='y' ;;
6379 [nN]*|false|$undef)     dflt='n' ;;
6380 *)      case "$ptrsize" in
6381         4) dflt='y' ;;
6382         *) dflt='n' ;;
6383         esac
6384         ;;
6385 esac
6386 rp="Do you wish to attempt to use the malloc that comes with $package?"
6387 . ./myread
6388 usemymalloc="$ans"
6389 case "$ans" in
6390 y*|true)
6391         usemymalloc='y'
6392         mallocsrc='malloc.c'
6393         mallocobj="malloc$_o"
6394         d_mymalloc="$define"
6395         case "$libs" in
6396         *-lmalloc*)
6397                 : Remove malloc from list of libraries to use
6398                 echo "Removing unneeded -lmalloc from library list" >&4
6399                 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
6400                 shift
6401                 libs="$*"
6402                 echo "libs = $libs" >&4
6403                 ;;
6404         esac
6405         ;;
6406 *)
6407         usemymalloc='n'
6408         mallocsrc=''
6409         mallocobj=''
6410         d_mymalloc="$undef"
6411         ;;
6412 esac
6413
6414 : compute the return types of malloc and free
6415 echo " "
6416 $cat >malloc.c <<END
6417 #$i_malloc I_MALLOC
6418 #$i_stdlib I_STDLIB
6419 #include <stdio.h>
6420 #include <sys/types.h>
6421 #ifdef I_MALLOC
6422 #include <malloc.h>
6423 #endif
6424 #ifdef I_STDLIB
6425 #include <stdlib.h>
6426 #endif
6427 #ifdef TRY_MALLOC
6428 void *malloc();
6429 #endif
6430 #ifdef TRY_FREE
6431 void free();
6432 #endif
6433 END
6434 case "$malloctype" in
6435 '')
6436         if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
6437                 malloctype='void *'
6438         else
6439                 malloctype='char *'
6440         fi
6441         ;;
6442 esac
6443 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
6444
6445 case "$freetype" in
6446 '')
6447         if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
6448                 freetype='void'
6449         else
6450                 freetype='int'
6451         fi
6452         ;;
6453 esac
6454 echo "Your system uses $freetype free(), it would seem." >&4
6455 $rm -f malloc.[co]
6456 $cat <<EOM
6457
6458 After $package is installed, you may wish to install various
6459 add-on modules and utilities.  Typically, these add-ons will
6460 be installed under $prefix with the rest
6461 of this package.  However, you may wish to install such add-ons
6462 elsewhere under a different prefix.
6463
6464 If you do not wish to put everything under a single prefix, that's
6465 ok.  You will be prompted for the individual locations; this siteprefix
6466 is only used to suggest the defaults.
6467
6468 The default should be fine for most people.
6469
6470 EOM
6471 fn=d~+
6472 rp='Installation prefix to use for add-on modules and utilities?'
6473 : XXX Here might be another good place for an installstyle setting.
6474 case "$siteprefix" in
6475 '') dflt=$prefix ;;
6476 *)  dflt=$siteprefix ;;
6477 esac
6478 . ./getfile
6479 : XXX Prefixit unit does not yet support siteprefix and vendorprefix
6480 oldsiteprefix=''
6481 case "$siteprefix" in
6482 '') ;;
6483 *)      case "$ans" in
6484         "$prefix") ;;
6485         *) oldsiteprefix="$prefix";;
6486         esac
6487         ;;
6488 esac
6489 siteprefix="$ans"
6490 siteprefixexp="$ansexp"
6491
6492 : determine where site specific libraries go.
6493 : Usual default is /usr/local/lib/perl5/site_perl/$version
6494 : The default "style" setting is made in installstyle.U
6495 : XXX No longer works with Prefixit stuff.
6496 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6497 case "$sitelib" in
6498 '') case "$installstyle" in
6499         *lib/perl5*) dflt=$siteprefix/lib/$package/site_$prog/$version ;;
6500         *)       dflt=$siteprefix/lib/site_$prog/$version ;;
6501         esac
6502         ;;
6503 *)      dflt="$sitelib"
6504         ;;
6505 esac
6506 $cat <<EOM
6507
6508 The installation process will create a directory for
6509 site-specific extensions and modules.  Most users find it convenient
6510 to place all site-specific files in this directory rather than in the
6511 main distribution directory.
6512
6513 EOM
6514 fn=d~+
6515 rp='Pathname for the site-specific library files?'
6516 . ./getfile
6517 sitelib="$ans"
6518 sitelibexp="$ansexp"
6519 sitelib_stem=`echo "$sitelibexp" | sed "s,/$version$,,"`
6520 : Change installation prefix, if necessary.
6521 if $test X"$prefix" != X"$installprefix"; then
6522         installsitelib=`echo $sitelibexp | $sed "s#^$prefix#$installprefix#"`
6523 else
6524         installsitelib="$sitelibexp"
6525 fi
6526
6527 : determine where site specific architecture-dependent libraries go.
6528 : sitelib  default is /usr/local/lib/perl5/site_perl/$version
6529 : sitearch default is /usr/local/lib/perl5/site_perl/$version/$archname
6530 : sitelib may have an optional trailing /share.
6531 case "$sitearch" in
6532 '')     dflt=`echo $sitelib | $sed 's,/share$,,'`
6533         dflt="$dflt/$archname"
6534         ;;
6535 *)      dflt="$sitearch"
6536         ;;
6537 esac
6538 set sitearch sitearch none
6539 eval $prefixit
6540 $cat <<EOM
6541
6542 The installation process will also create a directory for
6543 architecture-dependent site-specific extensions and modules.
6544
6545 EOM
6546 fn=d~+
6547 rp='Pathname for the site-specific architecture-dependent library files?'
6548 . ./getfile
6549 sitearch="$ans"
6550 sitearchexp="$ansexp"
6551 : Change installation prefix, if necessary.
6552 if $test X"$prefix" != X"$installprefix"; then
6553         installsitearch=`echo $sitearchexp | sed "s#^$prefix#$installprefix#"`
6554 else
6555         installsitearch="$sitearchexp"
6556 fi
6557
6558 $cat <<EOM
6559
6560 The installation process will also create a directory for
6561 vendor-supplied add-ons.  Vendors who supply perl with their system
6562 may find it convenient to place all vendor-supplied files in this
6563 directory rather than in the main distribution directory.  This will
6564 ease upgrades between binary-compatible maintenance versions of perl.
6565
6566 Of course you may also use these directories in whatever way you see
6567 fit.  For example, you might use them to access modules shared over a
6568 company-wide network.
6569
6570 The default answer should be fine for most people.
6571 This causes further questions about vendor add-ons to be skipped
6572 and no vendor-specific directories will be configured for perl.
6573
6574 EOM
6575 rp='Do you want to configure vendor-specific add-on directories?'
6576 case "$usevendorprefix" in
6577 define|true|[yY]*) dflt=y ;;
6578 *)      : User may have set vendorprefix directly on Configure command line.
6579         case "$vendorprefix" in
6580         ''|' ') dflt=n ;;
6581         *)      dflt=y ;;
6582         esac
6583         ;;
6584 esac
6585 . ./myread
6586 case "$ans" in
6587 [yY]*)  fn=d~+
6588         rp='Installation prefix to use for vendor-supplied add-ons?'
6589         case "$vendorprefix" in
6590         '') dflt='' ;;
6591         *)  dflt=$vendorprefix ;;
6592         esac
6593         . ./getfile
6594         : XXX Prefixit unit does not yet support siteprefix and vendorprefix
6595         oldvendorprefix=''
6596         case "$vendorprefix" in
6597         '') ;;
6598         *)      case "$ans" in
6599                 "$prefix") ;;
6600                 *) oldvendorprefix="$prefix";;
6601                 esac
6602                 ;;
6603         esac
6604         usevendorprefix="$define"
6605         vendorprefix="$ans"
6606         vendorprefixexp="$ansexp"
6607         ;;
6608 *)      usevendorprefix="$undef"
6609         vendorprefix=''
6610         vendorprefixexp=''
6611         ;;
6612 esac
6613
6614 case "$vendorprefix" in
6615 '')     d_vendorlib="$undef"
6616         vendorlib=''
6617         vendorlibexp=''
6618         ;;
6619 *)      d_vendorlib="$define"
6620         : determine where vendor-supplied modules go.
6621         : Usual default is /usr/local/lib/perl5/vendor_perl/$version
6622         case "$vendorlib" in
6623         '')
6624                 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6625                 case "$installstyle" in
6626                 *lib/perl5*) dflt=$vendorprefix/lib/$package/vendor_$prog/$version ;;
6627                 *)           dflt=$vendorprefix/lib/vendor_$prog/$version ;;
6628                 esac
6629                 ;;
6630         *)      dflt="$vendorlib"
6631                 ;;
6632         esac
6633         fn=d~+
6634         rp='Pathname for the vendor-supplied library files?'
6635         . ./getfile
6636         vendorlib="$ans"
6637         vendorlibexp="$ansexp"
6638         ;;
6639 esac
6640 vendorlib_stem=`echo "$vendorlibexp" | sed "s,/$version$,,"`
6641 : Change installation prefix, if necessary.
6642 if $test X"$prefix" != X"$installprefix"; then
6643         installvendorlib=`echo $vendorlibexp | $sed "s#^$prefix#$installprefix#"`
6644 else
6645         installvendorlib="$vendorlibexp"
6646 fi
6647
6648 case "$vendorprefix" in
6649 '')     d_vendorarch="$undef"
6650         vendorarch=''
6651         vendorarchexp=''
6652         ;;
6653 *)      d_vendorarch="$define"
6654         : determine where vendor-supplied architecture-dependent libraries go.
6655         : vendorlib  default is /usr/local/lib/perl5/vendor_perl/$version
6656         : vendorarch default is /usr/local/lib/perl5/vendor_perl/$version/$archname
6657         : vendorlib may have an optional trailing /share.
6658         case "$vendorarch" in
6659         '')     dflt=`echo $vendorlib | $sed 's,/share$,,'`
6660                 dflt="$dflt/$archname"
6661                 ;;
6662         *)      dflt="$vendorarch" ;;
6663         esac
6664         fn=d~+
6665         rp='Pathname for vendor-supplied architecture-dependent files?'
6666         . ./getfile
6667         vendorarch="$ans"
6668         vendorarchexp="$ansexp"
6669         ;;
6670 esac
6671 : Change installation prefix, if necessary.
6672 if $test X"$prefix" != X"$installprefix"; then
6673         installvendorarch=`echo $vendorarchexp | sed "s#^$prefix#$installprefix#"`
6674 else
6675         installvendorarch="$vendorarchexp"
6676 fi
6677
6678 : Final catch-all directories to search
6679 $cat <<EOM
6680
6681 Lastly, you can have perl look in other directories for extensions and
6682 modules in addition to those already specified.
6683 These directories will be searched after 
6684         $sitearch 
6685         $sitelib 
6686 EOM
6687 test X"$vendorlib" != "X" && echo '     ' $vendorlib
6688 test X"$vendorarch" != "X" && echo '    ' $vendorarch
6689 echo ' '
6690 case "$otherlibdirs" in
6691 ''|' ') dflt='none' ;;
6692 *)      dflt="$otherlibdirs" ;;
6693 esac
6694 $cat <<EOM
6695 Enter a colon-separated set of extra paths to include in perl's @INC
6696 search path, or enter 'none' for no extra paths.
6697
6698 EOM
6699
6700 rp='Colon-separated list of additional directories for perl to search?'
6701 . ./myread
6702 case "$ans" in
6703 ' '|''|none)    otherlibdirs=' ' ;;     
6704 *)      otherlibdirs="$ans" ;;
6705 esac
6706 case "$otherlibdirs" in
6707 ' ') val=$undef ;;
6708 *)      val=$define ;;
6709 esac
6710 set d_perl_otherlibdirs
6711 eval $setvar
6712
6713 : Cruising for prototypes
6714 echo " "
6715 echo "Checking out function prototypes..." >&4
6716 $cat >prototype.c <<'EOCP'
6717 int main(int argc, char *argv[]) {
6718         exit(0);}
6719 EOCP
6720 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
6721         echo "Your C compiler appears to support function prototypes."
6722         val="$define"
6723 else
6724         echo "Your C compiler doesn't seem to understand function prototypes."
6725         val="$undef"
6726 fi
6727 set prototype
6728 eval $setvar
6729 $rm -f prototype*
6730
6731 case "$prototype" in
6732 "$define") ;;
6733 *)      ansi2knr='ansi2knr'
6734         echo " "
6735         cat <<EOM >&4
6736
6737 $me:  FATAL ERROR:
6738 This version of $package can only be compiled by a compiler that 
6739 understands function prototypes.  Unfortunately, your C compiler 
6740         $cc $ccflags
6741 doesn't seem to understand them.  Sorry about that.
6742
6743 If GNU cc is available for your system, perhaps you could try that instead.  
6744
6745 Eventually, we hope to support building Perl with pre-ANSI compilers.
6746 If you would like to help in that effort, please contact <perlbug@perl.org>.
6747
6748 Aborting Configure now.
6749 EOM
6750         exit 2
6751         ;;
6752 esac
6753
6754 : determine where public executables go
6755 echo " "
6756 set dflt bin bin
6757 eval $prefixit
6758 fn=d~
6759 rp='Pathname where the public executables will reside?'
6760 . ./getfile
6761 if $test "X$ansexp" != "X$binexp"; then
6762         installbin=''
6763 fi
6764 bin="$ans"
6765 binexp="$ansexp"
6766 : Change installation prefix, if necessary.
6767 : XXX Bug? -- ignores Configure -Dinstallprefix setting.
6768 if $test X"$prefix" != X"$installprefix"; then
6769         installbin=`echo $binexp | sed "s#^$prefix#$installprefix#"`
6770 else
6771         installbin="$binexp"
6772 fi
6773
6774 echo " "
6775 case "$extras" in
6776 '') dflt='n';;
6777 *) dflt='y';;
6778 esac
6779 cat <<EOM
6780 Perl can be built with extra modules or bundles of modules which
6781 will be fetched from the CPAN and installed alongside Perl.
6782
6783 Notice that you will need access to the CPAN; either via the Internet,
6784 or a local copy, for example a CD-ROM or a local CPAN mirror.  (You will
6785 be asked later to configure the CPAN.pm module which will in turn do
6786 the installation of the rest of the extra modules or bundles.)
6787
6788 Notice also that if the modules require any external software such as
6789 libraries and headers (the libz library and the zlib.h header for the
6790 Compress::Zlib module, for example) you MUST have any such software
6791 already installed, this configuration process will NOT install such
6792 things for you.
6793
6794 If this doesn't make any sense to you, just accept the default '$dflt'.
6795 EOM
6796 rp='Install any extra modules (y or n)?'
6797 . ./myread
6798 case "$ans" in
6799 y|Y)
6800         cat <<EOM
6801
6802 Please list any extra modules or bundles to be installed from CPAN,
6803 with spaces between the names.  The names can be in any format the
6804 'install' command of CPAN.pm will understand.  (Answer 'none',
6805 without the quotes, to install no extra modules or bundles.)
6806 EOM
6807         rp='Extras?'
6808         dflt="$extras"
6809         . ./myread
6810         extras="$ans"
6811 esac
6812 case "$extras" in
6813 ''|'none')
6814         val=''
6815         $rm -f ../extras.lst
6816         ;;
6817 *)      echo "(Saving the list of extras for later...)"
6818         echo "$extras" > ../extras.lst
6819         val="'$extras'"
6820         ;;
6821 esac
6822 set extras
6823 eval $setvar
6824 echo " "
6825
6826 : Find perl5.005 or later.
6827 echo "Looking for a previously installed perl5.005 or later... "
6828 case "$perl5" in
6829 '')     for tdir in `echo "$binexp$path_sep$PATH" | $sed "s/$path_sep/ /g"`; do
6830                 : Check if this perl is recent and can load a simple module
6831                 if $test -x $tdir/perl$exe_ext && $tdir/perl -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6832                         perl5=$tdir/perl
6833                         break;
6834                 elif $test -x $tdir/perl5$exe_ext && $tdir/perl5 -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6835                         perl5=$tdir/perl5
6836                         break;
6837                 fi
6838         done
6839         ;;
6840 *)      perl5="$perl5"
6841         ;;
6842 esac
6843 case "$perl5" in
6844 '')     echo "None found.  That's ok.";;
6845 *)      echo "Using $perl5." ;;
6846 esac
6847
6848 : Determine list of previous versions to include in @INC
6849 $cat > getverlist <<EOPL
6850 #!$perl5 -w
6851 use File::Basename;
6852 \$api_versionstring = "$api_versionstring";
6853 \$version = "$version";
6854 \$stem = "$sitelib_stem";
6855 \$archname = "$archname";
6856 EOPL
6857         $cat >> getverlist <<'EOPL'
6858 # Can't have leading @ because metaconfig interprets it as a command!
6859 ;@inc_version_list=();
6860 # XXX Redo to do opendir/readdir? 
6861 if (-d $stem) {
6862     chdir($stem);
6863     ;@candidates = glob("5.*");
6864 }
6865 else {
6866     ;@candidates = ();
6867 }
6868
6869 # XXX ToDo:  These comparisons must be reworked when two-digit
6870 # subversions come along, so that 5.7.10 compares as greater than
6871 # 5.7.3!  By that time, hope that 5.6.x is sufficiently
6872 # widespread that we can use the built-in version vectors rather
6873 # than reinventing them here.  For 5.6.0, however, we must
6874 # assume this script will likely be run by 5.005_0x.  --AD 1/2000.
6875 foreach $d (@candidates) {
6876     if ($d lt $version) {
6877         if ($d ge $api_versionstring) {
6878             unshift(@inc_version_list, grep { -d } "$d/$archname", $d);
6879         }
6880         elsif ($d ge "5.005") {
6881             unshift(@inc_version_list, grep { -d } $d);
6882         }
6883     }
6884     else {
6885         # Skip newer version.  I.e. don't look in
6886         # 5.7.0 if we're installing 5.6.1.
6887     }
6888 }
6889
6890 if (@inc_version_list) {
6891     print join(' ', @inc_version_list);
6892 }
6893 else {
6894     # Blank space to preserve value for next Configure run.
6895     print " ";
6896 }
6897 EOPL
6898 chmod +x getverlist
6899 case "$inc_version_list" in
6900 '')     if test -x "$perl5$exe_ext"; then
6901                 dflt=`$perl5 getverlist`
6902         else
6903                 dflt='none'
6904         fi
6905         ;;
6906 $undef) dflt='none' ;;
6907 *)  eval dflt=\"$inc_version_list\" ;;
6908 esac
6909 case "$dflt" in
6910 ''|' ') dflt=none ;;
6911 esac
6912 case "$dflt" in
6913 5.005) case "$bincompat5005" in
6914        $define|true|[yY]*) ;;
6915        *) dflt=none ;;
6916        esac
6917        ;;
6918 esac
6919 $cat <<'EOM'
6920
6921 In order to ease the process of upgrading, this version of perl 
6922 can be configured to use modules built and installed with earlier 
6923 versions of perl that were installed under $prefix.  Specify here
6924 the list of earlier versions that this version of perl should check.
6925 If Configure detected no earlier versions of perl installed under
6926 $prefix, then the list will be empty.  Answer 'none' to tell perl
6927 to not search earlier versions.
6928
6929 The default should almost always be sensible, so if you're not sure,
6930 just accept the default.
6931 EOM
6932
6933 rp='List of earlier versions to include in @INC?'
6934 . ./myread
6935 case "$ans" in
6936 [Nn]one|''|' ') inc_version_list=' ' ;;
6937 *) inc_version_list="$ans" ;;
6938 esac
6939 case "$inc_version_list" in
6940 ''|' ') 
6941         inc_version_list_init='0';;
6942 *)      inc_version_list_init=`echo $inc_version_list |
6943                 $sed -e 's/^/"/' -e 's/ /","/g' -e 's/$/",0/'`
6944         ;;
6945 esac
6946 $rm -f getverlist
6947
6948 : determine whether to install perl also as /usr/bin/perl
6949
6950 echo " "
6951 if $test -d /usr/bin -a "X$installbin" != X/usr/bin; then
6952         $cat <<EOM
6953 Many scripts expect perl to be installed as /usr/bin/perl.
6954 I can install the perl you are about to compile also as /usr/bin/perl
6955 (in addition to $installbin/perl).
6956 EOM
6957         case "$installusrbinperl" in
6958         "$undef"|[nN]*) dflt='n';;
6959         *)              dflt='y';;
6960         esac
6961         rp="Do you want to install perl as /usr/bin/perl?"
6962         . ./myread
6963         case "$ans" in
6964         [yY]*)  val="$define";;
6965         *)      val="$undef" ;;
6966         esac
6967 else
6968         val="$undef"
6969 fi
6970 set installusrbinperl
6971 eval $setvar
6972
6973 : see if dld is available
6974 set dld.h i_dld
6975 eval $inhdr
6976
6977 : see if dlopen exists
6978 xxx_runnm="$runnm"
6979 runnm=false
6980 set dlopen d_dlopen
6981 eval $inlibc
6982 runnm="$xxx_runnm"
6983
6984 : determine which dynamic loading, if any, to compile in
6985 echo " "
6986 dldir="ext/DynaLoader"
6987 case "$usedl" in
6988 $define|y|true)
6989         dflt='y'
6990         usedl="$define"
6991         ;;
6992 $undef|n|false)
6993         dflt='n'
6994         usedl="$undef"
6995         ;;
6996 *) 
6997         dflt='n'
6998         case "$d_dlopen" in
6999             $define) dflt='y' ;;
7000         esac
7001         case "$i_dld" in
7002             $define) dflt='y' ;;
7003         esac
7004         : Does a dl_xxx.xs file exist for this operating system
7005         $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
7006         ;;
7007 esac
7008 rp="Do you wish to use dynamic loading?"
7009 . ./myread
7010 usedl="$ans"
7011 case "$ans" in
7012 y*) usedl="$define"
7013         case "$dlsrc" in
7014         '')
7015                 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
7016                         dflt="$dldir/dl_${osname}.xs"
7017                 elif $test "$d_dlopen" = "$define" ; then
7018                         dflt="$dldir/dl_dlopen.xs"
7019                 elif $test "$i_dld" = "$define" ; then
7020                         dflt="$dldir/dl_dld.xs"
7021                 else
7022                         dflt=''
7023                 fi
7024                 ;;
7025         *)      dflt="$dldir/$dlsrc"
7026                 ;;
7027         esac
7028     echo "The following dynamic loading files are available:"
7029         : Can not go over to $dldir because getfile has path hard-coded in.
7030         tdir=`pwd`; cd $rsrc; $ls -C $dldir/dl*.xs; cd $tdir
7031         rp="Source file to use for dynamic loading"
7032         fn="fne"
7033         gfpth="$src"
7034         . ./getfile
7035         usedl="$define"
7036         : emulate basename
7037         dlsrc=`echo $ans | $sed -e 's%.*/\([^/]*\)$%\1%'`
7038
7039         $cat << EOM
7040
7041 Some systems may require passing special flags to $cc -c to
7042 compile modules that will be used to create a shared library.
7043 To use no flags, say "none".
7044
7045 EOM
7046     case "$cccdlflags" in
7047     '') case "$gccversion" in
7048                 '') case "$osname" in
7049                         hpux)   dflt='+z' ;;
7050                         next)   dflt='none' ;;
7051                         irix*)  dflt='-KPIC' ;;
7052                         svr4*|esix*|solaris|nonstopux) dflt='-KPIC' ;;
7053                         sunos)  dflt='-pic' ;;
7054                         *)      dflt='none' ;;
7055                     esac
7056                         ;;
7057                 *)  case "$osname" in
7058                         darwin) dflt='none' ;;
7059                         svr4*|esix*|solaris|nonstopux) dflt='-fPIC' ;;
7060                         *)      dflt='-fpic' ;;
7061                     esac ;;
7062             esac ;;
7063         ' ') dflt='none' ;;
7064     *)  dflt="$cccdlflags" ;;
7065     esac
7066     rp="Any special flags to pass to $cc -c to compile shared library modules?"
7067     . ./myread
7068     case "$ans" in
7069     none) cccdlflags=' ' ;;
7070     *) cccdlflags="$ans" ;;
7071     esac
7072
7073     cat << EOM
7074
7075 Some systems use ld to create libraries that can be dynamically loaded,
7076 while other systems (such as those using ELF) use $cc.
7077
7078 EOM
7079         case "$ld" in
7080         '')     $cat >try.c <<'EOM'
7081 /* Test for whether ELF binaries are produced */
7082 #include <fcntl.h>
7083 #include <stdlib.h>
7084 int main() {
7085         char b[4];
7086         int i = open("a.out",O_RDONLY);
7087         if(i == -1) 
7088                 exit(1); /* fail */
7089         if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
7090                 exit(0); /* succeed (yes, it's ELF) */
7091         else
7092                 exit(1); /* fail */
7093 }
7094 EOM
7095                 if $cc $ccflags $ldflags try.c >/dev/null 2>&1 && $run ./a.out; then
7096                         cat <<EOM
7097 You appear to have ELF support.  I'll use $cc to build dynamic libraries.
7098 EOM
7099                         dflt="$cc"
7100                 else
7101                         echo "I'll use ld to build dynamic libraries."
7102                         dflt='ld'
7103                 fi
7104                 rm -f try.c a.out
7105                 ;;
7106         *)      dflt="$ld"
7107                 ;;
7108         esac
7109
7110     rp="What command should be used to create dynamic libraries?"
7111     . ./myread
7112         ld="$ans"
7113
7114     cat << EOM
7115
7116 Some systems may require passing special flags to $ld to create a
7117 library that can be dynamically loaded.  If your ld flags include
7118 -L/other/path options to locate libraries outside your loader's normal
7119 search path, you may need to specify those -L options here as well.  To
7120 use no flags, say "none".
7121
7122 EOM
7123     case "$lddlflags" in
7124     '') case "$osname" in
7125                         beos) dflt='-nostart' ;;
7126                         hpux) dflt='-b';
7127                               case "$gccversion" in
7128                               '') dflt="$dflt +vnocompatwarnings" ;;
7129                               esac
7130                               ;;        
7131                         linux|irix*)    dflt='-shared' ;;
7132                         next)  dflt='none' ;;
7133                         solaris) dflt='-G' ;;
7134                         sunos) dflt='-assert nodefinitions' ;;
7135                         svr4*|esix*|nonstopux) dflt="-G $ldflags" ;;
7136                 *)     dflt='none' ;;
7137                         esac
7138                         ;;
7139     *) dflt="$lddlflags" ;;
7140     esac
7141
7142         : Try to guess additional flags to pick up local libraries.
7143         : Be careful not to append to a plain 'none'
7144         case "$dflt" in
7145         none) dflt='' ;;
7146         esac
7147         for thisflag in $ldflags; do
7148                 case "$thisflag" in
7149                 -L*|-R*)
7150                         case " $dflt " in
7151                         *" $thisflag "*) ;;
7152                         *) dflt="$dflt $thisflag" ;;
7153                         esac
7154                         ;;
7155                 esac
7156         done
7157
7158         case "$dflt" in
7159         ''|' ') dflt='none' ;;
7160         esac
7161
7162     rp="Any special flags to pass to $ld to create a dynamically loaded library?"
7163     . ./myread
7164     case "$ans" in
7165     none) lddlflags=' ' ;;
7166     *) lddlflags="$ans" ;;
7167     esac
7168
7169         cat <<EOM
7170
7171 Some systems may require passing special flags to $cc to indicate that
7172 the resulting executable will use dynamic linking.  To use no flags,
7173 say "none".
7174
7175 EOM
7176     case "$ccdlflags" in
7177     '') case "$osname" in
7178                 hpux)   dflt='-Wl,-E' ;;
7179                 linux)  dflt='-rdynamic' ;;
7180                 next)   dflt='none' ;;
7181                 sunos)  dflt='none' ;;
7182                 *)      dflt='none' ;;
7183             esac ;;
7184     ' ')  dflt='none' ;;
7185     *)  dflt="$ccdlflags" ;;
7186     esac
7187     rp="Any special flags to pass to $cc to use dynamic linking?"
7188     . ./myread
7189     case "$ans" in
7190     none) ccdlflags=' ' ;;
7191     *) ccdlflags="$ans" ;;
7192     esac
7193     ;;
7194 *)  usedl="$undef"
7195         ld='ld'
7196     dlsrc='dl_none.xs'
7197     lddlflags=''
7198     ccdlflags=''
7199     ;;
7200 esac
7201
7202 also=''
7203 case "$usedl" in
7204 $undef)
7205         # No dynamic loading being used, so don't bother even to prompt.
7206         useshrplib='false'
7207         ;;
7208 *)      case "$useshrplib" in
7209         '')     case "$osname" in
7210                 svr4*|nonstopux|dgux|dynixptx|esix|powerux|beos|cygwin*)
7211                         dflt=y
7212                         also='Building a shared libperl is required for dynamic loading to work on your system.'
7213                         ;;
7214                 next*)
7215                         case "$osvers" in
7216                         4*)     dflt=y
7217                                 also='Building a shared libperl is needed for MAB support.'
7218                                 ;;
7219                         *)      dflt=n
7220                                 ;;
7221                         esac
7222                         ;;
7223                 *)      dflt=n
7224                         ;;
7225                 esac
7226                 ;;
7227         $define|true|[Yy]*)
7228                 dflt=y
7229                 ;;
7230         *)      dflt=n
7231                 ;;
7232         esac
7233         $cat << EOM
7234
7235 The perl executable is normally obtained by linking perlmain.c with
7236 libperl${_a}, any static extensions (usually just DynaLoader), and
7237 any other libraries needed on this system (such as -lm, etc.).  Since
7238 your system supports dynamic loading, it is probably possible to build
7239 a shared libperl.$so.  If you will have more than one executable linked
7240 to libperl.$so, this will significantly reduce the size of each
7241 executable, but it may have a noticeable affect on performance.  The
7242 default is probably sensible for your system.
7243 $also
7244
7245 EOM
7246         rp="Build a shared libperl.$so (y/n)"
7247         . ./myread
7248         case "$ans" in
7249         true|$define|[Yy]*)
7250                 useshrplib='true'  ;;
7251         *)      useshrplib='false' ;;
7252         esac
7253         ;;
7254 esac
7255
7256 case "$useshrplib" in
7257 true)
7258         case "$libperl" in
7259         '')
7260                 # Figure out a good name for libperl.so.  Since it gets stored in
7261                 # a version-specific architecture-dependent library, the version
7262                 # number isn't really that important, except for making cc/ld happy.
7263                 #
7264                 # A name such as libperl.so.3.1
7265                 majmin="libperl.$so.$patchlevel.$subversion"
7266                 # A name such as libperl.so.301
7267                 majonly=`echo $patchlevel $subversion |
7268                         $awk '{printf "%d%02d", $1, $2}'`
7269                 majonly=libperl.$so.$majonly
7270                 # I'd prefer to keep the os-specific stuff here to a minimum, and
7271                 # rely on figuring it out from the naming of libc.
7272                 case "${osname}${osvers}" in
7273                 next4*)
7274                         dflt=libperl.5.$so
7275                         # XXX How handle the --version stuff for MAB?
7276                         ;;
7277                 linux*)  # ld won't link with a bare -lperl otherwise.
7278                         dflt=libperl.$so
7279                         ;;
7280                 cygwin*) # include version
7281                         dflt=`echo libperl$version | sed -e 's/\./_/g'`$lib_ext
7282                         ;;
7283                 *)      # Try to guess based on whether libc has major.minor.
7284                         case "$libc" in
7285                         *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
7286                         *libc.$so.[0-9]*) dflt=$majonly ;;
7287                         *)      dflt=libperl.$so ;;
7288                         esac
7289                         ;;
7290                 esac
7291                 ;;
7292         *)      dflt=$libperl
7293                 ;;
7294         esac
7295         cat << EOM
7296
7297 I need to select a good name for the shared libperl.  If your system uses
7298 library names with major and minor numbers, then you might want something
7299 like $majmin.  Alternatively, if your system uses a single version
7300 number for shared libraries, then you might want to use $majonly.
7301 Or, your system might be quite happy with a simple libperl.$so.
7302
7303 Since the shared libperl will get installed into a version-specific
7304 architecture-dependent directory, the version number of the shared perl
7305 library probably isn't important, so the default should be o.k.
7306
7307 EOM
7308         rp='What name do you want to give to the shared libperl?'
7309         . ./myread
7310         libperl=$ans
7311         echo "Ok, I'll use $libperl"
7312         ;;
7313 *)
7314         libperl="libperl${_a}"
7315         ;;
7316 esac
7317
7318 # Detect old use of shrpdir via undocumented Configure -Dshrpdir
7319 case "$shrpdir" in
7320 '') ;;
7321 *)      $cat >&4 <<EOM
7322 WARNING:  Use of the shrpdir variable for the installation location of
7323 the shared $libperl is not supported.  It was never documented and
7324 will not work in this version.  Let me (perlbug@perl.org)
7325 know of any problems this may cause.
7326
7327 EOM
7328         case "$shrpdir" in
7329         "$archlibexp/CORE")
7330                 $cat >&4 <<EOM
7331 But your current setting of $shrpdir is
7332 the default anyway, so it's harmless.
7333 EOM
7334                 ;;
7335         *)
7336                 $cat >&4 <<EOM
7337 Further, your current attempted setting of $shrpdir
7338 conflicts with the value of $archlibexp/CORE
7339 that installperl will use.
7340 EOM
7341                 ;;
7342         esac
7343         ;;
7344 esac
7345
7346 # How will the perl executable find the installed shared $libperl?
7347 # Add $xxx to ccdlflags.
7348 # If we can't figure out a command-line option, use $shrpenv to
7349 # set env LD_RUN_PATH.  The main perl makefile uses this.
7350 shrpdir=$archlibexp/CORE
7351 xxx=''
7352 tmp_shrpenv=''
7353 if "$useshrplib"; then
7354     case "$osname" in 
7355         aix)
7356                 # We'll set it in Makefile.SH...
7357                 ;;
7358         solaris|netbsd)
7359                 xxx="-R $shrpdir"
7360                 ;;
7361         freebsd)
7362                 xxx="-Wl,-R$shrpdir"
7363                 ;;
7364         linux|irix*|dec_osf)
7365                 xxx="-Wl,-rpath,$shrpdir"
7366                 ;;
7367         next)
7368                 # next doesn't like the default...
7369                 ;;
7370         beos)
7371                 # beos doesn't like the default, either.
7372                 ;;
7373         hpux*)
7374                 # hpux doesn't like the default, either.
7375                 tmp_shrpenv="env LDOPTS=\"+s +b${shrpdir}\""
7376                 ;;
7377         *)
7378                 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
7379                 ;;
7380         esac
7381         case "$xxx" in
7382         '') ;;
7383         *)      
7384                 # Only add $xxx if it isn't already in ccdlflags.
7385                 case " $ccdlflags " in
7386                 *" $xxx "*)     ;;
7387                 *)      ccdlflags="$ccdlflags $xxx"
7388                         cat <<EOM >&4
7389
7390 Adding $xxx to the flags
7391 passed to $ld so that the perl executable will find the 
7392 installed shared $libperl.
7393
7394 EOM
7395                         ;;
7396                 esac
7397                 ;;
7398         esac
7399 fi
7400 # Fix ccdlflags in AIX for building external extensions.
7401 # (For building Perl itself bare -bE:perl.exp is needed,
7402 #  Makefile.SH takes care of this.)
7403 case "$osname" in
7404 aix) ccdlflags="$ccdlflags -bE:$installarchlib/CORE/perl.exp" ;;
7405 esac
7406 # Respect a hint or command-line value.
7407 case "$shrpenv" in
7408 '') shrpenv="$tmp_shrpenv" ;;
7409 esac
7410 case "$ldlibpthname" in
7411 '')     ldlibpthname=LD_LIBRARY_PATH ;;
7412 none)   ldlibpthname='' ;;
7413 esac
7414
7415 : determine where manual pages are on this system
7416 echo " "
7417 case "$sysman" in
7418 '') 
7419         syspath='/usr/share/man/man1 /usr/man/man1'
7420         syspath="$syspath /usr/man/mann /usr/man/manl /usr/man/local/man1"
7421         syspath="$syspath /usr/man/u_man/man1"
7422         syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
7423         syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
7424         syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
7425         sysman=`./loc . /usr/man/man1 $syspath`
7426         ;;
7427 esac
7428 if $test -d "$sysman"; then
7429         echo "System manual is in $sysman." >&4
7430 else
7431         echo "Could not find manual pages in source form." >&4
7432 fi
7433
7434 : determine where manual pages go
7435 set man1dir man1dir none
7436 eval $prefixit
7437 $cat <<EOM
7438
7439 $spackage has manual pages available in source form.
7440 EOM
7441 case "$nroff" in
7442 nroff)
7443         echo "However, you don't have nroff, so they're probably useless to you."
7444         case "$man1dir" in
7445         '') man1dir="none";;
7446         esac;;
7447 esac
7448 echo "If you don't want the manual sources installed, answer 'none'."
7449 case "$man1dir" in
7450 ' ') dflt=none
7451         ;;
7452 '')
7453         lookpath="$prefixexp/share/man/man1"
7454         lookpath="$lookpath $prefixexp/man/man1 $prefixexp/man/l_man/man1"
7455         lookpath="$lookpath $prefixexp/man/p_man/man1"
7456         lookpath="$lookpath $prefixexp/man/u_man/man1"
7457         lookpath="$lookpath $prefixexp/man/man.1"
7458         case "$sysman" in
7459         */?_man*)       dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
7460         *)      dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
7461         esac
7462         set dflt
7463         eval $prefixup
7464         ;;
7465 *)  dflt="$man1dir"
7466         ;;
7467 esac
7468 echo " "
7469 fn=dn+~
7470 rp="Where do the main $spackage manual pages (source) go?"
7471 . ./getfile
7472 if $test "X$man1direxp" != "X$ansexp"; then
7473         installman1dir=''
7474 fi
7475 man1dir="$ans"
7476 man1direxp="$ansexp"
7477 case "$man1dir" in
7478 '')     man1dir=' '
7479         installman1dir='';;
7480 esac
7481
7482 : Change installation prefix, if necessary.
7483 if $test X"$prefix" != X"$installprefix"; then
7484         installman1dir=`echo $man1direxp | $sed "s#^$prefix#$installprefix#"`
7485 else
7486         installman1dir="$man1direxp"
7487 fi
7488
7489 : What suffix to use on installed man pages
7490
7491 case "$man1dir" in
7492 ' ')
7493         man1ext='0'
7494         ;;
7495 *)
7496         rp="What suffix should be used for the main $spackage man pages?"
7497         case "$man1ext" in
7498         '')     case "$man1dir" in
7499                 *1)  dflt=1 ;;
7500                 *1p) dflt=1p ;;
7501                 *1pm) dflt=1pm ;;
7502                 *l) dflt=l;;
7503                 *n) dflt=n;;
7504                 *o) dflt=o;;
7505                 *p) dflt=p;;
7506                 *C) dflt=C;;
7507                 *L) dflt=L;;
7508                 *L1) dflt=L1;;
7509                 *) dflt=1;;
7510                 esac
7511                 ;;
7512         *)      dflt="$man1ext";;
7513         esac
7514         . ./myread
7515         man1ext="$ans"
7516         ;;
7517 esac
7518
7519 : see if we can have long filenames
7520 echo " "
7521 first=123456789abcdef
7522 $rm -f $first
7523 if (echo hi >$first) 2>/dev/null; then
7524         if $test -f 123456789abcde; then
7525                 echo 'You cannot have filenames longer than 14 characters.  Sigh.' >&4
7526                 val="$undef"
7527         else
7528                 echo 'You can have filenames longer than 14 characters.'>&4
7529                 val="$define"
7530         fi
7531 else
7532         $cat <<'EOM'
7533 You can't have filenames longer than 14 chars.
7534 You can't even think about them!
7535 EOM
7536         val="$undef"
7537 fi 
7538 set d_flexfnam
7539 eval $setvar
7540 $rm -rf 123456789abcde*
7541
7542 : determine where library module manual pages go
7543 set man3dir man3dir none
7544 eval $prefixit
7545 $cat <<EOM
7546
7547 $spackage has manual pages for many of the library modules.
7548 EOM
7549
7550 case "$nroff" in
7551 nroff)
7552         $cat <<'EOM'
7553 However, you don't have nroff, so they're probably useless to you.
7554 EOM
7555         case "$man3dir" in
7556         '') man3dir="none";;
7557         esac;;
7558 esac
7559
7560 case "$d_flexfnam" in
7561 undef)
7562         $cat <<'EOM'
7563 However, your system can't handle the long file names like File::Basename.3. 
7564 EOM
7565         case "$man3dir" in
7566         '') man3dir="none";;
7567         esac;;
7568 esac
7569
7570 echo "If you don't want the manual sources installed, answer 'none'."
7571 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
7572 case "$man3dir" in
7573 '')     dflt=`echo "$man1dir" | $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'`
7574         if $test -d "$privlib/man/man3"; then
7575                 cat <<EOM >&4
7576
7577 WARNING:  Previous versions of perl installed man3 pages into
7578 $privlib/man/man3.  This version will suggest a 
7579 new default of $dflt.  
7580 EOM
7581                 tdflt=$dflt
7582                 dflt='n'
7583                 rp='Do you wish to preserve the old behavior?(y/n)'
7584                 . ./myread
7585                 case "$ans" in
7586                 y*) dflt="$privlib/man/man3" ;;
7587                 *)  dflt=$tdflt ;;
7588                 esac
7589     fi
7590         ;;
7591 *)      dflt="$man3dir" ;;
7592 esac
7593 case "$dflt" in
7594 ' ') dflt=none ;;
7595 esac
7596 echo " "
7597 fn=dn+~
7598 rp="Where do the $package library man pages (source) go?"
7599 . ./getfile
7600 man3dir="$ans"
7601 man3direxp="$ansexp"
7602 case "$man3dir" in
7603 '')     man3dir=' '
7604         installman3dir='';;
7605 esac
7606
7607 : Change installation prefix, if necessary.
7608 if $test X"$prefix" != X"$installprefix"; then
7609         installman3dir=`echo $man3direxp | $sed "s#^$prefix#$installprefix#"`
7610 else
7611         installman3dir="$man3direxp"
7612 fi
7613
7614 : What suffix to use on installed man pages
7615 case "$man3dir" in
7616 ' ')
7617         man3ext='0'
7618         ;;
7619 *)
7620         rp="What suffix should be used for the $package library man pages?"
7621         case "$man3ext" in
7622         '')     case "$man3dir" in
7623                 *3)  dflt=3 ;;
7624                 *3p) dflt=3p ;;
7625                 *3pm) dflt=3pm ;;
7626                 *l) dflt=l;;
7627                 *n) dflt=n;;
7628                 *o) dflt=o;;
7629                 *p) dflt=p;;
7630                 *C) dflt=C;;
7631                 *L) dflt=L;;
7632                 *L3) dflt=L3;;
7633                 *) dflt=3;;
7634                 esac
7635                 ;;
7636         *)      dflt="$man3ext";;
7637         esac
7638         . ./myread
7639         man3ext="$ans"
7640         ;;
7641 esac
7642
7643 : see if we have to deal with yellow pages, now NIS.
7644 if $test -d /usr/etc/yp || $test -d /etc/yp; then
7645         if $test -f /usr/etc/nibindd; then
7646                 echo " "
7647                 echo "I'm fairly confident you're on a NeXT."
7648                 echo " "
7649                 rp='Do you get the hosts file via NetInfo?'
7650                 dflt=y
7651                 case "$hostcat" in
7652                 nidump*) ;;
7653                 '') ;;
7654                 *) dflt=n;;
7655                 esac
7656                 . ./myread
7657                 case "$ans" in
7658                 y*) hostcat='nidump hosts .';;
7659                 *)      case "$hostcat" in
7660                         nidump*) hostcat='';;
7661                         esac
7662                         ;;
7663                 esac
7664         fi
7665         case "$hostcat" in
7666         nidump*) ;;
7667         *)
7668                 case "$hostcat" in
7669                 *ypcat*) dflt=y;;
7670                 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
7671                                 dflt=y
7672                         else
7673                                 dflt=n
7674                         fi;;
7675                 *) dflt=n;;
7676                 esac
7677                 echo " "
7678                 rp='Are you getting the hosts file via yellow pages?'
7679                 . ./myread
7680                 case "$ans" in
7681                 y*) hostcat='ypcat hosts';;
7682                 *) hostcat='cat /etc/hosts';;
7683                 esac
7684                 ;;
7685         esac
7686 fi
7687 case "$hostcat" in
7688 '') test -f /etc/hosts && hostcat='cat /etc/hosts';;
7689 esac
7690 case "$groupcat" in
7691 '') test -f /etc/group && groupcat='cat /etc/group';;
7692 esac
7693 case "$passcat" in
7694 '') test -f /etc/passwd && passcat='cat /etc/passwd';;
7695 esac
7696
7697 : now get the host name
7698 echo " "
7699 echo "Figuring out host name..." >&4
7700 case "$myhostname" in
7701 '') cont=true
7702         echo 'Maybe "hostname" will work...'
7703         if tans=`sh -c hostname 2>&1` ; then
7704                 myhostname=$tans
7705                 phostname=hostname
7706                 cont=''
7707         fi
7708         ;;
7709 *) cont='';;
7710 esac
7711 if $test "$cont"; then
7712         if ./xenix; then
7713                 echo 'Oh, dear.  Maybe "/etc/systemid" is the key...'
7714                 if tans=`cat /etc/systemid 2>&1` ; then
7715                         myhostname=$tans
7716                         phostname='cat /etc/systemid'
7717                         echo "Whadyaknow.  Xenix always was a bit strange..."
7718                         cont=''
7719                 fi
7720         elif $test -r /etc/systemid; then
7721                 echo "(What is a non-Xenix system doing with /etc/systemid?)"
7722         fi
7723 fi
7724 if $test "$cont"; then
7725         echo 'No, maybe "uuname -l" will work...'
7726         if tans=`sh -c 'uuname -l' 2>&1` ; then
7727                 myhostname=$tans
7728                 phostname='uuname -l'
7729         else
7730                 echo 'Strange.  Maybe "uname -n" will work...'
7731                 if tans=`sh -c 'uname -n' 2>&1` ; then
7732                         myhostname=$tans
7733                         phostname='uname -n'
7734                 else
7735                         echo 'Oh well, maybe I can mine it out of whoami.h...'
7736                         if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
7737                                 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
7738                                 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
7739                         else
7740                                 case "$myhostname" in
7741                                 '') echo "Does this machine have an identity crisis or something?"
7742                                         phostname='';;
7743                                 *)
7744                                         echo "Well, you said $myhostname before..."
7745                                         phostname='echo $myhostname';;
7746                                 esac
7747                         fi
7748                 fi
7749         fi
7750 fi
7751 : you do not want to know about this
7752 set $myhostname
7753 myhostname=$1
7754
7755 : verify guess
7756 if $test "$myhostname" ; then
7757         dflt=y
7758         rp='Your host name appears to be "'$myhostname'".'" Right?"
7759         . ./myread
7760         case "$ans" in
7761         y*) ;;
7762         *) myhostname='';;
7763         esac
7764 fi
7765
7766 : bad guess or no guess
7767 while $test "X$myhostname" = X ; do
7768         dflt=''
7769         rp="Please type the (one word) name of your host:"
7770         . ./myread
7771         myhostname="$ans"
7772 done
7773
7774 : translate upper to lower if necessary
7775 case "$myhostname" in
7776 *[A-Z]*)
7777         echo "(Normalizing case in your host name)"
7778         myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
7779         ;;
7780 esac
7781
7782 case "$myhostname" in
7783 *.*)
7784         dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
7785         myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
7786         echo "(Trimming domain name from host name--host name is now $myhostname)"
7787         ;;
7788 *) case "$mydomain" in
7789         '')
7790                 {
7791                         test "X$hostcat" = "Xypcat hosts" &&
7792                         ypmatch "$myhostname" hosts 2>/dev/null |\
7793                                 $sed -e 's/[     ]*#.*//; s/$/ /' > hosts && \
7794                         $test -s hosts
7795                 } || {
7796                         test "X$hostcat" != "X" &&
7797                         $hostcat | $sed -n -e "s/[       ]*#.*//; s/\$/ /
7798                                         /[       ]$myhostname[  . ]/p" > hosts
7799                 }
7800                 tmp_re="[       . ]"
7801                 if $test -f hosts; then
7802                         $test x`$awk "/[0-9].*[  ]$myhostname$tmp_re/ { sum++ }
7803                              END { print sum }" hosts` = x1 || tmp_re="[         ]"
7804                         dflt=.`$awk "/[0-9].*[   ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
7805                                 hosts | $sort | $uniq | \
7806                                 $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
7807                         case `$echo X$dflt` in
7808                         X*\ *)  echo "(Several hosts in the database matched hostname)"
7809                                 dflt=.
7810                                 ;;
7811                         X.) echo "(You do not have fully-qualified names in the hosts database)"
7812                                 ;;
7813                         esac
7814                 else
7815                         echo "(I cannot locate a hosts database anywhere)"
7816                         dflt=.
7817                 fi
7818                 case "$dflt" in
7819                 .)
7820                         tans=`./loc resolv.conf X /etc /usr/etc`
7821                         if $test -f "$tans"; then
7822                                 echo "(Attempting domain name extraction from $tans)"
7823                                 dflt=.`$sed -n -e 's/   / /g' \
7824                                   -e 's/^search  *\([^ ]*\).*/\1/p' $tans \
7825                                   | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
7826                                 case "$dflt" in
7827                                 .) dflt=.`$sed -n -e 's/        / /g' \
7828                                      -e 's/^domain  *\([^ ]*\).*/\1/p' $tans \
7829                                      | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
7830                                         ;;
7831                                 esac
7832                         fi
7833                         ;;
7834                 esac
7835                 case "$dflt" in
7836                 .) echo "(No help from resolv.conf either -- attempting clever guess)"
7837                         dflt=.`sh -c domainname 2>/dev/null`
7838                         case "$dflt" in
7839                         '') dflt='.';;
7840                         .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
7841                         esac
7842                         ;;
7843                 esac
7844                 case "$dflt$osname" in
7845                 .os390) echo "(Attempting domain name extraction from //'SYS1.TCPPARMS(TCPDATA)')"
7846                         dflt=.`awk '/^DOMAINORIGIN/ {print $2}' "//'SYS1.TCPPARMS(TCPDATA)'" 2>/dev/null`
7847                         ;;
7848                 esac
7849                 case "$dflt" in
7850                 .) echo "(Lost all hope -- silly guess then)"
7851                         dflt='.uucp'
7852                         ;;
7853                 esac
7854                 $rm -f hosts
7855                 ;;
7856         *) dflt="$mydomain";;
7857         esac;;
7858 esac
7859 echo " "
7860 rp="What is your domain name?"
7861 . ./myread
7862 tans="$ans"
7863 case "$ans" in
7864 '') ;;
7865 .*) ;;
7866 *) tans=".$tans";;
7867 esac
7868 mydomain="$tans"
7869
7870 : translate upper to lower if necessary
7871 case "$mydomain" in
7872 *[A-Z]*)
7873         echo "(Normalizing case in your domain name)"
7874         mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
7875         ;;
7876 esac
7877
7878 : a little sanity check here
7879 case "$phostname" in
7880 '') ;;
7881 *)
7882         case `$phostname | ./tr '[A-Z]' '[a-z]'` in
7883         $myhostname$mydomain|$myhostname) ;;
7884         *)
7885                 case "$phostname" in
7886                 sed*)
7887                         echo "(That doesn't agree with your whoami.h file, by the way.)"
7888                         ;;
7889                 *)
7890                         echo "(That doesn't agree with your $phostname command, by the way.)"
7891                         ;;
7892                 esac
7893         ;;
7894         esac
7895         ;;
7896 esac
7897
7898 $cat <<EOM
7899
7900 I need to get your e-mail address in Internet format if possible, i.e.
7901 something like user@host.domain. Please answer accurately since I have
7902 no easy means to double check it. The default value provided below
7903 is most probably close to reality but may not be valid from outside
7904 your organization...
7905
7906 EOM
7907 cont=x
7908 while test "$cont"; do
7909         case "$cf_email" in
7910         '') dflt="$cf_by@$myhostname$mydomain";;
7911         *) dflt="$cf_email";;
7912         esac
7913         rp='What is your e-mail address?'
7914         . ./myread
7915         cf_email="$ans"
7916         case "$cf_email" in
7917         *@*.*) cont='' ;;
7918         *)
7919                 rp='Address does not look like an Internet one.  Use it anyway?'
7920                 case "$fastread" in
7921                 yes) dflt=y ;;
7922                 *) dflt=n ;;
7923                 esac
7924                 . ./myread
7925                 case "$ans" in
7926                 y*) cont='' ;;
7927                 *) echo " " ;;
7928                 esac
7929                 ;;
7930         esac
7931 done
7932
7933 $cat <<EOM
7934
7935 If you or somebody else will be maintaining perl at your site, please
7936 fill in the correct e-mail address here so that they may be contacted
7937 if necessary. Currently, the "perlbug" program included with perl
7938 will send mail to this address in addition to perlbug@perl.org. You may
7939 enter "none" for no administrator.
7940
7941 EOM
7942 case "$perladmin" in
7943 '') dflt="$cf_email";;
7944 *) dflt="$perladmin";;
7945 esac
7946 rp='Perl administrator e-mail address'
7947 . ./myread
7948 perladmin="$ans"
7949
7950 : determine whether to only install version-specific parts.
7951 echo " "
7952 $cat <<EOM
7953 Do you want to install only the version-specific parts of the perl
7954 distribution?  Usually you do *not* want to do this.
7955 EOM
7956 case "$versiononly" in
7957 "$define"|[Yy]*|true) dflt='y' ;;
7958 *) dflt='n';
7959 esac
7960 rp="Do you want to install only the version-specific parts of perl?"
7961 . ./myread
7962 case "$ans" in
7963 [yY]*)  val="$define";;
7964 *)      val="$undef" ;;
7965 esac
7966 set versiononly
7967 eval $setvar
7968
7969 : figure out how to guarantee perl startup
7970 case "$startperl" in
7971 '')
7972         case "$sharpbang" in
7973         *!)
7974                 $cat <<EOH
7975
7976 I can use the #! construct to start perl on your system. This will
7977 make startup of perl scripts faster, but may cause problems if you
7978 want to share those scripts and perl is not in a standard place
7979 ($binexp/perl) on all your platforms. The alternative is to force
7980 a shell by starting the script with a single ':' character.
7981
7982 EOH
7983                 case "$versiononly" in
7984                 "$define")      dflt="$binexp/perl$version";;  
7985                 *)              dflt="$binexp/perl";;
7986                 esac
7987                 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
7988                 . ./myread
7989                 case "$ans" in
7990                 none)   startperl=": # use perl";;
7991                 *)      startperl="#!$ans"
7992                         if $test 30 -lt `echo "$ans" | wc -c`; then
7993                                 $cat >&4 <<EOM
7994
7995 WARNING:  Some systems limit the #! command to 32 characters.
7996 If you experience difficulty running Perl scripts with #!, try
7997 installing Perl in a directory with a shorter pathname.
7998
7999 EOM
8000                         fi ;;
8001                 esac
8002                 ;;
8003         *) startperl=": # use perl"
8004                 ;;
8005         esac
8006         ;;
8007 esac
8008 echo "I'll use $startperl to start perl scripts."
8009
8010 : figure best path for perl in scripts
8011 case "$perlpath" in
8012 '')
8013         perlpath="$binexp/perl"
8014         case "$startperl" in
8015         *!*) ;;
8016         *)
8017                 $cat <<EOH
8018
8019 I will use the "eval 'exec'" idiom to start Perl on your system.
8020 I can use the full path of your Perl binary for this purpose, but
8021 doing so may cause problems if you want to share those scripts and
8022 Perl is not always in a standard place ($binexp/perl).
8023
8024 EOH
8025                 dflt="$binexp/perl"
8026                 rp="What path shall I use in \"eval 'exec'\"?"
8027                 . ./myread
8028                 perlpath="$ans"
8029                 ;;
8030         esac
8031         ;;
8032 esac
8033 case "$startperl" in
8034 *!*)    ;;
8035 *)      echo "I'll use $perlpath in \"eval 'exec'\"" ;;
8036 esac
8037
8038 : determine where public executable scripts go
8039 set scriptdir scriptdir
8040 eval $prefixit
8041 case "$scriptdir" in
8042 '')
8043         dflt="$bin"
8044         : guess some guesses
8045         $test -d /usr/share/scripts && dflt=/usr/share/scripts
8046         $test -d /usr/share/bin     && dflt=/usr/share/bin
8047         $test -d /usr/local/script  && dflt=/usr/local/script
8048         $test -d /usr/local/scripts && dflt=/usr/local/scripts
8049         $test -d $prefixexp/script  && dflt=$prefixexp/script
8050         set dflt
8051         eval $prefixup
8052         ;;
8053 *)  dflt="$scriptdir"
8054         ;;
8055 esac
8056 $cat <<EOM
8057  
8058 Some installations have a separate directory just for executable scripts so
8059 that they can mount it across multiple architectures but keep the scripts in
8060 one spot.  You might, for example, have a subdirectory of /usr/share for this.
8061 Or you might just lump your scripts in with all your other executables.
8062  
8063 EOM
8064 fn=d~
8065 rp='Where do you keep publicly executable scripts?'
8066 . ./getfile
8067 if $test "X$ansexp" != "X$scriptdirexp"; then
8068         installscript=''
8069 fi
8070 scriptdir="$ans"
8071 scriptdirexp="$ansexp"
8072 : Change installation prefix, if necessary.
8073 if $test X"$prefix" != X"$installprefix"; then
8074         installscript=`echo $scriptdirexp | sed "s#^$prefix#$installprefix#"`
8075 else
8076         installscript="$scriptdirexp"
8077 fi
8078
8079 : determine where add-on public executables go
8080 case "$sitebin" in
8081 '')     dflt=$siteprefix/bin ;;
8082 *)      dflt=$sitebin ;;
8083 esac
8084 fn=d~
8085 rp='Pathname where the add-on public executables should be installed?'
8086 . ./getfile
8087 sitebin="$ans"
8088 sitebinexp="$ansexp"
8089 : Change installation prefix, if necessary.
8090 if $test X"$prefix" != X"$installprefix"; then
8091         installsitebin=`echo $sitebinexp | sed "s#^$prefix#$installprefix#"`
8092 else
8093         installsitebin="$sitebinexp"
8094 fi
8095
8096 : define an is-a-typedef? function
8097 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
8098 case "$inclist" in
8099 "") inclist="sys/types.h";;
8100 esac;
8101 eval "varval=\$$var";
8102 case "$varval" in
8103 "")
8104         $rm -f temp.c;
8105         for inc in $inclist; do
8106                 echo "#include <$inc>" >>temp.c;
8107         done;
8108         echo "#ifdef $type" >> temp.c;
8109         echo "printf(\"We have $type\");" >> temp.c;
8110         echo "#endif" >> temp.c;
8111         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
8112         if $contains $type temp.E >/dev/null 2>&1; then
8113                 eval "$var=\$type";
8114         else
8115                 eval "$var=\$def";
8116         fi;
8117         $rm -f temp.?;;
8118 *) eval "$var=\$varval";;
8119 esac'
8120
8121 : define an is-a-typedef? function that prompts if the type is not available.
8122 typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
8123 case "$inclist" in
8124 "") inclist="sys/types.h";;
8125 esac;
8126 eval "varval=\$$var";
8127 case "$varval" in
8128 "")
8129         $rm -f temp.c;
8130         for inc in $inclist; do
8131                 echo "#include <$inc>" >>temp.c;
8132         done;
8133         echo "#ifdef $type" >> temp.c;
8134         echo "printf(\"We have $type\");" >> temp.c;
8135         echo "#endif" >> temp.c;
8136         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
8137         echo " " ;
8138         echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
8139         if $contains $type temp.E >/dev/null 2>&1; then
8140                 echo "$type found." >&4;
8141                 eval "$var=\$type";
8142         else
8143                 echo "$type NOT found." >&4;
8144                 dflt="$def";
8145                 . ./myread ;
8146                 eval "$var=\$ans";
8147         fi;
8148         $rm -f temp.?;;
8149 *) eval "$var=\$varval";;
8150 esac'
8151
8152 : see what type lseek is declared as in the kernel
8153 rp="What is the type used for lseek's offset on this system?"
8154 set off_t lseektype long stdio.h sys/types.h
8155 eval $typedef_ask
8156
8157 echo " "
8158 echo "Checking to see how big your file offsets are..." >&4
8159 $cat >try.c <<EOCP
8160 #include <sys/types.h>
8161 #include <stdio.h>
8162 int main()
8163 {
8164     printf("%d\n", (int)sizeof($lseektype));
8165     return(0); 
8166 }
8167 EOCP
8168 set try
8169 if eval $compile_ok; then
8170         lseeksize=`$run ./try`
8171         echo "Your file offsets are $lseeksize bytes long."
8172 else
8173         dflt=$longsize
8174         echo " "
8175         echo "(I can't seem to compile the test program.  Guessing...)"
8176         rp="What is the size of your file offsets (in bytes)?"
8177         . ./myread
8178         lseeksize="$ans"
8179 fi
8180 $rm -f try.c try
8181
8182 : see what type file positions are declared as in the library
8183 rp="What is the type for file position used by fsetpos()?"
8184 set fpos_t fpostype long stdio.h sys/types.h
8185 eval $typedef_ask
8186
8187 echo " "
8188 case "$fpostype" in
8189 *_t) zzz="$fpostype"    ;;
8190 *)   zzz="fpos_t"       ;;
8191 esac
8192 echo "Checking the size of $zzz..." >&4 
8193 cat > try.c <<EOCP
8194 #include <sys/types.h>
8195 #include <stdio.h>
8196 int main() {
8197     printf("%d\n", (int)sizeof($fpostype));
8198     exit(0);
8199 }
8200 EOCP
8201 set try
8202 if eval $compile_ok; then
8203         yyy=`$run ./try`
8204         case "$yyy" in
8205         '')     fpossize=4
8206                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
8207                 ;;
8208         *)      fpossize=$yyy
8209                 echo "Your $zzz is $fpossize bytes long."
8210                 ;;
8211         esac
8212 else
8213         dflt="$longsize"
8214         echo " " >&4
8215         echo "(I can't compile the test program.  Guessing...)" >&4
8216         rp="What is the size of your file positions (in bytes)?"
8217         . ./myread
8218         fpossize="$ans"
8219 fi
8220
8221
8222
8223 # Backward compatibility (uselfs is deprecated).
8224 case "$uselfs" in
8225 "$define"|true|[yY]*)
8226         cat <<EOM >&4
8227
8228 *** Configure -Duselfs is deprecated, using -Duselargefiles instead.
8229 EOM
8230         uselargefiles="$define"
8231         ;;
8232 esac                          
8233
8234 case "$lseeksize:$fpossize" in
8235 8:8) cat <<EOM
8236
8237 You can have files larger than 2 gigabytes.
8238 EOM
8239    val="$define" ;;
8240 *)    case "$uselargefiles" in
8241    "$undef"|false|[nN]*) dflt='n' ;;
8242    *)   dflt='y' ;;
8243    esac
8244    cat <<EOM
8245
8246 Perl can be built to understand large files (files larger than 2 gigabytes)
8247 on some systems.  To do so, Configure can be run with -Duselargefiles.
8248
8249 If this doesn't make any sense to you, just accept the default '$dflt'.
8250 EOM
8251    rp='Try to understand large files, if available?'
8252    . ./myread
8253    case "$ans" in
8254    y|Y)         val="$define" ;;
8255    *)           val="$undef"  ;;
8256    esac
8257    ;;
8258 esac
8259 set uselargefiles
8260 eval $setvar
8261 case "$uselargefiles" in
8262 "$define")
8263 : Look for a hint-file generated 'call-back-unit'.  If the
8264 : user has specified that a large files perl is to be built,
8265 : we may need to set or change some other defaults.
8266         if $test -f uselargefiles.cbu; then
8267                 echo "Your platform has some specific hints for large file builds, using them..."
8268                 . ./uselargefiles.cbu
8269                 echo " "
8270                 echo "Rechecking to see how big your file offsets are..." >&4
8271                 $cat >try.c <<EOCP
8272 #include <sys/types.h>
8273 #include <stdio.h>
8274 int main()
8275 {
8276     printf("%d\n", (int)sizeof($lseektype));
8277     return(0); 
8278 }
8279 EOCP
8280                 set try
8281                 if eval $compile_ok; then
8282                         lseeksize=`$run ./try`
8283                         $echo "Your file offsets are now $lseeksize bytes long."
8284                 else
8285                         dflt="$lseeksize"
8286                         echo " "
8287                         echo "(I can't seem to compile the test program.  Guessing...)"
8288                         rp="What is the size of your file offsets (in bytes)?"
8289                         . ./myread
8290                         lseeksize="$ans"
8291                 fi
8292                 case "$fpostype" in
8293                 *_t) zzz="$fpostype"    ;;
8294                 *)   zzz="fpos_t"       ;;
8295                 esac
8296                 $echo $n "Rechecking the size of $zzz...$c" >&4 
8297                 $cat > try.c <<EOCP
8298 #include <sys/types.h>
8299 #include <stdio.h>
8300 int main() {
8301     printf("%d\n", (int)sizeof($fpostype));
8302     exit(0);
8303 }
8304 EOCP
8305                 set try
8306                 if eval $compile_ok; then
8307                         yyy=`$run ./try`
8308                         dflt="$lseeksize"
8309                         case "$yyy" in
8310                         '')     echo " "
8311                                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
8312                                 ;;
8313                         *)      fpossize=$yyy
8314                                 echo " $fpossize bytes." >&4
8315                                 ;;
8316                         esac
8317                 else
8318                         dflt="$fpossize"
8319                         echo " "
8320                         echo "(I can't compile the test program.  Guessing...)" >&4
8321                         rp="What is the size of your file positions (in bytes)?"
8322                         . ./myread
8323                         fpossize="$ans"
8324                 fi
8325                 $rm -f try.c try
8326         fi
8327         ;;
8328 esac
8329
8330 case "$vendorprefix" in
8331 '')     d_vendorbin="$undef"
8332         vendorbin=''
8333         vendorbinexp=''
8334         ;;
8335 *)      d_vendorbin="$define"
8336         : determine where vendor-supplied executables go.
8337         case "$vendorbin" in
8338         '') dflt=$vendorprefix/bin ;;
8339         *)      dflt="$vendorbin" ;;
8340         esac
8341         fn=d~+
8342         rp='Pathname for the vendor-supplied executables directory?'
8343         . ./getfile
8344         vendorbin="$ans"
8345         vendorbinexp="$ansexp"
8346         ;;
8347 esac
8348 : Change installation prefix, if necessary.
8349 if $test X"$prefix" != X"$installprefix"; then
8350         installvendorbin=`echo $vendorbinexp | $sed "s#^$prefix#$installprefix#"`
8351 else
8352         installvendorbin="$vendorbinexp"
8353 fi
8354
8355 : see if qgcvt exists
8356 set qgcvt d_qgcvt
8357 eval $inlibc
8358
8359 echo " "
8360
8361 if $test X"$d_longdbl" = X"$define"; then
8362
8363 echo "Checking how to print long doubles..." >&4
8364
8365 if $test X"$sPRIfldbl" = X -a X"$doublesize" = X"$longdblsize"; then
8366         $cat >try.c <<'EOCP'
8367 #include <sys/types.h>
8368 #include <stdio.h>
8369 int main() {
8370   double d = 123.456;
8371   printf("%.3f\n", d);
8372 }
8373 EOCP
8374         set try
8375         if eval $compile; then
8376                 yyy=`$run ./try`
8377                 case "$yyy" in
8378                 123.456)
8379                         sPRIfldbl='"f"'; sPRIgldbl='"g"'; sPRIeldbl='"e"';
8380                         sPRIFUldbl='"F"'; sPRIGUldbl='"G"'; sPRIEUldbl='"E"';
8381                         echo "We will use %f."
8382                         ;;
8383                 esac
8384         fi
8385 fi
8386
8387 if $test X"$sPRIfldbl" = X; then
8388         $cat >try.c <<'EOCP'
8389 #include <sys/types.h>
8390 #include <stdio.h>
8391 int main() {
8392   long double d = 123.456;
8393   printf("%.3Lf\n", d);
8394 }
8395 EOCP
8396         set try
8397         if eval $compile; then
8398                 yyy=`$run ./try`
8399                 case "$yyy" in
8400                 123.456)
8401                         sPRIfldbl='"Lf"'; sPRIgldbl='"Lg"'; sPRIeldbl='"Le"';
8402                         sPRIFUldbl='"LF"'; sPRIGUldbl='"LG"'; sPRIEUldbl='"LE"';
8403                         echo "We will use %Lf."
8404                         ;;
8405                 esac
8406         fi
8407 fi
8408
8409 if $test X"$sPRIfldbl" = X; then
8410         $cat >try.c <<'EOCP'
8411 #include <sys/types.h>
8412 #include <stdio.h>
8413 int main() {
8414   long double d = 123.456;
8415   printf("%.3llf\n", d);
8416 }
8417 EOCP
8418         set try
8419         if eval $compile; then
8420                 yyy=`$run ./try`
8421                 case "$yyy" in
8422                 123.456)
8423                         sPRIfldbl='"llf"'; sPRIgldbl='"llg"'; sPRIeldbl='"lle"';
8424                         sPRIFUldbl='"llF"'; sPRIGUldbl='"llG"'; sPRIEUldbl='"llE"';
8425                         echo "We will use %llf."
8426                         ;;
8427                 esac
8428         fi
8429 fi
8430
8431 if $test X"$sPRIfldbl" = X; then
8432         $cat >try.c <<'EOCP'
8433 #include <sys/types.h>
8434 #include <stdio.h>
8435 int main() {
8436   long double d = 123.456;
8437   printf("%.3lf\n", d);
8438 }
8439 EOCP
8440         set try
8441         if eval $compile; then
8442                 yyy=`$run ./try`
8443                 case "$yyy" in
8444                 123.456)
8445                         sPRIfldbl='"lf"'; sPRIgldbl='"lg"'; sPRIeldbl='"le"';
8446                         sPRIFUldbl='"lF"'; sPRIGUldbl='"lG"'; sPRIEUldbl='"lE"';
8447                         echo "We will use %lf."
8448                         ;;
8449                 esac
8450         fi
8451 fi
8452
8453 if $test X"$sPRIfldbl" = X; then
8454         echo "Cannot figure out how to print long doubles." >&4
8455 else
8456         sSCNfldbl=$sPRIfldbl    # expect consistency
8457 fi
8458
8459 $rm -f try try.*
8460
8461 fi # d_longdbl
8462
8463 case "$sPRIfldbl" in
8464 '')     d_PRIfldbl="$undef"; d_PRIgldbl="$undef"; d_PRIeldbl="$undef"; 
8465         d_PRIFUldbl="$undef"; d_PRIGUldbl="$undef"; d_PRIEUldbl="$undef"; 
8466         d_SCNfldbl="$undef";
8467         ;;
8468 *)      d_PRIfldbl="$define"; d_PRIgldbl="$define"; d_PRIeldbl="$define"; 
8469         d_PRIFUldbl="$define"; d_PRIGUldbl="$define"; d_PRIEUldbl="$define"; 
8470         d_SCNfldbl="$define";
8471         ;;
8472 esac
8473
8474 : Check how to convert floats to strings.
8475 echo " "
8476 echo "Checking for an efficient way to convert floats to strings."
8477 echo " " > try.c
8478 case "$uselongdouble" in
8479 "$define") echo "#define USE_LONG_DOUBLE" >>try.c ;;
8480 esac
8481 case "$d_longdbl" in
8482 "$define") echo "#define HAS_LONG_DOUBLE" >>try.c ;;
8483 esac
8484 case "$d_PRIgldbl" in
8485 "$define") echo "#define HAS_PRIgldbl"    >>try.c ;;
8486 esac
8487 $cat >>try.c <<EOP
8488 #ifdef TRY_gconvert
8489 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
8490 char *myname = "gconvert";
8491 #endif
8492 #ifdef TRY_gcvt
8493 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
8494 char *myname = "gcvt";
8495 #endif
8496 #ifdef TRY_qgcvt
8497 #define Gconvert(x,n,t,b) qgcvt((x),(n),(b))
8498 char *myname = "qgcvt";
8499 #define DOUBLETYPE long double
8500 #endif
8501 #ifdef TRY_sprintf
8502 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE) && defined(HAS_PRIgldbl)
8503 #define Gconvert(x,n,t,b) sprintf((b),"%.*"$sPRIgldbl,(n),(x))
8504 #else
8505 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
8506 #endif
8507 char *myname = "sprintf";
8508 #endif
8509
8510 #ifndef DOUBLETYPE
8511 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
8512 #define DOUBLETYPE long double
8513 #else
8514 #define DOUBLETYPE double
8515 #endif
8516 #endif
8517
8518 #include <stdio.h>
8519
8520 #define I_STDLIB $i_stdlib
8521 #ifdef I_STDLIB
8522 #include <stdlib.h>
8523 #endif
8524
8525 int
8526 checkit(expect, got)
8527 char *expect;
8528 char *got;
8529 {
8530     if (strcmp(expect, got)) {
8531                 printf("%s oddity:  Expected %s, got %s\n",
8532                         myname, expect, got);
8533                 exit(1);
8534         }
8535 }
8536
8537 int main()
8538
8539         char buf[64]; 
8540         buf[63] = '\0';
8541
8542         /* This must be 1st test on (which?) platform */
8543         /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
8544         Gconvert((DOUBLETYPE)0.1, 8, 0, buf);
8545         checkit("0.1", buf);
8546
8547         Gconvert((DOUBLETYPE)1.0, 8, 0, buf); 
8548         checkit("1", buf);
8549
8550         Gconvert((DOUBLETYPE)1.1, 8, 0, buf); 
8551         checkit("1.1", buf);
8552
8553         Gconvert((DOUBLETYPE)1.01, 8, 0, buf); 
8554         checkit("1.01", buf);
8555
8556         Gconvert((DOUBLETYPE)1.001, 8, 0, buf); 
8557         checkit("1.001", buf);
8558
8559         Gconvert((DOUBLETYPE)1.0001, 8, 0, buf); 
8560         checkit("1.0001", buf);
8561
8562         Gconvert((DOUBLETYPE)1.00001, 8, 0, buf); 
8563         checkit("1.00001", buf);
8564
8565         Gconvert((DOUBLETYPE)1.000001, 8, 0, buf); 
8566         checkit("1.000001", buf);
8567
8568         Gconvert((DOUBLETYPE)0.0, 8, 0, buf); 
8569         checkit("0", buf);
8570
8571         Gconvert((DOUBLETYPE)-1.0, 8, 0, buf); 
8572         checkit("-1", buf);
8573
8574         /* Some Linux gcvt's give 1.e+5 here. */
8575         Gconvert((DOUBLETYPE)100000.0, 8, 0, buf); 
8576         checkit("100000", buf);
8577         
8578         /* Some Linux gcvt's give -1.e+5 here. */
8579         Gconvert((DOUBLETYPE)-100000.0, 8, 0, buf); 
8580         checkit("-100000", buf);
8581
8582         Gconvert((DOUBLETYPE)123.456, 8, 0, buf); 
8583         checkit("123.456", buf);
8584
8585         /* Testing of 1e+129 in bigintpm.t must not get extra '.' here. */
8586         Gconvert((DOUBLETYPE)1e30, 8, 0, buf);
8587         if (strlen(buf) > 5)
8588             checkit("1e+030", buf); /* for Microsoft */
8589         else
8590             checkit("1e+30", buf);
8591
8592         exit(0);
8593 }
8594 EOP
8595 case "$d_Gconvert" in
8596 gconvert*) xxx_list='gconvert gcvt sprintf' ;;
8597 gcvt*) xxx_list='gcvt gconvert sprintf' ;;
8598 sprintf*) xxx_list='sprintf gconvert gcvt' ;;
8599 *) xxx_list='gconvert gcvt sprintf' ;;
8600 esac
8601
8602 case "$d_longdbl$uselongdouble$d_PRIgldbl" in
8603 "$define$define$define")
8604     # for long doubles prefer first qgcvt, then sprintf
8605     xxx_list="`echo $xxx_list|sed s/sprintf//`" 
8606     xxx_list="sprintf $xxx_list"
8607     case "$d_qgcvt" in
8608     "$define") xxx_list="qgcvt $xxx_list" ;;
8609     esac
8610     ;;
8611 esac
8612
8613 for xxx_convert in $xxx_list; do
8614         echo "Trying $xxx_convert..."
8615         $rm -f try try$_o
8616         set try -DTRY_$xxx_convert
8617         if eval $compile; then
8618                 echo "$xxx_convert() found." >&4
8619                 if $run ./try; then
8620                         echo "I'll use $xxx_convert to convert floats into a string." >&4
8621                         break;
8622                 else
8623                         echo "...But $xxx_convert didn't work as I expected."
8624                 fi
8625         else
8626                 echo "$xxx_convert NOT found." >&4
8627         fi
8628 done
8629         
8630 case "$xxx_convert" in
8631 gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
8632 gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
8633 qgcvt) d_Gconvert='qgcvt((x),(n),(b))' ;;
8634 *) case "$uselongdouble$d_longdbl$d_PRIgldbl" in
8635    "$define$define$define")
8636       d_Gconvert="sprintf((b),\"%.*\"$sPRIgldbl,(n),(x))" ;;
8637    *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
8638    esac
8639    ;;  
8640 esac
8641
8642 : see if _fwalk exists
8643 set fwalk d__fwalk
8644 eval $inlibc
8645
8646 : Initialize h_fcntl
8647 h_fcntl=false
8648
8649 : Initialize h_sysfile
8650 h_sysfile=false
8651
8652 : access call always available on UNIX
8653 set access d_access
8654 eval $inlibc
8655
8656 : locate the flags for 'access()'
8657 case "$d_access" in
8658 "$define")
8659         echo " "
8660         $cat >access.c <<'EOCP'
8661 #include <sys/types.h>
8662 #ifdef I_FCNTL
8663 #include <fcntl.h>
8664 #endif
8665 #ifdef I_SYS_FILE
8666 #include <sys/file.h>
8667 #endif
8668 #ifdef I_UNISTD
8669 #include <unistd.h>
8670 #endif
8671 int main() {
8672         exit(R_OK);
8673 }
8674 EOCP
8675         : check sys/file.h first, no particular reason here
8676         if $test `./findhdr sys/file.h` && \
8677                 $cc -o access $cppflags -DI_SYS_FILE access.c >/dev/null 2>&1 ; then
8678                 h_sysfile=true;
8679                 echo "<sys/file.h> defines the *_OK access constants." >&4
8680         elif $test `./findhdr fcntl.h` && \
8681                 $cc -o access $cppflags -DI_FCNTL access.c >/dev/null 2>&1 ; then
8682                 h_fcntl=true;
8683                 echo "<fcntl.h> defines the *_OK access constants." >&4
8684         elif $test `./findhdr unistd.h` && \
8685                 $cc -o access $cppflags -DI_UNISTD access.c >/dev/null 2>&1 ; then
8686                 echo "<unistd.h> defines the *_OK access constants." >&4
8687         else
8688                 echo "I can't find the four *_OK access constants--I'll use mine." >&4
8689         fi
8690         ;;
8691 esac
8692 $rm -f access*
8693
8694 : see if accessx exists
8695 set accessx d_accessx
8696 eval $inlibc
8697
8698 : see if alarm exists
8699 set alarm d_alarm
8700 eval $inlibc
8701
8702 : see if atolf exists
8703 set atolf d_atolf
8704 eval $inlibc
8705
8706 : see if atoll exists
8707 set atoll d_atoll
8708 eval $inlibc
8709
8710 : Look for GNU-cc style attribute checking
8711 echo " "
8712 echo "Checking whether your compiler can handle __attribute__ ..." >&4
8713 $cat >attrib.c <<'EOCP'
8714 #include <stdio.h>
8715 void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn));
8716 EOCP
8717 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
8718         if $contains 'warning' attrib.out >/dev/null 2>&1; then
8719                 echo "Your C compiler doesn't fully support __attribute__."
8720                 val="$undef"
8721         else
8722                 echo "Your C compiler supports __attribute__."
8723                 val="$define"
8724         fi
8725 else
8726         echo "Your C compiler doesn't seem to understand __attribute__ at all."
8727         val="$undef"
8728 fi
8729 set d_attribut
8730 eval $setvar
8731 $rm -f attrib*
8732
8733 : see if bcmp exists
8734 set bcmp d_bcmp
8735 eval $inlibc
8736
8737 : see if bcopy exists
8738 set bcopy d_bcopy
8739 eval $inlibc
8740
8741 : see if this is a unistd.h system
8742 set unistd.h i_unistd
8743 eval $inhdr
8744
8745 : see if getpgrp exists
8746 set getpgrp d_getpgrp
8747 eval $inlibc
8748
8749 case "$d_getpgrp" in
8750 "$define")
8751         echo " "
8752         echo "Checking to see which flavor of getpgrp 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 (getpgrp(1) == 0)
8767                 exit(0);
8768 #else
8769         if (getpgrp() > 0)
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 getpgrp(pid) instead of getpgrp()." >&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 getpgrp() instead of getpgrp(pid)." >&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 getpgrp()."
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 getpgrp(pid)."
8790                                 val="$define"
8791                                 ;;
8792                         $define)
8793                                 xxx="probably a USG one, i.e. you use getpgrp()."
8794                                 val="$undef"
8795                                 ;;
8796                         esac
8797                 fi
8798                 echo "Assuming your getpgrp is $xxx" >&4
8799         fi
8800         ;;
8801 *) val="$undef";;
8802 esac
8803 set d_bsdgetpgrp
8804 eval $setvar
8805 $rm -f try try.*
8806
8807 : see if setpgrp exists
8808 set setpgrp d_setpgrp
8809 eval $inlibc
8810
8811 case "$d_setpgrp" in
8812 "$define")
8813         echo " "
8814         echo "Checking to see which flavor of setpgrp is in use..."
8815         $cat >try.c <<EOP
8816 #$i_unistd I_UNISTD
8817 #include <sys/types.h>
8818 #ifdef I_UNISTD
8819 #  include <unistd.h>
8820 #endif
8821 int main()
8822 {
8823         if (getuid() == 0) {
8824                 printf("(I see you are running Configure as super-user...)\n");
8825                 setuid(1);
8826         }
8827 #ifdef TRY_BSD_PGRP
8828         if (-1 == setpgrp(1, 1))
8829                 exit(0);
8830 #else
8831         if (setpgrp() != -1)
8832                 exit(0);
8833 #endif
8834         exit(1);
8835 }
8836 EOP
8837         if $cc -o try -DTRY_BSD_PGRP $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
8838                 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
8839                 val="$define"
8840         elif $cc -o try $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
8841                 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
8842                 val="$undef"
8843         else
8844                 echo "(I can't seem to compile and run the test program.)"
8845                 if ./usg; then
8846                         xxx="a USG one, i.e. you use setpgrp()."
8847                 else
8848                         # SVR4 systems can appear rather BSD-ish.
8849                         case "$i_unistd" in
8850                         $undef)
8851                                 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
8852                                 val="$define"
8853                                 ;;
8854                         $define)
8855                                 xxx="probably a USG one, i.e. you use setpgrp()."
8856                                 val="$undef"
8857                                 ;;
8858                         esac
8859                 fi
8860                 echo "Assuming your setpgrp is $xxx" >&4
8861         fi
8862         ;;
8863 *) val="$undef";;
8864 esac
8865 set d_bsdsetpgrp
8866 eval $setvar
8867 $rm -f try try.*
8868 : see if bzero exists
8869 set bzero d_bzero
8870 eval $inlibc
8871
8872 : see if signal is declared as pointer to function returning int or void
8873 echo " "
8874 xxx=`./findhdr signal.h`
8875 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
8876 if $contains 'int.*\*[  ]*signal' $$.tmp >/dev/null 2>&1 ; then
8877         echo "You have int (*signal())() instead of void." >&4
8878         val="$undef"
8879 elif $contains 'void.*\*[       ]*signal' $$.tmp >/dev/null 2>&1 ; then
8880         echo "You have void (*signal())()." >&4
8881         val="$define"
8882 elif $contains 'extern[         ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
8883         echo "You have int (*signal())() instead of void." >&4
8884         val="$undef"
8885 elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
8886         echo "You have void (*signal())()." >&4
8887         val="$define"
8888 else
8889         case "$d_voidsig" in
8890         '')
8891         echo "I can't determine whether signal handler returns void or int..." >&4
8892                 dflt=void
8893                 rp="What type does your signal handler return?"
8894                 . ./myread
8895                 case "$ans" in
8896                 v*) val="$define";;
8897                 *) val="$undef";;
8898                 esac;;
8899         "$define")
8900                 echo "As you already told me, signal handler returns void." >&4
8901                 val="$define"
8902                 ;;
8903         *)      echo "As you already told me, signal handler returns int." >&4
8904                 val="$undef"
8905                 ;;
8906         esac
8907 fi
8908 set d_voidsig
8909 eval $setvar
8910 case "$d_voidsig" in
8911 "$define") signal_t="void";;
8912 *) signal_t="int";;
8913 esac
8914 $rm -f $$.tmp
8915
8916 : check for ability to cast large floats to 32-bit ints.
8917 echo " "
8918 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
8919 if $test "$intsize" -ge 4; then
8920         xxx=int
8921 else
8922         xxx=long
8923 fi
8924 $cat >try.c <<EOCP
8925 #include <stdio.h>
8926 #include <sys/types.h>
8927 #include <signal.h>
8928 $signal_t blech(s) int s; { exit(3); }
8929 int main()
8930 {
8931         $xxx i32;
8932         double f, g;
8933         int result = 0;
8934         char str[16];
8935         signal(SIGFPE, blech);
8936
8937         /* Don't let compiler optimize the test away.  Store the number 
8938            in a writable string for gcc to pass to sscanf under HP/UX.
8939         */
8940         sprintf(str, "2147483647");
8941         sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
8942         g = 10 * f;
8943         i32  = ($xxx) g;
8944
8945         /* x86 processors will probably give 0x8000 0000, which is a
8946        sign change.  We don't want that.  We want to mimic SPARC
8947            behavior here, which is to preserve the sign and give
8948            back 0x7fff ffff.
8949         */
8950         if (i32 != ($xxx) f)
8951                 result |= 1;
8952         exit(result);
8953 }
8954 EOCP
8955 set try
8956 if eval $compile_ok; then
8957         $run ./try
8958         yyy=$?
8959 else
8960         echo "(I can't seem to compile the test program--assuming it can't)"
8961         yyy=1
8962 fi
8963 case "$yyy" in
8964 0)      val="$define"
8965         echo "Yup, it can."
8966         ;;
8967 *)      val="$undef"
8968         echo "Nope, it can't."
8969         ;;
8970 esac
8971 set d_casti32
8972 eval $setvar
8973 $rm -f try try.*
8974
8975 : check for ability to cast negative floats to unsigned
8976 echo " "
8977 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
8978 $cat >try.c <<EOCP
8979 #include <stdio.h>
8980 #include <sys/types.h>
8981 #include <signal.h>
8982 $signal_t blech(s) int s; { exit(7); }
8983 $signal_t blech_in_list(s) int s; { exit(4); }
8984 unsigned long dummy_long(p) unsigned long p; { return p; }
8985 unsigned int dummy_int(p) unsigned int p; { return p; }
8986 unsigned short dummy_short(p) unsigned short p; { return p; }
8987 int main()
8988 {
8989         double f;
8990         unsigned long along;
8991         unsigned int aint;
8992         unsigned short ashort;
8993         int result = 0;
8994         char str[16];
8995         
8996         /* Frustrate gcc-2.7.2's optimizer which failed this test with
8997            a direct f = -123. assignment.  gcc-2.8.0 reportedly
8998            optimized the whole file away
8999         */
9000         /* Store the number in a writable string for gcc to pass to 
9001            sscanf under HP/UX.
9002         */
9003         sprintf(str, "-123");
9004         sscanf(str, "%lf", &f);  /* f = -123.; */
9005
9006         signal(SIGFPE, blech);
9007         along = (unsigned long)f;
9008         aint = (unsigned int)f;
9009         ashort = (unsigned short)f;
9010         if (along != (unsigned long)-123)
9011                 result |= 1;
9012         if (aint != (unsigned int)-123)
9013                 result |= 1;
9014         if (ashort != (unsigned short)-123)
9015                 result |= 1;
9016         sprintf(str, "1073741824.");
9017         sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
9018         f = f + f;
9019         along = 0;
9020         along = (unsigned long)f;
9021         if (along != 0x80000000)
9022                 result |= 2;
9023         f -= 1.;
9024         along = 0;
9025         along = (unsigned long)f;
9026         if (along != 0x7fffffff)
9027                 result |= 1;
9028         f += 2.;
9029         along = 0;
9030         along = (unsigned long)f;
9031         if (along != 0x80000001)
9032                 result |= 2;
9033         if (result)
9034                 exit(result);
9035         signal(SIGFPE, blech_in_list);
9036         sprintf(str, "123.");
9037         sscanf(str, "%lf", &f);  /* f = 123.; */
9038         along = dummy_long((unsigned long)f);
9039         aint = dummy_int((unsigned int)f);
9040         ashort = dummy_short((unsigned short)f);
9041         if (along != (unsigned long)123)
9042                 result |= 4;
9043         if (aint != (unsigned int)123)
9044                 result |= 4;
9045         if (ashort != (unsigned short)123)
9046                 result |= 4;
9047         exit(result);
9048
9049 }
9050 EOCP
9051 set try
9052 if eval $compile_ok; then
9053         $run ./try
9054         castflags=$?
9055 else
9056         echo "(I can't seem to compile the test program--assuming it can't)"
9057         castflags=7
9058 fi
9059 case "$castflags" in
9060 0)      val="$define"
9061         echo "Yup, it can."
9062         ;;
9063 *)      val="$undef"
9064         echo "Nope, it can't."
9065         ;;
9066 esac
9067 set d_castneg
9068 eval $setvar
9069 $rm -f try.*
9070
9071 : see if vprintf exists
9072 echo " "
9073 if set vprintf val -f d_vprintf; eval $csym; $val; then
9074         echo 'vprintf() found.' >&4
9075         val="$define"
9076         $cat >try.c <<'EOF'
9077 #include <varargs.h>
9078
9079 int main() { xxx("foo"); }
9080
9081 xxx(va_alist)
9082 va_dcl
9083 {
9084         va_list args;
9085         char buf[10];
9086
9087         va_start(args);
9088         exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
9089 }
9090 EOF
9091         set try
9092         if eval $compile && $run ./try; then
9093                 echo "Your vsprintf() returns (int)." >&4
9094                 val2="$undef"
9095         else
9096                 echo "Your vsprintf() returns (char*)." >&4
9097                 val2="$define"
9098         fi
9099 else
9100         echo 'vprintf() NOT found.' >&4
9101                 val="$undef"
9102                 val2="$undef"
9103 fi
9104 $rm -f try try.*
9105 set d_vprintf
9106 eval $setvar
9107 val=$val2
9108 set d_charvspr
9109 eval $setvar
9110
9111 : see if chown exists
9112 set chown d_chown
9113 eval $inlibc
9114
9115 : see if chroot exists
9116 set chroot d_chroot
9117 eval $inlibc
9118
9119 : see if chsize exists
9120 set chsize d_chsize
9121 eval $inlibc
9122
9123 : see if class exists
9124 set class d_class
9125 eval $inlibc
9126
9127 hasstruct='varname=$1; struct=$2; shift; shift;
9128 while $test $# -ge 2; do
9129         case "$1" in
9130         $define) echo "#include <$2>";;
9131         esac ;
9132     shift 2;
9133 done > try.c;
9134 echo "int main () { struct $struct foo; }" >> try.c;
9135 set try;
9136 if eval $compile; then
9137         val="$define";
9138 else
9139         val="$undef";
9140 fi;
9141 set $varname;
9142 eval $setvar;
9143 $rm -f try.c try.o'
9144
9145 : see if sys/types.h has to be included
9146 set sys/types.h i_systypes
9147 eval $inhdr
9148
9149 hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
9150 while $test $# -ge 2; do
9151         case "$1" in
9152         $define) echo "#include <$2>";;
9153         esac ;
9154     shift 2;
9155 done > try.c;
9156 echo "int main () { struct $struct foo; char* bar; bar = (char*)foo.$field; }" >> try.c;
9157 set try;
9158 if eval $compile; then
9159         val="$define";
9160 else
9161         val="$undef";
9162 fi;
9163 set $varname;
9164 eval $setvar;
9165 $rm -f try.c try.o'
9166
9167 socketlib=''
9168 sockethdr=''
9169 : see whether socket exists
9170 echo " "
9171 $echo $n "Hmm... $c" >&4
9172 if set socket val -f d_socket; eval $csym; $val; then
9173         echo "Looks like you have Berkeley networking support." >&4
9174         d_socket="$define"
9175         if set setsockopt val -f; eval $csym; $val; then
9176                 d_oldsock="$undef"
9177         else
9178                 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
9179                 d_oldsock="$define"
9180         fi
9181 else
9182         if $contains socklib libc.list >/dev/null 2>&1; then
9183                 echo "Looks like you have Berkeley networking support." >&4
9184                 d_socket="$define"
9185                 : we will have to assume that it supports the 4.2 BSD interface
9186                 d_oldsock="$undef"
9187         else
9188                 echo "You don't have Berkeley networking in libc$_a..." >&4
9189                 if test "X$d_socket" = "X$define"; then
9190                    echo "...but you seem to believe that you have sockets." >&4
9191                 else
9192                         for net in net socket
9193                         do
9194                                 if test -f /usr/lib/lib$net$_a; then
9195                                         ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) ||  \
9196                                         $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
9197                                         if $contains socket libc.list >/dev/null 2>&1; then
9198                                                 d_socket="$define"
9199                                                 socketlib="-l$net"
9200                                                 case "$net" in
9201                                                 net)
9202                                                         echo "...but the Wollongong group seems to have hacked it in." >&4
9203                                                         sockethdr="-I/usr/netinclude"
9204                                                         ;;
9205                                                 esac
9206                                                 echo "Found Berkeley sockets interface in lib$net." >& 4 
9207                                                 if $contains setsockopt libc.list >/dev/null 2>&1; then
9208                                                         d_oldsock="$undef"
9209                                                 else
9210                                                         echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
9211                                                         d_oldsock="$define"
9212                                                 fi
9213                                                 break
9214                                         fi
9215                                 fi
9216                         done
9217                         if test "X$d_socket" != "X$define"; then
9218                            echo "or anywhere else I see." >&4
9219                            d_socket="$undef"
9220                            d_oldsock="$undef"
9221                         fi
9222                 fi
9223         fi
9224 fi
9225
9226 : see if socketpair exists
9227 set socketpair d_sockpair
9228 eval $inlibc
9229
9230
9231 echo " "
9232 echo "Checking the availability of certain socket constants..." >& 4
9233 for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
9234         enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
9235         $cat >try.c <<EOF
9236 #include <sys/types.h>
9237 #include <sys/socket.h>
9238 int main() {
9239     int i = $ENUM;
9240 }
9241 EOF
9242         val="$undef"
9243         set try; if eval $compile; then
9244                 val="$define"
9245         fi
9246         set d_${enum}; eval $setvar
9247         $rm -f try.c try
9248 done
9249
9250 : see if this is a sys/uio.h system
9251 set sys/uio.h i_sysuio
9252 eval $inhdr
9253
9254
9255 echo " "
9256 echo "Checking to see if your system supports struct cmsghdr..." >&4
9257 set d_cmsghdr_s cmsghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
9258 eval $hasstruct
9259 case "$d_cmsghdr_s" in
9260 "$define")      echo "Yes, it does."   ;;
9261 *)              echo "No, it doesn't." ;;
9262 esac
9263
9264
9265 : check for const keyword
9266 echo " "
9267 echo 'Checking to see if your C compiler knows about "const"...' >&4
9268 $cat >const.c <<'EOCP'
9269 typedef struct spug { int drokk; } spug;
9270 int main()
9271 {
9272         const char *foo;
9273         const spug y;
9274 }
9275 EOCP
9276 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
9277         val="$define"
9278         echo "Yup, it does."
9279 else
9280         val="$undef"
9281         echo "Nope, it doesn't."
9282 fi
9283 set d_const
9284 eval $setvar
9285
9286 : see if crypt exists
9287 echo " "
9288 if set crypt val -f d_crypt; eval $csym; $val; then
9289         echo 'crypt() found.' >&4
9290         val="$define"
9291         cryptlib=''
9292 else
9293         cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
9294         if $test -z "$cryptlib"; then
9295                 cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
9296         else
9297                 cryptlib=-lcrypt
9298         fi
9299         if $test -z "$cryptlib"; then
9300                 cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
9301         else
9302                 cryptlib=-lcrypt
9303         fi
9304         if $test -z "$cryptlib"; then
9305                 cryptlib=`./loc libcrypt$_a "" $libpth`
9306         else
9307                 cryptlib=-lcrypt
9308         fi
9309         if $test -z "$cryptlib"; then
9310                 echo 'crypt() NOT found.' >&4
9311                 val="$undef"
9312         else
9313                 val="$define"
9314         fi
9315 fi
9316 set d_crypt
9317 eval $setvar
9318
9319 : get csh whereabouts
9320 case "$csh" in
9321 'csh') val="$undef" ;;
9322 *) val="$define" ;;
9323 esac
9324 set d_csh
9325 eval $setvar
9326 : Respect a hint or command line value for full_csh.
9327 case "$full_csh" in
9328 '') full_csh=$csh ;;
9329 esac
9330
9331 : see if cuserid exists
9332 set cuserid d_cuserid
9333 eval $inlibc
9334
9335 : see if this is a limits.h system
9336 set limits.h i_limits
9337 eval $inhdr
9338
9339 : see if this is a float.h system
9340 set float.h i_float
9341 eval $inhdr
9342
9343 : See if number of significant digits in a double precision number is known
9344 echo " "
9345 $cat >dbl_dig.c <<EOM
9346 #$i_limits I_LIMITS
9347 #$i_float I_FLOAT
9348 #ifdef I_LIMITS
9349 #include <limits.h>
9350 #endif
9351 #ifdef I_FLOAT
9352 #include <float.h>
9353 #endif
9354 #ifdef DBL_DIG
9355 printf("Contains DBL_DIG");
9356 #endif
9357 EOM
9358 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
9359 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
9360         echo "DBL_DIG found." >&4
9361         val="$define"
9362 else
9363         echo "DBL_DIG NOT found." >&4
9364         val="$undef"
9365 fi
9366 $rm -f dbl_dig.?
9367 set d_dbl_dig
9368 eval $setvar
9369
9370 hasproto='varname=$1; func=$2; shift; shift;
9371 while $test $# -ge 2; do
9372         case "$1" in
9373         $define) echo "#include <$2>";;
9374         esac ;
9375     shift 2;
9376 done > try.c;
9377 $cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
9378 if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
9379         echo "$func() prototype found.";
9380         val="$define";
9381 else
9382         echo "$func() prototype NOT found.";
9383         val="$undef";
9384 fi;
9385 set $varname;
9386 eval $setvar;
9387 $rm -f try.c tryout.c'
9388
9389 : see if dbm.h is available
9390 : see if dbmclose exists
9391 set dbmclose d_dbmclose
9392 eval $inlibc
9393
9394 case "$d_dbmclose" in
9395 $define)
9396         set dbm.h i_dbm
9397         eval $inhdr
9398         case "$i_dbm" in
9399         $define)
9400                 val="$undef"
9401                 set i_rpcsvcdbm
9402                 eval $setvar
9403                 ;;
9404         *)      set rpcsvc/dbm.h i_rpcsvcdbm
9405                 eval $inhdr
9406                 ;;
9407         esac
9408         ;;
9409 *)      echo "We won't be including <dbm.h>"
9410         val="$undef"
9411         set i_dbm
9412         eval $setvar
9413         val="$undef"
9414         set i_rpcsvcdbm
9415         eval $setvar
9416         ;;
9417 esac
9418
9419 : see if prototype for dbminit is available
9420 echo " "
9421 set d_dbminitproto dbminit $i_dbm dbm.h
9422 eval $hasproto
9423
9424 : see if difftime exists
9425 set difftime d_difftime
9426 eval $inlibc
9427
9428 : see if this is a dirent system
9429 echo " "
9430 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
9431         val="$define"
9432         echo "<dirent.h> found." >&4
9433 else
9434         val="$undef"
9435         if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
9436                 echo "<sys/dir.h> found." >&4
9437                 echo " "
9438         else
9439                 xinc=`./findhdr sys/ndir.h`
9440         fi
9441         echo "<dirent.h> NOT found." >&4
9442 fi
9443 set i_dirent
9444 eval $setvar
9445
9446 : Look for type of directory structure.
9447 echo " "
9448 $cppstdin $cppflags $cppminus < "$xinc" > try.c
9449
9450 case "$direntrytype" in
9451 ''|' ')
9452         case "$i_dirent" in
9453         $define) guess1='struct dirent' ;;
9454         *) guess1='struct direct'  ;;
9455         esac
9456         ;;
9457 *)      guess1="$direntrytype"
9458         ;;
9459 esac
9460
9461 case "$guess1" in
9462 'struct dirent') guess2='struct direct' ;;
9463 *) guess2='struct dirent' ;;
9464 esac
9465                 
9466 if $contains "$guess1" try.c >/dev/null 2>&1; then
9467         direntrytype="$guess1"
9468         echo "Your directory entries are $direntrytype." >&4
9469 elif $contains "$guess2" try.c >/dev/null 2>&1; then
9470         direntrytype="$guess2"
9471         echo "Your directory entries seem to be $direntrytype." >&4
9472 else
9473         echo "I don't recognize your system's directory entries." >&4
9474         rp="What type is used for directory entries on this system?"
9475         dflt="$guess1"
9476         . ./myread
9477         direntrytype="$ans"
9478 fi
9479 $rm -f try.c
9480
9481
9482 : see if the directory entry stores field length
9483 echo " "
9484 $cppstdin $cppflags $cppminus < "$xinc" > try.c
9485 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
9486         echo "Good, your directory entry keeps length information in d_namlen." >&4
9487         val="$define"
9488 else
9489         echo "Your directory entry does not know about the d_namlen field." >&4
9490         val="$undef"
9491 fi
9492 set d_dirnamlen
9493 eval $setvar
9494 $rm -f try.c
9495
9496 : see if dlerror exists
9497 xxx_runnm="$runnm"
9498 runnm=false
9499 set dlerror d_dlerror
9500 eval $inlibc
9501 runnm="$xxx_runnm"
9502
9503 : see if dlfcn is available
9504 set dlfcn.h i_dlfcn
9505 eval $inhdr
9506
9507 case "$usedl" in
9508 $define|y|true)
9509         $cat << EOM
9510
9511 On a few systems, the dynamically loaded modules that perl generates and uses
9512 will need a different extension than shared libs. The default will probably
9513 be appropriate.
9514
9515 EOM
9516         case "$dlext" in
9517         '')     dflt="$so" ;;
9518         *)      dflt="$dlext" ;;
9519         esac
9520         rp='What is the extension of dynamically loaded modules'
9521         . ./myread
9522         dlext="$ans"
9523         ;;
9524 *)
9525         dlext="none"
9526         ;;
9527 esac
9528
9529 : Check if dlsym need a leading underscore
9530 echo " "
9531 val="$undef"
9532
9533 case "$dlsrc" in
9534 dl_dlopen.xs)
9535         echo "Checking whether your dlsym() needs a leading underscore ..." >&4
9536         $cat >dyna.c <<'EOM'
9537 fred () { }
9538 EOM
9539
9540 $cat >fred.c<<EOM
9541
9542 #include <stdio.h>
9543 #$i_dlfcn I_DLFCN
9544 #ifdef I_DLFCN
9545 #include <dlfcn.h>      /* the dynamic linker include file for SunOS/Solaris */
9546 #else
9547 #include <sys/types.h>
9548 #include <nlist.h>
9549 #include <link.h>
9550 #endif
9551
9552 extern int fred() ;
9553
9554 int main()
9555 {
9556     void * handle ;
9557     void * symbol ;
9558 #ifndef RTLD_LAZY
9559     int mode = 1 ;
9560 #else
9561     int mode = RTLD_LAZY ;
9562 #endif
9563     handle = dlopen("./dyna.$dlext", mode) ;
9564     if (handle == NULL) {
9565         printf ("1\n") ;
9566         fflush (stdout) ;
9567         exit(0);
9568     }
9569     symbol = dlsym(handle, "fred") ;
9570     if (symbol == NULL) {
9571         /* try putting a leading underscore */
9572         symbol = dlsym(handle, "_fred") ;
9573         if (symbol == NULL) {
9574             printf ("2\n") ;
9575             fflush (stdout) ;
9576             exit(0);
9577         }
9578         printf ("3\n") ;
9579     }
9580     else
9581         printf ("4\n") ;
9582     fflush (stdout) ;
9583     exit(0);
9584 }
9585 EOM
9586         : Call the object file tmp-dyna.o in case dlext=o.
9587         if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 && 
9588                 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 && 
9589                 $ld -o dyna.$dlext $ldflags $lddlflags tmp-dyna${_o} > /dev/null 2>&1 && 
9590                 $cc -o fred $ccflags $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1 && $to dyna.$dlext; then
9591                 xxx=`$run ./fred`
9592                 case $xxx in
9593                 1)      echo "Test program failed using dlopen." >&4
9594                         echo "Perhaps you should not use dynamic loading." >&4;;
9595                 2)      echo "Test program failed using dlsym." >&4
9596                         echo "Perhaps you should not use dynamic loading." >&4;;
9597                 3)      echo "dlsym needs a leading underscore" >&4
9598                         val="$define" ;;
9599                 4)      echo "dlsym doesn't need a leading underscore." >&4;;
9600                 esac
9601         else
9602                 echo "I can't compile and run the test program." >&4
9603                 echo "I'm guessing that dlsym doesn't need a leading underscore." >&4
9604         fi
9605         ;;
9606 esac
9607                 
9608 $rm -f fred fred.? dyna.$dlext dyna.? tmp-dyna.?
9609
9610 set d_dlsymun
9611 eval $setvar
9612
9613 : see if prototype for drand48 is available
9614 echo " "
9615 set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
9616 eval $hasproto
9617
9618 : see if dup2 exists
9619 set dup2 d_dup2
9620 eval $inlibc
9621
9622 : see if eaccess exists
9623 set eaccess d_eaccess
9624 eval $inlibc
9625
9626 : see if endgrent exists
9627 set endgrent d_endgrent
9628 eval $inlibc
9629
9630 : see if endhostent exists
9631 set endhostent d_endhent
9632 eval $inlibc
9633
9634 : see if endnetent exists
9635 set endnetent d_endnent
9636 eval $inlibc
9637
9638 : see if endprotoent exists
9639 set endprotoent d_endpent
9640 eval $inlibc
9641
9642 : see if endpwent exists
9643 set endpwent d_endpwent
9644 eval $inlibc
9645
9646 : see if endservent exists
9647 set endservent d_endsent
9648 eval $inlibc
9649
9650 : Locate the flags for 'open()'
9651 echo " "
9652 $cat >try.c <<'EOCP'
9653 #include <sys/types.h>
9654 #ifdef I_FCNTL
9655 #include <fcntl.h>
9656 #endif
9657 #ifdef I_SYS_FILE
9658 #include <sys/file.h>
9659 #endif
9660 int main() {
9661         if(O_RDONLY);
9662 #ifdef O_TRUNC
9663         exit(0);
9664 #else
9665         exit(1);
9666 #endif
9667 }
9668 EOCP
9669 : check sys/file.h first to get FREAD on Sun
9670 if $test `./findhdr sys/file.h` && \
9671                 set try -DI_SYS_FILE && eval $compile; then
9672         h_sysfile=true;
9673         echo "<sys/file.h> defines the O_* constants..." >&4
9674         if $run ./try; then
9675                 echo "and you have the 3 argument form of open()." >&4
9676                 val="$define"
9677         else
9678                 echo "but not the 3 argument form of open().  Oh, well." >&4
9679                 val="$undef"
9680         fi
9681 elif $test `./findhdr fcntl.h` && \
9682                 set try -DI_FCNTL && eval $compile; then
9683         h_fcntl=true;
9684         echo "<fcntl.h> defines the O_* constants..." >&4
9685         if $run ./try; then
9686                 echo "and you have the 3 argument form of open()." >&4
9687                 val="$define"
9688         else
9689                 echo "but not the 3 argument form of open().  Oh, well." >&4
9690                 val="$undef"
9691         fi
9692 else
9693         val="$undef"
9694         echo "I can't find the O_* constant definitions!  You got problems." >&4
9695 fi
9696 set d_open3
9697 eval $setvar
9698 $rm -f try try.*
9699
9700 : see which of string.h or strings.h is needed
9701 echo " "
9702 strings=`./findhdr string.h`
9703 if $test "$strings" && $test -r "$strings"; then
9704         echo "Using <string.h> instead of <strings.h>." >&4
9705         val="$define"
9706 else
9707         val="$undef"
9708         strings=`./findhdr strings.h`
9709         if $test "$strings" && $test -r "$strings"; then
9710                 echo "Using <strings.h> instead of <string.h>." >&4
9711         else
9712                 echo "No string header found -- You'll surely have problems." >&4
9713         fi
9714 fi
9715 set i_string
9716 eval $setvar
9717 case "$i_string" in
9718 "$undef") strings=`./findhdr strings.h`;;
9719 *)        strings=`./findhdr string.h`;;
9720 esac
9721
9722 : check for non-blocking I/O stuff
9723 case "$h_sysfile" in
9724 true) echo "#include <sys/file.h>" > head.c;;
9725 *)
9726        case "$h_fcntl" in
9727        true) echo "#include <fcntl.h>" > head.c;;
9728        *) echo "#include <sys/fcntl.h>" > head.c;;
9729        esac
9730        ;;
9731 esac
9732 echo " "
9733 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
9734 case "$o_nonblock" in
9735 '')
9736         $cat head.c > try.c
9737         $cat >>try.c <<'EOCP'
9738 #include <stdio.h>
9739 #include <stdlib.h>
9740 int main() {
9741 #ifdef O_NONBLOCK
9742         printf("O_NONBLOCK\n");
9743         exit(0);
9744 #endif
9745 #ifdef O_NDELAY
9746         printf("O_NDELAY\n");
9747         exit(0);
9748 #endif
9749 #ifdef FNDELAY
9750         printf("FNDELAY\n");
9751         exit(0);
9752 #endif
9753         exit(0);
9754 }
9755 EOCP
9756         set try
9757         if eval $compile_ok; then
9758                 o_nonblock=`$run ./try`
9759                 case "$o_nonblock" in
9760                 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
9761                 *) echo "Seems like we can use $o_nonblock.";;
9762                 esac
9763         else
9764                 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
9765         fi
9766         ;;
9767 *) echo "Using $hint value $o_nonblock.";;
9768 esac
9769 $rm -f try try.* .out core
9770
9771 echo " "
9772 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
9773 case "$eagain" in
9774 '')
9775         $cat head.c > try.c
9776         $cat >>try.c <<EOCP
9777 #include <errno.h>
9778 #include <sys/types.h>
9779 #include <signal.h>
9780 #include <stdio.h> 
9781 #include <stdlib.h> 
9782 #define MY_O_NONBLOCK $o_nonblock
9783 #ifndef errno  /* XXX need better Configure test */
9784 extern int errno;
9785 #endif
9786 #$i_unistd I_UNISTD
9787 #ifdef I_UNISTD
9788 #include <unistd.h>
9789 #endif
9790 #$i_string I_STRING
9791 #ifdef I_STRING
9792 #include <string.h>
9793 #else
9794 #include <strings.h>
9795 #endif
9796 $signal_t blech(x) int x; { exit(3); }
9797 EOCP
9798         $cat >> try.c <<'EOCP'
9799 int main()
9800 {
9801         int pd[2];
9802         int pu[2];
9803         char buf[1];
9804         char string[100];
9805
9806         pipe(pd);       /* Down: child -> parent */
9807         pipe(pu);       /* Up: parent -> child */
9808         if (0 != fork()) {
9809                 int ret;
9810                 close(pd[1]);   /* Parent reads from pd[0] */
9811                 close(pu[0]);   /* Parent writes (blocking) to pu[1] */
9812 #ifdef F_SETFL
9813                 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
9814                         exit(1);
9815 #else
9816                 exit(4);
9817 #endif
9818                 signal(SIGALRM, blech);
9819                 alarm(5);
9820                 if ((ret = read(pd[0], buf, 1)) > 0)    /* Nothing to read! */
9821                         exit(2);
9822                 sprintf(string, "%d\n", ret);
9823                 write(2, string, strlen(string));
9824                 alarm(0);
9825 #ifdef EAGAIN
9826                 if (errno == EAGAIN) {
9827                         printf("EAGAIN\n");
9828                         goto ok;
9829                 }
9830 #endif
9831 #ifdef EWOULDBLOCK
9832                 if (errno == EWOULDBLOCK)
9833                         printf("EWOULDBLOCK\n");
9834 #endif
9835         ok:
9836                 write(pu[1], buf, 1);   /* Unblocks child, tell it to close our pipe */
9837                 sleep(2);                               /* Give it time to close our pipe */
9838                 alarm(5);
9839                 ret = read(pd[0], buf, 1);      /* Should read EOF */
9840                 alarm(0);
9841                 sprintf(string, "%d\n", ret);
9842                 write(3, string, strlen(string));
9843                 exit(0);
9844         }
9845
9846         close(pd[0]);                   /* We write to pd[1] */
9847         close(pu[1]);                   /* We read from pu[0] */
9848         read(pu[0], buf, 1);    /* Wait for parent to signal us we may continue */
9849         close(pd[1]);                   /* Pipe pd is now fully closed! */
9850         exit(0);                                /* Bye bye, thank you for playing! */
9851 }
9852 EOCP
9853         set try
9854         if eval $compile_ok; then
9855                 echo "$startsh" >mtry
9856                 echo "$run ./try >try.out 2>try.ret 3>try.err || exit 4" >>mtry
9857                 chmod +x mtry
9858                 ./mtry >/dev/null 2>&1
9859                 case $? in
9860                 0) eagain=`$cat try.out`;;
9861                 1) echo "Could not perform non-blocking setting!";;
9862                 2) echo "I did a successful read() for something that was not there!";;
9863                 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
9864                 4) echo "Could not find F_SETFL!";;
9865                 *) echo "Something terribly wrong happened during testing.";;
9866                 esac
9867                 rd_nodata=`$cat try.ret`
9868                 echo "A read() system call with no data present returns $rd_nodata."
9869                 case "$rd_nodata" in
9870                 0|-1) ;;
9871                 *)
9872                         echo "(That's peculiar, fixing that to be -1.)"
9873                         rd_nodata=-1
9874                         ;;
9875                 esac
9876                 case "$eagain" in
9877                 '')
9878                         echo "Forcing errno EAGAIN on read() with no data available."
9879                         eagain=EAGAIN
9880                         ;;
9881                 *)
9882                         echo "Your read() sets errno to $eagain when no data is available."
9883                         ;;
9884                 esac
9885                 status=`$cat try.err`
9886                 case "$status" in
9887                 0) echo "And it correctly returns 0 to signal EOF.";;
9888                 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
9889                 *) echo "However, your read() returns '$status' on EOF??";;
9890                 esac
9891                 val="$define"
9892                 if test "$status" = "$rd_nodata"; then
9893                         echo "WARNING: you can't distinguish between EOF and no data!"
9894                         val="$undef"
9895                 fi
9896         else
9897                 echo "I can't compile the test program--assuming errno EAGAIN will do."
9898                 eagain=EAGAIN
9899         fi
9900         set d_eofnblk
9901         eval $setvar
9902         ;;
9903 *)
9904         echo "Using $hint value $eagain."
9905         echo "Your read() returns $rd_nodata when no data is present."
9906         case "$d_eofnblk" in
9907         "$define") echo "And you can see EOF because read() returns 0.";;
9908         "$undef") echo "But you can't see EOF status from read() returned value.";;
9909         *)
9910                 echo "(Assuming you can't see EOF status from read anyway.)"
9911                 d_eofnblk=$undef
9912                 ;;
9913         esac
9914         ;;
9915 esac
9916 $rm -f try try.* .out core head.c mtry
9917
9918 : see if fchdir exists
9919 set fchdir d_fchdir
9920 eval $inlibc
9921
9922 : see if fchmod exists
9923 set fchmod d_fchmod
9924 eval $inlibc
9925
9926 : see if fchown exists
9927 set fchown d_fchown
9928 eval $inlibc
9929
9930 : see if this is an fcntl system
9931 set fcntl d_fcntl
9932 eval $inlibc
9933
9934 echo " "
9935 : See if fcntl-based locking works.
9936 $cat >try.c <<EOCP
9937 #include <stdlib.h>
9938 #include <unistd.h>
9939 #include <fcntl.h>
9940 #include <signal.h>
9941 $signal_t blech(x) int x; { exit(3); }
9942 int main() {
9943 #if defined(F_SETLK) && defined(F_SETLKW)
9944      struct flock flock;
9945      int retval, fd;
9946      fd = open("try.c", O_RDONLY);
9947      flock.l_type = F_RDLCK;
9948      flock.l_whence = SEEK_SET;
9949      flock.l_start = flock.l_len = 0;
9950      signal(SIGALRM, blech);
9951      alarm(10);
9952      retval = fcntl(fd, F_SETLK, &flock);
9953      close(fd);
9954      (retval < 0 ? exit(2) : exit(0));
9955 #else
9956      exit(2);
9957 #endif
9958 }
9959 EOCP
9960 echo "Checking if fcntl-based file locking works... "
9961 case "$d_fcntl" in
9962 "$define")
9963         set try
9964         if eval $compile_ok; then
9965                 if $run ./try; then
9966                         echo "Yes, it seems to work."
9967                         val="$define"
9968                 else
9969                         echo "Nope, it didn't work."
9970                         val="$undef"
9971                         case "$?" in
9972                         3) $cat >&4 <<EOM
9973 ***
9974 *** I had to forcibly timeout from fcntl(..., F_SETLK, ...).
9975 *** This is (almost) impossible.
9976 *** If your NFS lock daemons are not feeling well, something like
9977 *** this may happen, please investigate.  Cannot continue, aborting.
9978 ***
9979 EOM
9980                                 exit 1
9981                                 ;;
9982                         esac
9983                 fi
9984         else
9985                 echo "I'm unable to compile the test program, so I'll assume not."
9986                 val="$undef"
9987         fi
9988         ;;
9989 *) val="$undef";
9990         echo "Nope, since you don't even have fcntl()."
9991         ;;
9992 esac
9993 set d_fcntl_can_lock
9994 eval $setvar
9995 $rm -f try*
9996
9997
9998 : see if sys/select.h has to be included
9999 set sys/select.h i_sysselct
10000 eval $inhdr
10001
10002 : see if we should include time.h, sys/time.h, or both
10003 echo " "
10004 if test "X$timeincl" = X; then
10005         echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
10006         $echo $n "I'm now running the test program...$c"
10007         $cat >try.c <<'EOCP'
10008 #include <sys/types.h>
10009 #ifdef I_TIME
10010 #include <time.h>
10011 #endif
10012 #ifdef I_SYSTIME
10013 #ifdef SYSTIMEKERNEL
10014 #define KERNEL
10015 #endif
10016 #include <sys/time.h>
10017 #endif
10018 #ifdef I_SYSSELECT
10019 #include <sys/select.h>
10020 #endif
10021 int main()
10022 {
10023         struct tm foo;
10024 #ifdef S_TIMEVAL
10025         struct timeval bar;
10026 #endif
10027 #ifdef S_TIMEZONE
10028         struct timezone tzp;
10029 #endif
10030         if (foo.tm_sec == foo.tm_sec)
10031                 exit(0);
10032 #ifdef S_TIMEVAL
10033         if (bar.tv_sec == bar.tv_sec)
10034                 exit(0);
10035 #endif
10036         exit(1);
10037 }
10038 EOCP
10039         flags=''
10040         for s_timezone in '-DS_TIMEZONE' ''; do
10041         sysselect=''
10042         for s_timeval in '-DS_TIMEVAL' ''; do
10043         for i_systimek in '' '-DSYSTIMEKERNEL'; do
10044         for i_time in '' '-DI_TIME'; do
10045         for i_systime in '-DI_SYSTIME' ''; do
10046                 case "$flags" in
10047                 '') $echo $n ".$c"
10048                         set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
10049                         if eval $compile; then
10050                                 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
10051                                 shift
10052                                 flags="$*"
10053                                 echo " "
10054                                 $echo $n "Succeeded with $flags$c"
10055                         fi
10056                         ;;
10057                 esac
10058         done
10059         done
10060         done
10061         done
10062         done
10063         timeincl=''
10064         echo " "
10065         case "$flags" in
10066         *SYSTIMEKERNEL*) i_systimek="$define"
10067                 timeincl=`./findhdr sys/time.h`
10068                 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
10069         *) i_systimek="$undef";;
10070         esac
10071         case "$flags" in
10072         *I_TIME*) i_time="$define"
10073                 timeincl=`./findhdr time.h`" $timeincl"
10074                 echo "We'll include <time.h>." >&4;;
10075         *) i_time="$undef";;
10076         esac
10077         case "$flags" in
10078         *I_SYSTIME*) i_systime="$define"
10079                 timeincl=`./findhdr sys/time.h`" $timeincl"
10080                 echo "We'll include <sys/time.h>." >&4;;
10081         *) i_systime="$undef";;
10082         esac
10083         $rm -f try.c try
10084 fi
10085
10086 : check for fd_set items
10087 $cat <<EOM
10088
10089 Checking to see how well your C compiler handles fd_set and friends ...
10090 EOM
10091 $cat >try.c <<EOCP
10092 #$i_systime I_SYS_TIME
10093 #$i_sysselct I_SYS_SELECT
10094 #$d_socket HAS_SOCKET
10095 #include <sys/types.h>
10096 #ifdef HAS_SOCKET
10097 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
10098 #endif
10099 #ifdef I_SYS_TIME
10100 #include <sys/time.h>
10101 #endif
10102 #ifdef I_SYS_SELECT
10103 #include <sys/select.h>
10104 #endif
10105 int main() {
10106         fd_set fds;
10107
10108 #ifdef TRYBITS
10109         if(fds.fds_bits);
10110 #endif
10111
10112 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
10113         exit(0);
10114 #else
10115         exit(1);
10116 #endif
10117 }
10118 EOCP
10119 set try -DTRYBITS
10120 if eval $compile; then
10121         d_fds_bits="$define"
10122         d_fd_set="$define"
10123         echo "Well, your system knows about the normal fd_set typedef..." >&4
10124         if $run ./try; then
10125                 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
10126                 d_fd_macros="$define"
10127         else
10128                 $cat >&4 <<'EOM'
10129 but not the normal fd_set macros!  Gaaack!  I'll have to cover for you.
10130 EOM
10131                 d_fd_macros="$undef"
10132         fi
10133 else
10134         $cat <<'EOM'
10135 Hmm, your compiler has some difficulty with fd_set.  Checking further...
10136 EOM
10137         set try
10138         if eval $compile; then
10139                 d_fds_bits="$undef"
10140                 d_fd_set="$define"
10141                 echo "Well, your system has some sort of fd_set available..." >&4
10142                 if $run ./try; then
10143                         echo "and you have the normal fd_set macros." >&4
10144                         d_fd_macros="$define"
10145                 else
10146                         $cat <<'EOM'
10147 but not the normal fd_set macros!  Gross!  More work for me...
10148 EOM
10149                         d_fd_macros="$undef"
10150                 fi
10151         else
10152         echo "Well, you got zip.  That's OK, I can roll my own fd_set stuff." >&4
10153                 d_fd_set="$undef"
10154                 d_fds_bits="$undef"
10155                 d_fd_macros="$undef"
10156         fi
10157 fi
10158 $rm -f try try.*
10159
10160 : see if fgetpos exists
10161 set fgetpos d_fgetpos
10162 eval $inlibc
10163
10164 : see if finite exists
10165 set finite d_finite
10166 eval $inlibc
10167
10168 : see if finitel exists
10169 set finitel d_finitel
10170 eval $inlibc
10171
10172 : see if flock exists
10173 set flock d_flock
10174 eval $inlibc
10175
10176 : see if this is a sys/file.h system
10177 val=''
10178 set sys/file.h val
10179 eval $inhdr
10180
10181 : do we need to include sys/file.h ?
10182 case "$val" in
10183 "$define")
10184         echo " "
10185         if $h_sysfile; then
10186                 val="$define"
10187                 echo "We'll be including <sys/file.h>." >&4
10188         else
10189                 val="$undef"
10190                 echo "We won't be including <sys/file.h>." >&4
10191         fi
10192         ;;
10193 *)
10194         h_sysfile=false
10195         ;;
10196 esac
10197 set i_sysfile
10198 eval $setvar
10199
10200 : see if prototype for flock is available
10201 echo " "
10202 set d_flockproto flock $i_sysfile sys/file.h
10203 eval $hasproto
10204
10205 : see if fork exists
10206 set fork d_fork
10207 eval $inlibc
10208
10209 : see if fp_class exists
10210 set fp_class d_fp_class
10211 eval $inlibc
10212
10213 : see if pathconf exists
10214 set pathconf d_pathconf
10215 eval $inlibc
10216
10217 : see if fpathconf exists
10218 set fpathconf d_fpathconf
10219 eval $inlibc
10220
10221 : see if fpclass exists
10222 set fpclass d_fpclass
10223 eval $inlibc
10224
10225 : see if fpclassify exists
10226 set fpclassify d_fpclassify
10227 eval $inlibc
10228
10229 : see if fpclassl exists
10230 set fpclassl d_fpclassl
10231 eval $inlibc
10232
10233
10234 : check for fpos64_t
10235 echo " "
10236 echo "Checking to see if you have fpos64_t..." >&4
10237 $cat >try.c <<EOCP
10238 #include <stdio.h>
10239 int main() { fpos64_t x = 7; }
10240 EOCP
10241 set try
10242 if eval $compile; then
10243         val="$define"
10244         echo "You have fpos64_t."
10245 else
10246         val="$undef"
10247         echo "You do not have fpos64_t."
10248         case "$fpossize" in
10249         8) echo "(Your fpos_t is 64 bits, so you could use that.)" ;;
10250         esac
10251 fi
10252 $rm -f try.* try
10253 set d_fpos64_t
10254 eval $setvar
10255
10256 : see if frexpl exists
10257 set frexpl d_frexpl
10258 eval $inlibc
10259
10260 : see if this is a sys/param system
10261 set sys/param.h i_sysparam
10262 eval $inhdr
10263
10264 : see if this is a sys/mount.h system
10265 set sys/mount.h i_sysmount
10266 eval $inhdr
10267
10268
10269 echo " "
10270 echo "Checking to see if your system supports struct fs_data..." >&4
10271 set d_fs_data_s fs_data $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h
10272 eval $hasstruct
10273 case "$d_fs_data_s" in
10274 "$define")      echo "Yes, it does."   ;;
10275 *)              echo "No, it doesn't." ;;
10276 esac
10277
10278 : see if fseeko exists
10279 set fseeko d_fseeko
10280 eval $inlibc
10281 case "$longsize" in
10282 8) echo "(Your long is 64 bits, so you could use fseek.)" ;;
10283 esac
10284
10285 : see if fsetpos exists
10286 set fsetpos d_fsetpos
10287 eval $inlibc
10288
10289
10290 : see if fstatfs exists
10291 set fstatfs d_fstatfs
10292 eval $inlibc
10293
10294
10295 : see if statvfs exists
10296 set statvfs d_statvfs
10297 eval $inlibc
10298
10299 : see if fstatvfs exists
10300 set fstatvfs d_fstatvfs
10301 eval $inlibc
10302
10303
10304 : see if fsync exists
10305 set fsync d_fsync
10306 eval $inlibc
10307
10308 : see if ftello exists
10309 set ftello d_ftello
10310 eval $inlibc
10311 case "$longsize" in
10312 8) echo "(Your long is 64 bits, so you could use ftell.)" ;;
10313 esac
10314
10315 : see if getcwd exists
10316 set getcwd d_getcwd
10317 eval $inlibc
10318
10319 : see if getespwnam exists
10320 set getespwnam d_getespwnam
10321 eval $inlibc
10322
10323
10324 : see if getfsstat exists
10325 set getfsstat d_getfsstat
10326 eval $inlibc
10327
10328 : see if getgrent exists
10329 set getgrent d_getgrent
10330 eval $inlibc
10331
10332 : see if gethostbyaddr exists
10333 set gethostbyaddr d_gethbyaddr
10334 eval $inlibc
10335
10336 : see if gethostbyname exists
10337 set gethostbyname d_gethbyname
10338 eval $inlibc
10339
10340 : see if gethostent exists
10341 set gethostent d_gethent
10342 eval $inlibc
10343
10344 : see how we will look up host name
10345 echo " "
10346 call=''
10347 if set gethostname val -f d_gethname; eval $csym; $val; then
10348         echo 'gethostname() found.' >&4
10349         d_gethname="$define"
10350         call=gethostname
10351 fi
10352 if set uname val -f d_uname; eval $csym; $val; then
10353         if ./xenix; then
10354                 $cat <<'EOM'
10355 uname() was found, but you're running xenix, and older versions of xenix
10356 have a broken uname(). If you don't really know whether your xenix is old
10357 enough to have a broken system call, use the default answer.
10358
10359 EOM
10360                 dflt=y
10361                 case "$d_uname" in
10362                 "$define") dflt=n;;
10363                 esac
10364                 rp='Is your uname() broken?'
10365                 . ./myread
10366                 case "$ans" in
10367                 n*) d_uname="$define"; call=uname;;
10368                 esac
10369         else
10370                 echo 'uname() found.' >&4
10371                 d_uname="$define"
10372                 case "$call" in
10373                 '') call=uname ;;
10374                 esac
10375         fi
10376 fi
10377 case "$d_gethname" in
10378 '') d_gethname="$undef";;
10379 esac
10380 case "$d_uname" in
10381 '') d_uname="$undef";;
10382 esac
10383 case "$d_uname$d_gethname" in
10384 *define*)
10385         dflt=n
10386         cat <<EOM
10387  
10388 Every now and then someone has a $call() that lies about the hostname
10389 but can't be fixed for political or economic reasons.  If you wish, I can
10390 pretend $call() isn't there and maybe compute hostname at run-time
10391 thanks to the '$phostname' command.
10392
10393 EOM
10394         rp="Shall I ignore $call() from now on?"
10395         . ./myread
10396         case "$ans" in
10397         y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
10398         esac;;
10399 esac
10400 case "$phostname" in
10401 '') aphostname='';;
10402 *) case "$aphostname" in
10403         /*) ;;
10404         *) set X $phostname
10405                 shift
10406                 file=$1
10407                 shift
10408                 file=`./loc $file $file $pth`
10409                 aphostname=`echo $file $*`
10410                 ;;
10411         esac
10412         ;;
10413 esac
10414 case "$d_uname$d_gethname" in
10415 *define*) ;;
10416 *)
10417         case "$phostname" in
10418         '')
10419                 echo "There will be no way for $package to get your hostname." >&4;;
10420         *)
10421         echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
10422                 ;;
10423         esac;;
10424 esac
10425 case "$d_phostname" in
10426 '') d_phostname="$undef";;
10427 esac
10428
10429 : see if this is a netdb.h system
10430 set netdb.h i_netdb
10431 eval $inhdr
10432
10433 : see if prototypes for various gethostxxx netdb.h functions are available
10434 echo " "
10435 set d_gethostprotos gethostent $i_netdb netdb.h
10436 eval $hasproto
10437
10438 : see if getitimer exists
10439 set getitimer d_getitimer
10440 eval $inlibc
10441
10442 : see if getlogin exists
10443 set getlogin d_getlogin
10444 eval $inlibc
10445
10446 : see if getmnt exists
10447 set getmnt d_getmnt
10448 eval $inlibc
10449
10450 : see if getmntent exists
10451 set getmntent d_getmntent
10452 eval $inlibc
10453
10454 : see if getnetbyaddr exists
10455 set getnetbyaddr d_getnbyaddr
10456 eval $inlibc
10457
10458 : see if getnetbyname exists
10459 set getnetbyname d_getnbyname
10460 eval $inlibc
10461
10462 : see if getnetent exists
10463 set getnetent d_getnent
10464 eval $inlibc
10465
10466 : see if prototypes for various getnetxxx netdb.h functions are available
10467 echo " "
10468 set d_getnetprotos getnetent $i_netdb netdb.h
10469 eval $hasproto
10470
10471 : see if getpagesize exists
10472 set getpagesize d_getpagsz
10473 eval $inlibc
10474
10475
10476 : see if getprotobyname exists
10477 set getprotobyname d_getpbyname
10478 eval $inlibc
10479
10480 : see if getprotobynumber exists
10481 set getprotobynumber d_getpbynumber
10482 eval $inlibc
10483
10484 : see if getprotoent exists
10485 set getprotoent d_getpent
10486 eval $inlibc
10487
10488 : see if getpgid exists
10489 set getpgid d_getpgid
10490 eval $inlibc
10491
10492 : see if getpgrp2 exists
10493 set getpgrp2 d_getpgrp2
10494 eval $inlibc
10495
10496 : see if getppid exists
10497 set getppid d_getppid
10498 eval $inlibc
10499
10500 : see if getpriority exists
10501 set getpriority d_getprior
10502 eval $inlibc
10503
10504 : see if prototypes for various getprotoxxx netdb.h functions are available
10505 echo " "
10506 set d_getprotoprotos getprotoent $i_netdb netdb.h
10507 eval $hasproto
10508
10509 : see if getprpwnam exists
10510 set getprpwnam d_getprpwnam
10511 eval $inlibc
10512
10513 : see if getpwent exists
10514 set getpwent d_getpwent
10515 eval $inlibc
10516
10517
10518 : see if getservbyname exists
10519 set getservbyname d_getsbyname
10520 eval $inlibc
10521
10522 : see if getservbyport exists
10523 set getservbyport d_getsbyport
10524 eval $inlibc
10525
10526 : see if getservent exists
10527 set getservent d_getsent
10528 eval $inlibc
10529
10530 : see if prototypes for various getservxxx netdb.h functions are available
10531 echo " "
10532 set d_getservprotos getservent $i_netdb netdb.h
10533 eval $hasproto
10534
10535 : see if getspnam exists
10536 set getspnam d_getspnam
10537 eval $inlibc
10538
10539 : see if gettimeofday or ftime exists
10540 set gettimeofday d_gettimeod
10541 eval $inlibc
10542 case "$d_gettimeod" in
10543 "$undef")
10544         set ftime d_ftime 
10545         eval $inlibc
10546         ;;
10547 *)
10548         val="$undef"; set d_ftime; eval $setvar
10549         ;;
10550 esac
10551 case "$d_gettimeod$d_ftime" in
10552 "$undef$undef")
10553         echo " "
10554         echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
10555         ;;
10556 esac
10557
10558 : see if this is an grp system
10559 set grp.h i_grp
10560 eval $inhdr
10561
10562 case "$i_grp" in
10563 $define)
10564         xxx=`./findhdr grp.h`
10565         $cppstdin $cppflags $cppminus < $xxx >$$.h
10566
10567         if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
10568                 val="$define"
10569         else
10570                 val="$undef"
10571         fi
10572         set d_grpasswd
10573         eval $setvar
10574
10575         $rm -f $$.h
10576         ;;
10577 *)
10578         val="$undef";
10579         set d_grpasswd; eval $setvar
10580         ;;
10581 esac
10582
10583 : see if hasmntopt exists
10584 set hasmntopt d_hasmntopt
10585 eval $inlibc
10586
10587 : see if this is a netinet/in.h or sys/in.h system
10588 set netinet/in.h i_niin sys/in.h i_sysin
10589 eval $inhdr
10590
10591 : see if arpa/inet.h has to be included
10592 set arpa/inet.h i_arpainet
10593 eval $inhdr
10594
10595 : see if htonl --and friends-- exists
10596 val=''
10597 set htonl val
10598 eval $inlibc
10599
10600 : Maybe they are macros.
10601 case "$val" in
10602 $undef)
10603         $cat >htonl.c <<EOM
10604 #include <stdio.h>
10605 #include <sys/types.h>
10606 #$i_niin I_NETINET_IN
10607 #$i_sysin I_SYS_IN
10608 #$i_arpainet I_ARPA_INET
10609 #ifdef I_NETINET_IN
10610 #include <netinet/in.h>
10611 #endif
10612 #ifdef I_SYS_IN
10613 #include <sys/in.h>
10614 #endif
10615 #ifdef I_ARPA_INET
10616 #include <arpa/inet.h>
10617 #endif
10618 #ifdef htonl
10619 printf("Defined as a macro.");
10620 #endif
10621 EOM
10622         $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
10623         if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
10624                 val="$define"
10625                 echo "But it seems to be defined as a macro." >&4
10626         fi
10627         $rm -f htonl.?
10628         ;;
10629 esac
10630 set d_htonl
10631 eval $setvar
10632
10633 : index or strchr
10634 echo " "
10635 if set index val -f; eval $csym; $val; then
10636         if set strchr val -f d_strchr; eval $csym; $val; then
10637                 if $contains strchr "$strings" >/dev/null 2>&1 ; then
10638                         val="$define"
10639                         vali="$undef"
10640                         echo "strchr() found." >&4
10641                 else
10642                         val="$undef"
10643                         vali="$define"
10644                         echo "index() found." >&4
10645                 fi
10646         else
10647                 val="$undef"
10648                 vali="$define"
10649                 echo "index() found." >&4
10650         fi
10651 else
10652         if set strchr val -f d_strchr; eval $csym; $val; then
10653                 val="$define"
10654                 vali="$undef"
10655                 echo "strchr() found." >&4
10656         else
10657                 echo "No index() or strchr() found!" >&4
10658                 val="$undef"
10659                 vali="$undef"
10660         fi
10661 fi
10662 set d_strchr; eval $setvar
10663 val="$vali"
10664 set d_index; eval $setvar
10665
10666 : check whether inet_aton exists
10667 set inet_aton d_inetaton
10668 eval $inlibc
10669
10670 : Look for isascii
10671 echo " "
10672 $cat >isascii.c <<'EOCP'
10673 #include <stdio.h>
10674 #include <ctype.h>
10675 int main() {
10676         int c = 'A';
10677         if (isascii(c))
10678                 exit(0);
10679         else
10680                 exit(1);
10681 }
10682 EOCP
10683 set isascii
10684 if eval $compile; then
10685         echo "isascii() found." >&4
10686         val="$define"
10687 else
10688         echo "isascii() NOT found." >&4
10689         val="$undef"
10690 fi
10691 set d_isascii
10692 eval $setvar
10693 $rm -f isascii*
10694
10695 : see if isfinite exists
10696 set isfinite d_isfinite
10697 eval $inlibc
10698
10699 : see if isinf exists
10700 set isinf d_isinf
10701 eval $inlibc
10702
10703 : see if isnan exists
10704 set isnan d_isnan
10705 eval $inlibc
10706
10707 : see if isnanl exists
10708 set isnanl d_isnanl
10709 eval $inlibc
10710
10711 : see if killpg exists
10712 set killpg d_killpg
10713 eval $inlibc
10714
10715 : see if lchown exists
10716 echo " "
10717 $cat > try.c <<'EOCP'
10718 /* System header to define __stub macros and hopefully few prototypes,
10719     which can conflict with char lchown(); below.  */
10720 #include <assert.h>
10721 /* Override any gcc2 internal prototype to avoid an error.  */
10722 /* We use char because int might match the return type of a gcc2
10723    builtin and then its argument prototype would still apply.  */
10724 char lchown();
10725 int main() {
10726     /*  The GNU C library defines this for functions which it implements
10727         to always fail with ENOSYS.  Some functions are actually named
10728         something starting with __ and the normal name is an alias.  */
10729 #if defined (__stub_lchown) || defined (__stub___lchown)
10730 choke me
10731 #else
10732 lchown();
10733 #endif
10734 ; return 0; }
10735 EOCP
10736 set try
10737 if eval $compile; then
10738     $echo "lchown() found." >&4
10739     val="$define"
10740 else
10741     $echo "lchown() NOT found." >&4
10742     val="$undef"
10743 fi
10744 set d_lchown
10745 eval $setvar
10746
10747 : See if number of significant digits in a double precision number is known
10748 echo " "
10749 $cat >ldbl_dig.c <<EOM
10750 #$i_limits I_LIMITS
10751 #$i_float I_FLOAT
10752 #ifdef I_LIMITS
10753 #include <limits.h>
10754 #endif
10755 #ifdef I_FLOAT
10756 #include <float.h>
10757 #endif
10758 #ifdef LDBL_DIG
10759 printf("Contains LDBL_DIG");
10760 #endif
10761 EOM
10762 $cppstdin $cppflags $cppminus < ldbl_dig.c >ldbl_dig.E 2>/dev/null
10763 if $contains 'LDBL_DIG' ldbl_dig.E >/dev/null 2>&1; then
10764         echo "LDBL_DIG found." >&4
10765         val="$define"
10766 else
10767         echo "LDBL_DIG NOT found." >&4
10768         val="$undef"
10769 fi
10770 $rm -f ldbl_dig.?
10771 set d_ldbl_dig
10772 eval $setvar
10773
10774 : see if link exists
10775 set link d_link
10776 eval $inlibc
10777
10778 : see if localeconv exists
10779 set localeconv d_locconv
10780 eval $inlibc
10781
10782 : see if lockf exists
10783 set lockf d_lockf
10784 eval $inlibc
10785
10786 : see if prototype for lseek is available
10787 echo " "
10788 set d_lseekproto lseek $i_systypes sys/types.h $i_unistd unistd.h
10789 eval $hasproto
10790
10791 : see if lstat exists
10792 set lstat d_lstat
10793 eval $inlibc
10794
10795 : see if madvise exists
10796 set madvise d_madvise
10797 eval $inlibc
10798
10799 : see if mblen exists
10800 set mblen d_mblen
10801 eval $inlibc
10802
10803 : see if mbstowcs exists
10804 set mbstowcs d_mbstowcs
10805 eval $inlibc
10806
10807 : see if mbtowc exists
10808 set mbtowc d_mbtowc
10809 eval $inlibc
10810
10811 : see if memchr exists
10812 set memchr d_memchr
10813 eval $inlibc
10814
10815 : see if memcmp exists
10816 set memcmp d_memcmp
10817 eval $inlibc
10818
10819 : see if memcpy exists
10820 set memcpy d_memcpy
10821 eval $inlibc
10822
10823 : see if memmove exists
10824 set memmove d_memmove
10825 eval $inlibc
10826
10827 : see if memset exists
10828 set memset d_memset
10829 eval $inlibc
10830
10831 : see if mkdir exists
10832 set mkdir d_mkdir
10833 eval $inlibc
10834
10835 : see if mkdtemp exists
10836 set mkdtemp d_mkdtemp
10837 eval $inlibc
10838
10839 : see if mkfifo exists
10840 set mkfifo d_mkfifo
10841 eval $inlibc
10842
10843 : see if mkstemp exists
10844 set mkstemp d_mkstemp
10845 eval $inlibc
10846
10847 : see if mkstemps exists
10848 set mkstemps d_mkstemps
10849 eval $inlibc
10850
10851 : see if mktime exists
10852 set mktime d_mktime
10853 eval $inlibc
10854
10855 : see if this is a sys/mman.h system
10856 set sys/mman.h i_sysmman
10857 eval $inhdr
10858
10859 : see if mmap exists
10860 set mmap d_mmap
10861 eval $inlibc
10862 : see what shmat returns
10863 : default to something harmless
10864 mmaptype='void *'
10865 case "$i_sysmman$d_mmap" in
10866 "$define$define")
10867         $cat >mmap.c <<'END'
10868 #include <sys/mman.h>
10869 void *mmap();
10870 END
10871         if $cc $ccflags -c mmap.c >/dev/null 2>&1; then
10872                 mmaptype='void *'
10873         else
10874                 mmaptype='caddr_t'
10875         fi
10876         echo "and it returns ($mmaptype)." >&4
10877         ;;
10878 esac
10879
10880
10881
10882 : see if modfl exists
10883 set modfl d_modfl
10884 eval $inlibc
10885
10886 d_modfl_pow32_bug="$undef"
10887
10888 case "$d_longdbl$d_modfl" in
10889 $define$define)
10890         $cat <<EOM
10891 Checking to see whether your modfl() is okay for large values...
10892 EOM
10893 $cat >try.c <<EOCP
10894 #include <math.h> 
10895 #include <stdio.h>
10896 int main() {
10897     long double nv = 4294967303.15;
10898     long double v, w;
10899     v = modfl(nv, &w);         
10900 #ifdef __GLIBC__
10901     printf("glibc");
10902 #endif
10903     printf(" %"$sPRIfldbl" %"$sPRIfldbl" %"$sPRIfldbl"\n", nv, v, w);
10904     return 0;
10905 }
10906 EOCP
10907         case "$osname:$gccversion" in
10908         aix:)   saveccflags="$ccflags"
10909                 ccflags="$ccflags -qlongdouble" ;; # to avoid core dump
10910         esac
10911         set try
10912         if eval $compile; then
10913                 foo=`$run ./try`
10914                 case "$foo" in
10915                 *" 4294967303.150000 1.150000 4294967302.000000")
10916                         echo >&4 "Your modfl() is broken for large values."
10917                         d_modfl_pow32_bug="$define"
10918                         case "$foo" in
10919                         glibc)  echo >&4 "You should upgrade your glibc to at least 2.2.2 to get a fixed modfl()."
10920                         ;;
10921                         esac
10922                         ;;
10923                 *" 4294967303.150000 0.150000 4294967303.000000")
10924                         echo >&4 "Your modfl() seems okay for large values."
10925                         ;;
10926                 *)      echo >&4 "I don't understand your modfl() at all."
10927                         d_modfl="$undef"
10928                         ;;
10929                 esac
10930                 $rm -f try.* try core core.try.*
10931         else
10932                 echo "I cannot figure out whether your modfl() is okay, assuming it isn't."
10933                 d_modfl="$undef"
10934         fi
10935         case "$osname:$gccversion" in
10936         aix:)   ccflags="$saveccflags" ;; # restore
10937         esac
10938         ;;
10939 esac
10940
10941 : see if mprotect exists
10942 set mprotect d_mprotect
10943 eval $inlibc
10944
10945 : see if msgctl exists
10946 set msgctl d_msgctl
10947 eval $inlibc
10948
10949 : see if msgget exists
10950 set msgget d_msgget
10951 eval $inlibc
10952
10953 : see if msgsnd exists
10954 set msgsnd d_msgsnd
10955 eval $inlibc
10956
10957 : see if msgrcv exists
10958 set msgrcv d_msgrcv
10959 eval $inlibc
10960
10961 : see how much of the 'msg*(2)' library is present.
10962 h_msg=true
10963 echo " "
10964 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
10965 *"$undef"*) h_msg=false;;
10966 esac
10967 case "$osname" in
10968 freebsd)
10969     case "`ipcs 2>&1`" in
10970     "SVID messages"*"not configured"*)
10971         echo "Your $osname does not have the msg*(2) configured." >&4
10972         h_msg=false
10973         val="$undef"
10974         set msgctl d_msgctl
10975         eval $setvar
10976         set msgget d_msgget
10977         eval $setvar
10978         set msgsnd d_msgsnd
10979         eval $setvar
10980         set msgrcv d_msgrcv
10981         eval $setvar
10982         ;;
10983     esac
10984     ;;
10985 esac
10986 : we could also check for sys/ipc.h ...
10987 if $h_msg && $test `./findhdr sys/msg.h`; then
10988         echo "You have the full msg*(2) library." >&4
10989         val="$define"
10990 else
10991         echo "You don't have the full msg*(2) library." >&4
10992         val="$undef"
10993 fi
10994 set d_msg
10995 eval $setvar
10996
10997
10998 echo " "
10999 echo "Checking to see if your system supports struct msghdr..." >&4
11000 set d_msghdr_s msghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
11001 eval $hasstruct
11002 case "$d_msghdr_s" in
11003 "$define")      echo "Yes, it does."   ;;
11004 *)              echo "No, it doesn't." ;;
11005 esac
11006
11007
11008 : see if msync exists
11009 set msync d_msync
11010 eval $inlibc
11011
11012 : see if munmap exists
11013 set munmap d_munmap
11014 eval $inlibc
11015
11016 : see if nice exists
11017 set nice d_nice
11018 eval $inlibc
11019
11020 : see if this is a langinfo.h system
11021 set langinfo.h i_langinfo
11022 eval $inhdr
11023
11024 : see if nl_langinfo exists
11025 set nl_langinfo d_nl_langinfo
11026 eval $inlibc
11027
11028 : check for length of character
11029 echo " "
11030 case "$charsize" in
11031 '')
11032         echo "Checking to see how big your characters are (hey, you never know)..." >&4
11033         $cat >try.c <<'EOCP'
11034 #include <stdio.h>
11035 int main()
11036 {
11037     printf("%d\n", (int)sizeof(char));
11038     exit(0);
11039 }
11040 EOCP
11041         set try
11042         if eval $compile_ok; then
11043                 dflt=`$run ./try`
11044         else
11045                 dflt='1'
11046                 echo "(I can't seem to compile the test program.  Guessing...)"
11047         fi
11048         ;;
11049 *)
11050         dflt="$charsize"
11051         ;;
11052 esac
11053 rp="What is the size of a character (in bytes)?"
11054 . ./myread
11055 charsize="$ans"
11056 $rm -f try.c try
11057
11058 : check for volatile keyword
11059 echo " "
11060 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
11061 $cat >try.c <<'EOCP'
11062 int main()
11063 {
11064         typedef struct _goo_struct goo_struct;
11065         goo_struct * volatile goo = ((goo_struct *)0);
11066         struct _goo_struct {
11067                 long long_int;
11068                 int reg_int;
11069                 char char_var;
11070         };
11071         typedef unsigned short foo_t;
11072         char *volatile foo;
11073         volatile int bar;
11074         volatile foo_t blech;
11075         foo = foo;
11076 }
11077 EOCP
11078 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
11079         val="$define"
11080         echo "Yup, it does."
11081 else
11082         val="$undef"
11083         echo "Nope, it doesn't."
11084 fi
11085 set d_volatile
11086 eval $setvar
11087 $rm -f try.*
11088
11089
11090 echo " "
11091 $echo "Choosing the C types to be used for Perl's internal types..." >&4
11092
11093 case "$use64bitint:$d_quad:$quadtype" in
11094 define:define:?*)
11095         ivtype="$quadtype"
11096         uvtype="$uquadtype"
11097         ivsize=8
11098         uvsize=8
11099         ;;
11100 *)      ivtype="long"
11101         uvtype="unsigned long"
11102         ivsize=$longsize
11103         uvsize=$longsize
11104         ;;
11105 esac
11106
11107 case "$uselongdouble:$d_longdbl" in
11108 define:define)
11109         nvtype="long double"
11110         nvsize=$longdblsize
11111         ;;
11112 *)      nvtype=double
11113         nvsize=$doublesize
11114         ;;
11115 esac
11116
11117 $echo "(IV will be "$ivtype", $ivsize bytes)"
11118 $echo "(UV will be "$uvtype", $uvsize bytes)"
11119 $echo "(NV will be "$nvtype", $nvsize bytes)"
11120
11121 $cat >try.c <<EOCP
11122 #$i_inttypes I_INTTYPES
11123 #ifdef I_INTTYPES
11124 #include <inttypes.h>
11125 #endif
11126 #include <stdio.h>
11127 int main() {
11128 #ifdef INT8
11129    int8_t i =  INT8_MAX;
11130   uint8_t u = UINT8_MAX;
11131   printf("int8_t\n");
11132 #endif
11133 #ifdef INT16
11134    int16_t i =  INT16_MAX;
11135   uint16_t i = UINT16_MAX;
11136   printf("int16_t\n");
11137 #endif
11138 #ifdef INT32
11139    int32_t i =  INT32_MAX;
11140   uint32_t u = UINT32_MAX;
11141   printf("int32_t\n");
11142 #endif
11143 }
11144 EOCP
11145
11146 case "$i8type" in
11147 '')     case "$charsize" in
11148         1)      i8type=char
11149                 u8type="unsigned char"
11150                 i8size=$charsize
11151                 u8size=$charsize
11152                 ;;
11153         esac
11154         ;;
11155 esac
11156 case "$i8type" in
11157 '')     set try -DINT8
11158         if eval $compile; then
11159                 case "`$run ./try`" in
11160                 int8_t) i8type=int8_t
11161                         u8type=uint8_t
11162                         i8size=1
11163                         u8size=1
11164                         ;;
11165                 esac
11166         fi
11167         ;;
11168 esac
11169 case "$i8type" in
11170 '')     if $test $charsize -ge 1; then
11171                 i8type=char
11172                 u8type="unsigned char"
11173                 i8size=$charsize
11174                 u8size=$charsize
11175         fi
11176         ;;
11177 esac
11178
11179 case "$i16type" in
11180 '')     case "$shortsize" in
11181         2)      i16type=short
11182                 u16type="unsigned short"
11183                 i16size=$shortsize
11184                 u16size=$shortsize
11185                 ;;
11186         esac
11187         ;;
11188 esac
11189 case "$i16type" in
11190 '')     set try -DINT16
11191         if eval $compile; then
11192                 case "`$run ./try`" in
11193                 int16_t)
11194                         i16type=int16_t
11195                         u16type=uint16_t
11196                         i16size=2
11197                         u16size=2
11198                         ;;
11199                 esac
11200         fi
11201         ;;
11202 esac
11203 case "$i16type" in
11204 '')     if $test $shortsize -ge 2; then
11205                 i16type=short
11206                 u16type="unsigned short"
11207                 i16size=$shortsize
11208                 u16size=$shortsize
11209         fi
11210         ;;
11211 esac
11212
11213 case "$i32type" in
11214 '')     case "$longsize" in
11215         4)      i32type=long
11216                 u32type="unsigned long"
11217                 i32size=$longsize
11218                 u32size=$longsize
11219                 ;;
11220         *)      case "$intsize" in
11221                 4)      i32type=int
11222                         u32type="unsigned int"
11223                         i32size=$intsize
11224                         u32size=$intsize
11225                         ;;
11226                 esac
11227                 ;;
11228         esac
11229         ;;
11230 esac
11231 case "$i32type" in
11232 '')     set try -DINT32
11233         if eval $compile; then
11234                 case "`$run ./try`" in
11235                 int32_t)
11236                         i32type=int32_t
11237                         u32type=uint32_t
11238                         i32size=4
11239                         u32size=4
11240                         ;;
11241                 esac
11242         fi
11243         ;;
11244 esac
11245 case "$i32type" in
11246 '')     if $test $intsize -ge 4; then
11247                 i32type=int
11248                 u32type="unsigned int"
11249                 i32size=$intsize
11250                 u32size=$intsize
11251         fi
11252         ;;
11253 esac
11254
11255 case "$i64type" in
11256 '')     case "$d_quad:$quadtype" in
11257         define:?*)
11258                 i64type="$quadtype"
11259                 u64type="$uquadtype"
11260                 i64size=8
11261                 u64size=8
11262                 ;;
11263         esac
11264         ;;
11265 esac
11266
11267 $echo "Checking how many bits of your UVs your NVs can preserve..." >&4
11268 : volatile so that the compiler has to store it out to memory.
11269 if test X"$d_volatile" = X"$define"; then
11270         volatile=volatile
11271 fi
11272 $cat <<EOP >try.c
11273 #include <stdio.h>
11274 #include <sys/types.h>
11275 #include <signal.h>
11276 #ifdef SIGFPE
11277 $volatile int bletched = 0;
11278 $signal_t blech(s) int s; { bletched = 1; }
11279 #endif
11280 int main() {
11281     $uvtype u = 0;
11282     $nvtype d;
11283     int     n = 8 * $uvsize;
11284     int     i;
11285 #ifdef SIGFPE
11286     signal(SIGFPE, blech);
11287 #endif
11288
11289     for (i = 0; i < n; i++) {
11290       u = u << 1 | ($uvtype)1;
11291       d = ($nvtype)u;
11292       if (($uvtype)d != u)
11293         break;
11294       if (d <= 0)
11295         break;
11296       d = ($nvtype)(u - 1);
11297       if (($uvtype)d != (u - 1))
11298         break;
11299 #ifdef SIGFPE
11300       if (bletched) {
11301         break;
11302 #endif
11303       } 
11304     }
11305     printf("%d\n", ((i == n) ? -n : i));
11306     exit(0);
11307 }
11308 EOP
11309 set try
11310
11311 d_nv_preserves_uv="$undef"
11312 if eval $compile; then
11313         d_nv_preserves_uv_bits="`$run ./try`"
11314 fi
11315 case "$d_nv_preserves_uv_bits" in
11316 \-[1-9]*)       
11317         d_nv_preserves_uv_bits=`expr 0 - $d_nv_preserves_uv_bits`
11318         $echo "Your NVs can preserve all $d_nv_preserves_uv_bits bits of your UVs."  2>&1
11319         d_nv_preserves_uv="$define"
11320         ;;
11321 [1-9]*) $echo "Your NVs can preserve only $d_nv_preserves_uv_bits bits of your UVs."  2>&1
11322         d_nv_preserves_uv="$undef" ;;
11323 *)      $echo "Can't figure out how many bits your NVs preserve." 2>&1
11324         d_nv_preserves_uv_bits="$undef" ;;
11325 esac
11326
11327 $rm -f try.* try
11328
11329
11330 : check for off64_t
11331 echo " "
11332 echo "Checking to see if you have off64_t..." >&4
11333 $cat >try.c <<EOCP
11334 #include <sys/types.h>
11335 #include <unistd.h>
11336 int main() { off64_t x = 7; }
11337 EOCP
11338 set try
11339 if eval $compile; then
11340         val="$define"
11341         echo "You have off64_t."
11342 else
11343         val="$undef"
11344         echo "You do not have off64_t."
11345         case "$lseeksize" in
11346         8) echo "(Your off_t is 64 bits, so you could use that.)" ;;
11347         esac
11348 fi
11349 $rm -f try.* try
11350 set d_off64_t
11351 eval $setvar
11352
11353 : see if POSIX threads are available
11354 set pthread.h i_pthread
11355 eval $inhdr
11356
11357
11358
11359
11360 : how to create joinable pthreads
11361 if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
11362         echo " "
11363         echo "Checking what constant to use for creating joinable pthreads..." >&4 
11364         $cat >try.c <<'EOCP'
11365 #include <pthread.h>
11366 int main() {
11367     int detachstate = JOINABLE;
11368 }
11369 EOCP
11370         set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
11371         if eval $compile; then
11372                 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
11373                 val="$undef" # Yes, undef.
11374                 set d_old_pthread_create_joinable
11375                 eval $setvar
11376                 val=""
11377                 set old_pthread_create_joinable
11378                 eval $setvar
11379         else
11380                 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
11381                 if eval $compile; then
11382                         echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
11383                         val="$define"
11384                         set d_old_pthread_create_joinable
11385                         eval $setvar
11386                         val=PTHREAD_CREATE_UNDETACHED
11387                         set old_pthread_create_joinable
11388                         eval $setvar
11389                 else            
11390                         set try -DJOINABLE=__UNDETACHED
11391                         if eval $compile; then
11392                                 echo "You seem to use __UNDETACHED." >&4
11393                                 val="$define"
11394                                 set d_old_pthread_create_joinable
11395                                 eval $setvar
11396                                 val=__UNDETACHED
11397                                 set old_pthread_create_joinable
11398                                 eval $setvar
11399                         else
11400                                 echo "Egads, nothing obvious found.  Guessing that you use 0." >&4
11401                                 val="$define"
11402                                 set d_old_pthread_create_joinable
11403                                 eval $setvar
11404                                 val=0
11405                                 set old_pthread_create_joinable
11406                                 eval $setvar
11407                         fi
11408                 fi
11409         fi
11410         $rm -f try try.*
11411 else
11412     d_old_pthread_create_joinable="$undef"
11413     old_pthread_create_joinable=""
11414 fi
11415
11416 : see if pause exists
11417 set pause d_pause
11418 eval $inlibc
11419
11420 : see if pipe exists
11421 set pipe d_pipe
11422 eval $inlibc
11423
11424 : see if poll exists
11425 set poll d_poll
11426 eval $inlibc
11427
11428 : see if readlink exists
11429 set readlink d_readlink
11430 eval $inlibc
11431
11432 echo " "
11433 echo "Checking for /proc/self/exe ..." >&4
11434 val="$undef"
11435 if $test "$d_readlink" = "$define" ; then
11436         if $issymlink /proc/self/exe ; then
11437                 $ls -l /proc/self/exe > reflect
11438                 if $contains $ls reflect >/dev/null; then
11439                         val="$define"
11440                         echo "You have linux-like /proc/self/exe"
11441                 fi
11442                 $rm reflect
11443         fi
11444 fi
11445 set d_procselfexe
11446 eval $setvar
11447
11448
11449 : see if pthread_atfork exists
11450 set pthread_atfork d_pthread_atfork
11451 eval $inlibc
11452
11453
11454 : see whether the various POSIXish _yields exist
11455 $cat >try.c <<EOP
11456 #include <pthread.h>
11457 #include <stdio.h>
11458 int main() {
11459 #ifdef SCHED_YIELD
11460         sched_yield();
11461 #else
11462 #ifdef PTHREAD_YIELD
11463         pthread_yield();
11464 #else
11465 #ifdef PTHREAD_YIELD_NULL
11466         pthread_yield(NULL);
11467 #endif
11468 #endif
11469 #endif
11470 }
11471 EOP
11472 : see if sched_yield exists
11473 set try -DSCHED_YIELD
11474 if eval $compile; then
11475     val="$define"
11476     sched_yield='sched_yield()'
11477 else
11478     val="$undef"
11479 fi
11480 case "$usethreads" in
11481 $define)
11482         case "$val" in
11483         $define) echo 'sched_yield() found.' >&4        ;;
11484         *)       echo 'sched_yield() NOT found.' >&4    ;;
11485         esac
11486 esac
11487 set d_sched_yield
11488 eval $setvar
11489
11490 : see if pthread_yield exists
11491 set try -DPTHREAD_YIELD
11492 if eval $compile; then
11493     val="$define"
11494     case "$sched_yield" in
11495     '') sched_yield='pthread_yield()' ;;
11496     esac
11497 else
11498     set try -DPTHREAD_YIELD_NULL
11499     if eval $compile; then
11500         val="$define"
11501         case "$sched_yield" in
11502         '') sched_yield='pthread_yield(NULL)' ;;
11503         esac
11504     else
11505         val="$undef"
11506     fi
11507 fi
11508 case "$usethreads" in
11509 $define)
11510         case "$val" in
11511         $define) echo 'pthread_yield() found.' >&4      ;;
11512         *)       echo 'pthread_yield() NOT found.' >&4  ;;
11513         esac
11514         ;;
11515 esac
11516 set d_pthread_yield
11517 eval $setvar
11518
11519 case "$sched_yield" in
11520 '') sched_yield=undef ;;
11521 esac
11522
11523 $rm -f try try.*
11524
11525 : see if this is a pwd.h system
11526 set pwd.h i_pwd
11527 eval $inhdr
11528
11529 case "$i_pwd" in
11530 $define)
11531         xxx=`./findhdr pwd.h`
11532         $cppstdin $cppflags $cppminus < $xxx >$$.h
11533
11534         if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
11535                 val="$define"
11536         else
11537                 val="$undef"
11538         fi
11539         set d_pwquota
11540         eval $setvar
11541
11542         if $contains 'pw_age' $$.h >/dev/null 2>&1; then
11543                 val="$define"
11544         else
11545                 val="$undef"
11546         fi
11547         set d_pwage
11548         eval $setvar
11549
11550         if $contains 'pw_change' $$.h >/dev/null 2>&1; then
11551                 val="$define"
11552         else
11553                 val="$undef"
11554         fi
11555         set d_pwchange
11556         eval $setvar
11557
11558         if $contains 'pw_class' $$.h >/dev/null 2>&1; then
11559                 val="$define"
11560         else
11561                 val="$undef"
11562         fi
11563         set d_pwclass
11564         eval $setvar
11565
11566         if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
11567                 val="$define"
11568         else
11569                 val="$undef"
11570         fi
11571         set d_pwexpire
11572         eval $setvar
11573
11574         if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
11575                 val="$define"
11576         else
11577                 val="$undef"
11578         fi
11579         set d_pwcomment
11580         eval $setvar
11581
11582         if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
11583                 val="$define"
11584         else
11585                 val="$undef"
11586         fi
11587         set d_pwgecos
11588         eval $setvar
11589
11590         if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
11591                 val="$define"
11592         else
11593                 val="$undef"
11594         fi
11595         set d_pwpasswd
11596         eval $setvar
11597
11598         $rm -f $$.h
11599         ;;
11600 *)
11601         val="$undef"; 
11602         set d_pwquota; eval $setvar
11603         set d_pwage; eval $setvar
11604         set d_pwchange; eval $setvar
11605         set d_pwclass; eval $setvar
11606         set d_pwexpire; eval $setvar
11607         set d_pwcomment; eval $setvar
11608         set d_pwgecos; eval $setvar
11609         set d_pwpasswd; eval $setvar
11610         ;;
11611 esac
11612
11613 : see if readdir and friends exist
11614 set readdir d_readdir
11615 eval $inlibc
11616 set seekdir d_seekdir
11617 eval $inlibc
11618 set telldir d_telldir
11619 eval $inlibc
11620 set rewinddir d_rewinddir
11621 eval $inlibc
11622
11623 : see if readv exists
11624 set readv d_readv
11625 eval $inlibc
11626
11627 : see if recvmsg exists
11628 set recvmsg d_recvmsg
11629 eval $inlibc
11630
11631 : see if rename exists
11632 set rename d_rename
11633 eval $inlibc
11634
11635 : see if rmdir exists
11636 set rmdir d_rmdir
11637 eval $inlibc
11638
11639 : see if memory.h is available.
11640 val=''
11641 set memory.h val
11642 eval $inhdr
11643
11644 : See if it conflicts with string.h
11645 case "$val" in
11646 $define)
11647         case "$strings" in
11648         '') ;;
11649         *)
11650                 $cppstdin $cppflags $cppminus < $strings > mem.h
11651                 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
11652                         echo " "
11653                         echo "We won't be including <memory.h>."
11654                         val="$undef"
11655                 fi
11656                 $rm -f mem.h
11657                 ;;
11658         esac
11659 esac
11660 set i_memory
11661 eval $setvar
11662
11663 : can bcopy handle overlapping blocks?
11664 echo " "
11665 val="$undef"
11666 case "$d_memmove" in
11667 "$define") echo "I'll use memmove() instead of bcopy() for overlapping copies." ;;
11668 *)      case "$d_bcopy" in
11669         "$define")
11670                 echo "Checking to see if bcopy() can do overlapping copies..." >&4
11671                 $cat >try.c <<EOCP
11672 #$i_memory I_MEMORY
11673 #$i_stdlib I_STDLIB
11674 #$i_string I_STRING
11675 #$i_unistd I_UNISTD
11676 EOCP
11677         $cat >>try.c <<'EOCP'
11678 #include <stdio.h>
11679 #ifdef I_MEMORY
11680 #  include <memory.h>
11681 #endif
11682 #ifdef I_STDLIB
11683 #  include <stdlib.h>
11684 #endif
11685 #ifdef I_STRING
11686 #  include <string.h>
11687 #else
11688 #  include <strings.h>
11689 #endif
11690 #ifdef I_UNISTD
11691 #  include <unistd.h>  /* Needed for NetBSD */
11692 #endif
11693 int main()
11694 {
11695 char buf[128], abc[128];
11696 char *b;
11697 int len;
11698 int off;
11699 int align;
11700
11701 /* Copy "abcde..." string to char abc[] so that gcc doesn't
11702    try to store the string in read-only memory. */
11703 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
11704
11705 for (align = 7; align >= 0; align--) {
11706         for (len = 36; len; len--) {
11707                 b = buf+align;
11708                 bcopy(abc, b, len);
11709                 for (off = 1; off <= len; off++) {
11710                         bcopy(b, b+off, len);
11711                         bcopy(b+off, b, len);
11712                         if (bcmp(b, abc, len))
11713                                 exit(1);
11714                 }
11715         }
11716 }
11717 exit(0);
11718 }
11719 EOCP
11720                 set try
11721                 if eval $compile_ok; then
11722                         if ./try 2>/dev/null; then
11723                                 echo "Yes, it can."
11724                                 val="$define"
11725                         else
11726                                 echo "It can't, sorry."
11727                         fi
11728                 else
11729                         echo "(I can't compile the test program, so we'll assume not...)"
11730                 fi
11731                 ;;
11732         esac
11733         $rm -f try.* try core
11734         ;;
11735 esac
11736 set d_safebcpy
11737 eval $setvar
11738
11739 : can memcpy handle overlapping blocks?
11740 echo " "
11741 val="$undef"
11742 case "$d_memmove" in
11743 "$define") echo "I'll use memmove() instead of memcpy() for overlapping copies." ;;
11744 *)      case "$d_memcpy" in
11745         "$define")
11746                 echo "Checking to see if memcpy() can do overlapping copies..." >&4
11747                 $cat >try.c <<EOCP
11748 #$i_memory I_MEMORY
11749 #$i_stdlib I_STDLIB
11750 #$i_string I_STRING
11751 #$i_unistd I_UNISTD
11752 EOCP
11753         $cat >>try.c <<'EOCP'
11754 #include <stdio.h>
11755 #ifdef I_MEMORY
11756 #  include <memory.h>
11757 #endif
11758 #ifdef I_STDLIB
11759 #  include <stdlib.h>
11760 #endif
11761 #ifdef I_STRING
11762 #  include <string.h>
11763 #else
11764 #  include <strings.h>
11765 #endif
11766 #ifdef I_UNISTD
11767 #  include <unistd.h>  /* Needed for NetBSD */
11768 #endif
11769 int main()
11770 {
11771 char buf[128], abc[128];
11772 char *b;
11773 int len;
11774 int off;
11775 int align;
11776
11777 /* Copy "abcde..." string to char abc[] so that gcc doesn't
11778    try to store the string in read-only memory. */
11779 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
11780
11781 for (align = 7; align >= 0; align--) {
11782         for (len = 36; len; len--) {
11783                 b = buf+align;
11784                 memcpy(b, abc, len);
11785                 for (off = 1; off <= len; off++) {
11786                         memcpy(b+off, b, len);
11787                         memcpy(b, b+off, len);
11788                         if (memcmp(b, abc, len))
11789                                 exit(1);
11790                 }
11791         }
11792 }
11793 exit(0);
11794 }
11795 EOCP
11796                 set try
11797                 if eval $compile_ok; then
11798                         if ./try 2>/dev/null; then
11799                                 echo "Yes, it can."
11800                                 val="$define"
11801                         else
11802                                 echo "It can't, sorry."
11803                         fi
11804                 else
11805                         echo "(I can't compile the test program, so we'll assume not...)"
11806                 fi
11807                 ;;
11808         esac
11809         $rm -f try.* try core
11810         ;;
11811 esac
11812 set d_safemcpy
11813 eval $setvar
11814
11815 : can memcmp be trusted to compare relative magnitude?
11816 val="$undef"
11817 case "$d_memcmp" in
11818 "$define")
11819         echo " "
11820         echo "Checking if your memcmp() can compare relative magnitude..." >&4
11821         $cat >try.c <<EOCP
11822 #$i_memory I_MEMORY
11823 #$i_stdlib I_STDLIB
11824 #$i_string I_STRING
11825 #$i_unistd I_UNISTD
11826 EOCP
11827         $cat >>try.c <<'EOCP'
11828 #include <stdio.h>
11829 #ifdef I_MEMORY
11830 #  include <memory.h>
11831 #endif
11832 #ifdef I_STDLIB
11833 #  include <stdlib.h>
11834 #endif
11835 #ifdef I_STRING
11836 #  include <string.h>
11837 #else
11838 #  include <strings.h>
11839 #endif
11840 #ifdef I_UNISTD
11841 #  include <unistd.h>  /* Needed for NetBSD */
11842 #endif
11843 int main()
11844 {
11845 char a = -1;
11846 char b = 0;
11847 if ((a < b) && memcmp(&a, &b, 1) < 0)
11848         exit(1);
11849 exit(0);
11850 }
11851 EOCP
11852         set try
11853         if eval $compile_ok; then
11854                 if $run ./try 2>/dev/null; then
11855                         echo "Yes, it can."
11856                         val="$define"
11857                 else
11858                         echo "No, it can't (it uses signed chars)."
11859                 fi
11860         else
11861                 echo "(I can't compile the test program, so we'll assume not...)"
11862         fi
11863         ;;
11864 esac
11865 $rm -f try.* try core
11866 set d_sanemcmp
11867 eval $setvar
11868
11869 : see if prototype for sbrk is available
11870 echo " "
11871 set d_sbrkproto sbrk $i_unistd unistd.h
11872 eval $hasproto
11873
11874 : see if select exists
11875 set select d_select
11876 eval $inlibc
11877
11878 : see if semctl exists
11879 set semctl d_semctl
11880 eval $inlibc
11881
11882 : see if semget exists
11883 set semget d_semget
11884 eval $inlibc
11885
11886 : see if semop exists
11887 set semop d_semop
11888 eval $inlibc
11889
11890 : see how much of the 'sem*(2)' library is present.
11891 h_sem=true
11892 echo " "
11893 case "$d_semctl$d_semget$d_semop" in
11894 *"$undef"*) h_sem=false;;
11895 esac
11896 case "$osname" in
11897 freebsd)
11898     case "`ipcs 2>&1`" in
11899     "SVID messages"*"not configured"*)
11900         echo "Your $osname does not have the sem*(2) configured." >&4
11901         h_sem=false
11902         val="$undef"
11903         set semctl d_semctl
11904         eval $setvar
11905         set semget d_semget
11906         eval $setvar
11907         set semop d_semop
11908         eval $setvar
11909         ;;
11910     esac
11911     ;;
11912 esac
11913 : we could also check for sys/ipc.h ...
11914 if $h_sem && $test `./findhdr sys/sem.h`; then
11915         echo "You have the full sem*(2) library." >&4
11916         val="$define"
11917 else
11918         echo "You don't have the full sem*(2) library." >&4
11919         val="$undef"
11920 fi
11921 set d_sem
11922 eval $setvar
11923
11924 : see whether sys/sem.h defines union semun
11925 echo " "
11926 $cat > try.c <<'END'
11927 #include <sys/types.h>
11928 #include <sys/ipc.h>
11929 #include <sys/sem.h>
11930 int main () { union semun semun; semun.buf = 0; }
11931 END
11932 set try
11933 if eval $compile; then
11934     echo "You have union semun in <sys/sem.h>." >&4
11935     val="$define"
11936 else
11937     echo "You do not have union semun in <sys/sem.h>." >&4
11938     val="$undef"
11939 fi
11940 $rm -f try try.c try.h
11941 set d_union_semun
11942 eval $setvar
11943
11944 : see how to do semctl IPC_STAT
11945 case "$d_sem" in
11946 $define)
11947     : see whether semctl IPC_STAT can use union semun
11948     echo " "
11949     $cat > try.h <<END
11950 #ifndef S_IRUSR
11951 #   ifdef S_IREAD
11952 #       define S_IRUSR S_IREAD
11953 #       define S_IWUSR S_IWRITE
11954 #       define S_IXUSR S_IEXEC
11955 #   else
11956 #       define S_IRUSR 0400
11957 #       define S_IWUSR 0200
11958 #       define S_IXUSR 0100
11959 #   endif
11960 #   define S_IRGRP (S_IRUSR>>3)
11961 #   define S_IWGRP (S_IWUSR>>3)
11962 #   define S_IXGRP (S_IXUSR>>3)
11963 #   define S_IROTH (S_IRUSR>>6)
11964 #   define S_IWOTH (S_IWUSR>>6)
11965 #   define S_IXOTH (S_IXUSR>>6)
11966 #endif
11967 #ifndef S_IRWXU
11968 #   define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
11969 #   define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
11970 #   define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
11971 #endif
11972 END
11973
11974     $cat > try.c <<END
11975 #include <sys/types.h>
11976 #include <sys/ipc.h>
11977 #include <sys/sem.h>
11978 #include <sys/stat.h>
11979 #include <stdio.h>
11980 #include <errno.h>
11981 #include "try.h"
11982 #ifndef errno
11983 extern int errno;
11984 #endif
11985 #$d_union_semun HAS_UNION_SEMUN
11986 int main() {
11987     union semun
11988 #ifndef HAS_UNION_SEMUN
11989     {
11990         int val;
11991         struct semid_ds *buf;
11992         unsigned short *array;
11993     }
11994 #endif
11995     arg;
11996     int sem, st;
11997
11998 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
11999     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
12000     if (sem > -1) {
12001         struct semid_ds argbuf;
12002         arg.buf = &argbuf;
12003 #       ifdef IPC_STAT
12004         st = semctl(sem, 0, IPC_STAT, arg);
12005         if (st == 0)
12006             printf("semun\n");
12007         else
12008 #       endif /* IPC_STAT */
12009             printf("semctl IPC_STAT failed: errno = %d\n", errno);
12010 #       ifdef IPC_RMID
12011         if (semctl(sem, 0, IPC_RMID, arg) != 0)
12012 #       endif /* IPC_RMID */
12013             printf("semctl IPC_RMID failed: errno = %d\n", errno);
12014     } else
12015 #endif /* IPC_PRIVATE && ... */
12016         printf("semget failed: errno = %d\n", errno);
12017   return 0;
12018 }
12019 END
12020     val="$undef"
12021     set try
12022     if eval $compile; then
12023         xxx=`$run ./try`
12024         case "$xxx" in
12025         semun) val="$define" ;;
12026         esac
12027     fi
12028     $rm -f try try.c
12029     set d_semctl_semun
12030     eval $setvar
12031     case "$d_semctl_semun" in
12032     $define)
12033         echo "You can use union semun for semctl IPC_STAT." >&4
12034         also='also'
12035         ;;
12036     *)  echo "You cannot use union semun for semctl IPC_STAT." >&4
12037         also=''
12038         ;;
12039     esac
12040
12041     : see whether semctl IPC_STAT can use struct semid_ds pointer
12042     $cat > try.c <<'END'
12043 #include <sys/types.h>
12044 #include <sys/ipc.h>
12045 #include <sys/sem.h>
12046 #include <sys/stat.h>
12047 #include "try.h"
12048 #include <stdio.h>
12049 #include <errno.h>
12050 #ifndef errno
12051 extern int errno;
12052 #endif
12053 int main() {
12054     struct semid_ds arg;
12055     int sem, st;
12056
12057 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) &&  defined(S_IRWXO) && defined(IPC_CREAT)
12058     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
12059     if (sem > -1) {
12060 #       ifdef IPC_STAT
12061         st = semctl(sem, 0, IPC_STAT, &arg);
12062         if (st == 0)
12063             printf("semid_ds\n");
12064         else
12065 #       endif /* IPC_STAT */
12066             printf("semctl IPC_STAT failed: errno = %d\n", errno);
12067 #       ifdef IPC_RMID
12068         if (semctl(sem, 0, IPC_RMID, &arg) != 0)
12069 #       endif /* IPC_RMID */
12070             printf("semctl IPC_RMID failed: errno = %d\n", errno);
12071     } else
12072 #endif /* IPC_PRIVATE && ... */
12073         printf("semget failed: errno = %d\n", errno);
12074
12075     return 0;
12076 }
12077 END
12078     val="$undef"
12079     set try
12080     if eval $compile; then
12081         xxx=`$run ./try`
12082         case "$xxx" in
12083         semid_ds) val="$define" ;;
12084         esac
12085     fi
12086     $rm -f try try.c
12087     set d_semctl_semid_ds
12088     eval $setvar
12089     case "$d_semctl_semid_ds" in
12090     $define)
12091         echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
12092         ;;
12093     *)  echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
12094         ;;
12095     esac
12096     $rm -f try.h
12097     ;;
12098 *)  val="$undef"
12099
12100     # We do not have the full sem*(2) library, so assume we can not
12101     # use either.
12102
12103     set d_semctl_semun
12104     eval $setvar
12105
12106     set d_semctl_semid_ds
12107     eval $setvar
12108     ;;
12109 esac
12110
12111 : see if sendmsg exists
12112 set sendmsg d_sendmsg
12113 eval $inlibc
12114
12115 : see if setegid exists
12116 set setegid d_setegid
12117 eval $inlibc
12118
12119 : see if seteuid exists
12120 set seteuid d_seteuid
12121 eval $inlibc
12122
12123 : see if setgrent exists
12124 set setgrent d_setgrent
12125 eval $inlibc
12126
12127 : see if sethostent exists
12128 set sethostent d_sethent
12129 eval $inlibc
12130
12131 : see if setitimer exists
12132 set setitimer d_setitimer
12133 eval $inlibc
12134
12135 : see if setlinebuf exists
12136 set setlinebuf d_setlinebuf
12137 eval $inlibc
12138
12139 : see if setlocale exists
12140 set setlocale d_setlocale
12141 eval $inlibc
12142
12143 : see if setnetent exists
12144 set setnetent d_setnent
12145 eval $inlibc
12146
12147 : see if setprotoent exists
12148 set setprotoent d_setpent
12149 eval $inlibc
12150
12151 : see if setpgid exists
12152 set setpgid d_setpgid
12153 eval $inlibc
12154
12155 : see if setpgrp2 exists
12156 set setpgrp2 d_setpgrp2
12157 eval $inlibc
12158
12159 : see if setpriority exists
12160 set setpriority d_setprior
12161 eval $inlibc
12162
12163 : see if setproctitle exists
12164 set setproctitle d_setproctitle
12165 eval $inlibc
12166
12167 : see if setpwent exists
12168 set setpwent d_setpwent
12169 eval $inlibc
12170
12171 : see if setregid exists
12172 set setregid d_setregid
12173 eval $inlibc
12174 set setresgid d_setresgid
12175 eval $inlibc
12176
12177 : see if setreuid exists
12178 set setreuid d_setreuid
12179 eval $inlibc
12180 set setresuid d_setresuid
12181 eval $inlibc
12182
12183 : see if setrgid exists
12184 set setrgid d_setrgid
12185 eval $inlibc
12186
12187 : see if setruid exists
12188 set setruid d_setruid
12189 eval $inlibc
12190
12191 : see if setservent exists
12192 set setservent d_setsent
12193 eval $inlibc
12194
12195 : see if setsid exists
12196 set setsid d_setsid
12197 eval $inlibc
12198
12199 : see if setvbuf exists
12200 set setvbuf d_setvbuf
12201 eval $inlibc
12202
12203 : see if sfio.h is available
12204 set sfio.h i_sfio
12205 eval $inhdr
12206
12207
12208 : see if sfio library is available
12209 case "$i_sfio" in
12210 $define)
12211         val=''
12212         set sfreserve val
12213         eval $inlibc
12214         ;;
12215 *)
12216         val="$undef"
12217         ;;
12218 esac
12219 : Ok, but do we want to use it.
12220 case "$val" in
12221 $define)
12222         case "$usesfio" in
12223         true|$define|[yY]*) dflt='y';;
12224         *) dflt='n';;
12225         esac
12226         echo "$package can use the sfio library, but it is experimental."
12227         case "$useperlio" in
12228         "$undef")
12229             echo "For sfio also the PerlIO abstraction layer is needed."
12230             echo "Earlier you said you wouldn't want that."
12231             ;;
12232         esac
12233         rp="You seem to have sfio available, do you want to try using it?"
12234         . ./myread
12235         case "$ans" in
12236         y|Y)    echo "Ok, turning on both sfio and PerlIO, then."
12237                 useperlio="$define"
12238                 val="$define"
12239                 ;;
12240         *)      echo "Ok, avoiding sfio this time.  I'll use stdio instead."
12241                 val="$undef"
12242                 ;;
12243         esac
12244         ;;
12245 *)      case "$usesfio" in
12246         true|$define|[yY]*)
12247                 echo "Sorry, cannot find sfio on this machine." >&4
12248                 echo "Ignoring your setting of usesfio=$usesfio." >&4
12249                 val="$undef"
12250                 ;;
12251         esac
12252         ;;
12253 esac
12254 set d_sfio
12255 eval $setvar
12256 case "$d_sfio" in
12257 $define) usesfio='true';;
12258 *) usesfio='false';;
12259 esac
12260 case "$d_sfio" in
12261 $define) ;;
12262 *)      : Remove sfio from list of libraries to use
12263         case "$libs" in
12264         *-lsfio*)
12265                 echo "Removing unneeded -lsfio from library list" >&4
12266                 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
12267                 shift
12268                 libs="$*"
12269                 echo "libs = $libs" >&4
12270                 ;;
12271         esac
12272 ;;
12273 esac
12274
12275
12276 : see if shmctl exists
12277 set shmctl d_shmctl
12278 eval $inlibc
12279
12280 : see if shmget exists
12281 set shmget d_shmget
12282 eval $inlibc
12283
12284 : see if shmat exists
12285 set shmat d_shmat
12286 eval $inlibc
12287 : see what shmat returns
12288 case "$d_shmat" in
12289 "$define")
12290         $cat >shmat.c <<'END'
12291 #include <sys/shm.h>
12292 void *shmat();
12293 END
12294         if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
12295                 shmattype='void *'
12296         else
12297                 shmattype='char *'
12298         fi
12299         echo "and it returns ($shmattype)." >&4
12300         : see if a prototype for shmat is available
12301         xxx=`./findhdr sys/shm.h`
12302         $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
12303         if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
12304                 val="$define"
12305         else
12306                 val="$undef"
12307         fi
12308         $rm -f shmat.[co]
12309         ;;
12310 *)
12311         val="$undef"
12312         ;;
12313 esac
12314 set d_shmatprototype
12315 eval $setvar
12316
12317 : see if shmdt exists
12318 set shmdt d_shmdt
12319 eval $inlibc
12320
12321 : see how much of the 'shm*(2)' library is present.
12322 h_shm=true
12323 echo " "
12324 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
12325 *"$undef"*) h_shm=false;;
12326 esac
12327 case "$osname" in
12328 freebsd)
12329     case "`ipcs 2>&1`" in
12330     "SVID shared memory"*"not configured"*)
12331         echo "Your $osname does not have the shm*(2) configured." >&4
12332         h_shm=false
12333         val="$undef"
12334         set shmctl d_shmctl
12335         evat $setvar
12336         set shmget d_shmget
12337         evat $setvar
12338         set shmat d_shmat
12339         evat $setvar
12340         set shmdt d_shmdt
12341         evat $setvar
12342         ;;
12343     esac
12344     ;;
12345 esac
12346 : we could also check for sys/ipc.h ...
12347 if $h_shm && $test `./findhdr sys/shm.h`; then
12348         echo "You have the full shm*(2) library." >&4
12349         val="$define"
12350 else
12351         echo "You don't have the full shm*(2) library." >&4
12352         val="$undef"
12353 fi
12354 set d_shm
12355 eval $setvar
12356
12357 echo " "
12358 : see if we have sigaction
12359 if set sigaction val -f d_sigaction; eval $csym; $val; then
12360         echo 'sigaction() found.' >&4
12361         $cat > try.c <<'EOP'
12362 #include <stdio.h>
12363 #include <sys/types.h>
12364 #include <signal.h>
12365 int main()
12366 {
12367     struct sigaction act, oact;
12368     act.sa_flags = 0;
12369     oact.sa_handler = 0;
12370     /* so that act and oact are used */
12371     exit(act.sa_flags == 0 &&  oact.sa_handler == 0);
12372 }
12373 EOP
12374         set try
12375         if eval $compile_ok; then
12376                 val="$define"
12377         else
12378                 echo "But you don't seem to have a useable struct sigaction." >&4
12379                 val="$undef"
12380         fi
12381 else
12382         echo 'sigaction NOT found.' >&4
12383         val="$undef"
12384 fi
12385 set d_sigaction; eval $setvar
12386 $rm -f try try$_o try.c
12387
12388 : see if sigprocmask exists
12389 set sigprocmask d_sigprocmask
12390 eval $inlibc
12391
12392 : see if sigsetjmp exists
12393 echo " "
12394 case "$d_sigsetjmp" in
12395 '')
12396         $cat >try.c <<'EOP'
12397 #include <setjmp.h>
12398 sigjmp_buf env;
12399 int set = 1;
12400 int main()
12401 {
12402         if (sigsetjmp(env,1))
12403                 exit(set);
12404         set = 0;
12405         siglongjmp(env, 1);
12406         exit(1);
12407 }
12408 EOP
12409         set try
12410         if eval $compile; then
12411                 if $run ./try >/dev/null 2>&1; then
12412                         echo "POSIX sigsetjmp found." >&4
12413                         val="$define"
12414                 else
12415                         $cat >&4 <<EOM
12416 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
12417 I'll ignore them.
12418 EOM
12419                         val="$undef"
12420                 fi
12421         else
12422                 echo "sigsetjmp not found." >&4
12423                 val="$undef"
12424         fi
12425         ;;
12426 *) val="$d_sigsetjmp"
12427         case "$d_sigsetjmp" in
12428         $define) echo "POSIX sigsetjmp found." >&4;;
12429         $undef) echo "sigsetjmp not found." >&4;;
12430         esac
12431         ;;
12432 esac
12433 set d_sigsetjmp
12434 eval $setvar
12435 $rm -f try.c try
12436
12437 : see if sockatmark exists
12438 set sockatmark d_sockatmark
12439 eval $inlibc
12440
12441 : see if prototype for sockatmark is available
12442 echo " "
12443 set d_sockatmarkproto sockatmark $d_socket sys/socket.h
12444 eval $hasproto
12445
12446 : see if socks5_init exists
12447 set socks5_init d_socks5_init
12448 eval $inlibc
12449
12450 : see if prototype for setresgid is available
12451 echo " "
12452 set d_sresgproto setresgid $i_unistd unistd.h
12453 eval $hasproto
12454
12455 : see if prototype for setresuid is available
12456 echo " "
12457 set d_sresuproto setresuid $i_unistd unistd.h
12458 eval $hasproto
12459
12460 : see if sys/stat.h is available
12461 set sys/stat.h i_sysstat
12462 eval $inhdr
12463
12464
12465 : see if stat knows about block sizes
12466 echo " "
12467 echo "Checking to see if your struct stat has st_blocks field..." >&4
12468 set d_statblks stat st_blocks $i_sysstat sys/stat.h
12469 eval $hasfield
12470
12471
12472 : see if this is a sys/vfs.h system
12473 set sys/vfs.h i_sysvfs
12474 eval $inhdr
12475
12476
12477 : see if this is a sys/statfs.h system
12478 set sys/statfs.h i_sysstatfs
12479 eval $inhdr
12480
12481
12482 echo " "
12483 echo "Checking to see if your system supports struct statfs..." >&4
12484 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
12485 eval $hasstruct
12486 case "$d_statfs_s" in
12487 "$define")      echo "Yes, it does."   ;;
12488 *)              echo "No, it doesn't." ;;
12489 esac
12490
12491
12492
12493 : see if struct statfs knows about f_flags
12494 case "$d_statfs_s" in
12495 define) 
12496         echo " "
12497         echo "Checking to see if your struct statfs has f_flags field..." >&4
12498         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
12499         eval $hasfield
12500         ;;
12501 *)      val="$undef"
12502         set d_statfs_f_flags
12503         eval $setvar
12504         ;;
12505 esac
12506 case "$d_statfs_f_flags" in
12507 "$define")      echo "Yes, it does."   ;;
12508 *)              echo "No, it doesn't." ;;
12509 esac
12510
12511 : see if _ptr and _cnt from stdio act std
12512 echo " "
12513
12514 if $contains '_lbfsize' `./findhdr stdio.h` >/dev/null 2>&1 ; then
12515         echo "(Looks like you have stdio.h from BSD.)"
12516         case "$stdio_ptr" in
12517         '') stdio_ptr='((fp)->_p)'
12518                 ptr_lval=$define
12519                 ;;
12520         *)      ptr_lval=$d_stdio_ptr_lval;;
12521         esac
12522         case "$stdio_cnt" in
12523         '') stdio_cnt='((fp)->_r)'
12524                 cnt_lval=$define
12525                 ;;
12526         *)      cnt_lval=$d_stdio_cnt_lval;;
12527         esac
12528         case "$stdio_base" in
12529         '') stdio_base='((fp)->_ub._base ? (fp)->_ub._base : (fp)->_bf._base)';;
12530         esac
12531         case "$stdio_bufsiz" in
12532         '') stdio_bufsiz='((fp)->_ub._base ? (fp)->_ub._size : (fp)->_bf._size)';;
12533         esac
12534 elif $contains '_IO_fpos_t' `./findhdr stdio.h` `./findhdr libio.h` >/dev/null 2>&1 ; then
12535         echo "(Looks like you have stdio.h from Linux.)"
12536         case "$stdio_ptr" in
12537         '') stdio_ptr='((fp)->_IO_read_ptr)'
12538                 ptr_lval=$define
12539                 ;;
12540         *)      ptr_lval=$d_stdio_ptr_lval;;
12541         esac
12542         case "$stdio_cnt" in
12543         '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
12544                 cnt_lval=$undef
12545                 ;;
12546         *)      cnt_lval=$d_stdio_cnt_lval;;
12547         esac
12548         case "$stdio_base" in
12549         '') stdio_base='((fp)->_IO_read_base)';;
12550         esac
12551         case "$stdio_bufsiz" in
12552         '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
12553         esac
12554 else
12555         case "$stdio_ptr" in
12556         '') stdio_ptr='((fp)->_ptr)'
12557                 ptr_lval=$define
12558                 ;;
12559         *)      ptr_lval=$d_stdio_ptr_lval;;
12560         esac
12561         case "$stdio_cnt" in
12562         '') stdio_cnt='((fp)->_cnt)'
12563                 cnt_lval=$define
12564                 ;;
12565         *)      cnt_lval=$d_stdio_cnt_lval;;
12566         esac
12567         case "$stdio_base" in
12568         '') stdio_base='((fp)->_base)';;
12569         esac
12570         case "$stdio_bufsiz" in
12571         '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
12572         esac
12573 fi
12574
12575 : test whether _ptr and _cnt really work
12576 echo "Checking how std your stdio is..." >&4
12577 $cat >try.c <<EOP
12578 #include <stdio.h>
12579 #define FILE_ptr(fp)    $stdio_ptr
12580 #define FILE_cnt(fp)    $stdio_cnt
12581 int main() {
12582         FILE *fp = fopen("try.c", "r");
12583         char c = getc(fp);
12584         if (
12585                 18 <= FILE_cnt(fp) &&
12586                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
12587         )
12588                 exit(0);
12589         exit(1);
12590 }
12591 EOP
12592 val="$undef"
12593 set try
12594 if eval $compile && $to try.c; then
12595         if $run ./try; then
12596                 echo "Your stdio acts pretty std."
12597                 val="$define"
12598         else
12599                 echo "Your stdio isn't very std."
12600         fi
12601 else
12602         echo "Your stdio doesn't appear very std."
12603 fi
12604 $rm -f try.c try
12605 set d_stdstdio
12606 eval $setvar
12607
12608 : Can _ptr be used as an lvalue?
12609 case "$d_stdstdio$ptr_lval" in
12610 $define$define) val=$define ;;
12611 *) val=$undef ;;
12612 esac
12613 set d_stdio_ptr_lval
12614 eval $setvar
12615
12616 : Can _cnt be used as an lvalue?
12617 case "$d_stdstdio$cnt_lval" in
12618 $define$define) val=$define ;;
12619 *) val=$undef ;;
12620 esac
12621 set d_stdio_cnt_lval
12622 eval $setvar
12623
12624
12625 : test whether setting _ptr sets _cnt as a side effect
12626 d_stdio_ptr_lval_sets_cnt="$undef"
12627 d_stdio_ptr_lval_nochange_cnt="$undef"
12628 case "$d_stdio_ptr_lval$d_stdstdio" in
12629 $define$define)
12630         echo "Checking to see what happens if we set the stdio ptr..." >&4
12631 $cat >try.c <<EOP
12632 #include <stdio.h>
12633 /* Can we scream? */
12634 /* Eat dust sed :-) */
12635 /* In the buffer space, no one can hear you scream. */
12636 #define FILE_ptr(fp)    $stdio_ptr
12637 #define FILE_cnt(fp)    $stdio_cnt
12638 #include <sys/types.h>
12639 int main() {
12640         FILE *fp = fopen("try.c", "r");
12641         int c;
12642         char *ptr;
12643         size_t cnt;
12644         if (!fp) {
12645             puts("Fail even to read");
12646             exit(1);
12647         }
12648         c = getc(fp); /* Read away the first # */
12649         if (c == EOF) {
12650             puts("Fail even to read");
12651             exit(1);
12652         }
12653         if (!(
12654                 18 <= FILE_cnt(fp) &&
12655                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
12656         )) {
12657                 puts("Fail even to read");
12658                 exit (1);
12659         }
12660         ptr = (char*) FILE_ptr(fp);
12661         cnt = (size_t)FILE_cnt(fp);
12662
12663         FILE_ptr(fp) += 42;
12664
12665         if ((char*)FILE_ptr(fp) != (ptr + 42)) {
12666                 printf("Fail ptr check %p != %p", FILE_ptr(fp), (ptr + 42));
12667                 exit (1);
12668         }
12669         if (FILE_cnt(fp) <= 20) {
12670                 printf ("Fail (<20 chars to test)");
12671                 exit (1);
12672         }
12673         if (strncmp(FILE_ptr(fp), "Eat dust sed :-) */\n", 20) != 0) {
12674                 puts("Fail compare");
12675                 exit (1);
12676         }
12677         if (cnt == FILE_cnt(fp)) {
12678                 puts("Pass_unchanged");
12679                 exit (0);
12680         }       
12681         if (FILE_cnt(fp) == (cnt - 42)) {
12682                 puts("Pass_changed");
12683                 exit (0);
12684         }
12685         printf("Fail count was %d now %d\n", cnt, FILE_cnt(fp));
12686         return 1;
12687
12688 }
12689 EOP
12690         set try
12691         if eval $compile && $to try.c; then
12692                 case `$run ./try` in
12693                 Pass_changed)
12694                         echo "Increasing ptr in your stdio decreases cnt by the same amount.  Good." >&4
12695                         d_stdio_ptr_lval_sets_cnt="$define" ;;
12696                 Pass_unchanged)
12697                         echo "Increasing ptr in your stdio leaves cnt unchanged.  Good." >&4
12698                         d_stdio_ptr_lval_nochange_cnt="$define" ;;
12699                 Fail*)
12700                         echo "Increasing ptr in your stdio didn't do exactly what I expected.  We'll not be doing that then." >&4 ;;
12701                 *)
12702                         echo "It appears attempting to set ptr in your stdio is a bad plan." >&4 ;;
12703         esac
12704         else
12705                 echo "It seems we can't set ptr in your stdio.  Nevermind." >&4
12706         fi
12707         $rm -f try.c try
12708         ;;
12709 esac
12710
12711 : see if _base is also standard
12712 val="$undef"
12713 case "$d_stdstdio" in
12714 $define)
12715         $cat >try.c <<EOP
12716 #include <stdio.h>
12717 #define FILE_base(fp)   $stdio_base
12718 #define FILE_bufsiz(fp) $stdio_bufsiz
12719 int main() {
12720         FILE *fp = fopen("try.c", "r");
12721         char c = getc(fp);
12722         if (
12723                 19 <= FILE_bufsiz(fp) &&
12724                 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
12725         )
12726                 exit(0);
12727         exit(1);
12728 }
12729 EOP
12730         set try
12731         if eval $compile && $to try.c; then
12732                 if $run ./try; then
12733                         echo "And its _base field acts std."
12734                         val="$define"
12735                 else
12736                         echo "But its _base field isn't std."
12737                 fi
12738         else
12739                 echo "However, it seems to be lacking the _base field."
12740         fi
12741         $rm -f try.c try
12742         ;;
12743 esac
12744 set d_stdiobase
12745 eval $setvar
12746
12747 $cat >&4 <<EOM
12748 Checking how to access stdio streams by file descriptor number...
12749 EOM
12750 case "$stdio_stream_array" in
12751 '')     $cat >try.c <<EOCP
12752 #include <stdio.h>
12753 int main() {
12754   if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
12755     printf("yes\n");
12756 }
12757 EOCP
12758         for s in _iob __iob __sF
12759         do
12760                 set try -DSTDIO_STREAM_ARRAY=$s
12761                 if eval $compile; then
12762                         case "`$run ./try`" in
12763                         yes)    stdio_stream_array=$s; break ;;
12764                         esac
12765                 fi
12766         done
12767         $rm -f try.* try$exe_ext
12768 esac
12769 case "$stdio_stream_array" in
12770 '')     $cat >&4 <<EOM
12771 I can't figure out how to access stdio streams by file descriptor number.
12772 EOM
12773         d_stdio_stream_array="$undef"
12774         ;;
12775 *)      $cat >&4 <<EOM
12776 You can access stdio streams by file descriptor number by the $stdio_stream_array array.
12777 EOM
12778         d_stdio_stream_array="$define"
12779         ;;
12780 esac
12781
12782 : see if strcoll exists
12783 set strcoll d_strcoll
12784 eval $inlibc
12785
12786 : check for structure copying
12787 echo " "
12788 echo "Checking to see if your C compiler can copy structs..." >&4
12789 $cat >try.c <<'EOCP'
12790 int main()
12791 {
12792         struct blurfl {
12793                 int dyick;
12794         } foo, bar;
12795
12796         foo = bar;
12797 }
12798 EOCP
12799 if $cc -c try.c >/dev/null 2>&1 ; then
12800         val="$define"
12801         echo "Yup, it can."
12802 else
12803         val="$undef"
12804         echo "Nope, it can't."
12805 fi
12806 set d_strctcpy
12807 eval $setvar
12808 $rm -f try.*
12809
12810 : see if strerror and/or sys_errlist[] exist
12811 echo " "
12812 if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
12813     if set strerror val -f d_strerror; eval $csym; $val; then
12814                 echo 'strerror() found.' >&4
12815                 d_strerror="$define"
12816                 d_strerrm='strerror(e)'
12817                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
12818                         echo "(You also have sys_errlist[], so we could roll our own strerror.)" 
12819                         d_syserrlst="$define"
12820                 else
12821                         echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
12822                         d_syserrlst="$undef"
12823                 fi
12824     elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
12825                         $contains '#[   ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
12826                 echo 'strerror() found in string header.' >&4
12827                 d_strerror="$define"
12828                 d_strerrm='strerror(e)'
12829                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
12830                         echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
12831                                 d_syserrlst="$define"
12832                 else
12833                         echo "(You don't appear to have any sys_errlist[], how can this be?)"
12834                         d_syserrlst="$undef"
12835                 fi
12836     elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
12837                 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
12838                 d_strerror="$undef"
12839                 d_syserrlst="$define"
12840                 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
12841     else
12842                 echo 'strerror() and sys_errlist[] NOT found.' >&4
12843                 d_strerror="$undef"
12844                 d_syserrlst="$undef"
12845                 d_strerrm='"unknown"'
12846     fi
12847 fi
12848
12849 : see if strftime exists
12850 set strftime d_strftime
12851 eval $inlibc
12852
12853 : see if strtod exists
12854 set strtod d_strtod
12855 eval $inlibc
12856
12857 : see if strtol exists
12858 set strtol d_strtol
12859 eval $inlibc
12860
12861 : see if strtold exists
12862 set strtold d_strtold
12863 eval $inlibc
12864
12865 : see if strtoll exists
12866 set strtoll d_strtoll
12867 eval $inlibc
12868
12869 case "$d_longlong-$d_strtoll" in
12870 "$define-$define")
12871         $cat <<EOM
12872 Checking whether your strtoll() works okay...
12873 EOM
12874         $cat >try.c <<'EOCP'
12875 #include <errno.h>
12876 #ifdef __hpux
12877 #define strtoll __strtoll
12878 #endif
12879 #ifdef __EMX__
12880 #define strtoll _strtoll
12881 #endif
12882 #include <stdio.h>
12883 extern long long int strtoll(char *s, char **, int); 
12884 static int bad = 0;
12885 int check(char *s, long long ell, int een) {
12886         long long gll;
12887         errno = 0;
12888         gll = strtoll(s, 0, 10);
12889         if (!((gll == ell) && (errno == een)))
12890                 bad++;
12891 }
12892 int main() {
12893         check(" 1",                                      1LL, 0);
12894         check(" 0",                                      0LL, 0);
12895         check("-1",                                     -1LL, 0);
12896         check("-9223372036854775808", -9223372036854775808LL, 0);
12897         check("-9223372036854775808", -9223372036854775808LL, 0);
12898         check(" 9223372036854775807",  9223372036854775807LL, 0);
12899         check("-9223372036854775808", -9223372036854775808LL, 0);
12900         check(" 9223372036854775808",  9223372036854775807LL, ERANGE);
12901         check("-9223372036854775809", -9223372036854775808LL, ERANGE);
12902         if (!bad)
12903                 printf("ok\n");
12904 }
12905 EOCP
12906         set try
12907         if eval $compile; then
12908                 yyy=`$run ./try`
12909                 case "$yyy" in
12910                 ok) echo "Your strtoll() seems to be working okay." ;;
12911                 *) cat <<EOM >&4
12912 Your strtoll() doesn't seem to be working okay.
12913 EOM
12914                    d_strtoll="$undef"
12915                    ;;
12916                 esac
12917         else
12918                 echo "(I can't seem to compile the test program--assuming it doesn't)"
12919                 d_strtoll="$undef"
12920         fi
12921         ;;
12922 esac
12923
12924 : see if strtoq exists
12925 set strtoq d_strtoq
12926 eval $inlibc
12927
12928 : see if strtoul exists
12929 set strtoul d_strtoul
12930 eval $inlibc
12931
12932 case "$d_strtoul" in
12933 "$define")
12934         $cat <<EOM
12935 Checking whether your strtoul() works okay...
12936 EOM
12937         $cat >try.c <<'EOCP'
12938 #include <errno.h>
12939 #include <stdio.h>
12940 extern unsigned long int strtoul(char *s, char **, int); 
12941 static int bad = 0;
12942 void check(char *s, unsigned long eul, int een) {
12943         unsigned long gul;
12944         errno = 0;
12945         gul = strtoul(s, 0, 10);
12946         if (!((gul == eul) && (errno == een)))
12947                 bad++;
12948 }
12949 int main() {
12950         check(" 1", 1L, 0);
12951         check(" 0", 0L, 0);
12952 EOCP
12953         case "$longsize" in
12954         8)
12955             $cat >>try.c <<'EOCP'
12956         check("18446744073709551615", 18446744073709551615UL, 0);
12957         check("18446744073709551616", 18446744073709551615UL, ERANGE);
12958 #if 0 /* strtoul() for /^-/ strings is undefined. */
12959         check("-1", 18446744073709551615UL, 0);
12960         check("-18446744073709551614", 2, 0);
12961         check("-18446744073709551615", 1, 0);
12962         check("-18446744073709551616", 18446744073709551615UL, ERANGE);
12963         check("-18446744073709551617", 18446744073709551615UL, ERANGE);
12964 #endif
12965 EOCP
12966                 ;;
12967         4)
12968                     $cat >>try.c <<'EOCP'
12969         check("4294967295", 4294967295UL, 0);
12970         check("4294967296", 4294967295UL, ERANGE);
12971 #if 0 /* strtoul() for /^-/ strings is undefined. */
12972         check("-1", 4294967295UL, 0);
12973         check("-4294967294", 2, 0);
12974         check("-4294967295", 1, 0);
12975         check("-4294967296", 4294967295UL, ERANGE);
12976         check("-4294967297", 4294967295UL, ERANGE);
12977 #endif
12978 EOCP
12979                 ;;
12980         *)
12981 : Should we write these tests to be more portable by sprintf-ing
12982 : ~0 and then manipulating that char string as input for strtol?
12983                 ;;
12984         esac
12985         $cat >>try.c <<'EOCP'
12986         if (!bad)
12987                 printf("ok\n");
12988         return 0;
12989 }
12990 EOCP
12991         set try
12992         if eval $compile; then
12993                 case "`$run ./try`" in
12994                 ok) echo "Your strtoul() seems to be working okay." ;;
12995                 *) cat <<EOM >&4
12996 Your strtoul() doesn't seem to be working okay.
12997 EOM
12998                    d_strtoul="$undef"
12999                    ;;
13000                 esac
13001         fi
13002         ;;
13003 esac
13004
13005 : see if strtoull exists
13006 set strtoull d_strtoull
13007 eval $inlibc
13008
13009 case "$d_longlong-$d_strtoull" in
13010 "$define-$define")
13011         $cat <<EOM
13012 Checking whether your strtoull() works okay...
13013 EOM
13014         $cat >try.c <<'EOCP'
13015 #include <errno.h>
13016 #ifdef __hpux
13017 #define strtoull __strtoull
13018 #endif
13019 #include <stdio.h>
13020 extern unsigned long long int strtoull(char *s, char **, int); 
13021 static int bad = 0;
13022 int check(char *s, long long eull, int een) {
13023         long long gull;
13024         errno = 0;
13025         gull = strtoull(s, 0, 10);
13026         if (!((gull == eull) && (errno == een)))
13027                 bad++;
13028 }
13029 int main() {
13030         check(" 1",                                        1LL, 0);
13031         check(" 0",                                        0LL, 0);
13032         check("18446744073709551615",  18446744073709551615ULL, 0);
13033         check("18446744073709551616",  18446744073709551615ULL, ERANGE);
13034 #if 0 /* strtoull() for /^-/ strings is undefined. */
13035         check("-1",                    18446744073709551615ULL, 0);
13036         check("-18446744073709551614",                     2LL, 0);
13037         check("-18446744073709551615",                     1LL, 0);
13038         check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
13039         check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
13040 #endif
13041         if (!bad)
13042                 printf("ok\n");
13043 }
13044 EOCP
13045         set try
13046         if eval $compile; then
13047                 case "`$run ./try`" in
13048                 ok) echo "Your strtoull() seems to be working okay." ;;
13049                 *) cat <<EOM >&4
13050 Your strtoull() doesn't seem to be working okay.
13051 EOM
13052                    d_strtoull="$undef"
13053                    ;;
13054                 esac
13055         fi
13056         ;;
13057 esac
13058
13059 : see if strtouq exists
13060 set strtouq d_strtouq
13061 eval $inlibc
13062
13063 case "$d_strtouq" in
13064 "$define")
13065         $cat <<EOM
13066 Checking whether your strtouq() works okay...
13067 EOM
13068         $cat >try.c <<'EOCP'
13069 #include <errno.h>
13070 #include <stdio.h>
13071 extern unsigned long long int strtouq(char *s, char **, int); 
13072 static int bad = 0;
13073 void check(char *s, unsigned long long eull, int een) {
13074         unsigned long long gull;
13075         errno = 0;
13076         gull = strtouq(s, 0, 10);
13077         if (!((gull == eull) && (errno == een)))
13078                 bad++;
13079 }
13080 int main() {
13081         check(" 1",                                        1LL, 0);
13082         check(" 0",                                        0LL, 0);
13083         check("18446744073709551615",  18446744073709551615ULL, 0);
13084         check("18446744073709551616",  18446744073709551615ULL, ERANGE);
13085 #if 0 /* strtouq() for /^-/ strings is undefined. */
13086         check("-1",                    18446744073709551615ULL, 0);
13087         check("-18446744073709551614",                     2LL, 0);
13088         check("-18446744073709551615",                     1LL, 0);
13089         check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
13090         check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
13091 #endif
13092         if (!bad)
13093                 printf("ok\n");
13094         return 0;
13095 }
13096 EOCP
13097         set try
13098         if eval $compile; then
13099                 case "`$run ./try`" in
13100                 ok) echo "Your strtouq() seems to be working okay." ;;
13101                 *) cat <<EOM >&4
13102 Your strtouq() doesn't seem to be working okay.
13103 EOM
13104                    d_strtouq="$undef"
13105                    ;;
13106                 esac
13107         fi
13108         ;;
13109 esac
13110
13111 : see if strxfrm exists
13112 set strxfrm d_strxfrm
13113 eval $inlibc
13114
13115 : see if symlink exists
13116 set symlink d_symlink
13117 eval $inlibc
13118
13119 : see if syscall exists
13120 set syscall d_syscall
13121 eval $inlibc
13122
13123 : see if prototype for syscall is available
13124 echo " "
13125 set d_syscallproto syscall $i_unistd unistd.h
13126 eval $hasproto
13127
13128 : see if sysconf exists
13129 set sysconf d_sysconf
13130 eval $inlibc
13131
13132 : see if system exists
13133 set system d_system
13134 eval $inlibc
13135
13136 : see if tcgetpgrp exists
13137 set tcgetpgrp d_tcgetpgrp
13138 eval $inlibc
13139
13140 : see if tcsetpgrp exists
13141 set tcsetpgrp d_tcsetpgrp
13142 eval $inlibc
13143
13144 : see if prototype for telldir is available
13145 echo " "
13146 set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
13147 eval $hasproto
13148
13149 : see if this is a sys/times.h system
13150 set sys/times.h i_systimes
13151 eval $inhdr
13152
13153 : see if times exists
13154 echo " "
13155 if set times val -f d_times; eval $csym; $val; then
13156         echo 'times() found.' >&4
13157         d_times="$define"
13158         inc=''
13159         case "$i_systimes" in
13160         "$define") inc='sys/times.h';;
13161         esac
13162         rp="What is the type returned by times() on this system?"
13163         set clock_t clocktype long stdio.h sys/types.h $inc
13164         eval $typedef_ask
13165 else
13166         echo 'times() NOT found, hope that will do.' >&4
13167         d_times="$undef"
13168         clocktype='int'
13169 fi
13170
13171 : see if truncate exists
13172 set truncate d_truncate
13173 eval $inlibc
13174
13175 : see if tzname[] exists
13176 echo " "
13177 if set tzname val -a d_tzname; eval $csym; $val; then
13178         val="$define"
13179         echo 'tzname[] found.' >&4
13180 else
13181         val="$undef"
13182         echo 'tzname[] NOT found.' >&4
13183 fi
13184 set d_tzname
13185 eval $setvar
13186
13187 case "$osname" in
13188 next|rhapsody|darwin) multiarch="$define" ;;
13189 esac
13190 case "$multiarch" in
13191 ''|[nN]*) multiarch="$undef" ;;
13192 esac
13193
13194 : check for ordering of bytes in a long
13195 echo " "
13196 case "$usecrosscompile$multiarch" in
13197 *$define*)
13198         $cat <<EOM
13199 You seem to be either cross-compiling or doing a multiarchitecture build,
13200 skipping the byteorder check.
13201
13202 EOM
13203         byteorder='ffff'
13204         ;;
13205 *)
13206         case "$byteorder" in
13207         '')
13208                 $cat <<'EOM'
13209 In the following, larger digits indicate more significance.  A big-endian
13210 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
13211 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
13212 machines may have weird orders like 3412.  A Cray will report 87654321,
13213 an Alpha will report 12345678. If the test program works the default is
13214 probably right.
13215 I'm now running the test program...
13216 EOM
13217                 $cat >try.c <<'EOCP'
13218 #include <stdio.h>
13219 int main()
13220 {
13221         int i;
13222         union {
13223                 unsigned long l;
13224                 char c[sizeof(long)];
13225         } u;
13226
13227         if (sizeof(long) > 4)
13228                 u.l = (0x08070605L << 32) | 0x04030201L;
13229         else
13230                 u.l = 0x04030201L;
13231         for (i = 0; i < sizeof(long); i++)
13232                 printf("%c", u.c[i]+'0');
13233         printf("\n");
13234         exit(0);
13235 }
13236 EOCP
13237                 xxx_prompt=y
13238                 set try
13239                 if eval $compile && ./try > /dev/null; then
13240                         dflt=`$run ./try`
13241                         case "$dflt" in
13242                         [1-4][1-4][1-4][1-4]|12345678|87654321)
13243                                 echo "(The test program ran ok.)"
13244                                 echo "byteorder=$dflt"
13245                                 xxx_prompt=n
13246                         ;;
13247                         ????|????????) echo "(The test program ran ok.)" ;;
13248                         *) echo "(The test program didn't run right for some reason.)" ;;
13249                         esac
13250                 else
13251                         dflt='4321'
13252                         cat <<'EOM'
13253 (I can't seem to compile the test program.  Guessing big-endian...)
13254 EOM
13255                 fi
13256                 case "$xxx_prompt" in
13257                 y)
13258                         rp="What is the order of bytes in a long?"
13259                         . ./myread
13260                         byteorder="$ans"
13261                         ;;
13262                 *)      byteorder=$dflt
13263                         ;;
13264                 esac
13265                 ;;
13266         esac
13267         $rm -f try.c try
13268         ;;
13269 esac
13270
13271
13272 $cat <<EOM
13273
13274 Checking to see whether you can access character data unalignedly...
13275 EOM
13276 $cat >try.c <<EOCP
13277 #include <stdio.h>
13278 #define U32 $u32type
13279 #define BYTEORDER $byteorder
13280 int main() {
13281 #if BYTEORDER == 0x1234 || BYTEORDER == 0x4321
13282     U8 buf[] = "\0\0\0\1\0\0\0\0";
13283     U32 *up;
13284     int i;
13285
13286     if (sizeof(U32) != 4) {
13287         printf("sizeof(U32) is not 4, but %d\n", sizeof(U32));
13288         exit(1);
13289     }
13290
13291     fflush(stdout);
13292
13293     for (i = 0; i < 4; i++) {
13294         up = (U32*)(buf + i);
13295         if (! ((*up == 1 << (8*i)) ||   /* big-endian */
13296                (*up == 1 << (8*(3-i)))  /* little-endian */
13297               )
13298            )
13299         {
13300             printf("read failed (%x)\n", *up);
13301             exit(2);
13302         }
13303     }
13304
13305     /* write test */
13306     for (i = 0; i < 4; i++) {
13307         up = (U32*)(buf + i);
13308         *up = 0xBeef;
13309         if (*up != 0xBeef) {
13310             printf("write failed (%x)\n", *up);
13311             exit(3);
13312         }
13313     }
13314
13315     exit(0);
13316 #else
13317     printf("1\n");
13318     exit(1);
13319 #endif
13320     return 0;
13321 }
13322 EOCP
13323 set try
13324 if eval $compile_ok; then
13325         echo "(Testing for character data alignment may dump core.)" >&4
13326         $run ./try 2>&1 >/dev/null
13327         case "$?" in
13328         0)      cat >&4 <<EOM
13329 You can access character data pretty unalignedly.
13330 EOM
13331                 d_u32align="$undef"
13332                 ;;
13333         *)      cat >&4 <<EOM
13334 It seems that you must access character data in an aligned manner.
13335 EOM
13336                 d_u32align="$define"
13337                 ;;
13338         esac
13339         $rm -f core core.try.* try.core
13340 else
13341         rp='Can you access character data at unaligned addresses?'
13342         dflt='n'
13343         . ./myread
13344         case "$ans" in
13345         [yY]*)  d_u32align="$undef"  ;;
13346         *)      d_u32align="$define" ;;
13347         esac
13348 fi
13349
13350 : see if ualarm exists
13351 set ualarm d_ualarm
13352 eval $inlibc
13353
13354 : see if umask exists
13355 set umask d_umask
13356 eval $inlibc
13357
13358 : see if unordered exists
13359 set unordered d_unordered
13360 eval $inlibc
13361
13362 : see if usleep exists
13363 set usleep d_usleep
13364 eval $inlibc
13365
13366 : see if prototype for usleep is available
13367 echo " "
13368 set d_usleepproto usleep $i_unistd unistd.h
13369 eval $hasproto
13370
13371 : see if ustat exists
13372 set ustat d_ustat
13373 eval $inlibc
13374
13375 : backward compatibility for d_hvfork
13376 if test X$d_hvfork != X; then
13377         d_vfork="$d_hvfork"
13378         d_hvfork=''
13379 fi
13380 : see if there is a vfork
13381 val=''
13382 set vfork val
13383 eval $inlibc
13384
13385 : Ok, but do we want to use it. vfork is reportedly unreliable in 
13386 : perl on Solaris 2.x, and probably elsewhere.
13387 case "$val" in
13388 $define)
13389         echo " "
13390         case "$usevfork" in
13391         false) dflt='n';;
13392         *) dflt='y';;
13393         esac
13394         cat <<'EOM'
13395  
13396 Perl can only use a vfork() that doesn't suffer from strict
13397 restrictions on calling functions or modifying global data in
13398 the child.  For example, glibc-2.1 contains such a vfork()
13399 that is unsuitable.  If your system provides a proper fork()
13400 call, chances are that you do NOT want perl to use vfork().
13401
13402 EOM
13403         rp="Do you still want to use vfork()?"
13404         . ./myread
13405         case "$ans" in
13406         y|Y) ;;
13407         *)
13408                 echo "Ok, we won't use vfork()."
13409                 val="$undef"
13410                 ;;
13411         esac
13412         ;;
13413 esac
13414 set d_vfork
13415 eval $setvar
13416 case "$d_vfork" in
13417 $define) usevfork='true';;
13418 *) usevfork='false';;
13419 esac
13420
13421 : see if this is an sysdir system
13422 set sys/dir.h i_sysdir
13423 eval $inhdr
13424
13425 : see if this is an sysndir system
13426 set sys/ndir.h i_sysndir
13427 eval $inhdr
13428
13429 : see if closedir exists
13430 set closedir d_closedir
13431 eval $inlibc
13432
13433 case "$d_closedir" in
13434 "$define")
13435         echo " "
13436         echo "Checking whether closedir() returns a status..." >&4
13437         cat > try.c <<EOM
13438 #$i_dirent I_DIRENT             /**/
13439 #$i_sysdir I_SYS_DIR            /**/
13440 #$i_sysndir I_SYS_NDIR          /**/
13441 #$i_systypes I_SYS_TYPES        /**/
13442
13443 #if defined(I_SYS_TYPES)
13444 #include <sys/types.h>
13445 #endif
13446 #if defined(I_DIRENT)
13447 #include <dirent.h>
13448 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
13449 #include <sys/dir.h>
13450 #endif
13451 #else
13452 #ifdef I_SYS_NDIR
13453 #include <sys/ndir.h>
13454 #else
13455 #ifdef I_SYS_DIR
13456 #ifdef hp9000s500
13457 #include <ndir.h>       /* may be wrong in the future */
13458 #else
13459 #include <sys/dir.h>
13460 #endif
13461 #endif
13462 #endif
13463 #endif 
13464 int main() { return closedir(opendir(".")); }
13465 EOM
13466         set try
13467         if eval $compile_ok; then
13468                 if $run ./try > /dev/null 2>&1 ; then
13469                         echo "Yes, it does."
13470                         val="$undef"
13471                 else
13472                         echo "No, it doesn't."
13473                         val="$define"
13474                 fi
13475         else
13476                 echo "(I can't seem to compile the test program--assuming it doesn't)"
13477                 val="$define"
13478         fi
13479         ;;
13480 *)
13481         val="$undef";
13482         ;;
13483 esac
13484 set d_void_closedir
13485 eval $setvar
13486 $rm -f try try.*
13487 : see if there is a wait4
13488 set wait4 d_wait4
13489 eval $inlibc
13490
13491 : see if waitpid exists
13492 set waitpid d_waitpid
13493 eval $inlibc
13494
13495 : see if wcstombs exists
13496 set wcstombs d_wcstombs
13497 eval $inlibc
13498
13499 : see if wctomb exists
13500 set wctomb d_wctomb
13501 eval $inlibc
13502
13503 : see if writev exists
13504 set writev d_writev
13505 eval $inlibc
13506
13507 : preserve RCS keywords in files with variable substitution, grrr
13508 Date='$Date'
13509 Id='$Id'
13510 Log='$Log'
13511 RCSfile='$RCSfile'
13512 Revision='$Revision'
13513
13514 : check for alignment requirements
13515 echo " "
13516 case "$usecrosscompile$multiarch" in
13517 *$define*)
13518         $cat <<EOM
13519 You seem to be either cross-compiling or doing a multiarchitecture build,
13520 skipping the memory alignment check.
13521
13522 EOM
13523         case "$alignbytes" in
13524         '') alignbytes=8 ;;
13525         esac
13526         ;;
13527 *)
13528         case "$alignbytes" in
13529         '') echo "Checking alignment constraints..." >&4
13530                 if $test "X$uselongdouble" = Xdefine -a "X$d_longdbl" = Xdefine; then
13531                         $cat >try.c <<'EOCP'
13532 typedef long double NV;
13533 EOCP
13534                 else
13535                         $cat >try.c <<'EOCP'
13536 typedef double NV;
13537 EOCP
13538                 fi
13539                 $cat >>try.c <<'EOCP'
13540 #include <stdio.h>
13541 struct foobar {
13542         char foo;
13543         NV bar;
13544 } try_algn;
13545 int main()
13546 {
13547     printf("%d\n", (int)((char *)&try_algn.bar - (char *)&try_algn.foo));
13548     return(0);
13549 }
13550 EOCP
13551                 set try
13552                 if eval $compile_ok; then
13553                         dflt=`$run ./try`
13554                 else
13555                         dflt='8'
13556                         echo "(I can't seem to compile the test program...)"
13557                 fi
13558                 ;;
13559         *) dflt="$alignbytes"
13560                 ;;
13561         esac
13562         rp="Doubles must be aligned on a how-many-byte boundary?"
13563         . ./myread
13564         alignbytes="$ans"
13565         $rm -f try.c try
13566         ;;
13567 esac
13568
13569
13570 : set the base revision
13571 baserev=5.0
13572
13573 : how do we catenate cpp tokens here?
13574 echo " "
13575 echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
13576 $cat >cpp_stuff.c <<'EOCP'
13577 #define RCAT(a,b)a/**/b
13578 #define ACAT(a,b)a ## b
13579 RCAT(Rei,ser)
13580 ACAT(Cir,cus)
13581 EOCP
13582 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
13583 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
13584         echo "Oh!  Smells like ANSI's been here." >&4
13585         echo "We can catify or stringify, separately or together!"
13586         cpp_stuff=42
13587 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
13588         echo "Ah, yes!  The good old days!" >&4
13589         echo "However, in the good old days we don't know how to stringify and"
13590         echo "catify at the same time."
13591         cpp_stuff=1
13592 else
13593         $cat >&4 <<EOM
13594 Hmm, I don't seem to be able to catenate tokens with your cpp.  You're going
13595 to have to edit the values of CAT[2-5] in config.h...
13596 EOM
13597         cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
13598 fi
13599 $rm -f cpp_stuff.*
13600
13601 : see if this is a db.h system
13602 set db.h i_db
13603 eval $inhdr
13604
13605 case "$i_db" in
13606 $define)
13607         : Check db version.
13608         echo " "
13609         echo "Checking Berkeley DB version ..." >&4
13610         $cat >try.c <<EOCP
13611 #$d_const HASCONST
13612 #ifndef HASCONST
13613 #define const
13614 #endif
13615 #include <sys/types.h>
13616 #include <stdio.h>
13617 #include <db.h>
13618 int main(int argc, char *argv[])
13619 {
13620 #ifdef DB_VERSION_MAJOR /* DB version >= 2 */
13621     int Major, Minor, Patch ;
13622     unsigned long Version ;
13623     (void)db_version(&Major, &Minor, &Patch) ;
13624     if (argc == 2) {
13625         printf("%d %d %d %d %d %d\n",
13626                DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH,
13627                Major, Minor, Patch);
13628         exit(0);
13629     }
13630     printf("You have Berkeley DB Version 2 or greater.\n");
13631
13632     printf("db.h is from Berkeley DB Version %d.%d.%d\n",
13633                 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
13634     printf("libdb is from Berkeley DB Version %d.%d.%d\n",
13635                 Major, Minor, Patch) ;
13636
13637     /* check that db.h & libdb are compatible */
13638     if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
13639         printf("db.h and libdb are incompatible.\n") ;
13640         exit(3);        
13641     }
13642
13643     printf("db.h and libdb are compatible.\n") ;
13644
13645     Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
13646                 + DB_VERSION_PATCH ;
13647
13648     /* needs to be >= 2.3.4 */
13649     if (Version < 2003004) {
13650     /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
13651         printf("Perl needs Berkeley DB 2.3.4 or greater.\n") ;
13652         exit(2);        
13653     }
13654
13655     exit(0);
13656 #else
13657 #if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
13658     if (argc == 2) {
13659         printf("1 0 0\n");
13660         exit(0);
13661     }
13662     printf("You have Berkeley DB Version 1.\n");
13663     exit(0);    /* DB version < 2: the coast is clear. */
13664 #else
13665     exit(1);    /* <db.h> not Berkeley DB? */
13666 #endif
13667 #endif
13668 }
13669 EOCP
13670         set try
13671         if eval $compile_ok && $run ./try; then
13672                 echo 'Looks OK.' >&4
13673                 set `$run ./try 1`
13674                 db_version_major=$1
13675                 db_version_minor=$2
13676                 db_version_patch=$3
13677         else
13678                 echo "I can't use Berkeley DB with your <db.h>.  I'll disable Berkeley DB." >&4
13679                 i_db=$undef
13680                 case " $libs " in
13681                 *"-ldb "*)
13682                         : Remove db from list of libraries to use
13683                         echo "Removing unusable -ldb from library list" >&4
13684                         set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
13685                         shift
13686                         libs="$*"
13687                         echo "libs = $libs" >&4
13688                         ;;
13689                 esac
13690         fi
13691         $rm -f try.*
13692         ;;
13693 esac
13694
13695 case "$i_db" in
13696 define)
13697         : Check the return type needed for hash 
13698         echo " "
13699         echo "Checking return type needed for hash for Berkeley DB ..." >&4
13700         $cat >try.c <<EOCP
13701 #$d_const HASCONST
13702 #ifndef HASCONST
13703 #define const
13704 #endif
13705 #include <sys/types.h>
13706 #include <db.h>
13707
13708 #ifndef DB_VERSION_MAJOR
13709 u_int32_t hash_cb (ptr, size)
13710 const void *ptr;
13711 size_t size;
13712 {
13713 }
13714 HASHINFO info;
13715 int main()
13716 {
13717         info.hash = hash_cb;
13718 }
13719 #endif
13720 EOCP
13721         if $cc $ccflags -c try.c >try.out 2>&1 ; then
13722                 if $contains warning try.out >>/dev/null 2>&1 ; then
13723                         db_hashtype='int'
13724                 else
13725                         db_hashtype='u_int32_t'
13726                 fi
13727         else
13728                 : XXX Maybe we should just give up here.
13729                 db_hashtype=u_int32_t
13730                 $cat try.out >&4
13731                 echo "Help:  I can't seem to compile the db test program." >&4
13732                 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
13733         fi
13734         $rm -f try.*
13735         echo "Your version of Berkeley DB uses $db_hashtype for hash."
13736         ;;
13737 *)      db_hashtype=u_int32_t
13738         ;;
13739 esac
13740 case "$i_db" in
13741 define)
13742         : Check the return type needed for prefix 
13743         echo " "
13744         echo "Checking return type needed for prefix for Berkeley DB ..." >&4
13745         cat >try.c <<EOCP
13746 #$d_const HASCONST
13747 #ifndef HASCONST
13748 #define const
13749 #endif
13750 #include <sys/types.h>
13751 #include <db.h>
13752
13753 #ifndef DB_VERSION_MAJOR
13754 size_t prefix_cb (key1, key2)
13755 const DBT *key1;
13756 const DBT *key2;
13757 {
13758 }
13759 BTREEINFO info;
13760 int main()
13761 {
13762         info.prefix = prefix_cb;
13763 }
13764 #endif
13765 EOCP
13766         if $cc $ccflags -c try.c  >try.out 2>&1 ; then
13767                 if $contains warning try.out >>/dev/null 2>&1 ; then
13768                         db_prefixtype='int'
13769                 else
13770                         db_prefixtype='size_t'
13771                 fi
13772         else
13773                 db_prefixtype='size_t'
13774                 : XXX Maybe we should just give up here.
13775                 $cat try.out >&4
13776                 echo "Help:  I can't seem to compile the db test program." >&4
13777                 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
13778         fi
13779         $rm -f try.*
13780         echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
13781         ;;
13782 *)      db_prefixtype='size_t'
13783         ;;
13784 esac
13785
13786
13787 : How can we generate normalized random numbers ?
13788 echo " "
13789 echo "Looking for a random number function..." >&4
13790 case "$randfunc" in
13791 '')
13792         if set drand48 val -f; eval $csym; $val; then
13793                 dflt="drand48"
13794                 echo "Good, found drand48()." >&4
13795         elif set random val -f; eval $csym; $val; then
13796                 dflt="random"
13797                 echo "OK, found random()." >&4
13798         else
13799                 dflt="rand"
13800                 echo "Yick, looks like I have to use rand()." >&4
13801         fi
13802         echo " "
13803         ;;
13804 *)
13805         dflt="$randfunc"
13806         ;;
13807 esac
13808 cont=true
13809
13810 case "$ccflags" in
13811 *-Dmy_rand=*|*-Dmy_srand=*)
13812         echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
13813         ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
13814         ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
13815         ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
13816         ;;
13817 esac
13818
13819 while $test "$cont"; do
13820         rp="Use which function to generate random numbers?"
13821         . ./myread
13822         if $test "$ans" = "$dflt"; then
13823                 : null
13824         else
13825                 randbits=''
13826         fi
13827         randfunc="$ans"
13828         if set $ans val -f; eval $csym; $val; then
13829                 cont=''
13830         else
13831                 dflt=y
13832                 rp="I cannot find function $ans. Use that name anyway?"
13833                 . ./myread
13834                 dflt=rand
13835                 case "$ans" in
13836                         [yY]*) cont='';;
13837                 esac
13838         fi
13839         case "$cont" in
13840         '')
13841                 case "$randfunc" in
13842                 drand48)
13843                         drand01="drand48()"
13844                         seedfunc="srand48"
13845                         randbits=48
13846                         randseedtype=long
13847                         ;;
13848                 rand|random)
13849                         case "$randbits" in
13850                         '')
13851 echo "Checking to see how many bits your $randfunc() function produces..." >&4
13852                                 $cat >try.c <<EOCP
13853 #$i_unistd I_UNISTD
13854 #$i_stdlib I_STDLIB
13855 #include <stdio.h>
13856 #ifdef I_UNISTD
13857 #  include <unistd.h>
13858 #endif
13859 #ifdef I_STDLIB
13860 #  include <stdlib.h>
13861 #endif
13862 int main()
13863 {
13864         register int i;
13865         register unsigned long tmp;
13866         register unsigned long max = 0L;
13867
13868         for (i = 1000; i; i--) {
13869                 tmp = (unsigned long) $randfunc();
13870                 if (tmp > max) max = tmp;
13871         }
13872         for (i = 0; max; i++)
13873                 max /= 2;
13874         printf("%d\n",i);
13875 }
13876 EOCP
13877                                 set try
13878                                 if eval $compile_ok; then
13879                                         dflt=`try`
13880                                 else
13881                                         dflt='?'
13882                                         echo "(I can't seem to compile the test program...)"
13883                                 fi
13884                                 ;;
13885                         *)
13886                                 dflt="$randbits"
13887                                 ;;
13888                         esac
13889                         rp="How many bits does your $randfunc() function produce?"
13890                         . ./myread
13891                         randbits="$ans"
13892                         $rm -f try.c try
13893                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
13894                         seedfunc="s$randfunc"
13895                         randseedtype=unsigned
13896                         ;;
13897                 *)
13898                         dflt="31"
13899                         rp="How many bits does your $randfunc() function produce?"
13900                         . ./myread
13901                         randbits="$ans"
13902                         seedfunc="s$randfunc"
13903                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
13904                         if set $seedfunc val -f; eval $csym; $val; then
13905                                 echo "(Using $seedfunc() to seed random generator)"
13906                         else
13907                                 echo "(Warning: no $seedfunc() to seed random generator)"
13908                                 seedfunc=rand
13909                         fi
13910                         randseedtype=unsigned
13911                         ;;
13912                 esac
13913                 ;;
13914         esac
13915 done
13916
13917 echo " "
13918 echo "Determining whether or not we are on an EBCDIC system..." >&4
13919 $cat >try.c <<'EOM'
13920 int main()
13921 {
13922   if ('M'==0xd4) return 0;
13923   return 1;
13924 }
13925 EOM
13926
13927 val=$undef
13928 set try
13929 if eval $compile_ok; then
13930         if $run ./try; then
13931                 echo "You seem to speak EBCDIC." >&4
13932                 val="$define"
13933         else
13934                 echo "Nope, no EBCDIC, probably ASCII or some ISO Latin. Or UTF-8." >&4
13935         fi
13936 else
13937         echo "I'm unable to compile the test program." >&4
13938         echo "I'll assume ASCII or some ISO Latin. Or UTF8." >&4
13939 fi
13940 $rm -f try try.*
13941 set ebcdic
13942 eval $setvar
13943
13944 echo " "
13945 $cat >&4 <<EOM
13946 Checking how to flush all pending stdio output...
13947 EOM
13948 # I only know how to find the first 32 possibly open files on SunOS.
13949 # See also hints/sunos_4_1.sh and util.c  --AD
13950 case "$osname" in
13951 sunos) $echo '#define PERL_FFLUSH_ALL_FOPEN_MAX 32' > try.c ;;
13952 esac
13953 $cat >>try.c <<EOCP
13954 #include <stdio.h>
13955 #$i_unistd I_UNISTD
13956 #ifdef I_UNISTD
13957 # include <unistd.h>
13958 #endif
13959 #$d_sysconf HAS_SYSCONF
13960 #$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY
13961 #ifdef HAS_STDIO_STREAM_ARRAY
13962 # define STDIO_STREAM_ARRAY $stdio_stream_array
13963 #endif
13964 int main() {
13965   FILE* p;
13966   unlink("try.out");
13967   p = fopen("try.out", "w");
13968 #ifdef TRY_FPUTC
13969   fputc('x', p);
13970 #else
13971 # ifdef TRY_FPRINTF
13972   fprintf(p, "x");
13973 # endif
13974 #endif
13975 #ifdef TRY_FFLUSH_NULL
13976   fflush(NULL);
13977 #endif
13978 #ifdef TRY_FFLUSH_ALL
13979   {
13980     long open_max = -1;
13981 # ifdef PERL_FFLUSH_ALL_FOPEN_MAX
13982     open_max = PERL_FFLUSH_ALL_FOPEN_MAX;
13983 # else
13984 #  if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
13985     open_max = sysconf(_SC_OPEN_MAX);
13986 #  else
13987 #   ifdef FOPEN_MAX
13988     open_max = FOPEN_MAX;
13989 #   else
13990 #    ifdef OPEN_MAX
13991     open_max = OPEN_MAX;
13992 #    else
13993 #     ifdef _NFILE
13994     open_max = _NFILE;
13995 #     endif
13996 #    endif
13997 #   endif
13998 #  endif
13999 # endif 
14000 # ifdef HAS_STDIO_STREAM_ARRAY
14001     if (open_max > 0) {
14002       long i;
14003       for (i = 0; i < open_max; i++)
14004             if (STDIO_STREAM_ARRAY[i]._file >= 0 &&
14005                 STDIO_STREAM_ARRAY[i]._file < open_max &&
14006                 STDIO_STREAM_ARRAY[i]._flag)
14007                 fflush(&STDIO_STREAM_ARRAY[i]);
14008     }   
14009   }
14010 # endif
14011 #endif
14012   _exit(42);
14013 }
14014 EOCP
14015 : first we have to find out how _not_ to flush
14016 $to try.c
14017 if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
14018     output=''
14019     set try -DTRY_FPUTC
14020     if eval $compile; then
14021             $run ./try 2>/dev/null
14022             code="$?"
14023             $from try.out
14024             if $test ! -s try.out -a "X$code" = X42; then
14025                 output=-DTRY_FPUTC
14026             fi
14027     fi
14028     case "$output" in
14029     '')
14030             set try -DTRY_FPRINTF
14031             if eval $compile; then
14032                     $run ./try 2>/dev/null
14033                     code="$?"
14034                     $from try.out
14035                     if $test ! -s try.out -a "X$code" = X42; then
14036                         output=-DTRY_FPRINTF
14037                     fi
14038             fi
14039         ;;
14040     esac
14041 fi
14042 : check for fflush NULL behaviour
14043 case "$fflushNULL" in
14044 '')     set try -DTRY_FFLUSH_NULL $output
14045         if eval $compile; then
14046                 $run ./try 2>/dev/null
14047                 code="$?"
14048                 $from try.out
14049                 if $test -s try.out -a "X$code" = X42; then
14050                         fflushNULL="`$cat try.out`"
14051                 else
14052                         if $test "X$code" != X42; then
14053                                 $cat >&4 <<EOM
14054 (If this test failed, don't worry, we'll try another method shortly.)
14055 EOM
14056                         fi
14057                 fi
14058         fi
14059         $rm -f core try.core core.try.*
14060         case "$fflushNULL" in
14061         x)      $cat >&4 <<EOM
14062 Your fflush(NULL) works okay for output streams.
14063 Let's see if it clobbers input pipes...
14064 EOM
14065 # As of mid-March 2000 all versions of Solaris appear to have a stdio
14066 # bug that improperly flushes the input end of pipes.  So we avoid the
14067 # autoflush on fork/system/exec support for now. :-(
14068 $cat >tryp.c <<EOCP
14069 #include <stdio.h>
14070 int
14071 main(int argc, char **argv)
14072 {
14073     char buf[1024];
14074     int i;
14075     char *bp = buf;
14076     while (1) {
14077         while ((i = getc(stdin)) != -1
14078                && (*bp++ = i) != '\n'
14079                && bp < &buf[1024])
14080         /* DO NOTHING */ ;
14081         *bp = '\0';
14082         fprintf(stdout, "%s", buf);
14083         fflush(NULL);
14084         if (i == -1)
14085             return 0;
14086         bp = buf;
14087     }
14088 }
14089 EOCP
14090                 fflushNULL="$define"
14091                 set tryp
14092                 if eval $compile; then
14093                     $rm -f tryp.out
14094                     $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
14095                     if cmp tryp.c tryp.out >/dev/null 2>&1; then
14096                        $cat >&4 <<EOM
14097 fflush(NULL) seems to behave okay with input streams.
14098 EOM
14099                         fflushNULL="$define"
14100                     else
14101                         $cat >&4 <<EOM
14102 Ouch, fflush(NULL) clobbers input pipes!  We will not use it.
14103 EOM
14104                         fflushNULL="$undef"
14105                     fi
14106                 fi
14107                 $rm -f core tryp.c tryp.core core.tryp.*
14108                 ;;
14109         '')     $cat >&4 <<EOM
14110 Your fflush(NULL) isn't working (contrary to ANSI C).
14111 EOM
14112                 fflushNULL="$undef"
14113                 ;;
14114         *)      $cat >&4 <<EOM
14115 Cannot figure out whether your fflush(NULL) works or not.
14116 I'm assuming it doesn't (contrary to ANSI C).
14117 EOM
14118                 fflushNULL="$undef"
14119                 ;;
14120         esac
14121         ;;
14122 $define|true|[yY]*)
14123         fflushNULL="$define"
14124         ;;
14125 *)
14126         fflushNULL="$undef"
14127         ;;
14128 esac
14129 : check explicit looping only if NULL did not work, and if the pipe
14130 : bug does not show up on an explicit flush too
14131 case "$fflushNULL" in
14132 "$undef")
14133         $cat >tryp.c <<EOCP
14134 #include <stdio.h>
14135 int
14136 main(int argc, char **argv)
14137 {
14138     char buf[1024];
14139     int i;
14140     char *bp = buf;
14141     while (1) {
14142         while ((i = getc(stdin)) != -1
14143                && (*bp++ = i) != '\n'
14144                && bp < &buf[1024])
14145         /* DO NOTHING */ ;
14146         *bp = '\0';
14147         fprintf(stdout, "%s", buf);
14148         fflush(stdin);
14149         if (i == -1)
14150             return 0;
14151         bp = buf;
14152     }
14153 }
14154 EOCP
14155         set tryp
14156         if eval $compile; then
14157             $rm -f tryp.out
14158             $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
14159             if cmp tryp.c tryp.out >/dev/null 2>&1; then
14160                $cat >&4 <<EOM
14161 Good, at least fflush(stdin) seems to behave okay when stdin is a pipe.
14162 EOM
14163                 : now check for fflushall behaviour
14164                 case "$fflushall" in
14165                 '')     set try -DTRY_FFLUSH_ALL $output
14166                         if eval $compile; then
14167                                 $cat >&4 <<EOM
14168 (Now testing the other method--but note that this also may fail.)
14169 EOM
14170                                 $run ./try 2>/dev/null
14171                                 code=$?
14172                                 $from try.out
14173                                 if $test -s try.out -a "X$code" = X42; then
14174                                         fflushall="`$cat try.out`"
14175                                 fi
14176                         fi
14177                         $rm -f core try.core core.try.*
14178                         case "$fflushall" in
14179                         x)      $cat >&4 <<EOM
14180 Whew. Flushing explicitly all the stdio streams works.
14181 EOM
14182                                 fflushall="$define"
14183                                 ;;
14184                         '')     $cat >&4 <<EOM
14185 Sigh. Flushing explicitly all the stdio streams doesn't work.
14186 EOM
14187                                 fflushall="$undef"
14188                                 ;;
14189                         *)      $cat >&4 <<EOM
14190 Cannot figure out whether flushing stdio streams explicitly works or not.
14191 I'm assuming it doesn't.
14192 EOM
14193                                 fflushall="$undef"
14194                                 ;;
14195                         esac
14196                         ;;
14197                 "$define"|true|[yY]*)
14198                         fflushall="$define"
14199                         ;;
14200                 *)
14201                         fflushall="$undef"
14202                         ;;
14203                 esac
14204             else
14205                 $cat >&4 <<EOM
14206 All is futile.  Even fflush(stdin) clobbers input pipes!
14207 EOM
14208                 fflushall="$undef"
14209             fi
14210         else
14211             fflushall="$undef"
14212         fi
14213         $rm -f core tryp.c tryp.core core.tryp.*
14214         ;;
14215 *)      fflushall="$undef"
14216         ;;
14217 esac
14218
14219 case "$fflushNULL$fflushall" in
14220 undefundef)
14221         $cat <<EOM
14222 OK, I give up.  I cannot figure out how to flush pending stdio output.
14223 We won't be flushing handles at all before fork/exec/popen.
14224 EOM
14225         ;;
14226 esac
14227 $rm -f try.* try$exe_ext
14228
14229 : Store the full pathname to the ar program for use in the C program
14230 : Respect a hint or command line value for full_ar.
14231 case "$full_ar" in
14232 '') full_ar=$ar ;;
14233 esac
14234
14235 : Store the full pathname to the sed program for use in the C program
14236 full_sed=$sed
14237
14238 : see what type gids are declared as in the kernel
14239 echo " "
14240 echo "Looking for the type for group ids returned by getgid()."
14241 set gid_t gidtype xxx stdio.h sys/types.h
14242 eval $typedef
14243 case "$gidtype" in
14244 xxx)
14245         xxx=`./findhdr sys/user.h`
14246         set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
14247         case $1 in
14248         unsigned) dflt="$1 $2" ;;
14249         *) dflt="$1" ;;
14250         esac
14251         ;;
14252 *) dflt="$gidtype";;
14253 esac
14254 case "$gidtype" in
14255 gid_t) echo "gid_t found." ;;
14256 *)      rp="What is the type for group ids returned by getgid()?"
14257         . ./myread
14258         gidtype="$ans"
14259         ;;
14260 esac
14261
14262 echo " "
14263 case "$gidtype" in
14264 *_t) zzz="$gidtype"     ;;
14265 *)   zzz="gid"          ;;
14266 esac
14267 echo "Checking the size of $zzz..." >&4 
14268 cat > try.c <<EOCP
14269 #include <sys/types.h>
14270 #include <stdio.h>
14271 int main() {
14272     printf("%d\n", (int)sizeof($gidtype));
14273     exit(0);
14274 }
14275 EOCP
14276 set try
14277 if eval $compile_ok; then
14278         yyy=`$run ./try`
14279         case "$yyy" in
14280         '')     gidsize=4
14281                 echo "(I can't execute the test program--guessing $gidsize.)" >&4
14282                 ;;
14283         *)      gidsize=$yyy
14284                 echo "Your $zzz is $gidsize bytes long."
14285                 ;;
14286         esac
14287 else
14288         gidsize=4
14289         echo "(I can't compile the test program--guessing $gidsize.)" >&4
14290 fi
14291
14292
14293 echo " "
14294 case "$gidtype" in
14295 *_t) zzz="$gidtype"     ;;
14296 *)   zzz="gid"          ;;
14297 esac
14298 echo "Checking the sign of $zzz..." >&4 
14299 cat > try.c <<EOCP
14300 #include <sys/types.h>
14301 #include <stdio.h>
14302 int main() {
14303         $gidtype foo = -1;
14304         if (foo < 0)
14305                 printf("-1\n");
14306         else
14307                 printf("1\n");
14308 }
14309 EOCP
14310 set try
14311 if eval $compile; then
14312         yyy=`$run ./try`
14313         case "$yyy" in
14314         '')     gidsign=1
14315                 echo "(I can't execute the test program--guessing unsigned.)" >&4
14316                 ;;
14317         *)      gidsign=$yyy
14318                 case "$gidsign" in
14319                  1) echo "Your $zzz is unsigned." ;;
14320                 -1) echo "Your $zzz is signed."   ;;
14321                 esac
14322                 ;;
14323         esac
14324 else
14325         gidsign=1
14326         echo "(I can't compile the test program--guessing unsigned.)" >&4
14327 fi
14328
14329
14330 echo " "
14331
14332 if $test X"$quadtype" != X; then
14333
14334 echo "Checking how to print 64-bit integers..." >&4
14335
14336 if $test X"$sPRId64" = X -a X"$quadtype" = Xint; then
14337         $cat >try.c <<'EOCP'
14338 #include <sys/types.h>
14339 #include <stdio.h>
14340 int main() {
14341   int q = 12345678901;
14342   printf("%ld\n", q);
14343 }
14344 EOCP
14345         set try
14346         if eval $compile; then
14347                 yyy=`$run ./try`
14348                 case "$yyy" in
14349                 12345678901)
14350                         sPRId64='"d"'; sPRIi64='"i"'; sPRIu64='"u"';
14351                         sPRIo64='"o"'; sPRIx64='"x"'; sPRIXU64='"X"';
14352                         echo "We will use %d."
14353                         ;;
14354                 esac
14355         fi
14356 fi
14357
14358 if $test X"$sPRId64" = X -a X"$quadtype" = Xlong; then
14359         $cat >try.c <<'EOCP'
14360 #include <sys/types.h>
14361 #include <stdio.h>
14362 int main() {
14363   long q = 12345678901;
14364   printf("%ld\n", q);
14365 }
14366 EOCP
14367         set try
14368         if eval $compile; then
14369                 yyy=`$run ./try`
14370                 case "$yyy" in
14371                 12345678901)
14372                         sPRId64='"ld"'; sPRIi64='"li"'; sPRIu64='"lu"';
14373                         sPRIo64='"lo"'; sPRIx64='"lx"'; sPRIXU64='"lX"';
14374                         echo "We will use %ld."
14375                         ;;
14376                 esac
14377         fi
14378 fi
14379
14380 if $test X"$sPRId64" = X -a X"$i_inttypes" = X"$define" -a X"$quadtype" = Xint64_t; then
14381         $cat >try.c <<'EOCP'
14382 #include <sys/types.h>
14383 #include <inttypes.h>
14384 #include <stdio.h>
14385 int main() {
14386   int64_t q = 12345678901;
14387   printf("%" PRId64 "\n", q);
14388 }
14389 EOCP
14390         set try
14391         if eval $compile; then
14392                 yyy=`$run ./try`
14393                 case "$yyy" in
14394                 12345678901)
14395                         sPRId64=PRId64; sPRIi64=PRIi64; sPRIu64=PRIu64;
14396                         sPRIo64=PRIo64; sPRIx64=PRIx64; sPRIXU64=PRIXU64;
14397                         echo "We will use the C9X style."
14398                         ;;
14399                 esac
14400         fi
14401 fi
14402
14403 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
14404         $cat >try.c <<EOCP
14405 #include <sys/types.h>
14406 #include <stdio.h>
14407 int main() {
14408   $quadtype q = 12345678901;
14409   printf("%Ld\n", q);
14410 }
14411 EOCP
14412         set try
14413         if eval $compile; then
14414                 yyy=`$run ./try`
14415                 case "$yyy" in
14416                 12345678901)
14417                         sPRId64='"Ld"'; sPRIi64='"Li"'; sPRIu64='"Lu"';
14418                         sPRIo64='"Lo"'; sPRIx64='"Lx"'; sPRIXU64='"LX"';
14419                         echo "We will use %Ld."
14420                         ;;
14421                 esac
14422         fi
14423 fi
14424
14425 if $test X"$sPRId64" = X -a X"$quadtype" = X"long long"; then
14426         $cat >try.c <<'EOCP'
14427 #include <sys/types.h>
14428 #include <stdio.h>
14429 int main() {
14430   long long q = 12345678901LL; /* AIX cc requires the LL suffix. */
14431   printf("%lld\n", q);
14432 }
14433 EOCP
14434         set try
14435         if eval $compile; then
14436                 yyy=`$run ./try`
14437                 case "$yyy" in
14438                 12345678901)
14439                         sPRId64='"lld"'; sPRIi64='"lli"'; sPRIu64='"llu"';
14440                         sPRIo64='"llo"'; sPRIx64='"llx"'; sPRIXU64='"llX"';
14441                         echo "We will use the %lld style."
14442                         ;;
14443                 esac
14444         fi
14445 fi
14446
14447 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
14448         $cat >try.c <<EOCP
14449 #include <sys/types.h>
14450 #include <stdio.h>
14451 int main() {
14452   $quadtype q = 12345678901;
14453   printf("%qd\n", q);
14454 }
14455 EOCP
14456         set try
14457         if eval $compile; then
14458                 yyy=`$run ./try`
14459                 case "$yyy" in
14460                 12345678901)
14461                         sPRId64='"qd"'; sPRIi64='"qi"'; sPRIu64='"qu"';
14462                         sPRIo64='"qo"'; sPRIx64='"qx"'; sPRIXU64='"qX"';
14463                         echo "We will use %qd."
14464                         ;;
14465                 esac
14466         fi
14467 fi
14468
14469 if $test X"$sPRId64" = X; then
14470         echo "Cannot figure out how to print 64-bit integers." >&4
14471 fi
14472
14473 $rm -f try try.*
14474
14475 fi
14476
14477 case "$sPRId64" in
14478 '')     d_PRId64="$undef"; d_PRIi64="$undef"; d_PRIu64="$undef"; 
14479         d_PRIo64="$undef"; d_PRIx64="$undef"; d_PRIXU64="$undef"; 
14480         ;;
14481 *)      d_PRId64="$define"; d_PRIi64="$define"; d_PRIu64="$define"; 
14482         d_PRIo64="$define"; d_PRIx64="$define"; d_PRIXU64="$define"; 
14483         ;;
14484 esac
14485
14486
14487 echo " "
14488 $echo "Checking the format strings to be used for Perl's internal types..." >&4
14489
14490 if $test X"$ivsize" = X8; then
14491         ivdformat="$sPRId64"
14492         uvuformat="$sPRIu64"
14493         uvoformat="$sPRIo64"
14494         uvxformat="$sPRIx64"
14495         uvXUformat="$sPRIXU64"
14496 else
14497         if $test X"$ivsize" = X"$longsize"; then
14498                 ivdformat='"ld"'
14499                 uvuformat='"lu"'
14500                 uvoformat='"lo"'
14501                 uvxformat='"lx"'
14502                 uvXUformat='"lX"'
14503         else
14504                 if $test X"$ivsize" = X"$intsize"; then
14505                         ivdformat='"d"'
14506                         uvuformat='"u"'
14507                         uvoformat='"o"'
14508                         uvxformat='"x"'
14509                         uvXUformat='"X"'
14510                 else
14511                         : far out
14512                         if $test X"$ivsize" = X"$shortsize"; then
14513                                 ivdformat='"hd"'
14514                                 uvuformat='"hu"'
14515                                 uvoformat='"ho"'
14516                                 uvxformat='"hx"'
14517                                 uvXUformat='"hX"'
14518                         fi
14519                 fi
14520         fi
14521 fi
14522
14523 if $test X"$uselongdouble" = X"$define" -a X"$d_longdbl" = X"$define" -a X"$d_PRIgldbl" = X"$define"; then
14524         nveformat="$sPRIeldbl"
14525         nvfformat="$sPRIfldbl"
14526         nvgformat="$sPRIgldbl"
14527         nvEUformat="$sPRIEUldbl"
14528         nvFUformat="$sPRIFUldbl"
14529         nvGUformat="$sPRIGUldbl"
14530 else
14531         nveformat='"e"'
14532         nvfformat='"f"'
14533         nvgformat='"g"'
14534         nvEUformat='"E"'
14535         nvFUformat='"F"'
14536         nvGUformat='"G"'
14537 fi
14538
14539 case "$ivdformat" in
14540 '') echo "$0: Fatal: failed to find format strings, cannot continue." >& 4
14541     exit 1
14542     ;;
14543 esac
14544
14545
14546 echo " "
14547 $echo "Checking the format string to be used for gids..." >&4
14548
14549 case "$gidsign" in
14550 -1)     if $test X"$gidsize" = X"$ivsize"; then
14551                 gidformat="$ivdformat"
14552         else
14553                 if $test X"$gidsize" = X"$longsize"; then
14554                         gidformat='"ld"'
14555                 else
14556                         if $test X"$gidsize" = X"$intsize"; then
14557                                 gidformat='"d"'
14558                         else
14559                                 if $test X"$gidsize" = X"$shortsize"; then
14560                                         gidformat='"hd"'
14561                                 fi
14562                         fi
14563                 fi
14564         fi
14565         ;;
14566 *)      if $test X"$gidsize" = X"$uvsize"; then
14567                 gidformat="$uvuformat"
14568         else
14569                 if $test X"$gidsize" = X"$longsize"; then
14570                         gidformat='"lu"'
14571                 else
14572                         if $test X"$gidsize" = X"$intsize"; then
14573                                 gidformat='"u"'
14574                         else
14575                                 if $test X"$gidsize" = X"$shortsize"; then
14576                                         gidformat='"hu"'
14577                                 fi
14578                         fi
14579                 fi
14580         fi
14581         ;;
14582 esac
14583
14584 : see if getgroups exists
14585 set getgroups d_getgrps
14586 eval $inlibc
14587
14588 : see if setgroups exists
14589 set setgroups d_setgrps
14590 eval $inlibc
14591
14592
14593 : Find type of 2nd arg to 'getgroups()' and 'setgroups()'
14594 echo " "
14595 case "$d_getgrps$d_setgrps" in
14596 *define*)
14597         case "$groupstype" in
14598         '') dflt="$gidtype" ;;
14599         *)  dflt="$groupstype" ;;
14600         esac
14601         $cat <<EOM
14602 What type of pointer is the second argument to getgroups() and setgroups()?
14603 Usually this is the same as group ids, $gidtype, but not always.
14604
14605 EOM
14606         rp='What type pointer is the second argument to getgroups() and setgroups()?'
14607         . ./myread
14608         groupstype="$ans"
14609         ;;
14610 *)  groupstype="$gidtype";;
14611 esac
14612
14613 echo " "
14614 echo "Checking if your $make program sets \$(MAKE)..." >&4
14615 case "$make_set_make" in
14616 '')
14617         $sed 's/^X //' > testmake.mak << 'EOF'
14618 Xall:
14619 X       @echo 'maketemp="$(MAKE)"'
14620 EOF
14621         case "`$make -f testmake.mak 2>/dev/null`" in
14622         *maketemp=*) make_set_make='#' ;;
14623         *)      make_set_make="MAKE=$make" ;;
14624         esac
14625         $rm -f testmake.mak
14626         ;;
14627 esac
14628 case "$make_set_make" in
14629 '#') echo "Yup, it does.";;
14630 *) echo "Nope, it doesn't.";;
14631 esac
14632
14633 : see what type is used for mode_t
14634 rp="What is the type used for file modes for system calls (e.g. fchmod())?"
14635 set mode_t modetype int stdio.h sys/types.h
14636 eval $typedef_ask
14637
14638 : see if stdarg is available
14639 echo " "
14640 if $test `./findhdr stdarg.h`; then
14641         echo "<stdarg.h> found." >&4
14642         valstd="$define"
14643 else
14644         echo "<stdarg.h> NOT found." >&4
14645         valstd="$undef"
14646 fi
14647
14648 : see if varags is available
14649 echo " "
14650 if $test `./findhdr varargs.h`; then
14651         echo "<varargs.h> found." >&4
14652 else
14653         echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
14654 fi
14655
14656 : set up the varargs testing programs
14657 $cat > varargs.c <<EOP
14658 #ifdef I_STDARG
14659 #include <stdarg.h>
14660 #endif
14661 #ifdef I_VARARGS
14662 #include <varargs.h>
14663 #endif
14664
14665 #ifdef I_STDARG
14666 int f(char *p, ...)
14667 #else
14668 int f(va_alist)
14669 va_dcl
14670 #endif
14671 {
14672         va_list ap;
14673 #ifndef I_STDARG
14674         char *p;
14675 #endif
14676 #ifdef I_STDARG
14677         va_start(ap,p);
14678 #else
14679         va_start(ap);
14680         p = va_arg(ap, char *);
14681 #endif
14682         va_end(ap);
14683 }
14684 EOP
14685 $cat > varargs <<EOP
14686 $startsh
14687 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
14688         echo "true"
14689 else
14690         echo "false"
14691 fi
14692 $rm -f varargs$_o
14693 EOP
14694 chmod +x varargs
14695
14696 : now check which varargs header should be included
14697 echo " "
14698 i_varhdr=''
14699 case "$valstd" in
14700 "$define")
14701         if `./varargs I_STDARG`; then
14702                 val='stdarg.h'
14703         elif `./varargs I_VARARGS`; then
14704                 val='varargs.h'
14705         fi
14706         ;;
14707 *)
14708         if `./varargs I_VARARGS`; then
14709                 val='varargs.h'
14710         fi
14711         ;;
14712 esac
14713 case "$val" in
14714 '')
14715 echo "I could not find the definition for va_dcl... You have problems..." >&4
14716         val="$undef"; set i_stdarg; eval $setvar
14717         val="$undef"; set i_varargs; eval $setvar
14718         ;;
14719 *) 
14720         set i_varhdr
14721         eval $setvar
14722         case "$i_varhdr" in
14723         stdarg.h)
14724                 val="$define"; set i_stdarg; eval $setvar
14725                 val="$undef"; set i_varargs; eval $setvar
14726                 ;;
14727         varargs.h)
14728                 val="$undef"; set i_stdarg; eval $setvar
14729                 val="$define"; set i_varargs; eval $setvar
14730                 ;;
14731         esac
14732         echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
14733 esac
14734 $rm -f varargs*
14735
14736 : see if we need va_copy
14737 echo " "
14738 case "$i_stdarg" in
14739 "$define")
14740         $cat >try.c <<EOCP
14741 #include <stdarg.h>
14742 #include <stdio.h>
14743 #$i_stdlib I_STDLIB
14744 #ifdef I_STDLIB
14745 #include <stdlib.h>
14746 #endif
14747 #include <signal.h>
14748
14749 int
14750 ivfprintf(FILE *f, const char *fmt, va_list *valp)
14751 {
14752   return vfprintf(f, fmt, *valp);
14753 }
14754  
14755 int    
14756 myvfprintf(FILE *f, const  char *fmt, va_list val)
14757 {
14758   return ivfprintf(f, fmt, &val);
14759 }
14760       
14761 int
14762 myprintf(char *fmt, ...) 
14763 {
14764   va_list val;
14765   va_start(val, fmt);
14766   return myvfprintf(stdout, fmt, val); 
14767 }         
14768
14769 int
14770 main(int ac, char **av)
14771 {
14772   signal(SIGSEGV, exit);
14773
14774   myprintf("%s%cs all right, then\n", "that", '\'');                            
14775   exit(0);      
14776 }
14777 EOCP
14778         set try
14779         if eval $compile && $run ./try 2>&1 >/dev/null; then
14780                 case "`$run ./try`" in
14781                 "that's all right, then")
14782                         okay=yes
14783                         ;;
14784                 esac
14785         fi
14786         case "$okay" in
14787         yes)    echo "It seems that you don't need va_copy()." >&4
14788                 need_va_copy="$undef"
14789                 ;;
14790         *)      echo "It seems that va_copy() or similar will be needed." >&4
14791                 need_va_copy="$define"
14792                 ;;
14793         esac
14794         $rm -f try.* core core.* *.core *.core.*
14795         ;;
14796 *)      echo "You don't have <stdarg.h>, not checking for va_copy()." >&4
14797         ;;
14798 esac
14799
14800 : define a fucntion to check prototypes
14801 $cat > protochk <<EOSH
14802 $startsh
14803 cc="$cc"
14804 optimize="$optimize"
14805 ccflags="$ccflags"
14806 prototype="$prototype"
14807 define="$define"
14808 rm=$rm
14809 EOSH
14810
14811 $cat >> protochk <<'EOSH'
14812
14813 $rm -f try.c
14814 foo="$1"
14815 shift
14816 while test $# -ge 2; do
14817         case "$1" in
14818                 $define) echo "#include <$2>" >> try.c ;;
14819                 literal) echo "$2" >> try.c ;;
14820         esac
14821     shift 2
14822 done
14823 test "$prototype" = "$define"  && echo '#define CAN_PROTOTYPE' >> try.c
14824 cat >> try.c <<'EOCP'
14825 #ifdef CAN_PROTOTYPE
14826 #define _(args) args
14827 #else
14828 #define _(args) ()
14829 #endif
14830 EOCP
14831 echo "$foo" >> try.c
14832 echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
14833 $cc $optimize $ccflags -c try.c > /dev/null 2>&1
14834 status=$?
14835 $rm -f try.[co]
14836 exit $status
14837 EOSH
14838 chmod +x protochk
14839 $eunicefix protochk
14840
14841 : see what type is used for size_t
14842 rp="What is the type used for the length parameter for string functions?"
14843 set size_t sizetype 'unsigned int' stdio.h sys/types.h
14844 eval $typedef_ask
14845
14846 : check for type of arguments to gethostbyaddr. 
14847 if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
14848         case "$d_gethbyaddr" in
14849         $define)
14850                 $cat <<EOM
14851
14852 Checking to see what type of arguments are accepted by gethostbyaddr().
14853 EOM
14854                 hdrs="$define sys/types.h
14855                         $d_socket sys/socket.h 
14856                         $i_niin netinet/in.h 
14857                         $i_netdb netdb.h
14858                         $i_unistd unistd.h"
14859                 : The first arg can 'char *' or 'void *'
14860                 : The second arg is some of integral type
14861                 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
14862                         for yyy in size_t long int; do
14863                                 case "$netdb_host_type" in
14864                                 '')     try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
14865                                         if ./protochk "$try" $hdrs; then
14866                                                 echo "Your system accepts $xxx for the first arg."
14867                                                 echo "...and $yyy for the second arg."
14868                                                 netdb_host_type="$xxx"
14869                                                 netdb_hlen_type="$yyy"
14870                                         fi
14871                                         ;;
14872                                 esac
14873                         done
14874                 done
14875                 : In case none of those worked, prompt the user.
14876                 case "$netdb_host_type" in
14877                 '')     rp='What is the type for the 1st argument to gethostbyaddr?'
14878                         dflt='char *'
14879                         . ./myread
14880                         netdb_host_type=$ans
14881                         rp='What is the type for the 2nd argument to gethostbyaddr?'
14882                         dflt="$sizetype"
14883                         . ./myread
14884                         netdb_hlen_type=$ans
14885                         ;;
14886                 esac
14887                 ;;
14888         *)      : no gethostbyaddr, so pick harmless defaults
14889                 netdb_host_type='char *'
14890                 netdb_hlen_type="$sizetype"
14891                 ;;
14892         esac
14893         # Remove the "const" if needed. -- but then we'll have a 
14894         # prototype clash!
14895         # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
14896 fi
14897
14898 : check for type of argument to gethostbyname. 
14899 if test "X$netdb_name_type" = X ; then
14900         case "$d_gethbyname" in
14901         $define)
14902                 $cat <<EOM
14903
14904 Checking to see what type of argument is accepted by gethostbyname().
14905 EOM
14906                 hdrs="$define sys/types.h
14907                         $d_socket sys/socket.h 
14908                         $i_niin netinet/in.h 
14909                         $i_netdb netdb.h
14910                         $i_unistd unistd.h"
14911                 for xxx in "const char *" "char *"; do
14912                         case "$netdb_name_type" in
14913                         '')     try="extern struct hostent *gethostbyname($xxx);"
14914                                 if ./protochk "$try" $hdrs; then
14915                                         echo "Your system accepts $xxx."
14916                                         netdb_name_type="$xxx"
14917                                 fi
14918                                 ;;
14919                         esac
14920                 done
14921                 : In case none of those worked, prompt the user.
14922                 case "$netdb_name_type" in
14923                 '')     rp='What is the type for the 1st argument to gethostbyname?'
14924                         dflt='char *'
14925                         . ./myread
14926                         netdb_name_type=$ans
14927                         ;;
14928                 esac
14929                 ;;
14930         *)      : no gethostbyname, so pick harmless default
14931                 netdb_name_type='char *'
14932                 ;;
14933         esac
14934 fi
14935
14936 : check for type of 1st argument to getnetbyaddr. 
14937 if test "X$netdb_net_type" = X ; then
14938         case "$d_getnbyaddr" in
14939         $define)
14940                 $cat <<EOM
14941
14942 Checking to see what type of 1st argument is accepted by getnetbyaddr().
14943 EOM
14944                 hdrs="$define sys/types.h
14945                         $d_socket sys/socket.h 
14946                         $i_niin netinet/in.h 
14947                         $i_netdb netdb.h
14948                         $i_unistd unistd.h"
14949                 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
14950                         case "$netdb_net_type" in
14951                         '')     try="extern struct netent *getnetbyaddr($xxx, int);"
14952                                 if ./protochk "$try" $hdrs; then
14953                                         echo "Your system accepts $xxx."
14954                                         netdb_net_type="$xxx"
14955                                 fi
14956                                 ;;
14957                         esac
14958                 done
14959                 : In case none of those worked, prompt the user.
14960                 case "$netdb_net_type" in
14961                 '')     rp='What is the type for the 1st argument to getnetbyaddr?'
14962                         dflt='long'
14963                         . ./myread
14964                         netdb_net_type=$ans
14965                         ;;
14966                 esac
14967                 ;;
14968         *)      : no getnetbyaddr, so pick harmless default
14969                 netdb_net_type='long'
14970                 ;;
14971         esac
14972 fi
14973 : locate the preferred pager for this system
14974 case "$pager" in
14975 '')
14976         dflt=''
14977         case "$pg" in
14978         /*) dflt=$pg;;
14979         [a-zA-Z]:/*) dflt=$pg;;
14980         esac
14981         case "$more" in
14982         /*) dflt=$more;;
14983         [a-zA-Z]:/*) dflt=$more;;
14984         esac
14985         case "$less" in
14986         /*) dflt=$less;;
14987         [a-zA-Z]:/*) dflt=$less;;
14988         esac
14989         case "$dflt" in
14990         '') dflt=/usr/ucb/more;;
14991         esac
14992         ;;
14993 *) dflt="$pager";;
14994 esac
14995 echo " "
14996 fn=f/
14997 rp='What pager is used on your system?'
14998 . ./getfile
14999 pager="$ans"
15000
15001 : see what type pids are declared as in the kernel
15002 rp="What is the type of process ids on this system?"
15003 set pid_t pidtype int stdio.h sys/types.h
15004 eval $typedef_ask
15005
15006 : Find earliest binary compatible site_perl subdirectory perl can use.
15007 case "$bincompat5005" in
15008 "$define") xs_apiversion='5.005' ;;
15009 *) xs_apiversion=$version ;;   # The current site_perl version.
15010 esac
15011 : Find earliest pure perl site_perl subdirectory perl can use.
15012 : The versioned directories started at 5.005.
15013 pm_apiversion='5.005'
15014
15015 : see if ar generates random libraries by itself
15016 echo " "
15017 echo "Checking how to generate random libraries on your machine..." >&4
15018 echo 'int bar1() { return bar2(); }' > bar1.c
15019 echo 'int bar2() { return 2; }' > bar2.c
15020 $cat > foo.c <<'EOP'
15021 int main() { printf("%d\n", bar1()); exit(0); }
15022 EOP
15023 $cc $ccflags -c bar1.c >/dev/null 2>&1
15024 $cc $ccflags -c bar2.c >/dev/null 2>&1
15025 $cc $ccflags -c foo.c >/dev/null 2>&1
15026 $ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
15027 if $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
15028         $run ./foobar >/dev/null 2>&1; then
15029         echo "$ar appears to generate random libraries itself."
15030         orderlib=false
15031         ranlib=":"
15032 elif $ar ts bar$_a >/dev/null 2>&1 &&
15033         $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
15034         $run ./foobar >/dev/null 2>&1; then
15035                 echo "a table of contents needs to be added with '$ar ts'."
15036                 orderlib=false
15037                 ranlib="$ar ts"
15038 else
15039         case "$ranlib" in
15040         :) ranlib='';;
15041         '')
15042                 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
15043                 $test -f $ranlib || ranlib=''
15044                 ;;
15045         esac
15046         if $test -n "$ranlib"; then
15047                 echo "your system has '$ranlib'; we'll use that."
15048                 orderlib=false
15049         else
15050                 echo "your system doesn't seem to support random libraries"
15051                 echo "so we'll use lorder and tsort to order the libraries."
15052                 orderlib=true
15053                 ranlib=":"
15054         fi
15055 fi
15056 $rm -f foo* bar* 
15057
15058 : check for type of arguments to select. 
15059 case "$selecttype" in
15060 '') case "$d_select" in
15061         $define)
15062                 echo " "
15063                 $cat <<EOM
15064 Checking to see what type of arguments are accepted by select().
15065 EOM
15066                 hdrs="$define sys/types.h
15067                         $i_systime sys/time.h 
15068                         $i_sysselct sys/select.h
15069                         $d_socket sys/socket.h"
15070                 : The first arg can be int, unsigned, or size_t
15071                 : The last arg may or may not be 'const'
15072                 val=''
15073                 : void pointer has been seen but using that
15074                 : breaks the selectminbits test
15075                 for xxx in 'fd_set *' 'int *'; do
15076                         for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
15077                                 for tmo in 'struct timeval *' 'const struct timeval *'; do
15078                                         case "$val" in
15079                                         '')     try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
15080                                                 if ./protochk "$try" $hdrs; then
15081                                                         echo "Your system accepts $xxx."
15082                                                         val="$xxx"
15083                                                 fi
15084                                                 ;;
15085                                         esac
15086                                 done
15087                         done
15088                 done
15089                 case "$val" in
15090                 '')     rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
15091                         case "$d_fd_set" in
15092                                 $define) dflt="fd_set *" ;;
15093                                 *)              dflt="int *" ;;
15094                         esac
15095                         . ./myread
15096                         val=$ans
15097                         ;;
15098                 esac
15099                 selecttype="$val"
15100                 ;;
15101         *)      : no select, so pick a harmless default
15102                 selecttype='int *'
15103                 ;;
15104         esac
15105         ;;
15106 esac
15107
15108 : check for the select 'width'
15109 case "$selectminbits" in
15110 '') case "$d_select" in
15111         $define)
15112                 $cat <<EOM
15113
15114 Checking to see on how many bits at a time your select() operates...
15115 EOM
15116                 $cat >try.c <<EOCP
15117 #include <sys/types.h>
15118 #$i_time I_TIME
15119 #$i_systime I_SYS_TIME
15120 #$i_systimek I_SYS_TIME_KERNEL
15121 #ifdef I_TIME
15122 #   include <time.h>
15123 #endif
15124 #ifdef I_SYS_TIME
15125 #   ifdef I_SYS_TIME_KERNEL
15126 #       define KERNEL
15127 #   endif
15128 #   include <sys/time.h>
15129 #   ifdef I_SYS_TIME_KERNEL
15130 #       undef KERNEL
15131 #   endif
15132 #endif
15133 #$i_sysselct I_SYS_SELECT
15134 #ifdef I_SYS_SELECT
15135 #include <sys/select.h>
15136 #endif
15137 #$d_socket HAS_SOCKET
15138 #ifdef HAS_SOCKET
15139 #   include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
15140 #endif
15141 #include <stdio.h>
15142 $selecttype b;
15143 #define S sizeof(*(b))
15144 #define MINBITS 64
15145 #define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
15146 #define NBITS  (NBYTES * 8)
15147 int main() {
15148     char s[NBYTES];
15149     struct timeval t;
15150     int i;
15151     FILE* fp;
15152     int fd;
15153
15154     fclose(stdin);
15155     fp = fopen("try.c", "r");
15156     if (fp == 0)
15157       exit(1);
15158     fd = fileno(fp);
15159     if (fd < 0)
15160       exit(2);
15161     b = ($selecttype)s;
15162     for (i = 0; i < NBITS; i++)
15163         FD_SET(i, b);
15164     t.tv_sec  = 0;
15165     t.tv_usec = 0;
15166     select(fd + 1, b, 0, 0, &t);
15167     for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
15168     printf("%d\n", i + 1);
15169     return 0;
15170 }
15171 EOCP
15172                 set try
15173                 if eval $compile_ok; then
15174                         selectminbits=`$run ./try`
15175                         case "$selectminbits" in
15176                         '')     cat >&4 <<EOM
15177 Cannot figure out on how many bits at a time your select() operates.
15178 I'll play safe and guess it is 32 bits.
15179 EOM
15180                                 selectminbits=32
15181                                 bits="32 bits"
15182                                 ;;
15183                         1)      bits="1 bit" ;;
15184                         *)      bits="$selectminbits bits" ;;
15185                         esac
15186                         echo "Your select() operates on $bits at a time." >&4
15187                 else
15188                         rp='What is the minimum number of bits your select() operates on?'
15189                         case "$byteorder" in
15190                         1234|12345678)  dflt=32 ;;
15191                         *)              dflt=1  ;;
15192                         esac
15193                         . ./myread
15194                         val=$ans
15195                         selectminbits="$val"
15196                 fi
15197                 $rm -f try.* try
15198                 ;;
15199         *)      : no select, so pick a harmless default
15200                 selectminbits='32'
15201                 ;;
15202         esac
15203         ;;
15204 esac
15205
15206 : Trace out the files included by signal.h, then look for SIGxxx names.
15207 : Remove SIGARRAYSIZE used by HPUX.
15208 : Remove SIGSTKSIZE used by Linux.
15209 : Remove SIGSTKSZ used by Posix.
15210 : Remove SIGTYP void lines used by OS2.
15211 : Some cpps, like os390, dont give the file name anywhere
15212 if [ "X$fieldn" = X ]; then
15213         : Just make some guesses.  We check them later.
15214         xxx='/usr/include/signal.h /usr/include/sys/signal.h'
15215 else
15216         xxx=`echo '#include <signal.h>' |
15217         $cppstdin $cppminus $cppflags 2>/dev/null |
15218         $grep '^[       ]*#.*include' | 
15219         $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sed 's!\\\\\\\\!/!g' | $sort | $uniq`
15220 fi
15221 : Check this list of files to be sure we have parsed the cpp output ok.
15222 : This will also avoid potentially non-existent files, such 
15223 : as ../foo/bar.h
15224 xxxfiles=''
15225 for xx in $xxx /dev/null ; do
15226         $test -f "$xx" && xxxfiles="$xxxfiles $xx"
15227 done
15228 : If we have found no files, at least try signal.h
15229 case "$xxxfiles" in
15230 '')     xxxfiles=`./findhdr signal.h` ;;
15231 esac
15232 xxx=`awk '
15233 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
15234         print substr($2, 4, 20)
15235 }
15236 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
15237         print substr($3, 4, 20)
15238 }' $xxxfiles`
15239 : Append some common names just in case the awk scan failed.
15240 xxx="$xxx ABRT ALRM BUS CANCEL CHLD CLD CONT DIL EMT FPE"
15241 xxx="$xxx FREEZE HUP ILL INT IO IOT KILL LOST LWP PHONE"
15242 xxx="$xxx PIPE POLL PROF PWR QUIT RTMAX RTMIN SEGV STKFLT STOP"
15243 xxx="$xxx SYS TERM THAW TRAP TSTP TTIN TTOU URG USR1 USR2"
15244 xxx="$xxx USR3 USR4 VTALRM WAITING WINCH WIND WINDOW XCPU XFSZ"
15245
15246 : generate a few handy files for later
15247 $cat > signal.c <<'EOCP'
15248 #include <sys/types.h>
15249 #include <signal.h>
15250 #include <stdio.h>
15251 int main() {
15252
15253 /* Strange style to avoid deeply-nested #if/#else/#endif */
15254 #ifndef NSIG
15255 #  ifdef _NSIG
15256 #    define NSIG (_NSIG)
15257 #  endif
15258 #endif
15259
15260 #ifndef NSIG
15261 #  ifdef SIGMAX
15262 #    define NSIG (SIGMAX+1)
15263 #  endif
15264 #endif
15265
15266 #ifndef NSIG
15267 #  ifdef SIG_MAX
15268 #    define NSIG (SIG_MAX+1)
15269 #  endif
15270 #endif
15271
15272 #ifndef NSIG
15273 #  ifdef MAXSIG
15274 #    define NSIG (MAXSIG+1)
15275 #  endif
15276 #endif
15277
15278 #ifndef NSIG
15279 #  ifdef MAX_SIG
15280 #    define NSIG (MAX_SIG+1)
15281 #  endif
15282 #endif
15283
15284 #ifndef NSIG
15285 #  ifdef SIGARRAYSIZE
15286 #    define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
15287 #  endif
15288 #endif
15289
15290 #ifndef NSIG
15291 #  ifdef _sys_nsig
15292 #    define NSIG (_sys_nsig) /* Solaris 2.5 */
15293 #  endif
15294 #endif
15295
15296 /* Default to some arbitrary number that's big enough to get most
15297    of the common signals.
15298 */
15299 #ifndef NSIG
15300 #    define NSIG 50
15301 #endif
15302
15303 printf("NSIG %d\n", NSIG);
15304
15305 #ifndef JUST_NSIG
15306
15307 EOCP
15308
15309 echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
15310 {
15311         printf "#ifdef SIG"; printf $1; printf "\n"
15312         printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
15313         printf $1; printf ");\n"
15314         printf "#endif\n"
15315 }
15316 END {
15317         printf "#endif /* JUST_NSIG */\n";
15318         printf "exit(0);\n}\n";
15319 }
15320 ' >>signal.c
15321 $cat >signal.awk <<'EOP'
15322 BEGIN { ndups = 0 }
15323 $1 ~ /^NSIG$/ { nsig = $2 }
15324 ($1 !~ /^NSIG$/) && (NF == 2) {
15325     if ($2 > maxsig) { maxsig = $2 }
15326     if (sig_name[$2]) {
15327         dup_name[ndups] = $1
15328         dup_num[ndups] = $2
15329         ndups++ 
15330     }
15331     else {
15332         sig_name[$2] = $1
15333         sig_num[$2] = $2
15334     }
15335 }
15336 END { 
15337     if (nsig == 0) {
15338         nsig = maxsig + 1
15339     }
15340     printf("NSIG %d\n", nsig);
15341     for (n = 1; n < nsig; n++) {
15342         if (sig_name[n]) {
15343             printf("%s %d\n", sig_name[n], sig_num[n])
15344         }
15345         else {
15346             printf("NUM%d %d\n", n, n) 
15347         }
15348     }
15349     for (n = 0; n < ndups; n++) {
15350         printf("%s %d\n", dup_name[n], dup_num[n])
15351     }
15352 }
15353 EOP
15354 $cat >signal_cmd <<EOS
15355 $startsh
15356 if $test -s signal.lst; then
15357     echo "Using your existing signal.lst file"
15358         exit 0
15359 fi
15360 xxx="$xxx"
15361 EOS
15362 $cat >>signal_cmd <<'EOS'
15363
15364 set signal
15365 if eval $compile_ok; then
15366         $run ./signal$_exe | $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
15367 else
15368         echo "(I can't seem be able to compile the whole test program)" >&4
15369         echo "(I'll try it in little pieces.)" >&4
15370         set signal -DJUST_NSIG
15371         if eval $compile_ok; then
15372                 $run ./signal$_exe > signal.nsg
15373                 $cat signal.nsg
15374         else
15375                 echo "I can't seem to figure out how many signals you have." >&4
15376                 echo "Guessing 50." >&4
15377                 echo 'NSIG 50' > signal.nsg
15378         fi
15379         : Now look at all the signal names, one at a time.
15380         for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
15381                 $cat > signal.c <<EOCP
15382 #include <sys/types.h>
15383 #include <signal.h>
15384 #include <stdio.h>
15385 int main() {
15386 printf("$xx %d\n", SIG${xx});
15387 return 0;
15388 }
15389 EOCP
15390                 set signal
15391                 if eval $compile; then
15392                         echo "SIG${xx} found."
15393                         $run ./signal$_exe  >> signal.ls1
15394                 else
15395                         echo "SIG${xx} NOT found."
15396                 fi
15397         done
15398         if $test -s signal.ls1; then
15399                 $cat signal.nsg signal.ls1 |
15400                         $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
15401         fi
15402
15403 fi
15404 if $test -s signal.lst; then
15405         :
15406 else
15407         echo "(AAK! I can't compile the test programs -- Guessing)" >&4
15408         echo 'kill -l' >signal
15409         set X `csh -f <signal`
15410         $rm -f signal
15411         shift
15412         case $# in
15413         0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
15414         esac
15415         echo $@ | $tr ' ' $trnl | \
15416             $awk '{ printf "%s %d\n", $1, ++s; }
15417                   END { printf "NSIG %d\n", ++s }' >signal.lst
15418 fi
15419 $rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
15420 EOS
15421 chmod a+x signal_cmd
15422 $eunicefix signal_cmd
15423
15424 : generate list of signal names
15425 echo " "
15426 case "$sig_name_init" in
15427 '') doinit=yes ;;
15428 *)  case "$sig_num_init" in
15429     ''|*,*) doinit=yes ;;
15430     esac ;;
15431 esac
15432 case "$doinit" in
15433 yes)
15434         echo "Generating a list of signal names and numbers..." >&4
15435         . ./signal_cmd
15436         sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
15437         sig_name=`$awk 'BEGIN { printf "ZERO " }
15438                         !/^NSIG/ { printf "%s ", $1 }' signal.lst`
15439         sig_num=`$awk  'BEGIN { printf "0 " }
15440                         !/^NSIG/ { printf "%d ", $2 }' signal.lst`
15441         sig_name_init=`$awk 'BEGIN      { printf "\"ZERO\", " }
15442                              !/^NSIG/   { printf "\"%s\", ", $1 }
15443                              END        { printf "0\n" }' signal.lst`
15444         sig_num_init=`$awk  'BEGIN      { printf "0, " }
15445                              !/^NSIG/   { printf "%d, ", $2}
15446                              END        { printf "0\n"}' signal.lst`
15447         ;;
15448 esac
15449 echo "The following $sig_count signals are available:"
15450 echo " "
15451 echo $sig_name | $awk \
15452 'BEGIN { linelen = 0 }
15453 {
15454         for (i = 1; i <= NF; i++) {
15455                 name = "SIG" $i " "
15456                 linelen = linelen + length(name)
15457                 if (linelen > 70) {
15458                         printf "\n"
15459                         linelen = length(name)
15460                 }
15461                 printf "%s", name
15462         }
15463         printf "\n"
15464 }'
15465 sig_size=`echo $sig_name | awk '{print NF}'`
15466 $rm -f signal signal.c signal.awk signal.lst signal_cmd 
15467
15468 echo " "
15469 case "$sizetype" in
15470 *_t) zzz="$sizetype"    ;;
15471 *)   zzz="filesize"     ;;
15472 esac
15473 echo "Checking the size of $zzz..." >&4 
15474 cat > try.c <<EOCP
15475 #include <sys/types.h>
15476 #include <stdio.h>
15477 int main() {
15478     printf("%d\n", (int)sizeof($sizetype));
15479     exit(0);
15480 }
15481 EOCP
15482 set try
15483 if eval $compile_ok; then
15484         yyy=`$run ./try`
15485         case "$yyy" in
15486         '')     sizesize=4
15487                 echo "(I can't execute the test program--guessing $sizesize.)" >&4
15488                 ;;
15489         *)      sizesize=$yyy
15490                 echo "Your $zzz size is $sizesize bytes."
15491                 ;;
15492         esac
15493 else
15494         sizesize=4
15495         echo "(I can't compile the test program--guessing $sizesize.)" >&4
15496 fi
15497
15498
15499 : check for socklen_t
15500 echo " "
15501 echo "Checking to see if you have socklen_t..." >&4
15502 $cat >try.c <<EOCP
15503 #include <sys/types.h>
15504 #$d_socket HAS_SOCKET
15505 #ifdef HAS_SOCKET
15506 #include <sys/socket.h>
15507 #endif
15508 int main() { socklen_t x = 16; }
15509 EOCP
15510 set try
15511 if eval $compile; then
15512         val="$define"
15513         echo "You have socklen_t."
15514 else
15515         val="$undef"
15516         echo "You do not have socklen_t."
15517         case "$sizetype" in
15518         size_t) echo "(You do have size_t, that might work. Some people are happy with just an int.)" ;;
15519         esac
15520 fi
15521 $rm -f try try.*
15522 set d_socklen_t
15523 eval $setvar
15524
15525 : see if this is a socks.h system
15526 set socks.h i_socks
15527 eval $inhdr
15528
15529 : check for type of the size argument to socket calls
15530 case "$d_socket" in
15531 "$define")
15532         $cat <<EOM
15533
15534 Checking to see what type is the last argument of accept().
15535 EOM
15536         yyy=''
15537         case "$d_socklen_t" in
15538         "$define") yyy="$yyy socklen_t"
15539         esac
15540         yyy="$yyy $sizetype int long unsigned"
15541         for xxx in $yyy; do
15542                 case "$socksizetype" in
15543                 '')     try="extern int accept(int, struct sockaddr *, $xxx *);"
15544                         case "$usesocks" in
15545                         "$define")
15546                                 if ./protochk "$try" $i_systypes sys/types.h $d_socket sys/socket.h literal '#define INCLUDE_PROTOTYPES' $i_socks socks.h.; then
15547                                         echo "Your system accepts '$xxx *' for the last argument of accept()."
15548                                         socksizetype="$xxx"
15549                                 fi
15550                                 ;;
15551                         *)      if ./protochk "$try"  $i_systypes sys/types.h $d_socket sys/socket.h; then
15552                                         echo "Your system accepts '$xxx *' for the last argument of accept()."
15553                                         socksizetype="$xxx"
15554                                 fi
15555                                 ;;
15556                         esac
15557                         ;;
15558                 esac
15559         done
15560 : In case none of those worked, prompt the user.
15561         case "$socksizetype" in
15562         '')     rp='What is the type for socket address structure sizes?'
15563                 dflt='int'
15564                 . ./myread
15565                 socksizetype=$ans
15566                 ;;
15567         esac
15568         ;;
15569 *)      : no sockets, so pick relatively harmless default
15570         socksizetype='int'
15571         ;;
15572 esac
15573
15574 : see what type is used for signed size_t
15575 set ssize_t ssizetype int stdio.h sys/types.h
15576 eval $typedef
15577 dflt="$ssizetype"
15578 $cat > try.c <<EOM
15579 #include <stdio.h>
15580 #include <sys/types.h>
15581 #define Size_t $sizetype
15582 #define SSize_t $dflt
15583 int main()
15584 {
15585         if (sizeof(Size_t) == sizeof(SSize_t))
15586                 printf("$dflt\n");
15587         else if (sizeof(Size_t) == sizeof(int))
15588                 printf("int\n");
15589         else 
15590                 printf("long\n");
15591         exit(0);
15592 }
15593 EOM
15594 echo " "
15595 set try
15596 if eval $compile_ok && $run ./try > /dev/null; then
15597         ssizetype=`$run ./try`
15598         echo "I'll be using $ssizetype for functions returning a byte count." >&4
15599 else
15600         $cat >&4 <<EOM
15601 Help! I can't compile and run the ssize_t test program: please enlighten me!
15602 (This is probably a misconfiguration in your system or libraries, and
15603 you really ought to fix it.  Still, I'll try anyway.)
15604
15605 I need a type that is the same size as $sizetype, but is guaranteed to
15606 be signed.  Common values are ssize_t, int and long.
15607
15608 EOM
15609         rp="What signed type is the same size as $sizetype?"
15610         . ./myread
15611         ssizetype="$ans"
15612 fi
15613 $rm -f try try.*
15614
15615 : see what type of char stdio uses.
15616 echo " "
15617 echo '#include <stdio.h>' | $cppstdin $cppminus > stdioh
15618 if $contains 'unsigned.*char.*_ptr;' stdioh >/dev/null 2>&1 ; then
15619         echo "Your stdio uses unsigned chars." >&4
15620         stdchar="unsigned char"
15621 else
15622         echo "Your stdio uses signed chars." >&4
15623         stdchar="char"
15624 fi
15625 $rm -f stdioh
15626
15627
15628
15629 : see if time exists
15630 echo " "
15631 if test "X$d_time" = X -o X"$timetype" = X; then
15632     if set time val -f d_time; eval $csym; $val; then
15633                 echo 'time() found.' >&4
15634                 val="$define"
15635                 rp="What is the type returned by time() on this system?"
15636                 set time_t timetype long stdio.h sys/types.h
15637                 eval $typedef_ask
15638     else
15639                 echo 'time() not found, hope that will do.' >&4
15640                 val="$undef"
15641                 timetype='int';
15642     fi
15643     set d_time
15644     eval $setvar
15645 fi
15646
15647 : see what type uids are declared as in the kernel
15648 echo " "
15649 echo "Looking for the type for user ids returned by getuid()."
15650 set uid_t uidtype xxx stdio.h sys/types.h
15651 eval $typedef
15652 case "$uidtype" in
15653 xxx)
15654         xxx=`./findhdr sys/user.h`
15655         set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
15656         case $1 in
15657         unsigned) dflt="$1 $2" ;;
15658         *) dflt="$1" ;;
15659         esac
15660         ;;
15661 *) dflt="$uidtype";;
15662 esac
15663 case "$uidtype" in
15664 uid_t)  echo "uid_t found." ;;
15665 *)      rp="What is the type for user ids returned by getuid()?"
15666         . ./myread
15667         uidtype="$ans"
15668         ;;
15669 esac
15670
15671 echo " "
15672 case "$uidtype" in
15673 *_t) zzz="$uidtype"     ;;
15674 *)   zzz="uid"          ;;
15675 esac
15676 echo "Checking the size of $zzz..." >&4 
15677 cat > try.c <<EOCP
15678 #include <sys/types.h>
15679 #include <stdio.h>
15680 int main() {
15681     printf("%d\n", (int)sizeof($uidtype));
15682     exit(0);
15683 }
15684 EOCP
15685 set try
15686 if eval $compile_ok; then
15687         yyy=`$run ./try`
15688         case "$yyy" in
15689         '')     uidsize=4
15690                 echo "(I can't execute the test program--guessing $uidsize.)" >&4
15691                 ;;
15692         *)      uidsize=$yyy
15693                 echo "Your $zzz is $uidsize bytes long."
15694                 ;;
15695         esac
15696 else
15697         uidsize=4
15698         echo "(I can't compile the test program--guessing $uidsize.)" >&4
15699 fi
15700
15701 echo " "
15702 case "$uidtype" in
15703 *_t) zzz="$uidtype"     ;;
15704 *)   zzz="uid"          ;;
15705 esac
15706 echo "Checking the sign of $zzz..." >&4
15707 cat > try.c <<EOCP
15708 #include <sys/types.h>
15709 #include <stdio.h>
15710 int main() {
15711         $uidtype foo = -1;
15712         if (foo < 0)
15713                 printf("-1\n");
15714         else
15715                 printf("1\n");
15716 }
15717 EOCP
15718 set try
15719 if eval $compile; then
15720         yyy=`$run ./try`
15721         case "$yyy" in
15722         '')     uidsign=1
15723                 echo "(I can't execute the test program--guessing unsigned.)" >&4
15724                 ;;
15725         *)      uidsign=$yyy
15726                 case "$uidsign" in
15727                  1) echo "Your $zzz is unsigned." ;;
15728                 -1) echo "Your $zzz is signed."   ;;
15729                 esac
15730                 ;;
15731         esac
15732 else
15733         uidsign=1
15734         echo "(I can't compile the test program--guessing unsigned.)" >&4
15735 fi
15736
15737
15738
15739 echo " "
15740 $echo "Checking the format string to be used for uids..." >&4
15741
15742 case "$uidsign" in
15743 -1)     if $test X"$uidsize" = X"$ivsize"; then
15744                 uidformat="$ivdformat"
15745         else
15746                 if $test X"$uidsize" = X"$longsize"; then
15747                         uidformat='"ld"'
15748                 else
15749                         if $test X"$uidsize" = X"$intsize"; then
15750                                 uidformat='"d"'
15751                         else
15752                                 if $test X"$uidsize" = X"$shortsize"; then
15753                                         uidformat='"hd"'
15754                                 fi
15755                         fi
15756                 fi
15757         fi
15758         ;;
15759 *)      if $test X"$uidsize" = X"$uvsize"; then
15760                 uidformat="$uvuformat"
15761         else
15762                 if $test X"$uidsize" = X"$longsize"; then
15763                         uidformat='"lu"'
15764                 else
15765                         if $test X"$uidsize" = X"$intsize"; then
15766                                 uidformat='"u"'
15767                         else
15768                                 if $test X"$uidsize" = X"$shortsize"; then
15769                                         uidformat='"hu"'
15770                                 fi
15771                         fi
15772                 fi
15773         fi
15774         ;;
15775 esac
15776
15777 : determine compiler compiler
15778 case "$yacc" in
15779 '')
15780         dflt=yacc;;
15781 *)
15782         dflt="$yacc";;
15783 esac
15784 echo " "
15785 comp='yacc'
15786 if $test -f "$byacc"; then
15787         dflt="$byacc"
15788         comp="byacc or $comp"
15789 fi
15790 if $test -f "$bison"; then
15791         comp="$comp or bison -y"
15792 fi
15793 rp="Which compiler compiler ($comp) shall I use?"
15794 . ./myread
15795 yacc="$ans"
15796 case "$yacc" in
15797 *bis*)
15798         case "$yacc" in
15799         *-y*) ;;
15800         *)
15801                 yacc="$yacc -y"
15802                 echo "(Adding -y option to bison to get yacc-compatible behaviour.)"
15803                 ;;
15804         esac
15805         ;;
15806 esac
15807
15808 : see if fcntl.h is there
15809 val=''
15810 set fcntl.h val
15811 eval $inhdr
15812
15813 : see if we can include fcntl.h
15814 case "$val" in
15815 "$define")
15816         echo " "
15817         if $h_fcntl; then
15818                 val="$define"
15819                 echo "We'll be including <fcntl.h>." >&4
15820         else
15821                 val="$undef"
15822                 if $h_sysfile; then
15823         echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
15824                 else
15825                         echo "We won't be including <fcntl.h>." >&4
15826                 fi
15827         fi
15828         ;;
15829 *)
15830         h_fcntl=false
15831         val="$undef"
15832         ;;
15833 esac
15834 set i_fcntl
15835 eval $setvar
15836
15837 : see if this is a fp.h system
15838 set fp.h i_fp
15839 eval $inhdr
15840
15841 : see if this is a fp_class.h system
15842 set fp_class.h i_fp_class
15843 eval $inhdr
15844
15845 : see if this is a ieeefp.h system
15846 set ieeefp.h i_ieeefp
15847 eval $inhdr
15848
15849 : see if this is a libutil.h system
15850 set libutil.h i_libutil
15851 eval $inhdr
15852
15853 : see if locale.h is available
15854 set locale.h i_locale
15855 eval $inhdr
15856
15857 : see if mach cthreads are available
15858 if test "X$usethreads" = "X$define"; then
15859         set mach/cthreads.h i_machcthr
15860         eval $inhdr
15861 else
15862         i_machcthr="$undef"
15863 fi
15864
15865
15866
15867 : see if this is a math.h system
15868 set math.h i_math
15869 eval $inhdr
15870
15871 : see if this is a mntent.h system
15872 set mntent.h i_mntent
15873 eval $inhdr
15874
15875 : see if ndbm.h is available
15876 set ndbm.h t_ndbm
15877 eval $inhdr
15878 case "$t_ndbm" in
15879 $define)
15880         : see if dbm_open exists
15881         set dbm_open d_dbm_open
15882         eval $inlibc
15883         case "$d_dbm_open" in
15884         $undef)
15885                 t_ndbm="$undef"
15886                 echo "We won't be including <ndbm.h>"
15887                 ;;
15888         esac
15889         ;;
15890 esac
15891 val="$t_ndbm"
15892 set i_ndbm
15893 eval $setvar
15894
15895 : see if net/errno.h is available
15896 val=''
15897 set net/errno.h val
15898 eval $inhdr
15899
15900 : Unfortunately, it causes problems on some systems.  Arrgh.
15901 case "$val" in
15902 $define)
15903         cat > try.c <<'EOM'
15904 #include <stdio.h>
15905 #include <errno.h>
15906 #include <net/errno.h>
15907 int func()
15908 {
15909         return ENOTSOCK;
15910 }
15911 EOM
15912         if $cc $ccflags -c try.c >/dev/null 2>&1; then
15913                 echo "We'll be including <net/errno.h>." >&4
15914         else
15915                 echo "We won't be including <net/errno.h>." >&4
15916                 val="$undef"
15917         fi
15918         $rm -f try.* try
15919         ;;
15920 esac
15921 set i_neterrno
15922 eval $setvar
15923
15924 : see if netinet/tcp.h is available
15925 set netinet/tcp.h i_netinettcp
15926 eval $inhdr
15927
15928 : see if this is a poll.h system
15929 set poll.h i_poll
15930 eval $inhdr
15931
15932 : see if this is a prot.h system
15933 set prot.h i_prot
15934 eval $inhdr
15935
15936 echo " "
15937 $echo "Guessing which symbols your C compiler and preprocessor define..." >&4 
15938 $cat <<'EOSH' > Cppsym.know
15939 a29k ABI64 aegis AES_SOURCE AIX AIX32 AIX370
15940 AIX41 AIX42 AIX43 AIX_SOURCE aixpc ALL_SOURCE
15941 alliant alpha am29000 AM29000 AMD64 amiga AMIGAOS AMIX
15942 ansi ANSI_C_SOURCE apollo ardent ARM32 atarist att386 att3b
15943 BeOS BIG_ENDIAN BIT_MSF bsd BSD bsd43 bsd4_2 bsd4_3 BSD4_3 bsd4_4
15944 BSD_4_3 BSD_4_4 BSD_NET2 BSD_TIME BSD_TYPES BSDCOMPAT bsdi
15945 bull c cadmus clipper CMU COFF COMPILER_VERSION
15946 concurrent convex cpu cray CRAY CRAYMPP ctix CX_UX
15947 CYGWIN DGUX DGUX_SOURCE DJGPP dmert DOLPHIN DPX2 DSO
15948 Dynix DynixPTX ELF encore EPI EXTENSIONS FAVOR_BSD
15949 FILE_OFFSET_BITS FreeBSD GCC_NEW_VARARGS gcos gcx gimpel
15950 GLIBC GLIBC_MINOR
15951 GNU_SOURCE GNUC GNUC_MINOR GNU_LIBRARY GO32 gould GOULD_PN
15952 H3050R H3050RX hbullx20 hcx host_mips
15953 hp200 hp300 hp700 HP700 hp800 hp9000
15954 hp9000s200 hp9000s300 hp9000s400 hp9000s500
15955 hp9000s700 hp9000s800 hp9k8 hp_osf hppa hpux HPUX_SOURCE
15956 i186 i286 i386 i486 i586 i686 i8086 i80960 i860 I960
15957 IA64 iAPX286 ibm ibm032 ibmesa IBMR2 ibmrt ILP32 ILP64
15958 INLINE_INTRINSICS INTRINSICS INT64 interdata is68k ksr1
15959 LANGUAGE_C LARGE_FILE_API LARGEFILE64_SOURCE
15960 LARGEFILE_SOURCE LFS64_LARGEFILE LFS_LARGEFILE
15961 Linux LITTLE_ENDIAN LONG64 LONG_DOUBLE LONG_LONG
15962 LONGDOUBLE LONGLONG LP64 luna luna88k Lynx
15963 M68000 m68k m88100 m88k M88KBCS_TARGET M_COFF
15964 M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM M_SYS3
15965 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX MACH machine MachTen
15966 MATH_HAS_NO_SIDE_EFFECTS
15967 mc300 mc500 mc68000 mc68010 mc68020 mc68030 mc68040
15968 mc68060 mc68k mc68k32 mc700 mc88000 mc88100 merlin
15969 mert MiNT mips MIPS_FPSET MIPS_ISA MIPS_SIM MIPS_SZINT
15970 MIPS_SZLONG MIPS_SZPTR MIPSEB MIPSEL MODERN_C motorola
15971 mpeix MSDOS MTXINU MULTIMAX mvs MVS n16 ncl_el ncl_mr
15972 NetBSD news1500 news1700 news1800 news1900 news3700
15973 news700 news800 news900 NeXT NLS nonstopux ns16000 ns32000
15974 ns32016 ns32332 ns32k nsc32000
15975 OCS88 OEMVS OpenBSD os OS2 OS390 osf OSF1 OSF_SOURCE
15976 pa_risc PA_RISC1_1 PA_RISC2_0 PARAGON parisc
15977 pc532 pdp11 PGC PIC plexus PORTAR posix
15978 POSIX1B_SOURCE POSIX2_SOURCE POSIX4_SOURCE
15979 POSIX_C_SOURCE POSIX_SOURCE POWER
15980 PROTOTYPES PWB pyr QNX R3000 REENTRANT RES Rhapsody RISC6000
15981 riscix riscos RT S390 SA110 scs SCO sequent sgi SGI_SOURCE SH3 sinix
15982 SIZE_INT SIZE_LONG SIZE_PTR SOCKET_SOURCE SOCKETS_SOURCE
15983 sony sony_news sonyrisc sparc sparclite spectrum
15984 stardent stdc STDC_EXT stratos sun sun3 sun386
15985 Sun386i svr3 svr4 SVR4_2 SVR4_SOURCE svr5
15986 SX system SYSTYPE_BSD SYSTYPE_BSD43 SYSTYPE_BSD44
15987 SYSTYPE_SVR4 SYSTYPE_SVR5 SYSTYPE_SYSV SYSV SYSV3 SYSV4 SYSV5
15988 sysV68 sysV88 Tek4132 Tek4300 titan
15989 TM3200 TM5400 TM5600
15990 tower tower32 tower32_200 tower32_600 tower32_700
15991 tower32_800 tower32_850 tss
15992 u370 u3b u3b2 u3b20 u3b200 u3b20d u3b5
15993 ultrix UMAXV UnicomPBB UnicomPBD UNICOS UNICOSMK
15994 unix UNIX95 UNIX99 unixpc unos
15995 USE_BSD USE_FILE_OFFSET64 USE_GNU USE_ISOC9X USE_LARGEFILE USE_LARGEFILE64
15996 USE_MISC USE_POSIX USE_POSIX199309 USE_POSIX199506 USE_POSIX2
15997 USE_REENTRANT USE_SVID USE_UNIX98 USE_XOPEN USE_XOPEN_EXTENDED
15998 USGr4 USGr4_2
15999 Utek UTek UTS UWIN uxpm uxps vax venix VMESA vms xenix Xenix286
16000 XOPEN_SOURCE XOPEN_SOURCE_EXTENDED XPG2 XPG2_EXTENDED
16001 XPG3 XPG3_EXTENDED XPG4 XPG4_EXTENDED
16002 z8000
16003 EOSH
16004 # Maybe put other stuff here too.
16005 cat <<EOSH >>Cppsym.know
16006 $osname
16007 EOSH
16008 ./tr '[a-z]' '[A-Z]' < Cppsym.know > Cppsym.a
16009 ./tr '[A-Z]' '[a-z]' < Cppsym.know > Cppsym.b
16010 $cat Cppsym.know > Cppsym.c
16011 $cat Cppsym.a Cppsym.b Cppsym.c | $tr ' ' $trnl | $sort | $uniq > Cppsym.know
16012 $rm -f Cppsym.a Cppsym.b Cppsym.c
16013 cat <<EOSH > Cppsym
16014 $startsh
16015 if $test \$# -gt 0; then
16016     echo \$* | $tr " " "$trnl" | ./Cppsym.try > Cppsym.got
16017     if $test -s Cppsym.got; then
16018         $rm -f Cppsym.got
16019         exit 0
16020     fi
16021     $rm -f Cppsym.got
16022     exit 1
16023 else
16024     $tr " " "$trnl" | ./Cppsym.try
16025     exit 0
16026 fi
16027 EOSH
16028 chmod +x Cppsym
16029 $eunicefix Cppsym
16030 cat <<EOSH > Cppsym.try
16031 $startsh
16032 cat <<'EOCP' > try.c
16033 #include <stdio.h>
16034 int main() {
16035 EOCP
16036 $awk \\
16037 EOSH
16038 cat <<'EOSH' >> Cppsym.try
16039 'length($1) > 0 {
16040     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
16041     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
16042     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
16043     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
16044 }'       >> try.c
16045 echo 'return 0;}' >> try.c
16046 EOSH
16047 cat <<EOSH >> Cppsym.try
16048 ccflags="$ccflags"
16049 case "$osname-$gccversion" in
16050 irix-) ccflags="\$ccflags -woff 1178" ;;
16051 os2-*) ccflags="\$ccflags -Zlinker /PM:VIO" ;;
16052 esac
16053 $cc -o try $optimize \$ccflags $ldflags try.c $libs && $run ./try
16054 EOSH
16055 chmod +x Cppsym.try
16056 $eunicefix Cppsym.try
16057 ./Cppsym < Cppsym.know > Cppsym.true
16058 : now check the C compiler for additional symbols
16059 postprocess_cc_v=''
16060 case "$osname" in
16061 aix) postprocess_cc_v="|$tr , ' '" ;;
16062 esac
16063 $cat >ccsym <<EOS
16064 $startsh
16065 $cat >tmp.c <<EOF
16066 extern int foo;
16067 EOF
16068 for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
16069 do
16070         case "\$i" in
16071         -D*) echo "\$i" | $sed 's/^-D//';;
16072         -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A\(.*\)(\(.*\))/\1=\2/';;
16073         esac
16074 done
16075 $rm -f try.c
16076 EOS
16077 postprocess_cc_v=''
16078 chmod +x ccsym
16079 $eunicefix ccsym
16080 ./ccsym > ccsym1.raw
16081 if $test -s ccsym1.raw; then
16082        $sort ccsym1.raw | $uniq >ccsym.raw
16083 else
16084        mv ccsym1.raw ccsym.raw
16085 fi
16086
16087 $awk '/\=/ { print $0; next }
16088         { print $0"=1" }' ccsym.raw >ccsym.list
16089 $awk '/\=/ { print $0; next }
16090         { print $0"=1" }' Cppsym.true >ccsym.true
16091 $comm -13 ccsym.true ccsym.list >ccsym.own
16092 $comm -12 ccsym.true ccsym.list >ccsym.com
16093 $comm -23 ccsym.true ccsym.list >ccsym.cpp
16094 also=''
16095 if $test -z ccsym.raw; then
16096         echo "Your C compiler doesn't seem to define any symbols!" >&4
16097         echo " "
16098         echo "However, your C preprocessor defines the following symbols:"
16099         $cat Cppsym.true
16100         ccsymbols=''
16101         cppsymbols=`$cat Cppsym.true`
16102         cppsymbols=`echo $cppsymbols`
16103         cppccsymbols="$cppsymbols"
16104 else
16105         if $test -s ccsym.com; then
16106                 echo "Your C compiler and pre-processor define these symbols:"
16107                 $sed -e 's/\(..*\)=.*/\1/' ccsym.com
16108                 also='also '
16109                 symbols='ones'
16110                 cppccsymbols=`$cat ccsym.com`
16111                 cppccsymbols=`echo $cppccsymbols`
16112                 $test "$silent" || sleep 1
16113         fi
16114         if $test -s ccsym.cpp; then
16115                 $test "$also" && echo " "
16116                 echo "Your C pre-processor ${also}defines the following symbols:"
16117                 $sed -e 's/\(..*\)=.*/\1/' ccsym.cpp
16118                 also='further '
16119                 cppsymbols=`$cat ccsym.cpp`
16120                 cppsymbols=`echo $cppsymbols`
16121                 $test "$silent" || sleep 1
16122         fi
16123         if $test -s ccsym.own; then
16124                 $test "$also" && echo " "
16125                 echo "Your C compiler ${also}defines the following cpp symbols:"
16126                 $sed -e 's/\(..*\)=1/\1/' ccsym.own
16127                 $sed -e 's/\(..*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
16128                 ccsymbols=`$cat ccsym.own`
16129                 ccsymbols=`echo $ccsymbols`
16130                 $test "$silent" || sleep 1
16131         fi
16132 fi
16133
16134 : see if this is a termio system
16135 val="$undef"
16136 val2="$undef"
16137 val3="$undef"
16138 if $test `./findhdr termios.h`; then
16139         set tcsetattr i_termios
16140         eval $inlibc
16141         val3="$i_termios"
16142 fi
16143 echo " "
16144 case "$val3" in
16145 "$define") echo "You have POSIX termios.h... good!" >&4;;
16146 *) if ./Cppsym pyr; then
16147                 case "`/bin/universe`" in
16148                 ucb) if $test `./findhdr sgtty.h`; then
16149                                 val2="$define"
16150                                 echo "<sgtty.h> found." >&4
16151                         else
16152                                 echo "System is pyramid with BSD universe."
16153                                 echo "<sgtty.h> not found--you could have problems." >&4
16154                         fi;;
16155                 *) if $test `./findhdr termio.h`; then
16156                                 val="$define"
16157                                 echo "<termio.h> found." >&4
16158                         else
16159                                 echo "System is pyramid with USG universe."
16160                                 echo "<termio.h> not found--you could have problems." >&4
16161                         fi;;
16162                 esac
16163         elif ./usg; then
16164                 if $test `./findhdr termio.h`; then
16165                         echo "<termio.h> found." >&4
16166                         val="$define"
16167                 elif $test `./findhdr sgtty.h`; then
16168                         echo "<sgtty.h> found." >&4
16169                         val2="$define"
16170                 else
16171 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
16172                 fi
16173         else
16174                 if $test `./findhdr sgtty.h`; then
16175                         echo "<sgtty.h> found." >&4
16176                         val2="$define"
16177                 elif $test `./findhdr termio.h`; then
16178                         echo "<termio.h> found." >&4
16179                         val="$define"
16180                 else
16181 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
16182                 fi
16183         fi;;
16184 esac
16185 set i_termio; eval $setvar
16186 val=$val2; set i_sgtty; eval $setvar
16187 val=$val3; set i_termios; eval $setvar
16188
16189 : see if this is a shadow.h system
16190 set shadow.h i_shadow
16191 eval $inhdr
16192
16193 : see if stddef is available
16194 set stddef.h i_stddef
16195 eval $inhdr
16196
16197 : see if this is a sunmath.h system
16198 set sunmath.h i_sunmath
16199 eval $inhdr
16200
16201 : see if sys/access.h is available
16202 set sys/access.h i_sysaccess
16203 eval $inhdr
16204
16205 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
16206 set sys/filio.h i_sysfilio
16207 eval $inhdr
16208 echo " "
16209 if $test `./findhdr sys/ioctl.h`; then
16210         val="$define"
16211         echo '<sys/ioctl.h> found.' >&4
16212 else
16213         val="$undef"
16214         if $test $i_sysfilio = "$define"; then
16215             echo '<sys/ioctl.h> NOT found.' >&4
16216         else
16217                 $test $i_sgtty = "$define" && xxx="sgtty.h"
16218                 $test $i_termio = "$define" && xxx="termio.h"
16219                 $test $i_termios = "$define" && xxx="termios.h"
16220 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
16221         fi
16222 fi
16223 set i_sysioctl
16224 eval $setvar
16225
16226 : see if socket ioctl defs are in sys/sockio.h
16227 echo " "
16228 xxx=`./findhdr sys/sockio.h`
16229 if $test "$xxx"; then
16230         if $contains SIOCATMARK $xxx >/dev/null 2>&1; then
16231                 val="$define"
16232                 echo "You have socket ioctls defined in <sys/sockio.h>." >&4
16233         else
16234                 val="$undef"
16235                 echo "No socket ioctls found in <sys/sockio.h>." >&4
16236         fi
16237 else
16238         val="$undef"
16239         $cat <<EOM
16240 <sys/sockio.h> not found, assuming socket ioctls are in <sys/ioctl.h>.
16241 EOM
16242 fi
16243 set i_syssockio
16244 eval $setvar
16245
16246
16247 : see if this is a syslog.h system
16248 set syslog.h i_syslog
16249 eval $inhdr
16250
16251
16252 : see if this is a sys/mode.h system
16253 set sys/mode.h i_sysmode
16254 eval $inhdr
16255
16256 : see if sys/resource.h has to be included
16257 set sys/resource.h i_sysresrc
16258 eval $inhdr
16259
16260 : see if sys/security.h is available
16261 set sys/security.h i_syssecrt
16262 eval $inhdr
16263
16264 : see if this is a sys/statvfs.h system
16265 set sys/statvfs.h i_sysstatvfs
16266 eval $inhdr
16267
16268 : see if this is a sys/un.h system
16269 set sys/un.h i_sysun
16270 eval $inhdr
16271
16272
16273 : see if this is a sys/utsname.h system
16274 set sys/utsname.h i_sysutsname
16275 eval $inhdr
16276
16277 : see if this is a syswait system
16278 set sys/wait.h i_syswait
16279 eval $inhdr
16280
16281 : see if this is a ustat.h system
16282 set ustat.h i_ustat
16283 eval $inhdr
16284
16285 : see if this is an utime system
16286 set utime.h i_utime
16287 eval $inhdr
16288
16289 : see if this is a values.h system
16290 set values.h i_values
16291 eval $inhdr
16292
16293 : see if this is a vfork system
16294 case "$d_vfork" in
16295 "$define")
16296         set vfork.h i_vfork
16297         eval $inhdr
16298         ;;
16299 *)
16300         i_vfork="$undef"
16301         ;;
16302 esac
16303
16304 : see if gdbm.h is available
16305 set gdbm.h t_gdbm
16306 eval $inhdr
16307 case "$t_gdbm" in
16308 $define)
16309         : see if gdbm_open exists
16310         set gdbm_open d_gdbm_open
16311         eval $inlibc
16312         case "$d_gdbm_open" in
16313         $undef)
16314                 t_gdbm="$undef"
16315                 echo "We won't be including <gdbm.h>"
16316                 ;;
16317         esac
16318         ;;
16319 esac
16320 val="$t_gdbm"
16321 set i_gdbm
16322 eval $setvar
16323
16324 echo " "
16325 echo "Looking for extensions..." >&4
16326 : If we are using the old config.sh, known_extensions may contain
16327 : old or inaccurate or duplicate values.
16328 known_extensions=''
16329 nonxs_extensions=''
16330 : We do not use find because it might not be available.
16331 : We do not just use MANIFEST because the user may have dropped
16332 : some additional extensions into the source tree and expect them
16333 : to be built.
16334
16335 : Function to recursively find available extensions, ignoring DynaLoader
16336 : NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
16337 find_extensions='
16338     for xxx in *; do
16339        case "$xxx" in
16340            DynaLoader|dynaload) ;;
16341            *)
16342            if $test -f $xxx/$xxx.xs; then
16343                known_extensions="$known_extensions $1$xxx";
16344            elif $test -f $xxx/Makefile.PL; then
16345                nonxs_extensions="$nonxs_extensions $1$xxx";
16346            else
16347                if $test -d $xxx -a $# -lt 10; then
16348                    set $1$xxx/ $*;
16349                    cd $xxx;
16350                    eval $find_extensions;
16351                    cd ..;
16352                    shift;
16353                fi;
16354            fi
16355            ;;
16356        esac;
16357     done'
16358 tdir=`pwd`
16359 cd $rsrc/ext
16360 set X
16361 shift
16362 eval $find_extensions
16363 # Special case:  Add in threads/shared since it is not picked up by the
16364 # recursive find above (and adding in general recursive finding breaks
16365 # SDBM_File/sdbm).  A.D.  10/25/2001.
16366 known_extensions="$known_extensions threads/shared"
16367 set X $nonxs_extensions
16368 shift
16369 nonxs_extensions="$*"
16370 set X $known_extensions
16371 shift
16372 known_extensions="$*"
16373 cd $tdir
16374
16375 : Now see which are supported on this system.
16376 avail_ext=''
16377 for xxx in $known_extensions ; do
16378         case "$xxx" in
16379         DB_File|db_file)
16380                 case "$i_db" in
16381                 $define) avail_ext="$avail_ext $xxx" ;;
16382                 esac
16383                 ;;
16384         GDBM_File|gdbm_fil)
16385                 case "$i_gdbm" in 
16386                 $define) avail_ext="$avail_ext $xxx" ;;
16387                 esac
16388                 ;;
16389         I18N/Langinfo|i18n_lan)
16390                 case "$i_langinfo$d_nl_langinfo" in 
16391                 $define$define) avail_ext="$avail_ext $xxx" ;;
16392                 esac
16393                 ;;
16394         NDBM_File|ndbm_fil)
16395                 case "$i_ndbm" in
16396                 $define)
16397                     case "$osname-$use64bitint" in
16398                     cygwin-*|hpux-define)
16399                         case "$libs" in
16400                         *-lndbm*) avail_ext="$avail_ext $xxx" ;;
16401                         esac
16402                         ;;
16403                     *) avail_ext="$avail_ext $xxx" ;;
16404                     esac
16405                     ;;
16406                 esac
16407                 ;;
16408         ODBM_File|odbm_fil) 
16409                 case "${i_dbm}${i_rpcsvcdbm}" in
16410                 *"${define}"*)
16411                     case "$osname-$use64bitint" in
16412                     cygwin-*|hpux-define)
16413                         case "$libs" in
16414                         *-ldbm*) avail_ext="$avail_ext $xxx" ;;
16415                         esac
16416                         ;;
16417                     *) avail_ext="$avail_ext $xxx" ;;
16418                     esac
16419                     ;;
16420                 esac
16421                 ;;
16422         POSIX|posix)
16423                 case "$useposix" in
16424                 true|define|y) avail_ext="$avail_ext $xxx" ;;
16425                 esac
16426                 ;;
16427         Opcode|opcode)
16428                 case "$useopcode" in
16429                 true|define|y) avail_ext="$avail_ext $xxx" ;;
16430                 esac
16431                 ;;
16432         Socket|socket)
16433                 case "$d_socket" in 
16434                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
16435                 esac
16436                 ;;
16437         Sys/Syslog|sys/syslog)
16438                 : XXX syslog requires socket
16439                 case "$d_socket" in 
16440                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
16441                 esac
16442                 ;;
16443         Thread|thread)
16444                 case "$usethreads" in
16445                 true|$define|y)
16446                         case "$useithreads" in
16447                         $undef|false|[nN]*) avail_ext="$avail_ext $xxx" ;;
16448                         esac
16449                 esac
16450                 ;;
16451         threads|threads/shared)
16452                 case "$usethreads" in
16453                 true|$define|y)
16454                         case "$useithreads" in
16455                         $define|true|[yY]*) avail_ext="$avail_ext $xxx" ;;
16456                         esac
16457                 esac
16458                 ;;
16459         IPC/SysV|ipc/sysv)
16460                 : XXX Do we need a useipcsysv variable here
16461                 case "${d_msg}${d_sem}${d_shm}" in 
16462                 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
16463                 esac
16464                 ;;
16465         *)      avail_ext="$avail_ext $xxx"
16466                 ;;
16467         esac
16468 done
16469
16470 set X $avail_ext
16471 shift
16472 avail_ext="$*"
16473
16474 : Now see which nonxs extensions are supported on this system.
16475 : For now assume all are.
16476 nonxs_ext=''
16477 for xxx in $nonxs_extensions ; do
16478         case "$xxx" in
16479         *)      nonxs_ext="$nonxs_ext $xxx"
16480                 ;;
16481         esac
16482 done
16483
16484 set X $nonxs_ext
16485 shift
16486 nonxs_ext="$*"
16487
16488 case $usedl in
16489 $define)
16490         $cat <<EOM
16491 A number of extensions are supplied with $package.  You may choose to
16492 compile these extensions for dynamic loading (the default), compile
16493 them into the $package executable (static loading), or not include
16494 them at all.  Answer "none" to include no extensions.
16495 Note that DynaLoader is always built and need not be mentioned here.
16496
16497 EOM
16498         case "$dynamic_ext" in
16499         '') dflt="$avail_ext" ;;
16500         *)      dflt="$dynamic_ext"
16501                 # Perhaps we are reusing an old out-of-date config.sh.
16502                 case "$hint" in
16503                 previous)
16504                         if test X"$dynamic_ext" != X"$avail_ext"; then
16505                                 $cat <<EOM
16506 NOTICE:  Your previous config.sh list may be incorrect. 
16507 The extensions now available to you are 
16508         ${avail_ext}
16509 but the default list from your previous config.sh is
16510         ${dynamic_ext} 
16511
16512 EOM
16513                         fi
16514                         ;;
16515                 esac
16516                 ;;
16517         esac
16518         case "$dflt" in
16519         '')     dflt=none;;
16520         esac
16521         rp="What extensions do you wish to load dynamically?"
16522         . ./myread
16523         case "$ans" in
16524         none) dynamic_ext=' ' ;;
16525         *) dynamic_ext="$ans" ;;
16526         esac
16527
16528         case "$static_ext" in
16529         '')
16530                 : Exclude those already listed in dynamic linking
16531                 dflt=''
16532                 for xxx in $avail_ext; do
16533                         case " $dynamic_ext " in
16534                         *" $xxx "*) ;;
16535                         *) dflt="$dflt $xxx" ;;
16536                         esac
16537                 done
16538                 set X $dflt
16539                 shift
16540                 dflt="$*"
16541                 ;;
16542         *)  dflt="$static_ext" 
16543                 ;;
16544         esac
16545
16546         case "$dflt" in
16547         '')     dflt=none;;
16548         esac
16549         rp="What extensions do you wish to load statically?"
16550         . ./myread
16551         case "$ans" in
16552         none) static_ext=' ' ;;
16553         *) static_ext="$ans" ;;
16554         esac
16555         ;;
16556 *)
16557         $cat <<EOM
16558 A number of extensions are supplied with $package.  Answer "none" 
16559 to include no extensions. 
16560 Note that DynaLoader is always built and need not be mentioned here.
16561
16562 EOM
16563         case "$static_ext" in
16564         '') dflt="$avail_ext" ;;
16565         *)      dflt="$static_ext"
16566                 # Perhaps we are reusing an old out-of-date config.sh.
16567                 case "$hint" in
16568                 previous)
16569                         if test X"$static_ext" != X"$avail_ext"; then
16570                                 $cat <<EOM
16571 NOTICE:  Your previous config.sh list may be incorrect. 
16572 The extensions now available to you are 
16573         ${avail_ext}
16574 but the default list from your previous config.sh is
16575         ${static_ext} 
16576
16577 EOM
16578                         fi
16579                         ;;
16580                 esac
16581                 ;;
16582         esac
16583         : Exclude those that are not xs extensions
16584         case "$dflt" in
16585         '')     dflt=none;;
16586         esac
16587         rp="What extensions do you wish to include?"
16588         . ./myread
16589         case "$ans" in
16590         none) static_ext=' ' ;;
16591         *) static_ext="$ans" ;;
16592         esac
16593         ;;
16594 esac
16595
16596 set X $dynamic_ext $static_ext $nonxs_ext
16597 shift
16598 extensions="$*"
16599
16600 : Remove libraries needed only for extensions
16601 : The appropriate ext/Foo/Makefile.PL will add them back in, if necessary.
16602 : The exception is SunOS 4.x, which needs them.
16603 case "${osname}X${osvers}" in
16604 sunos*X4*)
16605     perllibs="$libs"
16606     ;;
16607 *) case "$usedl" in
16608     $define|true|[yY]*)
16609             set X `echo " $libs " | sed -e 's@ -lndbm @ @' -e 's@ -lgdbm @ @' -e 's@ -ldbm @ @' -e 's@ -ldb @ @'` 
16610             shift
16611             perllibs="$*"
16612             ;;
16613     *)  perllibs="$libs"
16614             ;;
16615     esac
16616     ;;
16617 esac
16618
16619 : Remove build directory name from cppstdin so it can be used from
16620 : either the present location or the final installed location.
16621 echo " "
16622 : Get out of the UU directory to get correct path name.
16623 cd ..
16624 case "$cppstdin" in
16625 `pwd`/cppstdin)
16626         echo "Stripping down cppstdin path name"
16627         cppstdin=cppstdin
16628         ;;
16629 esac
16630 cd UU
16631
16632 : end of configuration questions
16633 echo " "
16634 echo "End of configuration questions."
16635 echo " "
16636
16637 : back to where it started
16638 if test -d ../UU; then
16639         cd ..
16640 fi
16641
16642 : configuration may be patched via a 'config.arch' file
16643 if $test -f config.arch; then
16644         echo "I see a config.arch file, loading it."
16645         . ./config.arch
16646 fi
16647
16648 : configuration may be patched via a 'config.over' file
16649 if $test -f config.over; then
16650         echo " "
16651         dflt=y
16652         rp='I see a config.over file.  Do you wish to load it?'
16653         . UU/myread
16654         case "$ans" in
16655         n*) echo "OK, I'll ignore it.";;
16656         *)      . ./config.over
16657                 echo "Configuration override changes have been loaded."
16658                 ;;
16659         esac
16660 fi
16661
16662 : in case they want portability, strip down executable paths
16663 case "$d_portable" in
16664 "$define")
16665         echo " "
16666         echo "Stripping down executable paths..." >&4
16667         for file in $loclist $trylist; do
16668                 eval temp=\$$file
16669                 eval $file=`basename $temp`
16670         done
16671         ;;
16672 esac
16673
16674 : create config.sh file
16675 echo " "
16676 echo "Creating config.sh..." >&4
16677 $spitshell <<EOT >config.sh
16678 $startsh
16679 #
16680 # This file was produced by running the Configure script. It holds all the
16681 # definitions figured out by Configure. Should you modify one of these values,
16682 # do not forget to propagate your changes by running "Configure -der". You may
16683 # instead choose to run each of the .SH files by yourself, or "Configure -S".
16684 #
16685
16686 # Package name      : $package
16687 # Source directory  : $src
16688 # Configuration time: $cf_time
16689 # Configured by     : $cf_by
16690 # Target system     : $myuname
16691
16692 Author='$Author'
16693 Date='$Date'
16694 Header='$Header'
16695 Id='$Id'
16696 Locker='$Locker'
16697 Log='$Log'
16698 Mcc='$Mcc'
16699 RCSfile='$RCSfile'
16700 Revision='$Revision'
16701 Source='$Source'
16702 State='$State'
16703 _a='$_a'
16704 _exe='$_exe'
16705 _o='$_o'
16706 afs='$afs'
16707 afsroot='$afsroot'
16708 alignbytes='$alignbytes'
16709 ansi2knr='$ansi2knr'
16710 aphostname='$aphostname'
16711 api_revision='$api_revision'
16712 api_subversion='$api_subversion'
16713 api_version='$api_version'
16714 api_versionstring='$api_versionstring'
16715 ar='$ar'
16716 archlib='$archlib'
16717 archlibexp='$archlibexp'
16718 archname64='$archname64'
16719 archname='$archname'
16720 archobjs='$archobjs'
16721 awk='$awk'
16722 baserev='$baserev'
16723 bash='$bash'
16724 bin='$bin'
16725 bincompat5005='$bincompat5005'
16726 binexp='$binexp'
16727 bison='$bison'
16728 byacc='$byacc'
16729 byteorder='$byteorder'
16730 c='$c'
16731 castflags='$castflags'
16732 cat='$cat'
16733 cc='$cc'
16734 cccdlflags='$cccdlflags'
16735 ccdlflags='$ccdlflags'
16736 ccflags='$ccflags'
16737 ccflags_uselargefiles='$ccflags_uselargefiles'
16738 ccname='$ccname'
16739 ccsymbols='$ccsymbols'
16740 ccversion='$ccversion'
16741 cf_by='$cf_by'
16742 cf_email='$cf_email'
16743 cf_time='$cf_time'
16744 charsize='$charsize'
16745 chgrp='$chgrp'
16746 chmod='$chmod'
16747 chown='$chown'
16748 clocktype='$clocktype'
16749 comm='$comm'
16750 compress='$compress'
16751 contains='$contains'
16752 cp='$cp'
16753 cpio='$cpio'
16754 cpp='$cpp'
16755 cpp_stuff='$cpp_stuff'
16756 cppccsymbols='$cppccsymbols'
16757 cppflags='$cppflags'
16758 cpplast='$cpplast'
16759 cppminus='$cppminus'
16760 cpprun='$cpprun'
16761 cppstdin='$cppstdin'
16762 cppsymbols='$cppsymbols'
16763 cryptlib='$cryptlib'
16764 csh='$csh'
16765 d_Gconvert='$d_Gconvert'
16766 d_PRIEUldbl='$d_PRIEUldbl'
16767 d_PRIFUldbl='$d_PRIFUldbl'
16768 d_PRIGUldbl='$d_PRIGUldbl'
16769 d_PRIXU64='$d_PRIXU64'
16770 d_PRId64='$d_PRId64'
16771 d_PRIeldbl='$d_PRIeldbl'
16772 d_PRIfldbl='$d_PRIfldbl'
16773 d_PRIgldbl='$d_PRIgldbl'
16774 d_PRIi64='$d_PRIi64'
16775 d_PRIo64='$d_PRIo64'
16776 d_PRIu64='$d_PRIu64'
16777 d_PRIx64='$d_PRIx64'
16778 d_SCNfldbl='$d_SCNfldbl'
16779 d__fwalk='$d__fwalk'
16780 d_access='$d_access'
16781 d_accessx='$d_accessx'
16782 d_alarm='$d_alarm'
16783 d_archlib='$d_archlib'
16784 d_atolf='$d_atolf'
16785 d_atoll='$d_atoll'
16786 d_attribut='$d_attribut'
16787 d_bcmp='$d_bcmp'
16788 d_bcopy='$d_bcopy'
16789 d_bincompat5005='$d_bincompat5005'
16790 d_bsd='$d_bsd'
16791 d_bsdgetpgrp='$d_bsdgetpgrp'
16792 d_bsdsetpgrp='$d_bsdsetpgrp'
16793 d_bzero='$d_bzero'
16794 d_casti32='$d_casti32'
16795 d_castneg='$d_castneg'
16796 d_charvspr='$d_charvspr'
16797 d_chown='$d_chown'
16798 d_chroot='$d_chroot'
16799 d_chsize='$d_chsize'
16800 d_class='$d_class'
16801 d_closedir='$d_closedir'
16802 d_cmsghdr_s='$d_cmsghdr_s'
16803 d_const='$d_const'
16804 d_crypt='$d_crypt'
16805 d_csh='$d_csh'
16806 d_cuserid='$d_cuserid'
16807 d_dbl_dig='$d_dbl_dig'
16808 d_dbminitproto='$d_dbminitproto'
16809 d_difftime='$d_difftime'
16810 d_dirnamlen='$d_dirnamlen'
16811 d_dlerror='$d_dlerror'
16812 d_dlopen='$d_dlopen'
16813 d_dlsymun='$d_dlsymun'
16814 d_dosuid='$d_dosuid'
16815 d_drand48proto='$d_drand48proto'
16816 d_dup2='$d_dup2'
16817 d_eaccess='$d_eaccess'
16818 d_endgrent='$d_endgrent'
16819 d_endhent='$d_endhent'
16820 d_endnent='$d_endnent'
16821 d_endpent='$d_endpent'
16822 d_endpwent='$d_endpwent'
16823 d_endsent='$d_endsent'
16824 d_eofnblk='$d_eofnblk'
16825 d_eunice='$d_eunice'
16826 d_fchdir='$d_fchdir'
16827 d_fchmod='$d_fchmod'
16828 d_fchown='$d_fchown'
16829 d_fcntl='$d_fcntl'
16830 d_fcntl_can_lock='$d_fcntl_can_lock'
16831 d_fd_macros='$d_fd_macros'
16832 d_fd_set='$d_fd_set'
16833 d_fds_bits='$d_fds_bits'
16834 d_fgetpos='$d_fgetpos'
16835 d_finite='$d_finite'
16836 d_finitel='$d_finitel'
16837 d_flexfnam='$d_flexfnam'
16838 d_flock='$d_flock'
16839 d_flockproto='$d_flockproto'
16840 d_fork='$d_fork'
16841 d_fp_class='$d_fp_class'
16842 d_fpathconf='$d_fpathconf'
16843 d_fpclass='$d_fpclass'
16844 d_fpclassify='$d_fpclassify'
16845 d_fpclassl='$d_fpclassl'
16846 d_fpos64_t='$d_fpos64_t'
16847 d_frexpl='$d_frexpl'
16848 d_fs_data_s='$d_fs_data_s'
16849 d_fseeko='$d_fseeko'
16850 d_fsetpos='$d_fsetpos'
16851 d_fstatfs='$d_fstatfs'
16852 d_fstatvfs='$d_fstatvfs'
16853 d_fsync='$d_fsync'
16854 d_ftello='$d_ftello'
16855 d_ftime='$d_ftime'
16856 d_getcwd='$d_getcwd'
16857 d_getespwnam='$d_getespwnam'
16858 d_getfsstat='$d_getfsstat'
16859 d_getgrent='$d_getgrent'
16860 d_getgrps='$d_getgrps'
16861 d_gethbyaddr='$d_gethbyaddr'
16862 d_gethbyname='$d_gethbyname'
16863 d_gethent='$d_gethent'
16864 d_gethname='$d_gethname'
16865 d_gethostprotos='$d_gethostprotos'
16866 d_getitimer='$d_getitimer'
16867 d_getlogin='$d_getlogin'
16868 d_getmnt='$d_getmnt'
16869 d_getmntent='$d_getmntent'
16870 d_getnbyaddr='$d_getnbyaddr'
16871 d_getnbyname='$d_getnbyname'
16872 d_getnent='$d_getnent'
16873 d_getnetprotos='$d_getnetprotos'
16874 d_getpagsz='$d_getpagsz'
16875 d_getpbyname='$d_getpbyname'
16876 d_getpbynumber='$d_getpbynumber'
16877 d_getpent='$d_getpent'
16878 d_getpgid='$d_getpgid'
16879 d_getpgrp2='$d_getpgrp2'
16880 d_getpgrp='$d_getpgrp'
16881 d_getppid='$d_getppid'
16882 d_getprior='$d_getprior'
16883 d_getprotoprotos='$d_getprotoprotos'
16884 d_getprpwnam='$d_getprpwnam'
16885 d_getpwent='$d_getpwent'
16886 d_getsbyname='$d_getsbyname'
16887 d_getsbyport='$d_getsbyport'
16888 d_getsent='$d_getsent'
16889 d_getservprotos='$d_getservprotos'
16890 d_getspnam='$d_getspnam'
16891 d_gettimeod='$d_gettimeod'
16892 d_gnulibc='$d_gnulibc'
16893 d_grpasswd='$d_grpasswd'
16894 d_hasmntopt='$d_hasmntopt'
16895 d_htonl='$d_htonl'
16896 d_index='$d_index'
16897 d_inetaton='$d_inetaton'
16898 d_int64_t='$d_int64_t'
16899 d_isascii='$d_isascii'
16900 d_isfinite='$d_isfinite'
16901 d_isinf='$d_isinf'
16902 d_isnan='$d_isnan'
16903 d_isnanl='$d_isnanl'
16904 d_killpg='$d_killpg'
16905 d_lchown='$d_lchown'
16906 d_ldbl_dig='$d_ldbl_dig'
16907 d_link='$d_link'
16908 d_locconv='$d_locconv'
16909 d_lockf='$d_lockf'
16910 d_longdbl='$d_longdbl'
16911 d_longlong='$d_longlong'
16912 d_lseekproto='$d_lseekproto'
16913 d_lstat='$d_lstat'
16914 d_madvise='$d_madvise'
16915 d_mblen='$d_mblen'
16916 d_mbstowcs='$d_mbstowcs'
16917 d_mbtowc='$d_mbtowc'
16918 d_memchr='$d_memchr'
16919 d_memcmp='$d_memcmp'
16920 d_memcpy='$d_memcpy'
16921 d_memmove='$d_memmove'
16922 d_memset='$d_memset'
16923 d_mkdir='$d_mkdir'
16924 d_mkdtemp='$d_mkdtemp'
16925 d_mkfifo='$d_mkfifo'
16926 d_mkstemp='$d_mkstemp'
16927 d_mkstemps='$d_mkstemps'
16928 d_mktime='$d_mktime'
16929 d_mmap='$d_mmap'
16930 d_modfl='$d_modfl'
16931 d_modfl_pow32_bug='$d_modfl_pow32_bug'
16932 d_mprotect='$d_mprotect'
16933 d_msg='$d_msg'
16934 d_msg_ctrunc='$d_msg_ctrunc'
16935 d_msg_dontroute='$d_msg_dontroute'
16936 d_msg_oob='$d_msg_oob'
16937 d_msg_peek='$d_msg_peek'
16938 d_msg_proxy='$d_msg_proxy'
16939 d_msgctl='$d_msgctl'
16940 d_msgget='$d_msgget'
16941 d_msghdr_s='$d_msghdr_s'
16942 d_msgrcv='$d_msgrcv'
16943 d_msgsnd='$d_msgsnd'
16944 d_msync='$d_msync'
16945 d_munmap='$d_munmap'
16946 d_mymalloc='$d_mymalloc'
16947 d_nice='$d_nice'
16948 d_nl_langinfo='$d_nl_langinfo'
16949 d_nv_preserves_uv='$d_nv_preserves_uv'
16950 d_nv_preserves_uv_bits='$d_nv_preserves_uv_bits'
16951 d_off64_t='$d_off64_t'
16952 d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
16953 d_oldpthreads='$d_oldpthreads'
16954 d_oldsock='$d_oldsock'
16955 d_open3='$d_open3'
16956 d_pathconf='$d_pathconf'
16957 d_pause='$d_pause'
16958 d_perl_otherlibdirs='$d_perl_otherlibdirs'
16959 d_phostname='$d_phostname'
16960 d_pipe='$d_pipe'
16961 d_poll='$d_poll'
16962 d_portable='$d_portable'
16963 d_procselfexe='$d_procselfexe'
16964 d_pthread_atfork='$d_pthread_atfork'
16965 d_pthread_yield='$d_pthread_yield'
16966 d_pwage='$d_pwage'
16967 d_pwchange='$d_pwchange'
16968 d_pwclass='$d_pwclass'
16969 d_pwcomment='$d_pwcomment'
16970 d_pwexpire='$d_pwexpire'
16971 d_pwgecos='$d_pwgecos'
16972 d_pwpasswd='$d_pwpasswd'
16973 d_pwquota='$d_pwquota'
16974 d_qgcvt='$d_qgcvt'
16975 d_quad='$d_quad'
16976 d_readdir='$d_readdir'
16977 d_readlink='$d_readlink'
16978 d_readv='$d_readv'
16979 d_recvmsg='$d_recvmsg'
16980 d_rename='$d_rename'
16981 d_rewinddir='$d_rewinddir'
16982 d_rmdir='$d_rmdir'
16983 d_safebcpy='$d_safebcpy'
16984 d_safemcpy='$d_safemcpy'
16985 d_sanemcmp='$d_sanemcmp'
16986 d_sbrkproto='$d_sbrkproto'
16987 d_sched_yield='$d_sched_yield'
16988 d_scm_rights='$d_scm_rights'
16989 d_seekdir='$d_seekdir'
16990 d_select='$d_select'
16991 d_sem='$d_sem'
16992 d_semctl='$d_semctl'
16993 d_semctl_semid_ds='$d_semctl_semid_ds'
16994 d_semctl_semun='$d_semctl_semun'
16995 d_semget='$d_semget'
16996 d_semop='$d_semop'
16997 d_sendmsg='$d_sendmsg'
16998 d_setegid='$d_setegid'
16999 d_seteuid='$d_seteuid'
17000 d_setgrent='$d_setgrent'
17001 d_setgrps='$d_setgrps'
17002 d_sethent='$d_sethent'
17003 d_setitimer='$d_setitimer'
17004 d_setlinebuf='$d_setlinebuf'
17005 d_setlocale='$d_setlocale'
17006 d_setnent='$d_setnent'
17007 d_setpent='$d_setpent'
17008 d_setpgid='$d_setpgid'
17009 d_setpgrp2='$d_setpgrp2'
17010 d_setpgrp='$d_setpgrp'
17011 d_setprior='$d_setprior'
17012 d_setproctitle='$d_setproctitle'
17013 d_setpwent='$d_setpwent'
17014 d_setregid='$d_setregid'
17015 d_setresgid='$d_setresgid'
17016 d_setresuid='$d_setresuid'
17017 d_setreuid='$d_setreuid'
17018 d_setrgid='$d_setrgid'
17019 d_setruid='$d_setruid'
17020 d_setsent='$d_setsent'
17021 d_setsid='$d_setsid'
17022 d_setvbuf='$d_setvbuf'
17023 d_sfio='$d_sfio'
17024 d_shm='$d_shm'
17025 d_shmat='$d_shmat'
17026 d_shmatprototype='$d_shmatprototype'
17027 d_shmctl='$d_shmctl'
17028 d_shmdt='$d_shmdt'
17029 d_shmget='$d_shmget'
17030 d_sigaction='$d_sigaction'
17031 d_sigprocmask='$d_sigprocmask'
17032 d_sigsetjmp='$d_sigsetjmp'
17033 d_sockatmark='$d_sockatmark'
17034 d_sockatmarkproto='$d_sockatmarkproto'
17035 d_socket='$d_socket'
17036 d_socklen_t='$d_socklen_t'
17037 d_sockpair='$d_sockpair'
17038 d_socks5_init='$d_socks5_init'
17039 d_sqrtl='$d_sqrtl'
17040 d_sresgproto='$d_sresgproto'
17041 d_sresuproto='$d_sresuproto'
17042 d_statblks='$d_statblks'
17043 d_statfs_f_flags='$d_statfs_f_flags'
17044 d_statfs_s='$d_statfs_s'
17045 d_statvfs='$d_statvfs'
17046 d_stdio_cnt_lval='$d_stdio_cnt_lval'
17047 d_stdio_ptr_lval='$d_stdio_ptr_lval'
17048 d_stdio_ptr_lval_nochange_cnt='$d_stdio_ptr_lval_nochange_cnt'
17049 d_stdio_ptr_lval_sets_cnt='$d_stdio_ptr_lval_sets_cnt'
17050 d_stdio_stream_array='$d_stdio_stream_array'
17051 d_stdiobase='$d_stdiobase'
17052 d_stdstdio='$d_stdstdio'
17053 d_strchr='$d_strchr'
17054 d_strcoll='$d_strcoll'
17055 d_strctcpy='$d_strctcpy'
17056 d_strerrm='$d_strerrm'
17057 d_strerror='$d_strerror'
17058 d_strftime='$d_strftime'
17059 d_strtod='$d_strtod'
17060 d_strtol='$d_strtol'
17061 d_strtold='$d_strtold'
17062 d_strtoll='$d_strtoll'
17063 d_strtoq='$d_strtoq'
17064 d_strtoul='$d_strtoul'
17065 d_strtoull='$d_strtoull'
17066 d_strtouq='$d_strtouq'
17067 d_strxfrm='$d_strxfrm'
17068 d_suidsafe='$d_suidsafe'
17069 d_symlink='$d_symlink'
17070 d_syscall='$d_syscall'
17071 d_syscallproto='$d_syscallproto'
17072 d_sysconf='$d_sysconf'
17073 d_sysernlst='$d_sysernlst'
17074 d_syserrlst='$d_syserrlst'
17075 d_system='$d_system'
17076 d_tcgetpgrp='$d_tcgetpgrp'
17077 d_tcsetpgrp='$d_tcsetpgrp'
17078 d_telldir='$d_telldir'
17079 d_telldirproto='$d_telldirproto'
17080 d_time='$d_time'
17081 d_times='$d_times'
17082 d_truncate='$d_truncate'
17083 d_tzname='$d_tzname'
17084 d_u32align='$d_u32align'
17085 d_ualarm='$d_ualarm'
17086 d_umask='$d_umask'
17087 d_uname='$d_uname'
17088 d_union_semun='$d_union_semun'
17089 d_unordered='$d_unordered'
17090 d_usleep='$d_usleep'
17091 d_usleepproto='$d_usleepproto'
17092 d_ustat='$d_ustat'
17093 d_vendorarch='$d_vendorarch'
17094 d_vendorbin='$d_vendorbin'
17095 d_vendorlib='$d_vendorlib'
17096 d_vfork='$d_vfork'
17097 d_void_closedir='$d_void_closedir'
17098 d_voidsig='$d_voidsig'
17099 d_voidtty='$d_voidtty'
17100 d_volatile='$d_volatile'
17101 d_vprintf='$d_vprintf'
17102 d_wait4='$d_wait4'
17103 d_waitpid='$d_waitpid'
17104 d_wcstombs='$d_wcstombs'
17105 d_wctomb='$d_wctomb'
17106 d_writev='$d_writev'
17107 d_xenix='$d_xenix'
17108 date='$date'
17109 db_hashtype='$db_hashtype'
17110 db_prefixtype='$db_prefixtype'
17111 db_version_major='$db_version_major'
17112 db_version_minor='$db_version_minor'
17113 db_version_patch='$db_version_patch'
17114 defvoidused='$defvoidused'
17115 direntrytype='$direntrytype'
17116 dlext='$dlext'
17117 dlsrc='$dlsrc'
17118 doublesize='$doublesize'
17119 drand01='$drand01'
17120 dynamic_ext='$dynamic_ext'
17121 eagain='$eagain'
17122 ebcdic='$ebcdic'
17123 echo='$echo'
17124 egrep='$egrep'
17125 emacs='$emacs'
17126 eunicefix='$eunicefix'
17127 exe_ext='$exe_ext'
17128 expr='$expr'
17129 extensions='$extensions'
17130 extras='$extras'
17131 fflushNULL='$fflushNULL'
17132 fflushall='$fflushall'
17133 find='$find'
17134 firstmakefile='$firstmakefile'
17135 flex='$flex'
17136 fpossize='$fpossize'
17137 fpostype='$fpostype'
17138 freetype='$freetype'
17139 from='$from'
17140 full_ar='$full_ar'
17141 full_csh='$full_csh'
17142 full_sed='$full_sed'
17143 gccosandvers='$gccosandvers'
17144 gccversion='$gccversion'
17145 gidformat='$gidformat'
17146 gidsign='$gidsign'
17147 gidsize='$gidsize'
17148 gidtype='$gidtype'
17149 glibpth='$glibpth'
17150 grep='$grep'
17151 groupcat='$groupcat'
17152 groupstype='$groupstype'
17153 gzip='$gzip'
17154 h_fcntl='$h_fcntl'
17155 h_sysfile='$h_sysfile'
17156 hint='$hint'
17157 hostcat='$hostcat'
17158 i16size='$i16size'
17159 i16type='$i16type'
17160 i32size='$i32size'
17161 i32type='$i32type'
17162 i64size='$i64size'
17163 i64type='$i64type'
17164 i8size='$i8size'
17165 i8type='$i8type'
17166 i_arpainet='$i_arpainet'
17167 i_bsdioctl='$i_bsdioctl'
17168 i_db='$i_db'
17169 i_dbm='$i_dbm'
17170 i_dirent='$i_dirent'
17171 i_dld='$i_dld'
17172 i_dlfcn='$i_dlfcn'
17173 i_fcntl='$i_fcntl'
17174 i_float='$i_float'
17175 i_fp='$i_fp'
17176 i_fp_class='$i_fp_class'
17177 i_gdbm='$i_gdbm'
17178 i_grp='$i_grp'
17179 i_ieeefp='$i_ieeefp'
17180 i_inttypes='$i_inttypes'
17181 i_langinfo='$i_langinfo'
17182 i_libutil='$i_libutil'
17183 i_limits='$i_limits'
17184 i_locale='$i_locale'
17185 i_machcthr='$i_machcthr'
17186 i_malloc='$i_malloc'
17187 i_math='$i_math'
17188 i_memory='$i_memory'
17189 i_mntent='$i_mntent'
17190 i_ndbm='$i_ndbm'
17191 i_netdb='$i_netdb'
17192 i_neterrno='$i_neterrno'
17193 i_netinettcp='$i_netinettcp'
17194 i_niin='$i_niin'
17195 i_poll='$i_poll'
17196 i_prot='$i_prot'
17197 i_pthread='$i_pthread'
17198 i_pwd='$i_pwd'
17199 i_rpcsvcdbm='$i_rpcsvcdbm'
17200 i_sfio='$i_sfio'
17201 i_sgtty='$i_sgtty'
17202 i_shadow='$i_shadow'
17203 i_socks='$i_socks'
17204 i_stdarg='$i_stdarg'
17205 i_stddef='$i_stddef'
17206 i_stdlib='$i_stdlib'
17207 i_string='$i_string'
17208 i_sunmath='$i_sunmath'
17209 i_sysaccess='$i_sysaccess'
17210 i_sysdir='$i_sysdir'
17211 i_sysfile='$i_sysfile'
17212 i_sysfilio='$i_sysfilio'
17213 i_sysin='$i_sysin'
17214 i_sysioctl='$i_sysioctl'
17215 i_syslog='$i_syslog'
17216 i_sysmman='$i_sysmman'
17217 i_sysmode='$i_sysmode'
17218 i_sysmount='$i_sysmount'
17219 i_sysndir='$i_sysndir'
17220 i_sysparam='$i_sysparam'
17221 i_sysresrc='$i_sysresrc'
17222 i_syssecrt='$i_syssecrt'
17223 i_sysselct='$i_sysselct'
17224 i_syssockio='$i_syssockio'
17225 i_sysstat='$i_sysstat'
17226 i_sysstatfs='$i_sysstatfs'
17227 i_sysstatvfs='$i_sysstatvfs'
17228 i_systime='$i_systime'
17229 i_systimek='$i_systimek'
17230 i_systimes='$i_systimes'
17231 i_systypes='$i_systypes'
17232 i_sysuio='$i_sysuio'
17233 i_sysun='$i_sysun'
17234 i_sysutsname='$i_sysutsname'
17235 i_sysvfs='$i_sysvfs'
17236 i_syswait='$i_syswait'
17237 i_termio='$i_termio'
17238 i_termios='$i_termios'
17239 i_time='$i_time'
17240 i_unistd='$i_unistd'
17241 i_ustat='$i_ustat'
17242 i_utime='$i_utime'
17243 i_values='$i_values'
17244 i_varargs='$i_varargs'
17245 i_varhdr='$i_varhdr'
17246 i_vfork='$i_vfork'
17247 ignore_versioned_solibs='$ignore_versioned_solibs'
17248 inc_version_list='$inc_version_list'
17249 inc_version_list_init='$inc_version_list_init'
17250 incpath='$incpath'
17251 inews='$inews'
17252 installarchlib='$installarchlib'
17253 installbin='$installbin'
17254 installman1dir='$installman1dir'
17255 installman3dir='$installman3dir'
17256 installprefix='$installprefix'
17257 installprefixexp='$installprefixexp'
17258 installprivlib='$installprivlib'
17259 installscript='$installscript'
17260 installsitearch='$installsitearch'
17261 installsitebin='$installsitebin'
17262 installsitelib='$installsitelib'
17263 installstyle='$installstyle'
17264 installusrbinperl='$installusrbinperl'
17265 installvendorarch='$installvendorarch'
17266 installvendorbin='$installvendorbin'
17267 installvendorlib='$installvendorlib'
17268 intsize='$intsize'
17269 issymlink='$issymlink'
17270 ivdformat='$ivdformat'
17271 ivsize='$ivsize'
17272 ivtype='$ivtype'
17273 known_extensions='$known_extensions'
17274 ksh='$ksh'
17275 ld='$ld'
17276 lddlflags='$lddlflags'
17277 ldflags='$ldflags'
17278 ldflags_uselargefiles='$ldflags_uselargefiles'
17279 ldlibpthname='$ldlibpthname'
17280 less='$less'
17281 lib_ext='$lib_ext'
17282 libc='$libc'
17283 libperl='$libperl'
17284 libpth='$libpth'
17285 libs='$libs'
17286 libsdirs='$libsdirs'
17287 libsfiles='$libsfiles'
17288 libsfound='$libsfound'
17289 libspath='$libspath'
17290 libswanted='$libswanted'
17291 libswanted_uselargefiles='$libswanted_uselargefiles'
17292 line='$line'
17293 lint='$lint'
17294 lkflags='$lkflags'
17295 ln='$ln'
17296 lns='$lns'
17297 locincpth='$locincpth'
17298 loclibpth='$loclibpth'
17299 longdblsize='$longdblsize'
17300 longlongsize='$longlongsize'
17301 longsize='$longsize'
17302 lp='$lp'
17303 lpr='$lpr'
17304 ls='$ls'
17305 lseeksize='$lseeksize'
17306 lseektype='$lseektype'
17307 mail='$mail'
17308 mailx='$mailx'
17309 make='$make'
17310 make_set_make='$make_set_make'
17311 mallocobj='$mallocobj'
17312 mallocsrc='$mallocsrc'
17313 malloctype='$malloctype'
17314 man1dir='$man1dir'
17315 man1direxp='$man1direxp'
17316 man1ext='$man1ext'
17317 man3dir='$man3dir'
17318 man3direxp='$man3direxp'
17319 man3ext='$man3ext'
17320 mips_type='$mips_type'
17321 mkdir='$mkdir'
17322 mmaptype='$mmaptype'
17323 modetype='$modetype'
17324 more='$more'
17325 multiarch='$multiarch'
17326 mv='$mv'
17327 myarchname='$myarchname'
17328 mydomain='$mydomain'
17329 myhostname='$myhostname'
17330 myuname='$myuname'
17331 n='$n'
17332 need_va_copy='$need_va_copy'
17333 netdb_hlen_type='$netdb_hlen_type'
17334 netdb_host_type='$netdb_host_type'
17335 netdb_name_type='$netdb_name_type'
17336 netdb_net_type='$netdb_net_type'
17337 nm='$nm'
17338 nm_opt='$nm_opt'
17339 nm_so_opt='$nm_so_opt'
17340 nonxs_ext='$nonxs_ext'
17341 nroff='$nroff'
17342 nvEUformat='$nvEUformat'
17343 nvFUformat='$nvFUformat'
17344 nvGUformat='$nvGUformat'
17345 nveformat='$nveformat'
17346 nvfformat='$nvfformat'
17347 nvgformat='$nvgformat'
17348 nvsize='$nvsize'
17349 nvtype='$nvtype'
17350 o_nonblock='$o_nonblock'
17351 obj_ext='$obj_ext'
17352 old_pthread_create_joinable='$old_pthread_create_joinable'
17353 optimize='$optimize'
17354 orderlib='$orderlib'
17355 osname='$osname'
17356 osvers='$osvers'
17357 otherlibdirs='$otherlibdirs'
17358 package='$package'
17359 pager='$pager'
17360 passcat='$passcat'
17361 patchlevel='$patchlevel'
17362 path_sep='$path_sep'
17363 perl5='$perl5'
17364 perl='$perl'
17365 perl_patchlevel='$perl_patchlevel'
17366 perladmin='$perladmin'
17367 perllibs='$perllibs'
17368 perlpath='$perlpath'
17369 pg='$pg'
17370 phostname='$phostname'
17371 pidtype='$pidtype'
17372 plibpth='$plibpth'
17373 pm_apiversion='$pm_apiversion'
17374 pmake='$pmake'
17375 pr='$pr'
17376 prefix='$prefix'
17377 prefixexp='$prefixexp'
17378 privlib='$privlib'
17379 privlibexp='$privlibexp'
17380 prototype='$prototype'
17381 ptrsize='$ptrsize'
17382 quadkind='$quadkind'
17383 quadtype='$quadtype'
17384 randbits='$randbits'
17385 randfunc='$randfunc'
17386 randseedtype='$randseedtype'
17387 ranlib='$ranlib'
17388 rd_nodata='$rd_nodata'
17389 revision='$revision'
17390 rm='$rm'
17391 rmail='$rmail'
17392 run='$run'
17393 runnm='$runnm'
17394 sPRIEUldbl='$sPRIEUldbl'
17395 sPRIFUldbl='$sPRIFUldbl'
17396 sPRIGUldbl='$sPRIGUldbl'
17397 sPRIXU64='$sPRIXU64'
17398 sPRId64='$sPRId64'
17399 sPRIeldbl='$sPRIeldbl'
17400 sPRIfldbl='$sPRIfldbl'
17401 sPRIgldbl='$sPRIgldbl'
17402 sPRIi64='$sPRIi64'
17403 sPRIo64='$sPRIo64'
17404 sPRIu64='$sPRIu64'
17405 sPRIx64='$sPRIx64'
17406 sSCNfldbl='$sSCNfldbl'
17407 sched_yield='$sched_yield'
17408 scriptdir='$scriptdir'
17409 scriptdirexp='$scriptdirexp'
17410 sed='$sed'
17411 seedfunc='$seedfunc'
17412 selectminbits='$selectminbits'
17413 selecttype='$selecttype'
17414 sendmail='$sendmail'
17415 sh='$sh'
17416 shar='$shar'
17417 sharpbang='$sharpbang'
17418 shmattype='$shmattype'
17419 shortsize='$shortsize'
17420 shrpenv='$shrpenv'
17421 shsharp='$shsharp'
17422 sig_count='$sig_count'
17423 sig_name='$sig_name'
17424 sig_name_init='$sig_name_init'
17425 sig_num='$sig_num'
17426 sig_num_init='$sig_num_init'
17427 sig_size='$sig_size'
17428 signal_t='$signal_t'
17429 sitearch='$sitearch'
17430 sitearchexp='$sitearchexp'
17431 sitebin='$sitebin'
17432 sitebinexp='$sitebinexp'
17433 sitelib='$sitelib'
17434 sitelib_stem='$sitelib_stem'
17435 sitelibexp='$sitelibexp'
17436 siteprefix='$siteprefix'
17437 siteprefixexp='$siteprefixexp'
17438 sizesize='$sizesize'
17439 sizetype='$sizetype'
17440 sleep='$sleep'
17441 smail='$smail'
17442 so='$so'
17443 sockethdr='$sockethdr'
17444 socketlib='$socketlib'
17445 socksizetype='$socksizetype'
17446 sort='$sort'
17447 spackage='$spackage'
17448 spitshell='$spitshell'
17449 src='$src'
17450 ssizetype='$ssizetype'
17451 startperl='$startperl'
17452 startsh='$startsh'
17453 static_ext='$static_ext'
17454 stdchar='$stdchar'
17455 stdio_base='$stdio_base'
17456 stdio_bufsiz='$stdio_bufsiz'
17457 stdio_cnt='$stdio_cnt'
17458 stdio_filbuf='$stdio_filbuf'
17459 stdio_ptr='$stdio_ptr'
17460 stdio_stream_array='$stdio_stream_array'
17461 strings='$strings'
17462 submit='$submit'
17463 subversion='$subversion'
17464 sysman='$sysman'
17465 tail='$tail'
17466 tar='$tar'
17467 targetarch='$targetarch'
17468 tbl='$tbl'
17469 tee='$tee'
17470 test='$test'
17471 timeincl='$timeincl'
17472 timetype='$timetype'
17473 to='$to'
17474 touch='$touch'
17475 tr='$tr'
17476 trnl='$trnl'
17477 troff='$troff'
17478 u16size='$u16size'
17479 u16type='$u16type'
17480 u32size='$u32size'
17481 u32type='$u32type'
17482 u64size='$u64size'
17483 u64type='$u64type'
17484 u8size='$u8size'
17485 u8type='$u8type'
17486 uidformat='$uidformat'
17487 uidsign='$uidsign'
17488 uidsize='$uidsize'
17489 uidtype='$uidtype'
17490 uname='$uname'
17491 uniq='$uniq'
17492 uquadtype='$uquadtype'
17493 use5005threads='$use5005threads'
17494 use64bitall='$use64bitall'
17495 use64bitint='$use64bitint'
17496 usecrosscompile='$usecrosscompile'
17497 usedl='$usedl'
17498 useithreads='$useithreads'
17499 uselargefiles='$uselargefiles'
17500 uselongdouble='$uselongdouble'
17501 usemorebits='$usemorebits'
17502 usemultiplicity='$usemultiplicity'
17503 usemymalloc='$usemymalloc'
17504 usenm='$usenm'
17505 useopcode='$useopcode'
17506 useperlio='$useperlio'
17507 useposix='$useposix'
17508 usereentrant='$usereentrant'
17509 usesfio='$usesfio'
17510 useshrplib='$useshrplib'
17511 usesocks='$usesocks'
17512 usethreads='$usethreads'
17513 usevendorprefix='$usevendorprefix'
17514 usevfork='$usevfork'
17515 usrinc='$usrinc'
17516 uuname='$uuname'
17517 uvXUformat='$uvXUformat'
17518 uvoformat='$uvoformat'
17519 uvsize='$uvsize'
17520 uvtype='$uvtype'
17521 uvuformat='$uvuformat'
17522 uvxformat='$uvxformat'
17523 vendorarch='$vendorarch'
17524 vendorarchexp='$vendorarchexp'
17525 vendorbin='$vendorbin'
17526 vendorbinexp='$vendorbinexp'
17527 vendorlib='$vendorlib'
17528 vendorlib_stem='$vendorlib_stem'
17529 vendorlibexp='$vendorlibexp'
17530 vendorprefix='$vendorprefix'
17531 vendorprefixexp='$vendorprefixexp'
17532 version='$version'
17533 version_patchlevel_string='$version_patchlevel_string'
17534 versiononly='$versiononly'
17535 vi='$vi'
17536 voidflags='$voidflags'
17537 xlibpth='$xlibpth'
17538 xs_apiversion='$xs_apiversion'
17539 yacc='$yacc'
17540 yaccflags='$yaccflags'
17541 zcat='$zcat'
17542 zip='$zip'
17543 EOT
17544
17545 : Add in command line options if available
17546 $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
17547
17548 : add special variables
17549 $test -f $src/patchlevel.h && \
17550 awk '/^#define[         ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
17551 echo "PERL_PATCHLEVEL=$perl_patchlevel" >>config.sh
17552 echo "PERL_CONFIG_SH=true" >>config.sh
17553
17554 : propagate old symbols
17555 if $test -f UU/config.sh; then
17556         <UU/config.sh $sort | $uniq >UU/oldconfig.sh
17557         sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
17558         $sort | $uniq -u >UU/oldsyms
17559         set X `cat UU/oldsyms`
17560         shift
17561         case $# in
17562         0) ;;
17563         *)
17564                 cat <<EOM
17565 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
17566 EOM
17567                 echo "# Variables propagated from previous config.sh file." >>config.sh
17568                 for sym in `cat UU/oldsyms`; do
17569                         echo "    Propagating $hint variable "'$'"$sym..."
17570                         eval 'tmp="$'"${sym}"'"'
17571                         echo "$tmp" | \
17572                                 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
17573                 done
17574                 ;;
17575         esac
17576 fi
17577
17578 : Finish up by extracting the .SH files
17579 case "$alldone" in
17580 exit)
17581         $rm -rf UU
17582         echo "Extraction done."
17583         exit 0
17584         ;;
17585 cont)
17586         ;;
17587 '')
17588         dflt=''
17589         nostick=true
17590         $cat <<EOM
17591
17592 If you'd like to make any changes to the config.sh file before I begin
17593 to configure things, do it as a shell escape now (e.g. !vi config.sh).
17594
17595 EOM
17596         rp="Press return or use a shell escape to edit config.sh:"
17597         . UU/myread
17598         nostick=''
17599         case "$ans" in
17600         '') ;;
17601         *) : in case they cannot read
17602                 sh 1>&4 -c "$ans";;
17603         esac
17604         ;;
17605 esac
17606
17607 : if this fails, just run all the .SH files by hand
17608 . ./config.sh
17609
17610 echo " "
17611 exec 1>&4
17612 pwd=`pwd`
17613 . ./UU/extract
17614 cd $pwd
17615
17616 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
17617         dflt=y
17618         case "$silent" in
17619         true) ;;
17620         *)
17621                 $cat <<EOM
17622
17623 Now you need to generate make dependencies by running "$make depend".
17624 You might prefer to run it in background: "$make depend > makedepend.out &"
17625 It can take a while, so you might not want to run it right now.
17626
17627 EOM
17628                 ;;
17629         esac
17630         rp="Run $make depend now?"
17631         . UU/myread
17632         case "$ans" in
17633         y*)
17634                 $make depend && echo "Now you must run '$make'."
17635                 ;;
17636         *)
17637                 echo "You must run '$make depend' then '$make'."
17638                 ;;
17639         esac
17640 elif test -f [Mm]akefile; then
17641         echo " "
17642         echo "Now you must run a $make."
17643 else
17644         echo "Configure done."
17645 fi
17646
17647 if $test -f Policy.sh; then
17648     $cat <<EOM
17649
17650 If you compile $package on a different machine or from a different object
17651 directory, copy the Policy.sh file from this object directory to the
17652 new one before you run Configure -- this will help you with most of
17653 the policy defaults.
17654
17655 EOM
17656 fi
17657 if $test -f config.msg; then
17658     echo "Hmm.  I also noted the following information while running:"
17659     echo " "
17660     $cat config.msg >&4
17661     $rm -f config.msg
17662 fi
17663 $rm -f kit*isdone ark*isdone
17664 $rm -rf UU
17665
17666 : End of Configure
17667