local(*CORE::GLOBAL::require) doesn't behave like other overrides
[p5sagit/p5-mst-13.2.git] / Configure
1 #! /bin/sh
2 #
3 # If these # comments don't work, trim them. Don't worry about any other
4 # shell scripts, Configure will trim # comments from them for you.
5 #
6 # (If you are trying to port this package to a machine without sh,
7 # I would suggest you have a look at the prototypical config_h.SH file
8 # and edit it to reflect your system. Some packages may include samples
9 # of config.h for certain machines, so you might look for one of those.)
10 #
11 # Yes, you may rip this off to use in other distribution packages. This
12 # script belongs to the public domain and cannot be copyrighted.
13 #
14 # (Note: this Configure script was generated automatically. Rather than
15 # working with this copy of Configure, you may wish to get metaconfig.
16 # The dist-3.0 package (which contains metaconfig) was posted in
17 # comp.sources.misc and is available on CPAN under authors/id/RAM so
18 # you may fetch it yourself from your nearest archive site.)
19 #
20
21 # $Id: Head.U,v 3.0.1.9 1997/02/28 15:02:09 ram Exp $
22 #
23 # Generated on Thu Nov 22 01:31:19 EET 2001 [metaconfig 3.0 PL70]
24 # (with additional metaconfig patches by perlbug@perl.org)
25
26 cat >c1$$ <<EOF
27 ARGGGHHHH!!!!!
28
29 SCO csh still thinks true is false.  Write to SCO today and tell them that next
30 year Configure ought to "rm /bin/csh" unless they fix their blasted shell. :-)
31
32 (Actually, Configure ought to just patch csh in place.  Hmm.  Hmmmmm.  All
33 we'd have to do is go in and swap the && and || tokens, wherever they are.)
34
35 [End of diatribe. We now return you to your regularly scheduled programming...]
36 EOF
37 cat >c2$$ <<EOF
38
39 OOPS!  You naughty creature!  You didn't run Configure with sh!
40 I will attempt to remedy the situation by running sh for you...
41 EOF
42
43 true || cat c1$$ c2$$
44 true || exec sh $0 $argv:q
45
46 (exit $?0) || cat c2$$
47 (exit $?0) || exec sh $0 $argv:q
48 rm -f c1$$ c2$$
49
50 : compute my invocation name
51 me=$0
52 case "$0" in
53 */*)
54         me=`echo $0 | sed -e 's!.*/\(.*\)!\1!' 2>/dev/null`
55         test "$me" || me=$0
56         ;;
57 esac
58
59 : Proper separator for the PATH environment variable
60 p_=:
61 : On OS/2 this directory should exist if this is not floppy only system :-]
62 if test -d c:/. ; then
63     if test -n "$OS2_SHELL"; then
64                 p_=\;
65                 PATH=`cmd /c "echo %PATH%" | tr '\\\\' / `
66                 OS2_SHELL=`cmd /c "echo %OS2_SHELL%" | tr '\\\\' / | tr '[A-Z]' '[a-z]'`
67         elif test -n "$DJGPP"; then
68                 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_procselfexe=''
491 d_old_pthread_create_joinable=''
492 old_pthread_create_joinable=''
493 d_pthread_atfork=''
494 d_pthread_yield=''
495 d_sched_yield=''
496 sched_yield=''
497 d_qgcvt=''
498 d_readdir=''
499 d_rewinddir=''
500 d_seekdir=''
501 d_telldir=''
502 d_readlink=''
503 d_readv=''
504 d_recvmsg=''
505 d_rename=''
506 d_rmdir=''
507 d_safebcpy=''
508 d_safemcpy=''
509 d_sanemcmp=''
510 d_sbrkproto=''
511 d_select=''
512 d_sem=''
513 d_semctl=''
514 d_semget=''
515 d_semop=''
516 d_sendmsg=''
517 d_setegid=''
518 d_seteuid=''
519 d_setgrent=''
520 d_setgrps=''
521 d_sethent=''
522 d_setitimer=''
523 d_setlinebuf=''
524 d_setlocale=''
525 d_setnent=''
526 d_setpent=''
527 d_setpgid=''
528 d_setpgrp2=''
529 d_bsdsetpgrp=''
530 d_setpgrp=''
531 d_setprior=''
532 d_setproctitle=''
533 d_setpwent=''
534 d_setregid=''
535 d_setresgid=''
536 d_setresuid=''
537 d_setreuid=''
538 d_setrgid=''
539 d_setruid=''
540 d_setsent=''
541 d_setsid=''
542 d_setvbuf=''
543 d_sfio=''
544 usesfio=''
545 d_shm=''
546 d_shmat=''
547 d_shmatprototype=''
548 shmattype=''
549 d_shmctl=''
550 d_shmdt=''
551 d_shmget=''
552 d_sigaction=''
553 d_sigprocmask=''
554 d_sigsetjmp=''
555 d_sockatmark=''
556 d_sockatmarkproto=''
557 d_msg_ctrunc=''
558 d_msg_dontroute=''
559 d_msg_oob=''
560 d_msg_peek=''
561 d_msg_proxy=''
562 d_oldsock=''
563 d_scm_rights=''
564 d_socket=''
565 d_sockpair=''
566 sockethdr=''
567 socketlib=''
568 d_socklen_t=''
569 d_socks5_init=''
570 d_sqrtl=''
571 d_sresgproto=''
572 d_sresuproto=''
573 d_statblks=''
574 d_statfs_f_flags=''
575 d_statfs_s=''
576 d_fstatvfs=''
577 d_statvfs=''
578 d_stdio_cnt_lval=''
579 d_stdio_ptr_lval=''
580 d_stdio_ptr_lval_nochange_cnt=''
581 d_stdio_ptr_lval_sets_cnt=''
582 d_stdiobase=''
583 d_stdstdio=''
584 stdio_base=''
585 stdio_bufsiz=''
586 stdio_cnt=''
587 stdio_filbuf=''
588 stdio_ptr=''
589 d_index=''
590 d_strchr=''
591 d_strcoll=''
592 d_strctcpy=''
593 d_strerrm=''
594 d_strerror=''
595 d_sysernlst=''
596 d_syserrlst=''
597 d_strftime=''
598 d_strtod=''
599 d_strtol=''
600 d_strtold=''
601 d_strtoll=''
602 d_strtoq=''
603 d_strtoul=''
604 d_strtoull=''
605 d_strtouq=''
606 d_strxfrm=''
607 d_symlink=''
608 d_syscall=''
609 d_syscallproto=''
610 d_sysconf=''
611 d_system=''
612 d_tcgetpgrp=''
613 d_tcsetpgrp=''
614 d_telldirproto=''
615 d_time=''
616 timetype=''
617 clocktype=''
618 d_times=''
619 d_truncate=''
620 d_tzname=''
621 d_u32align=''
622 d_ualarm=''
623 d_umask=''
624 d_semctl_semid_ds=''
625 d_semctl_semun=''
626 d_union_semun=''
627 d_unordered=''
628 d_usleep=''
629 d_usleepproto=''
630 d_ustat=''
631 d_vfork=''
632 usevfork=''
633 d_voidsig=''
634 signal_t=''
635 d_volatile=''
636 d_charvspr=''
637 d_vprintf=''
638 d_wait4=''
639 d_waitpid=''
640 d_wcstombs=''
641 d_wctomb=''
642 d_writev=''
643 dlext=''
644 cccdlflags=''
645 ccdlflags=''
646 dlsrc=''
647 ld=''
648 lddlflags=''
649 usedl=''
650 doublesize=''
651 ebcdic=''
652 fflushNULL=''
653 fflushall=''
654 fpossize=''
655 fpostype=''
656 gccosandvers=''
657 gccversion=''
658 gidformat=''
659 gidsign=''
660 gidsize=''
661 gidtype=''
662 groupstype=''
663 h_fcntl=''
664 h_sysfile=''
665 i_arpainet=''
666 db_hashtype=''
667 db_prefixtype=''
668 db_version_major=''
669 db_version_minor=''
670 db_version_patch=''
671 i_db=''
672 i_dbm=''
673 i_rpcsvcdbm=''
674 d_dirnamlen=''
675 direntrytype=''
676 i_dirent=''
677 i_dld=''
678 i_dlfcn=''
679 i_fcntl=''
680 i_float=''
681 i_fp=''
682 i_fp_class=''
683 i_gdbm=''
684 d_grpasswd=''
685 i_grp=''
686 i_ieeefp=''
687 i_inttypes=''
688 i_langinfo=''
689 i_libutil=''
690 i_limits=''
691 i_locale=''
692 i_machcthr=''
693 i_malloc=''
694 i_math=''
695 i_memory=''
696 i_mntent=''
697 i_ndbm=''
698 i_netdb=''
699 i_neterrno=''
700 i_netinettcp=''
701 i_niin=''
702 i_sysin=''
703 i_poll=''
704 i_prot=''
705 i_pthread=''
706 d_pwage=''
707 d_pwchange=''
708 d_pwclass=''
709 d_pwcomment=''
710 d_pwexpire=''
711 d_pwgecos=''
712 d_pwpasswd=''
713 d_pwquota=''
714 i_pwd=''
715 i_sfio=''
716 i_shadow=''
717 i_socks=''
718 i_stddef=''
719 i_stdlib=''
720 i_string=''
721 strings=''
722 i_sunmath=''
723 i_sysaccess=''
724 i_sysdir=''
725 i_sysfile=''
726 d_voidtty=''
727 i_bsdioctl=''
728 i_sysfilio=''
729 i_sysioctl=''
730 i_syssockio=''
731 i_syslog=''
732 i_sysmman=''
733 i_sysmode=''
734 i_sysmount=''
735 i_sysndir=''
736 i_sysparam=''
737 i_sysresrc=''
738 i_syssecrt=''
739 i_sysselct=''
740 i_sysstat=''
741 i_sysstatfs=''
742 i_sysstatvfs=''
743 i_systimes=''
744 i_systypes=''
745 i_sysuio=''
746 i_sysun=''
747 i_sysutsname=''
748 i_sysvfs=''
749 i_syswait=''
750 i_sgtty=''
751 i_termio=''
752 i_termios=''
753 i_systime=''
754 i_systimek=''
755 i_time=''
756 timeincl=''
757 i_unistd=''
758 i_ustat=''
759 i_utime=''
760 i_values=''
761 i_stdarg=''
762 i_varargs=''
763 i_varhdr=''
764 i_vfork=''
765 inc_version_list=''
766 inc_version_list_init=''
767 installprefix=''
768 installprefixexp=''
769 installstyle=''
770 installusrbinperl=''
771 intsize=''
772 longsize=''
773 shortsize=''
774 issymlink=''
775 libc=''
776 ldlibpthname=''
777 libperl=''
778 shrpenv=''
779 useshrplib=''
780 glibpth=''
781 libpth=''
782 loclibpth=''
783 plibpth=''
784 xlibpth=''
785 ignore_versioned_solibs=''
786 libs=''
787 libsdirs=''
788 libsfiles=''
789 libsfound=''
790 libspath=''
791 lns=''
792 d_PRIEUldbl=''
793 d_PRIFUldbl=''
794 d_PRIGUldbl=''
795 d_PRIeldbl=''
796 d_PRIfldbl=''
797 d_PRIgldbl=''
798 d_SCNfldbl=''
799 sPRIEUldbl=''
800 sPRIFUldbl=''
801 sPRIGUldbl=''
802 sPRIeldbl=''
803 sPRIfldbl=''
804 sPRIgldbl=''
805 sSCNfldbl=''
806 lseeksize=''
807 lseektype=''
808 make_set_make=''
809 d_mymalloc=''
810 freetype=''
811 mallocobj=''
812 mallocsrc=''
813 malloctype=''
814 usemymalloc=''
815 installman1dir=''
816 man1dir=''
817 man1direxp=''
818 man1ext=''
819 installman3dir=''
820 man3dir=''
821 man3direxp=''
822 man3ext=''
823 modetype=''
824 multiarch=''
825 mydomain=''
826 myhostname=''
827 phostname=''
828 c=''
829 n=''
830 d_eofnblk=''
831 eagain=''
832 o_nonblock=''
833 rd_nodata=''
834 need_va_copy=''
835 netdb_hlen_type=''
836 netdb_host_type=''
837 netdb_name_type=''
838 netdb_net_type=''
839 groupcat=''
840 hostcat=''
841 passcat=''
842 orderlib=''
843 ranlib=''
844 d_perl_otherlibdirs=''
845 otherlibdirs=''
846 package=''
847 spackage=''
848 pager=''
849 api_revision=''
850 api_subversion=''
851 api_version=''
852 api_versionstring=''
853 patchlevel=''
854 perl_patchlevel=''
855 revision=''
856 subversion=''
857 version=''
858 version_patchlevel_string=''
859 perl5=''
860 perladmin=''
861 perlpath=''
862 d_nv_preserves_uv=''
863 d_nv_preserves_uv_bits=''
864 i16size=''
865 i16type=''
866 i32size=''
867 i32type=''
868 i64size=''
869 i64type=''
870 i8size=''
871 i8type=''
872 ivsize=''
873 ivtype=''
874 nvsize=''
875 nvtype=''
876 u16size=''
877 u16type=''
878 u32size=''
879 u32type=''
880 u64size=''
881 u64type=''
882 u8size=''
883 u8type=''
884 uvsize=''
885 uvtype=''
886 ivdformat=''
887 nvEUformat=''
888 nvFUformat=''
889 nvGUformat=''
890 nveformat=''
891 nvfformat=''
892 nvgformat=''
893 uvXUformat=''
894 uvoformat=''
895 uvuformat=''
896 uvxformat=''
897 pidtype=''
898 prefix=''
899 prefixexp=''
900 installprivlib=''
901 privlib=''
902 privlibexp=''
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 ccname=''
1035 ccversion=''
1036 perllibs=''
1037 : set useposix=false in your hint file to disable the POSIX extension.
1038 useposix=true
1039 : set useopcode=false in your hint file to disable the Opcode extension.
1040 useopcode=true
1041 : Trailing extension.  Override this in a hint file, if needed.
1042 _exe=''
1043 : Extra object files, if any, needed on this platform.
1044 archobjs=''
1045 archname=''
1046 : Possible local include directories to search.
1047 : Set locincpth to "" in a hint file to defeat local include searches.
1048 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
1049 locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
1050 :
1051 : no include file wanted by default
1052 inclwanted=''
1053
1054 groupstype=''
1055 libnames=''
1056 : change the next line if compiling for Xenix/286 on Xenix/386
1057 xlibpth='/usr/lib/386 /lib/386'
1058 : Possible local library directories to search.
1059 loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
1060 loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
1061
1062 : general looking path for locating libraries
1063 glibpth="/lib /usr/lib $xlibpth"
1064 glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
1065 test -f /usr/shlib/libc.so && glibpth="/usr/shlib $glibpth"
1066 test -f /shlib/libc.so     && glibpth="/shlib $glibpth"
1067
1068 : Private path used by Configure to find libraries.  Its value
1069 : is prepended to libpth. This variable takes care of special
1070 : machines, like the mips.  Usually, it should be empty.
1071 plibpth=''
1072
1073 : default library list
1074 libswanted=''
1075 : some systems want to use only the non-versioned libso:s
1076 ignore_versioned_solibs=''
1077 archname64=''
1078 ccflags_uselargefiles=''
1079 ldflags_uselargefiles=''
1080 libswanted_uselargefiles=''
1081 : set usemultiplicity on the Configure command line to enable multiplicity.
1082 : set usesocks on the Configure command line to enable socks.
1083 : set usethreads on the Configure command line to enable threads.
1084 usereentrant='undef'
1085 : full support for void wanted by default
1086 defvoidused=15
1087
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 >&2 <<EOM
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         case "$issymlink" in
2271         "test -h")
2272                 if $test -h >/dev/null 2>&1; then
2273                         issymlink="/bin/test -h"
2274                         echo "Your builtin 'test -h' may be broken, I'm using external '/bin/test -h'." >&4
2275                 fi
2276                 ;;
2277         esac
2278         if $test "X$issymlink" = X; then
2279                 if $test -L sym 2>/dev/null; then
2280                         issymlink="$test -L"
2281                 fi
2282         fi
2283         if $test "X$issymlink" != X; then
2284                 echo "You can test for symbolic links with '$issymlink'." >&4
2285         else
2286                 echo "I do not know how you can test for symbolic links." >&4
2287         fi
2288         $rm -f blurfl sym
2289         ;;
2290 *)      echo "No symbolic links, so not testing for their testing..." >&4
2291         ;;
2292 esac
2293 echo " "
2294
2295
2296 case "$mksymlinks" in
2297 $define|true|[yY]*)
2298         case "$src" in
2299         ''|'.') echo "Cannot create symlinks in the original directory." >&4
2300                 exit 1
2301                 ;;
2302         *)      case "$lns:$issymlink" in
2303                 *"ln -s:"*"test -"?)
2304                         echo "Creating the symbolic links..." >&4
2305                         echo "(First creating the subdirectories...)" >&4
2306                         cd ..
2307                         awk '{print $1}' $src/MANIFEST | grep / | sed 's:/[^/]*$::' | sort -u | while true; do
2308                                 read directory
2309                                 test -z "$directory" && break
2310                                 mkdir -p $directory
2311                         done
2312                         # Sanity check 1.
2313                         if test ! -d t/base; then
2314                                 echo "Failed to create the subdirectories.  Aborting." >&4
2315                                 exit 1
2316                         fi
2317                         echo "(Then creating the symlinks...)" >&4
2318                         awk '{print $1}' $src/MANIFEST | while true; do
2319                                 read filename
2320                                 test -z "$filename" && break
2321                                 if test -f $filename; then
2322                                         if $issymlink $filename; then
2323                                                 rm -f $filename
2324                                         fi
2325                                 fi
2326                                 if test -f $filename; then
2327                                         echo "$filename already exists, not symlinking."
2328                                 else
2329                                         ln -s $src/$filename $filename
2330                                 fi
2331                         done
2332                         # Sanity check 2.
2333                         if test ! -f t/base/lex.t; then
2334                                 echo "Failed to create the symlinks (t/base/lex.t missing).  Aborting." >&4
2335                                 exit 1
2336                         fi
2337                         cd UU
2338                         ;;
2339                 *)      echo "(I cannot figure out how to do symbolic links, ignoring mksymlinks)." >&4
2340                         ;;
2341                 esac
2342                 ;;
2343         esac
2344         ;;
2345 esac
2346
2347
2348 case "$usecrosscompile" in
2349 $define|true|[yY]*)
2350         $echo "Cross-compiling..."
2351         croak=''
2352         case "$cc" in
2353         *-*-gcc) # A cross-compiling gcc, probably.
2354             targetarch=`$echo $cc|$sed 's/-gcc$//'`
2355             ar=$targetarch-ar
2356             # leave out ld, choosing it is more complex
2357             nm=$targetarch-nm
2358             ranlib=$targetarch-ranlib
2359             $echo 'extern int foo;' > try.c
2360             set X `$cc -v -E try.c 2>&1 | $awk '/^#include </,/^End of search /'|$grep '/include'`
2361             shift
2362             if $test $# -gt 0; then
2363                 incpth="$incpth $*"
2364                 incpth="`$echo $incpth|$sed 's/^ //'`"
2365                 echo "Guessing incpth '$incpth'." >&4
2366                 for i in $*; do
2367                     j="`$echo $i|$sed 's,/include$,/lib,'`"
2368                     if $test -d $j; then
2369                         libpth="$libpth $j"
2370                     fi
2371                 done   
2372                 libpth="`$echo $libpth|$sed 's/^ //'`"
2373                 echo "Guessing libpth '$libpth'." >&4
2374             fi
2375             $rm -f try.c
2376             ;;
2377         esac
2378         case "$targetarch" in
2379         '') echo "Targetarch not defined." >&4; croak=y ;;
2380         *)  echo "Using targetarch $targetarch." >&4 ;;
2381         esac
2382         case "$incpth" in
2383         '') echo "Incpth not defined." >&4; croak=y ;;
2384         *)  echo "Using incpth '$incpth'." >&4 ;;
2385         esac
2386         case "$libpth" in
2387         '') echo "Libpth not defined." >&4; croak=y ;;
2388         *)  echo "Using libpth '$libpth'." >&4 ;;
2389         esac
2390         case "$usrinc" in
2391         '') for i in $incpth; do
2392                 if $test -f $i/errno.h -a -f $i/stdio.h -a -f $i/time.h; then
2393                     usrinc=$i
2394                     echo "Guessing usrinc $usrinc." >&4
2395                     break
2396                 fi
2397             done
2398             case "$usrinc" in
2399             '') echo "Usrinc not defined." >&4; croak=y ;;
2400             esac
2401             ;;
2402         *)  echo "Using usrinc $usrinc." >&4 ;;
2403         esac
2404         case "$targethost" in
2405         '') echo "Targethost not defined." >&4; croak=y ;;
2406         *)  echo "Using targethost $targethost." >&4
2407         esac
2408         locincpth=' '
2409         loclibpth=' '
2410         case "$croak" in
2411         y) echo "Cannot continue, aborting." >&4; exit 1 ;;
2412         esac
2413         case "$src" in
2414         /*) run=$src/Cross/run
2415             targetmkdir=$src/Cross/mkdir
2416             to=$src/Cross/to
2417             from=$src/Cross/from
2418             ;;
2419         *)  pwd=`$test -f ../Configure & cd ..; pwd`
2420             run=$pwd/Cross/run
2421             targetmkdir=$pwd/Cross/mkdir
2422             to=$pwd/Cross/to
2423             from=$pwd/Cross/from
2424             ;;
2425         esac
2426         case "$targetrun" in
2427         '') targetrun=ssh ;;
2428         esac
2429         case "$targetto" in
2430         '') targetto=scp ;;
2431         esac
2432         case "$targetfrom" in
2433         '') targetfrom=scp ;;
2434         esac
2435         run=$run-$targetrun
2436         to=$to-$targetto
2437         from=$from-$targetfrom
2438         case "$targetdir" in
2439         '')  targetdir=/tmp
2440              echo "Guessing targetdir $targetdir." >&4
2441              ;;
2442         esac
2443         case "$targetuser" in
2444         '')  targetuser=root
2445              echo "Guessing targetuser $targetuser." >&4
2446              ;;
2447         esac
2448         case "$targetfrom" in
2449         scp)    q=-q ;;
2450         *)      q='' ;;
2451         esac
2452         case "$targetrun" in
2453         ssh|rsh)
2454             cat >$run <<EOF
2455 #!/bin/sh
2456 case "\$1" in
2457 -cwd)
2458   shift
2459   cwd=\$1
2460   shift
2461   ;;
2462 esac
2463 case "\$cwd" in
2464 '') cwd=$targetdir ;;
2465 esac
2466 exe=\$1
2467 shift
2468 if $test ! -f \$exe.xok; then
2469   $to \$exe
2470   $touch \$exe.xok
2471 fi
2472 $targetrun -l $targetuser $targethost "cd \$cwd && ./\$exe \$@"
2473 EOF
2474             ;;
2475         *)  echo "Unknown targetrun '$targetrun'" >&4
2476             exit 1
2477             ;;
2478         esac
2479         case "$targetmkdir" in
2480         */Cross/mkdir)
2481             cat >$targetmkdir <<EOF
2482 #!/bin/sh
2483 $targetrun -l $targetuser $targethost "mkdir -p \$@"
2484 EOF
2485             $chmod a+rx $targetmkdir
2486             ;;
2487         *)  echo "Unknown targetmkdir '$targetmkdir'" >&4
2488             exit 1
2489             ;;
2490         esac
2491         case "$targetto" in
2492         scp|rcp)
2493             cat >$to <<EOF
2494 #!/bin/sh
2495 for f in \$@
2496 do
2497   case "\$f" in
2498   /*)
2499     $targetmkdir \`dirname \$f\`
2500     $targetto $q \$f $targetuser@$targethost:\$f            || exit 1
2501     ;;
2502   *)
2503     $targetmkdir $targetdir/\`dirname \$f\`
2504     $targetto $q \$f $targetuser@$targethost:$targetdir/\$f || exit 1
2505     ;;
2506   esac
2507 done
2508 exit 0
2509 EOF
2510             ;;
2511         cp) cat >$to <<EOF
2512 #!/bin/sh
2513 for f in \$@
2514 do
2515   case "\$f" in
2516   /*)
2517     $mkdir -p $targetdir/\`dirname \$f\`
2518     $cp \$f $targetdir/\$f || exit 1
2519     ;;
2520   *)
2521     $targetmkdir $targetdir/\`dirname \$f\`
2522     $cp \$f $targetdir/\$f || exit 1
2523     ;;
2524   esac
2525 done
2526 exit 0
2527 EOF
2528             ;;
2529         *)  echo "Unknown targetto '$targetto'" >&4
2530             exit 1
2531             ;;
2532         esac
2533         case "$targetfrom" in
2534         scp|rcp)
2535           cat >$from <<EOF
2536 #!/bin/sh
2537 for f in \$@
2538 do
2539   $rm -f \$f
2540   $targetfrom $q $targetuser@$targethost:$targetdir/\$f . || exit 1
2541 done
2542 exit 0
2543 EOF
2544             ;;
2545         cp) cat >$from <<EOF
2546 #!/bin/sh
2547 for f in \$@
2548 do
2549   $rm -f \$f
2550   cp $targetdir/\$f . || exit 1
2551 done
2552 exit 0
2553 EOF
2554             ;;
2555         *)  echo "Unknown targetfrom '$targetfrom'" >&4
2556             exit 1
2557             ;;
2558         esac
2559         if $test ! -f $run; then
2560             echo "Target 'run' script '$run' not found." >&4
2561         else
2562             $chmod a+rx $run
2563         fi
2564         if $test ! -f $to; then
2565             echo "Target 'to' script '$to' not found." >&4
2566         else
2567             $chmod a+rx $to
2568         fi
2569         if $test ! -f $from; then
2570             echo "Target 'from' script '$from' not found." >&4
2571         else
2572             $chmod a+rx $from
2573         fi
2574         if $test ! -f $run -o ! -f $to -o ! -f $from; then
2575             exit 1
2576         fi
2577         cat >&4 <<EOF
2578 Using '$run' for remote execution,
2579 and '$from' and '$to'
2580 for remote file transfer.
2581 EOF
2582         ;;
2583 *)      run=''
2584         to=:
2585         from=:
2586         usecrosscompile='undef'
2587         targetarch=''
2588         ;;
2589 esac
2590
2591 : see whether [:lower:] and [:upper:] are supported character classes
2592 echo " "
2593 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
2594 ABYZ)
2595         echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
2596         up='[:upper:]'
2597         low='[:lower:]'
2598         ;;
2599 *)      # There is a discontinuity in EBCDIC between 'I' and 'J'
2600         # (0xc9 and 0xd1), therefore that is a nice testing point.
2601         if test "X$up" = X -o "X$low" = X; then
2602             case "`echo IJ | $tr '[I-J]' '[i-j]' 2>/dev/null`" in
2603             ij) up='[A-Z]'
2604                 low='[a-z]'
2605                 ;;
2606             esac
2607         fi
2608         if test "X$up" = X -o "X$low" = X; then
2609             case "`echo IJ | $tr I-J i-j 2>/dev/null`" in
2610             ij) up='A-Z'
2611                 low='a-z'
2612                 ;;
2613             esac
2614         fi
2615         if test "X$up" = X -o "X$low" = X; then
2616             case "`echo IJ | od -x 2>/dev/null`" in
2617             *C9D1*|*c9d1*)
2618                 echo "Hey, this might be EBCDIC." >&4
2619                 if test "X$up" = X -o "X$low" = X; then
2620                     case "`echo IJ | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
2621                     ij) up='[A-IJ-RS-Z]'
2622                         low='[a-ij-rs-z]'
2623                         ;;
2624                     esac
2625                 fi
2626                 if test "X$up" = X -o "X$low" = X; then
2627                     case "`echo IJ | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
2628                     ij) up='A-IJ-RS-Z'
2629                         low='a-ij-rs-z'
2630                         ;;
2631                     esac
2632                 fi
2633                 ;;
2634             esac
2635         fi
2636 esac
2637 case "`echo IJ | $tr \"$up\" \"$low\" 2>/dev/null`" in
2638 ij)
2639     echo "Using $up and $low to convert case." >&4
2640     ;;
2641 *)
2642     echo "I don't know how to translate letters from upper to lower case." >&4
2643     echo "Your tr is not acting any way I know of." >&4
2644     exit 1
2645     ;;
2646 esac
2647 : set up the translation script tr, must be called with ./tr of course
2648 cat >tr <<EOSC
2649 $startsh
2650 case "\$1\$2" in
2651 '[A-Z][a-z]') exec $tr '$up' '$low';;
2652 '[a-z][A-Z]') exec $tr '$low' '$up';;
2653 esac
2654 exec $tr "\$@"
2655 EOSC
2656 chmod +x tr
2657 $eunicefix tr
2658
2659 : Try to determine whether config.sh was made on this system
2660 case "$config_sh" in
2661 '')
2662 myuname=`$uname -a 2>/dev/null`
2663 $test -z "$myuname" && myuname=`hostname 2>/dev/null`
2664 # tr '[A-Z]' '[a-z]' would not work in EBCDIC
2665 # because the A-Z/a-z are not consecutive.
2666 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
2667         ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
2668 newmyuname="$myuname"
2669 dflt=n
2670 case "$knowitall" in
2671 '')
2672         if test -f ../config.sh; then
2673                 if $contains myuname= ../config.sh >/dev/null 2>&1; then
2674                         eval "`grep myuname= ../config.sh`"
2675                 fi
2676                 if test "X$myuname" = "X$newmyuname"; then
2677                         dflt=y
2678                 fi
2679         fi
2680         ;;
2681 *) dflt=y;;
2682 esac
2683
2684 : Get old answers from old config file if Configure was run on the
2685 : same system, otherwise use the hints.
2686 hint=default
2687 cd ..
2688 if test -f config.sh; then
2689         echo " "
2690         rp="I see a config.sh file.  Shall I use it to set the defaults?"
2691         . UU/myread
2692         case "$ans" in
2693         n*|N*) echo "OK, I'll ignore it."
2694                 mv config.sh config.sh.old
2695                 myuname="$newmyuname"
2696                 ;;
2697         *)  echo "Fetching default answers from your old config.sh file..." >&4
2698                 tmp_n="$n"
2699                 tmp_c="$c"
2700                 tmp_sh="$sh"
2701                 . ./config.sh
2702                 cp config.sh UU
2703                 n="$tmp_n"
2704                 c="$tmp_c"
2705                 : Older versions did not always set $sh.  Catch re-use of such
2706                 : an old config.sh.
2707                 case "$sh" in
2708                 '') sh="$tmp_sh" ;;
2709                 esac
2710                 hint=previous
2711                 ;;
2712         esac
2713 fi
2714 . ./UU/checkcc
2715 if test ! -f config.sh; then
2716         $cat <<EOM
2717
2718 First time through, eh?  I have some defaults handy for some systems
2719 that need some extra help getting the Configure answers right:
2720
2721 EOM
2722         (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/   /g' >&4
2723         dflt=''
2724         : Half the following guesses are probably wrong... If you have better
2725         : tests or hints, please send them to perlbug@perl.org
2726         : The metaconfig authors would also appreciate a copy...
2727         $test -f /irix && osname=irix
2728         $test -f /xenix && osname=sco_xenix
2729         $test -f /dynix && osname=dynix
2730         $test -f /dnix && osname=dnix
2731         $test -f /lynx.os && osname=lynxos
2732         $test -f /unicos && osname=unicos && osvers=`$uname -r`
2733         $test -f /unicosmk && osname=unicosmk && osvers=`$uname -r`
2734         $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
2735         $test -f /bin/mips && /bin/mips && osname=mips
2736         $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
2737                 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
2738         $test -d /usr/apollo/bin && osname=apollo
2739         $test -f /etc/saf/_sactab && osname=svr4
2740         $test -d /usr/include/minix && osname=minix
2741         if $test -d /MachTen -o -d /MachTen_Folder; then
2742                 osname=machten
2743                 if $test -x /sbin/version; then
2744                         osvers=`/sbin/version | $awk '{print $2}' |
2745                         $sed -e 's/[A-Za-z]$//'`
2746                 elif $test -x /usr/etc/version; then
2747                         osvers=`/usr/etc/version | $awk '{print $2}' |
2748                         $sed -e 's/[A-Za-z]$//'`
2749                 else
2750                         osvers="$2.$3"
2751                 fi
2752         fi
2753
2754         $test -f /sys/posix.dll &&
2755                 $test -f /usr/bin/what &&
2756                 set X `/usr/bin/what /sys/posix.dll` &&
2757                 $test "$3" = UWIN &&
2758                 osname=uwin &&
2759                 osvers="$5"
2760
2761         if $test -f $uname; then
2762                 set X $myuname
2763                 shift
2764
2765                 case "$5" in
2766                 fps*) osname=fps ;;
2767                 mips*)
2768                         case "$4" in
2769                         umips) osname=umips ;;
2770                         *) osname=mips ;;
2771                         esac;;
2772                 [23]100) osname=mips ;;
2773                 next*) osname=next ;;
2774                 i386*)
2775                         tmp=`/bin/uname -X 2>/dev/null|awk '/3\.2v[45]/{ print $(NF) }'`
2776                         if $test "$tmp" != "" -a "$3" = "3.2" -a -f '/etc/systemid'; then
2777                                 osname='sco'
2778                                 osvers=$tmp
2779                         elif $test -f /etc/kconfig; then
2780                                 osname=isc
2781                                 if test "$lns" = "$ln -s"; then
2782                                         osvers=4
2783                                 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
2784                                         osvers=3
2785                                 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
2786                                         osvers=2
2787                                 fi
2788                         fi
2789                         tmp=''
2790                         ;;
2791                 pc*)
2792                         if test -n "$DJGPP"; then
2793                                 osname=dos
2794                                 osvers=djgpp
2795                         fi
2796                         ;;
2797                 esac
2798
2799                 case "$1" in
2800                 aix) osname=aix
2801                         tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
2802                         case "$tmp" in
2803                         'not found') osvers="$4"."$3" ;;
2804                         '<3240'|'<>3240') osvers=3.2.0 ;;
2805                         '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
2806                         '=3250'|'>3250') osvers=3.2.5 ;;
2807                         *) osvers=$tmp;;
2808                         esac
2809                         ;;
2810                 bsd386) osname=bsd386
2811                         osvers=`$uname -r`
2812                         ;;
2813                 cygwin*) osname=cygwin
2814                         osvers="$3"
2815                         ;;
2816                 *dc.osx) osname=dcosx
2817                         osvers="$3"
2818                         ;;
2819                 dnix) osname=dnix
2820                         osvers="$3"
2821                         ;;
2822                 domainos) osname=apollo
2823                         osvers="$3"
2824                         ;;
2825                 dgux) osname=dgux 
2826                         osvers="$3"
2827                         ;;
2828                 dynixptx*) osname=dynixptx
2829                         osvers=`echo "$4"|sed 's/^v//'`
2830                         ;;
2831                 freebsd) osname=freebsd 
2832                         osvers="$3" ;;
2833                 genix) osname=genix ;;
2834                 hp*) osname=hpux 
2835                         osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
2836                         ;;
2837                 irix*) osname=irix
2838                         case "$3" in
2839                         4*) osvers=4 ;;
2840                         5*) osvers=5 ;;
2841                         *)      osvers="$3" ;;
2842                         esac
2843                         ;;
2844                 linux) osname=linux
2845                         case "$3" in
2846                         *)      osvers="$3" ;;
2847                         esac
2848                         ;;
2849                 MiNT) osname=mint
2850                         ;;
2851                 netbsd*) osname=netbsd
2852                         osvers="$3"
2853                         ;;
2854                 news-os) osvers="$3"
2855                         case "$3" in
2856                         4*) osname=newsos4 ;;
2857                         *) osname=newsos ;;
2858                         esac
2859                         ;;
2860                 next*) osname=next ;;
2861                 nonstop-ux) osname=nonstopux ;;
2862                 POSIX-BC | posix-bc ) osname=posix-bc
2863                         osvers="$3"
2864                         ;;
2865                 powerux | power_ux | powermax_os | powermaxos | \
2866                 powerunix | power_unix) osname=powerux
2867                         osvers="$3"
2868                         ;;
2869                 qnx) osname=qnx
2870                         osvers="$4"
2871                         ;;
2872                 solaris) osname=solaris
2873                         case "$3" in
2874                         5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2875                         *)      osvers="$3" ;;
2876                         esac
2877                         ;;
2878                 sunos) osname=sunos
2879                         case "$3" in
2880                         5*) osname=solaris
2881                                 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2882                         *)      osvers="$3" ;;
2883                         esac
2884                         ;;
2885                 titanos) osname=titanos
2886                         case "$3" in
2887                         1*) osvers=1 ;;
2888                         2*) osvers=2 ;;
2889                         3*) osvers=3 ;;
2890                         4*) osvers=4 ;;
2891                         *)      osvers="$3" ;;
2892                         esac
2893                         ;;
2894                 ultrix) osname=ultrix
2895                         osvers="$3"
2896                         ;;
2897                 osf1|mls+)      case "$5" in
2898                                 alpha)
2899                                         osname=dec_osf
2900                                         osvers=`sizer -v | awk '{print $3}' |  tr '[A-Z]' '[a-z]' | sed 's/^[xvt]//'`
2901                                         case "$osvers" in
2902                                         [1-9].[0-9]*) ;;
2903                                         *) osvers=`echo "$3" | sed 's/^[xvt]//'` ;;
2904                                         esac
2905                                         ;;
2906                         hp*)    osname=hp_osf1  ;;
2907                         mips)   osname=mips_osf1 ;;
2908                         esac
2909                         ;;
2910                 unixware) osname=svr5
2911                         osvers="$4"
2912                         ;;
2913                 uts) osname=uts
2914                         osvers="$3"
2915                         ;;
2916                 $2) case "$osname" in
2917                         *isc*) ;;
2918                         *freebsd*) ;;
2919                         svr*)
2920                                 : svr4.x or possibly later
2921                                 case "svr$3" in 
2922                                 ${osname}*)
2923                                         osname=svr$3
2924                                         osvers=$4
2925                                         ;;
2926                                 esac
2927                                 case "$osname" in
2928                                 svr4.0)
2929                                         : Check for ESIX
2930                                         if test -f /stand/boot ; then
2931                                                 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
2932                                                 if test -n "$INITPROG" -a -f "$INITPROG"; then
2933                         isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
2934                                                         if test -n "$isesix"; then
2935                                                                 osname=esix4
2936                                                         fi
2937                                                 fi
2938                                         fi
2939                                         ;;
2940                                 esac
2941                                 ;;
2942                         *)      if test -f /etc/systemid; then
2943                                         osname=sco
2944                                         set `echo $3 | $sed 's/\./ /g'` $4
2945                                         if $test -f $src/hints/sco_$1_$2_$3.sh; then
2946                                                 osvers=$1.$2.$3
2947                                         elif $test -f $src/hints/sco_$1_$2.sh; then
2948                                                 osvers=$1.$2
2949                                         elif $test -f $src/hints/sco_$1.sh; then
2950                                                 osvers=$1
2951                                         fi
2952                                 else
2953                                         case "$osname" in
2954                                         '') : Still unknown.  Probably a generic Sys V.
2955                                                 osname="sysv"
2956                                                 osvers="$3"
2957                                                 ;;
2958                                         esac
2959                                 fi
2960                                 ;;
2961                         esac
2962                         ;;
2963                 *)      case "$osname" in
2964                         '') : Still unknown.  Probably a generic BSD.
2965                                 osname="$1"
2966                                 osvers="$3"
2967                                 ;;
2968                         esac
2969                         ;;
2970                 esac
2971         else
2972                 if test -f /vmunix -a -f $src/hints/news_os.sh; then
2973                         (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
2974                         if $contains news-os UU/kernel.what >/dev/null 2>&1; then
2975                                 osname=news_os
2976                         fi
2977                         $rm -f UU/kernel.what
2978                 elif test -d c:/.; then
2979                         set X $myuname
2980                         osname=os2
2981                         osvers="$5"
2982                 fi
2983         fi
2984         
2985         case "$targetarch" in
2986         '') ;;
2987         *)  hostarch=$osname
2988             osname=`echo $targetarch|sed 's,^[^-]*-,,'`
2989             osvers=''
2990             ;;
2991         esac
2992
2993         : Now look for a hint file osname_osvers, unless one has been
2994         : specified already.
2995         case "$hintfile" in
2996         ''|' ')
2997                 file=`echo "${osname}_${osvers}" | $sed -e 's%\.%_%g' -e 's%_$%%'`
2998                 : Also try without trailing minor version numbers.
2999                 xfile=`echo $file | $sed -e 's%_[^_]*$%%'`
3000                 xxfile=`echo $xfile | $sed -e 's%_[^_]*$%%'`
3001                 xxxfile=`echo $xxfile | $sed -e 's%_[^_]*$%%'`
3002                 xxxxfile=`echo $xxxfile | $sed -e 's%_[^_]*$%%'`
3003                 case "$file" in
3004                 '') dflt=none ;;
3005                 *)  case "$osvers" in
3006                         '') dflt=$file
3007                                 ;;
3008                         *)  if $test -f $src/hints/$file.sh ; then
3009                                         dflt=$file
3010                                 elif $test -f $src/hints/$xfile.sh ; then
3011                                         dflt=$xfile
3012                                 elif $test -f $src/hints/$xxfile.sh ; then
3013                                         dflt=$xxfile
3014                                 elif $test -f $src/hints/$xxxfile.sh ; then
3015                                         dflt=$xxxfile
3016                                 elif $test -f $src/hints/$xxxxfile.sh ; then
3017                                         dflt=$xxxxfile
3018                                 elif $test -f "$src/hints/${osname}.sh" ; then
3019                                         dflt="${osname}"
3020                                 else
3021                                         dflt=none
3022                                 fi
3023                                 ;;
3024                         esac
3025                         ;;
3026                 esac
3027                 if $test -f Policy.sh ; then
3028                         case "$dflt" in
3029                         *Policy*) ;;
3030                         none) dflt="Policy" ;;
3031                         *) dflt="Policy $dflt" ;;
3032                         esac
3033                 fi
3034                 ;;
3035         *)
3036                 dflt=`echo $hintfile | $sed 's/\.sh$//'`
3037                 ;;
3038         esac
3039
3040         if $test -f Policy.sh ; then
3041                 $cat <<EOM
3042
3043 There's also a Policy hint file available, which should make the
3044 site-specific (policy) questions easier to answer.
3045 EOM
3046
3047         fi
3048
3049         $cat <<EOM
3050
3051 You may give one or more space-separated answers, or "none" if appropriate.
3052 A well-behaved OS will have no hints, so answering "none" or just "Policy"
3053 is a good thing.  DO NOT give a wrong version or a wrong OS.
3054
3055 EOM
3056
3057         rp="Which of these apply, if any?"
3058         . UU/myread
3059         tans=$ans
3060         for file in $tans; do
3061                 if $test X$file = XPolicy -a -f Policy.sh; then
3062                         . Policy.sh
3063                         $cat Policy.sh >> UU/config.sh
3064                 elif $test -f $src/hints/$file.sh; then
3065                         . $src/hints/$file.sh
3066                         $cat $src/hints/$file.sh >> UU/config.sh
3067                 elif $test X"$tans" = X -o X"$tans" = Xnone ; then
3068                         : nothing
3069                 else
3070                         : Give one chance to correct a possible typo.
3071                         echo "$file.sh does not exist"
3072                         dflt=$file
3073                         rp="hint to use instead?"
3074                         . UU/myread
3075                         for file in $ans; do
3076                                 if $test -f "$src/hints/$file.sh"; then
3077                                         . $src/hints/$file.sh
3078                                         $cat $src/hints/$file.sh >> UU/config.sh
3079                                 elif $test X$ans = X -o X$ans = Xnone ; then
3080                                         : nothing
3081                                 else
3082                                         echo "$file.sh does not exist -- ignored."
3083                                 fi
3084                         done
3085                 fi
3086         done
3087
3088         hint=recommended
3089         : Remember our hint file for later.
3090         if $test -f "$src/hints/$file.sh" ; then
3091                 hintfile="$file"
3092         else
3093                 hintfile=''
3094         fi
3095 fi
3096 cd UU
3097 ;;
3098 *)
3099         echo " "
3100         echo "Fetching default answers from $config_sh..." >&4
3101         tmp_n="$n"
3102         tmp_c="$c"
3103         cd ..
3104         cp $config_sh config.sh 2>/dev/null
3105         chmod +w config.sh
3106         . ./config.sh
3107         cd UU
3108         cp ../config.sh .
3109         n="$tmp_n"
3110         c="$tmp_c"
3111         hint=previous
3112         ;;
3113 esac
3114 test "$override" && . ./optdef.sh
3115
3116 : Restore computed paths
3117 for file in $loclist $trylist; do
3118         eval $file="\$_$file"
3119 done
3120
3121 cat << EOM
3122
3123 Configure uses the operating system name and version to set some defaults.
3124 The default value is probably right if the name rings a bell. Otherwise,
3125 since spelling matters for me, either accept the default or answer "none"
3126 to leave it blank.
3127
3128 EOM
3129 case "$osname" in
3130         ''|' ')
3131                 case "$hintfile" in
3132                 ''|' '|none) dflt=none ;;
3133                 *)  dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
3134                 esac
3135                 ;;
3136         *) dflt="$osname" ;;
3137 esac
3138 rp="Operating system name?"
3139 . ./myread
3140 case "$ans" in
3141 none)  osname='' ;;
3142 *) osname=`echo "$ans" | $sed -e 's/[   ][      ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
3143 esac
3144 echo " "
3145 case "$osvers" in
3146         ''|' ')
3147                 case "$hintfile" in
3148                 ''|' '|none) dflt=none ;;
3149                 *)      dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
3150                         dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
3151                         case "$dflt" in
3152                         ''|' ') dflt=none ;;
3153                         esac
3154                         ;;
3155                 esac
3156                 ;;
3157         *) dflt="$osvers" ;;
3158 esac
3159 rp="Operating system version?"
3160 . ./myread
3161 case "$ans" in
3162 none)  osvers='' ;;
3163 *) osvers="$ans" ;;
3164 esac
3165
3166
3167 . ./posthint.sh
3168
3169 : who configured the system
3170 cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
3171 cf_by=`(logname) 2>/dev/null`
3172 case "$cf_by" in
3173 "")
3174         cf_by=`(whoami) 2>/dev/null`
3175         case "$cf_by" in
3176         "") cf_by=unknown ;;
3177         esac ;;
3178 esac
3179
3180 : set up the script used to warn in case of inconsistency
3181 cat <<EOS >whoa
3182 $startsh
3183 EOS
3184 cat <<'EOSC' >>whoa
3185 dflt=y
3186 echo " "
3187 echo "*** WHOA THERE!!! ***" >&4
3188 echo "    The $hint value for \$$var on this machine was \"$was\"!" >&4
3189 rp="    Keep the $hint value?"
3190 . ./myread
3191 case "$ans" in
3192 y) td=$was; tu=$was;;
3193 esac
3194 EOSC
3195
3196 : function used to set $1 to $val
3197 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
3198 case "$val$was" in
3199 $define$undef) . ./whoa; eval "$var=\$td";;
3200 $undef$define) . ./whoa; eval "$var=\$tu";;
3201 *) eval "$var=$val";;
3202 esac'
3203
3204 case "$usethreads" in
3205 $define|true|[yY]*)     dflt='y';;
3206 *) dflt='n';;
3207 esac
3208 cat <<EOM
3209
3210 Perl can be built to take advantage of threads on some systems.
3211 To do so, Configure can be run with -Dusethreads.
3212
3213 Note that threading is a highly experimental feature, and
3214 some known race conditions still remain.  If you choose to try
3215 it, be very sure to not actually deploy it for production
3216 purposes.  README.threads has more details, and is required
3217 reading if you enable threads.
3218
3219 If this doesn't make any sense to you, just accept the default '$dflt'.
3220 EOM
3221 rp='Build a threading Perl?'
3222 . ./myread
3223 case "$ans" in
3224 y|Y)    val="$define" ;;
3225 *)      val="$undef" ;;
3226 esac
3227 set usethreads
3228 eval $setvar
3229
3230 case "$usethreads" in
3231 $define)
3232         $cat <<EOM
3233
3234 As of 5.5.640, Perl has two different internal threading implementations,
3235 the 5.005 version (5005threads) and an interpreter-based version
3236 (ithreads) that has one interpreter per thread.  Both are very 
3237 experimental.  This arrangement exists to help developers work out
3238 which one is better.
3239
3240 If you're a casual user, you probably don't want interpreter-threads
3241 at this time.  There doesn't yet exist a way to create threads from
3242 within Perl in this model, i.e., "use Thread;" will NOT work.
3243 EOM
3244         : Default to ithreads unless overridden on command line or with
3245         : old config.sh
3246         dflt='y'
3247         case "$use5005threads" in
3248                 $define|true|[yY]*) dflt='n';;
3249         esac
3250         case "$useithreads" in
3251                 $undef|false|[nN]*) dflt='n';;
3252         esac
3253         rp='Use interpreter-based ithreads?'
3254         . ./myread
3255         case "$ans" in
3256         y|Y)    val="$define" ;;
3257         *)      val="$undef" ;;
3258         esac
3259         set useithreads
3260         eval $setvar
3261         : Now set use5005threads to the opposite value.
3262         case "$useithreads" in
3263         $define) val="$undef" ;;
3264         *) val="$define" ;;
3265         esac
3266         set use5005threads
3267         eval $setvar
3268         ;;
3269 *)
3270         useithreads="$undef"
3271         use5005threads="$undef"
3272         ;;
3273 esac
3274
3275 case "$useithreads$use5005threads" in
3276 "$define$define")
3277         $cat >&4 <<EOM
3278
3279 You cannot have both the ithreads and the 5.005 threads enabled
3280 at the same time.  Disabling the 5.005 threads since they are
3281 much less stable than the ithreads.
3282
3283 EOM
3284         use5005threads="$undef"
3285         ;;
3286 esac
3287
3288 case "$d_oldpthreads" in
3289 '')     : Configure tests would be welcome here.  For now, assume undef.
3290         val="$undef" ;;
3291 *)      val="$d_oldpthreads" ;;
3292 esac
3293 set d_oldpthreads
3294 eval $setvar
3295
3296
3297 case "$usethreads" in
3298 "$define"|true|[yY]*)
3299 : Look for a hint-file generated 'call-back-unit'.  If the
3300 : user has specified that a threading perl is to be built,
3301 : we may need to set or change some other defaults.
3302         if $test -f usethreads.cbu; then
3303                 echo "Your platform has some specific hints for threaded builds, using them..."
3304                 . ./usethreads.cbu
3305         else
3306                 $cat <<EOM
3307 (Your platform doesn't have any specific hints for threaded builds.
3308  Assuming POSIX threads, then.)
3309 EOM
3310         fi
3311         ;;
3312 esac
3313
3314 cat <<EOM
3315
3316 Perl can be built so that multiple Perl interpreters can coexist
3317 within the same Perl executable.
3318 EOM
3319
3320 case "$useithreads" in
3321 $define)
3322         cat <<EOM
3323 This multiple interpreter support is required for interpreter-based threads.
3324 EOM
3325         val="$define"
3326         ;;
3327 *)      case "$usemultiplicity" in
3328         $define|true|[yY]*)     dflt='y';;
3329         *) dflt='n';;
3330         esac
3331         echo " "
3332         echo "If this doesn't make any sense to you, just accept the default '$dflt'."
3333         rp='Build Perl for multiplicity?'
3334         . ./myread
3335         case "$ans" in
3336         y|Y)    val="$define" ;;
3337         *)      val="$undef" ;;
3338         esac
3339         ;;
3340 esac
3341 set usemultiplicity
3342 eval $setvar
3343
3344
3345 case "$usemorebits" in
3346 "$define"|true|[yY]*)
3347         use64bitint="$define"
3348         uselongdouble="$define"
3349         usemorebits="$define"
3350         ;;
3351 *)      usemorebits="$undef"
3352         ;;
3353 esac
3354
3355 : make some quick guesses about what we are up against
3356 echo " "
3357 $echo $n "Hmm...  $c"
3358 echo exit 1 >bsd
3359 echo exit 1 >usg
3360 echo exit 1 >v7
3361 echo exit 1 >osf1
3362 echo exit 1 >eunice
3363 echo exit 1 >xenix
3364 echo exit 1 >venix
3365 echo exit 1 >os2
3366 d_bsd="$undef"
3367 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
3368 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
3369 then
3370         echo "Looks kind of like an OSF/1 system, but we'll see..."
3371         echo exit 0 >osf1
3372 elif test `echo abc | $tr a-z A-Z` = Abc ; then
3373         xxx=`./loc addbib blurfl $pth`
3374         if $test -f $xxx; then
3375         echo "Looks kind of like a USG system with BSD features, but we'll see..."
3376                 echo exit 0 >bsd
3377                 echo exit 0 >usg
3378         else
3379                 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
3380                         echo "Looks kind of like an extended USG system, but we'll see..."
3381                 else
3382                         echo "Looks kind of like a USG system, but we'll see..."
3383                 fi
3384                 echo exit 0 >usg
3385         fi
3386 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
3387         echo "Looks kind of like a BSD system, but we'll see..."
3388         d_bsd="$define"
3389         echo exit 0 >bsd
3390 else
3391         echo "Looks kind of like a Version 7 system, but we'll see..."
3392         echo exit 0 >v7
3393 fi
3394 case "$eunicefix" in
3395 *unixtovms*)
3396         $cat <<'EOI'
3397 There is, however, a strange, musty smell in the air that reminds me of
3398 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
3399 EOI
3400         echo exit 0 >eunice
3401         d_eunice="$define"
3402 : it so happens the Eunice I know will not run shell scripts in Unix format
3403         ;;
3404 *)
3405         echo " "
3406         echo "Congratulations.  You aren't running Eunice."
3407         d_eunice="$undef"
3408         ;;
3409 esac
3410 : Detect OS2.  The p_ variable is set above in the Head.U unit.
3411 : Note that this also -- wrongly -- detects e.g. dos-djgpp, which also uses
3412 : semicolon as a patch separator
3413 case "$p_" in
3414 :) ;;
3415 *)
3416         $cat <<'EOI'
3417 I have the feeling something is not exactly right, however...don't tell me...
3418 lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
3419 (Or you may be running DOS with DJGPP.)
3420 EOI
3421         echo exit 0 >os2
3422         ;;
3423 esac
3424 if test -f /xenix; then
3425         echo "Actually, this looks more like a XENIX system..."
3426         echo exit 0 >xenix
3427         d_xenix="$define"
3428 else
3429         echo " "
3430         echo "It's not Xenix..."
3431         d_xenix="$undef"
3432 fi
3433 chmod +x xenix
3434 $eunicefix xenix
3435 if test -f /venix; then
3436         echo "Actually, this looks more like a VENIX system..."
3437         echo exit 0 >venix
3438 else
3439         echo " "
3440         if ./xenix; then
3441                 : null
3442         else
3443                 echo "Nor is it Venix..."
3444         fi
3445 fi
3446 chmod +x bsd usg v7 osf1 eunice xenix venix os2
3447 $eunicefix bsd usg v7 osf1 eunice xenix venix os2
3448 $rm -f foo
3449
3450 case "$cc" in
3451 '') dflt=cc;;
3452 *) dflt="$cc";;
3453 esac
3454 rp="Use which C compiler?"
3455 . ./myread
3456 cc="$ans"
3457 : Look for a hint-file generated 'call-back-unit'.  Now that the
3458 : user has specified the compiler, we may need to set or change some
3459 : other defaults.
3460 if $test -f cc.cbu; then
3461     . ./cc.cbu
3462 fi
3463 . ./checkcc
3464
3465 echo " "
3466 echo "Checking for GNU cc in disguise and/or its version number..." >&4
3467 $cat >try.c <<EOM
3468 #include <stdio.h>
3469 int main() {
3470 #ifdef __GNUC__
3471 #ifdef __VERSION__
3472         printf("%s\n", __VERSION__);
3473 #else
3474         printf("%s\n", "1");
3475 #endif
3476 #endif
3477         exit(0);
3478 }
3479 EOM
3480 if $cc -o try $ccflags $ldflags try.c; then
3481         gccversion=`$run ./try`
3482         case "$gccversion" in
3483         '') echo "You are not using GNU cc." ;;
3484         *)  echo "You are using GNU cc $gccversion."
3485             ccname=gcc  
3486             ;;
3487         esac
3488 else
3489         echo " "
3490         echo "*** WHOA THERE!!! ***" >&4
3491         echo "    Your C compiler \"$cc\" doesn't seem to be working!" >&4
3492         case "$knowitall" in
3493         '')
3494         echo "    You'd better start hunting for one and let me know about it." >&4
3495                 exit 1
3496                 ;;
3497         esac
3498 fi
3499 $rm -f try try.*
3500 case "$gccversion" in
3501 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3502 esac
3503 case "$gccversion" in
3504 '') gccosandvers='' ;;
3505 *) gccshortvers=`echo "$gccversion"|sed 's/ .*//'`
3506    gccosandvers=`$cc -v 2>&1|grep '/specs$'|sed "s!.*/[^-/]*-[^-/]*-\([^-/]*\)/$gccshortvers/specs!\1!"`
3507    gccshortvers=''
3508    case "$gccosandvers" in
3509    $osname) gccosandvers='' ;; # linux gccs seem to have no linux osvers, grr
3510    $osname$osvers) ;; # looking good
3511    $osname*) cat <<EOM >&4
3512
3513 *** WHOA THERE!!! ***
3514
3515     Your gcc has not been compiled for the exact release of
3516     your operating system ($gccosandvers versus $osname$osvers).
3517
3518     In general it is a good idea to keep gcc synchronized with
3519     the operating system because otherwise serious problems
3520     may ensue when trying to compile software, like Perl.
3521
3522     I'm trying to be optimistic here, though, and will continue.
3523     If later during the configuration and build icky compilation
3524     problems appear (headerfile conflicts being the most common
3525     manifestation), I suggest reinstalling the gcc to match
3526     your operating system release.
3527
3528 EOM
3529       ;;
3530    *) gccosandvers='' ;; # failed to parse, better be silent
3531    esac
3532    ;;
3533 esac
3534 case "$ccname" in
3535 '') ccname="$cc" ;;
3536 esac
3537
3538
3539 : decide how portable to be.  Allow command line overrides.
3540 case "$d_portable" in
3541 "$undef") ;;
3542 *)      d_portable="$define" ;;
3543 esac
3544
3545 : set up shell script to do ~ expansion
3546 cat >filexp <<EOSS
3547 $startsh
3548 : expand filename
3549 case "\$1" in
3550  ~/*|~)
3551         echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
3552         ;;
3553  ~*)
3554         if $test -f /bin/csh; then
3555                 /bin/csh -f -c "glob \$1"
3556                 failed=\$?
3557                 echo ""
3558                 exit \$failed
3559         else
3560                 name=\`$expr x\$1 : '..\([^/]*\)'\`
3561                 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
3562                 if $test ! -d "\$dir"; then
3563                         me=\`basename \$0\`
3564                         echo "\$me: can't locate home directory for: \$name" >&2
3565                         exit 1
3566                 fi
3567                 case "\$1" in
3568                 */*)
3569                         echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
3570                         ;;
3571                 *)
3572                         echo \$dir
3573                         ;;
3574                 esac
3575         fi
3576         ;;
3577 *)
3578         echo \$1
3579         ;;
3580 esac
3581 EOSS
3582 chmod +x filexp
3583 $eunicefix filexp
3584
3585 : now set up to get a file name
3586 cat <<EOS >getfile
3587 $startsh
3588 EOS
3589 cat <<'EOSC' >>getfile
3590 tilde=''
3591 fullpath=''
3592 already=''
3593 skip=''
3594 none_ok=''
3595 exp_file=''
3596 nopath_ok=''
3597 orig_rp="$rp"
3598 orig_dflt="$dflt"
3599 case "$gfpth" in
3600 '') gfpth='.' ;;
3601 esac
3602
3603 case "$fn" in
3604 *\(*)
3605         expr $fn : '.*(\(.*\)).*' | $tr ',' $trnl >getfile.ok
3606         fn=`echo $fn | sed 's/(.*)//'`
3607         ;;
3608 esac
3609
3610 case "$fn" in
3611 *:*)
3612         loc_file=`expr $fn : '.*:\(.*\)'`
3613         fn=`expr $fn : '\(.*\):.*'`
3614         ;;
3615 esac
3616
3617 case "$fn" in
3618 *~*) tilde=true;;
3619 esac
3620 case "$fn" in
3621 */*) fullpath=true;;
3622 esac
3623 case "$fn" in
3624 *+*) skip=true;;
3625 esac
3626 case "$fn" in
3627 *n*) none_ok=true;;
3628 esac
3629 case "$fn" in
3630 *e*) exp_file=true;;
3631 esac
3632 case "$fn" in
3633 *p*) nopath_ok=true;;
3634 esac
3635
3636 case "$fn" in
3637 *f*) type='File';;
3638 *d*) type='Directory';;
3639 *l*) type='Locate';;
3640 esac
3641
3642 what="$type"
3643 case "$what" in
3644 Locate) what='File';;
3645 esac
3646
3647 case "$exp_file" in
3648 '')
3649         case "$d_portable" in
3650         "$define") ;;
3651         *) exp_file=true;;
3652         esac
3653         ;;
3654 esac
3655
3656 cd ..
3657 while test "$type"; do
3658         redo=''
3659         rp="$orig_rp"
3660         dflt="$orig_dflt"
3661         case "$tilde" in
3662         true) rp="$rp (~name ok)";;
3663         esac
3664         . UU/myread
3665         if test -f UU/getfile.ok && \
3666                 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
3667         then
3668                 value="$ans"
3669                 ansexp="$ans"
3670                 break
3671         fi
3672         case "$ans" in
3673         none)
3674                 value=''
3675                 ansexp=''
3676                 case "$none_ok" in
3677                 true) type='';;
3678                 esac
3679                 ;;
3680         *)
3681                 case "$tilde" in
3682                 '') value="$ans"
3683                         ansexp="$ans";;
3684                 *)
3685                         value=`UU/filexp $ans`
3686                         case $? in
3687                         0)
3688                                 if test "$ans" != "$value"; then
3689                                         echo "(That expands to $value on this system.)"
3690                                 fi
3691                                 ;;
3692                         *) value="$ans";;
3693                         esac
3694                         ansexp="$value"
3695                         case "$exp_file" in
3696                         '') value="$ans";;
3697                         esac
3698                         ;;
3699                 esac
3700                 case "$fullpath" in
3701                 true)
3702                         case "$ansexp" in
3703                         /*) value="$ansexp" ;;
3704                         [a-zA-Z]:/*) value="$ansexp" ;;
3705                         *)
3706                                 redo=true
3707                                 case "$already" in
3708                                 true)
3709                                 echo "I shall only accept a full path name, as in /bin/ls." >&4
3710                                 echo "Use a ! shell escape if you wish to check pathnames." >&4
3711                                         ;;
3712                                 *)
3713                                 echo "Please give a full path name, starting with slash." >&4
3714                                         case "$tilde" in
3715                                         true)
3716                                 echo "Note that using ~name is ok provided it expands well." >&4
3717                                                 already=true
3718                                                 ;;
3719                                         esac
3720                                 esac
3721                                 ;;
3722                         esac
3723                         ;;
3724                 esac
3725                 case "$redo" in
3726                 '')
3727                         case "$type" in
3728                         File)
3729                                 for fp in $gfpth; do
3730                                         if test "X$fp" = X.; then
3731                                             pf="$ansexp"
3732                                         else    
3733                                             pf="$fp/$ansexp"
3734                                         fi
3735                                         if test -f "$pf"; then
3736                                                 type=''
3737                                         elif test -r "$pf" || (test -h "$pf") >/dev/null 2>&1
3738                                         then
3739                                                 echo "($value is not a plain file, but that's ok.)"
3740                                                 type=''
3741                                         fi
3742                                         if test X"$type" = X; then
3743                                             value="$pf"
3744                                             break
3745                                         fi
3746                                 done
3747                                 ;;
3748                         Directory)
3749                                 for fp in $gfpth; do
3750                                         if test "X$fp" = X.; then
3751                                             dir="$ans"
3752                                             direxp="$ansexp"
3753                                         else    
3754                                             dir="$fp/$ansexp"
3755                                             direxp="$fp/$ansexp"
3756                                         fi
3757                                         if test -d "$direxp"; then
3758                                                 type=''
3759                                                 value="$dir"
3760                                                 break
3761                                         fi
3762                                 done
3763                                 ;;
3764                         Locate)
3765                                 if test -d "$ansexp"; then
3766                                         echo "(Looking for $loc_file in directory $value.)"
3767                                         value="$value/$loc_file"
3768                                         ansexp="$ansexp/$loc_file"
3769                                 fi
3770                                 if test -f "$ansexp"; then
3771                                         type=''
3772                                 fi
3773                                 case "$nopath_ok" in
3774                                 true)   case "$value" in
3775                                         */*) ;;
3776                                         *)      echo "Assuming $value will be in people's path."
3777                                                 type=''
3778                                                 ;;
3779                                         esac
3780                                         ;;
3781                                 esac
3782                                 ;;
3783                         esac
3784
3785                         case "$skip" in
3786                         true) type='';
3787                         esac
3788
3789                         case "$type" in
3790                         '') ;;
3791                         *)
3792                                 if test "$fastread" = yes; then
3793                                         dflt=y
3794                                 else
3795                                         dflt=n
3796                                 fi
3797                                 rp="$what $value doesn't exist.  Use that name anyway?"
3798                                 . UU/myread
3799                                 dflt=''
3800                                 case "$ans" in
3801                                 y*) type='';;
3802                                 *) echo " ";;
3803                                 esac
3804                                 ;;
3805                         esac
3806                         ;;
3807                 esac
3808                 ;;
3809         esac
3810 done
3811 cd UU
3812 ans="$value"
3813 rp="$orig_rp"
3814 dflt="$orig_dflt"
3815 rm -f getfile.ok
3816 test "X$gfpthkeep" != Xy && gfpth=""
3817 EOSC
3818
3819 : What should the include directory be ?
3820 echo " "
3821 $echo $n "Hmm...  $c"
3822 dflt='/usr/include'
3823 incpath=''
3824 mips_type=''
3825 if $test -f /bin/mips && /bin/mips; then
3826         echo "Looks like a MIPS system..."
3827         $cat >usr.c <<'EOCP'
3828 #ifdef SYSTYPE_BSD43
3829 /bsd43
3830 #endif
3831 EOCP
3832         if cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
3833                 dflt='/bsd43/usr/include'
3834                 incpath='/bsd43'
3835                 mips_type='BSD 4.3'
3836         else
3837                 mips_type='System V'
3838         fi
3839         $rm -f usr.c usr.out
3840         echo "and you're compiling with the $mips_type compiler and libraries."
3841         xxx_prompt=y
3842         echo "exit 0" >mips
3843 else
3844         echo "Doesn't look like a MIPS system."
3845         xxx_prompt=n
3846         echo "exit 1" >mips
3847 fi
3848 chmod +x mips
3849 $eunicefix mips
3850 case "$usrinc" in
3851 '') ;;
3852 *) dflt="$usrinc";;
3853 esac
3854 case "$xxx_prompt" in
3855 y)      fn=d/
3856         echo " "
3857         rp='Where are the include files you want to use?'
3858         . ./getfile
3859         usrinc="$ans"
3860         ;;
3861 *)      usrinc="$dflt"
3862         ;;
3863 esac
3864
3865 : see how we invoke the C preprocessor
3866 echo " "
3867 echo "Now, how can we feed standard input to your C preprocessor..." >&4
3868 cat <<'EOT' >testcpp.c
3869 #define ABC abc
3870 #define XYZ xyz
3871 ABC.XYZ
3872 EOT
3873 cd ..
3874 if test ! -f cppstdin; then
3875         if test "X$osname" = "Xaix" -a "X$gccversion" = X; then
3876                 # AIX cc -E doesn't show the absolute headerfile
3877                 # locations but we'll cheat by using the -M flag.
3878                 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
3879         else
3880                 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
3881         fi
3882 else
3883         echo "Keeping your $hint cppstdin wrapper."
3884 fi
3885 chmod 755 cppstdin
3886 wrapper=`pwd`/cppstdin
3887 ok='false'
3888 cd UU
3889
3890 if $test "X$cppstdin" != "X" && \
3891         $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
3892         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3893 then
3894         echo "You used to use $cppstdin $cppminus so we'll use that again."
3895         case "$cpprun" in
3896         '') echo "But let's see if we can live without a wrapper..." ;;
3897         *)
3898                 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
3899                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3900                 then
3901                         echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
3902                         ok='true'
3903                 else
3904                         echo "(However, $cpprun $cpplast does not work, let's see...)"
3905                 fi
3906                 ;;
3907         esac
3908 else
3909         case "$cppstdin" in
3910         '') ;;
3911         *)
3912                 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
3913                 ;;
3914         esac
3915 fi
3916
3917 if $ok; then
3918         : nothing
3919 elif echo 'Maybe "'"$cc"' -E" will work...'; \
3920         $cc -E <testcpp.c >testcpp.out 2>&1; \
3921         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3922         echo "Yup, it does."
3923         x_cpp="$cc -E"
3924         x_minus='';
3925 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
3926         $cc -E - <testcpp.c >testcpp.out 2>&1; \
3927         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3928         echo "Yup, it does."
3929         x_cpp="$cc -E"
3930         x_minus='-';
3931 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
3932         $cc -P <testcpp.c >testcpp.out 2>&1; \
3933         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3934         echo "Yipee, that works!"
3935         x_cpp="$cc -P"
3936         x_minus='';
3937 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
3938         $cc -P - <testcpp.c >testcpp.out 2>&1; \
3939         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3940         echo "At long last!"
3941         x_cpp="$cc -P"
3942         x_minus='-';
3943 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
3944         $cpp <testcpp.c >testcpp.out 2>&1; \
3945         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3946         echo "It works!"
3947         x_cpp="$cpp"
3948         x_minus='';
3949 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
3950         $cpp - <testcpp.c >testcpp.out 2>&1; \
3951         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3952         echo "Hooray, it works!  I was beginning to wonder."
3953         x_cpp="$cpp"
3954         x_minus='-';
3955 elif echo 'Uh-uh.  Time to get fancy.  Trying a wrapper...'; \
3956         $wrapper <testcpp.c >testcpp.out 2>&1; \
3957         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3958         x_cpp="$wrapper"
3959         x_minus=''
3960         echo "Eureka!"
3961 else
3962         dflt=''
3963         rp="No dice.  I can't find a C preprocessor.  Name one:"
3964         . ./myread
3965         x_cpp="$ans"
3966         x_minus=''
3967         $x_cpp <testcpp.c >testcpp.out 2>&1
3968         if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3969                 echo "OK, that will do." >&4
3970         else
3971 echo "Sorry, I can't get that to work.  Go find one and rerun Configure." >&4
3972                 exit 1
3973         fi
3974 fi
3975
3976 case "$ok" in
3977 false)
3978         cppstdin="$x_cpp"
3979         cppminus="$x_minus"
3980         cpprun="$x_cpp"
3981         cpplast="$x_minus"
3982         set X $x_cpp
3983         shift
3984         case "$1" in
3985         "$cpp")
3986                 echo "Perhaps can we force $cc -E using a wrapper..."
3987                 if $wrapper <testcpp.c >testcpp.out 2>&1; \
3988                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3989                 then
3990                         echo "Yup, we can."
3991                         cppstdin="$wrapper"
3992                         cppminus='';
3993                 else
3994                         echo "Nope, we'll have to live without it..."
3995                 fi
3996                 ;;
3997         esac
3998         case "$cpprun" in
3999         "$wrapper")
4000                 cpprun=''
4001                 cpplast=''
4002                 ;;
4003         esac
4004         ;;
4005 esac
4006
4007 case "$cppstdin" in
4008 "$wrapper"|'cppstdin') ;;
4009 *) $rm -f $wrapper;;
4010 esac
4011 $rm -f testcpp.c testcpp.out
4012
4013 : Set private lib path
4014 case "$plibpth" in
4015 '') if ./mips; then
4016                 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
4017         fi;;
4018 esac
4019 case "$libpth" in
4020 ' ') dlist='';;
4021 '') dlist="$loclibpth $plibpth $glibpth";;
4022 *) dlist="$libpth";;
4023 esac
4024
4025 : Now check and see which directories actually exist, avoiding duplicates
4026 libpth=''
4027 for xxx in $dlist
4028 do
4029     if $test -d $xxx; then
4030                 case " $libpth " in
4031                 *" $xxx "*) ;;
4032                 *) libpth="$libpth $xxx";;
4033                 esac
4034     fi
4035 done
4036 $cat <<'EOM'
4037
4038 Some systems have incompatible or broken versions of libraries.  Among
4039 the directories listed in the question below, please remove any you
4040 know not to be holding relevant libraries, and add any that are needed.
4041 Say "none" for none.
4042
4043 EOM
4044 case "$libpth" in
4045 '') dflt='none';;
4046 *)
4047         set X $libpth
4048         shift
4049         dflt=${1+"$@"}
4050         ;;
4051 esac
4052 rp="Directories to use for library searches?"
4053 . ./myread
4054 case "$ans" in
4055 none) libpth=' ';;
4056 *) libpth="$ans";;
4057 esac
4058
4059 : compute shared library extension
4060 case "$so" in
4061 '')
4062         if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
4063                 dflt='sl'
4064         else
4065                 dflt='so'
4066         fi
4067         ;;
4068 *) dflt="$so";;
4069 esac
4070 $cat <<EOM
4071
4072 On some systems, shared libraries may be available.  Answer 'none' if
4073 you want to suppress searching of shared libraries for the remainder
4074 of this configuration.
4075
4076 EOM
4077 rp='What is the file extension used for shared libraries?'
4078 . ./myread
4079 so="$ans"
4080
4081 : Define several unixisms.
4082 : Hints files or command line option can be used to override them.
4083 : The convoluted testing is in case hints files set either the old
4084 : or the new name.
4085 case "$_exe" in
4086 '')     case "$exe_ext" in
4087     '') ;;
4088         *)      _exe="$exe_ext" ;;
4089         esac
4090         ;;
4091 esac
4092 case "$_a" in
4093 '')     case "$lib_ext" in
4094     '') _a='.a';;
4095         *)      _a="$lib_ext" ;;
4096         esac
4097         ;;
4098 esac
4099 case "$_o" in
4100 '') case "$obj_ext" in
4101         '')     _o='.o';;
4102         *)      _o="$obj_ext";;
4103         esac
4104         ;;
4105 esac
4106 case "$p_" in
4107 '') case "$path_sep" in
4108         '')     p_=':';;
4109         *)      p_="$path_sep";;
4110         esac
4111         ;;
4112 esac
4113 exe_ext=$_exe
4114 lib_ext=$_a
4115 obj_ext=$_o
4116 path_sep=$p_
4117
4118 : Which makefile gets called first.  This is used by make depend.
4119 case "$firstmakefile" in
4120 '') firstmakefile='makefile';;
4121 esac
4122
4123 case "$usesocks" in
4124 $define|true|[yY]*)     dflt='y';;
4125 *) dflt='n';;
4126 esac
4127 cat <<EOM
4128
4129 Perl can be built to use the SOCKS proxy protocol library.  To do so,
4130 Configure must be run with -Dusesocks.  If you use SOCKS you also need
4131 to use the PerlIO abstraction layer, this will be implicitly selected.
4132
4133 If this doesn't make any sense to you, just accept the default '$dflt'.
4134 EOM
4135 rp='Build Perl for SOCKS?'
4136 . ./myread
4137 case "$ans" in
4138 y|Y)    val="$define" ;;     
4139 *)      val="$undef" ;;
4140 esac
4141 set usesocks
4142 eval $setvar
4143
4144 case "$usesocks" in
4145 $define|true|[yY]*) useperlio="$define";;
4146 esac
4147
4148 : Looking for optional libraries
4149 echo " "
4150 echo "Checking for optional libraries..." >&4
4151 case "$libs" in
4152 ' '|'') dflt='';;
4153 *) dflt="$libs";;
4154 esac
4155 case "$libswanted" in
4156 '') libswanted='c_s';;
4157 esac
4158 case "$usesocks" in
4159 "$define") libswanted="$libswanted socks5 socks5_sh" ;;
4160 esac
4161 libsfound=''
4162 libsfiles=''
4163 libsdirs=''
4164 libspath=''
4165 for thisdir in $libpth $xlibpth; do
4166   test -d $thisdir && libspath="$libspath $thisdir"
4167 done
4168 for thislib in $libswanted; do
4169         for thisdir in $libspath; do
4170             xxx=''
4171             if $test ! -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
4172                 xxx=`ls $thisdir/lib$thislib.$so.[0-9] 2>/dev/null|tail -1`
4173                 $test -f "$xxx" && eval $libscheck
4174                 $test -f "$xxx" && libstyle=shared
4175             fi
4176             if test ! -f "$xxx"; then
4177                 xxx=$thisdir/lib$thislib.$so
4178                 $test -f "$xxx" && eval $libscheck
4179                 $test -f "$xxx" && libstyle=shared
4180             fi  
4181             if test ! -f "$xxx"; then
4182                 xxx=$thisdir/lib$thislib$_a
4183                 $test -f "$xxx" && eval $libscheck
4184                 $test -f "$xxx" && libstyle=static
4185             fi
4186             if test ! -f "$xxx"; then
4187                 xxx=$thisdir/$thislib$_a
4188                 $test -f "$xxx" && eval $libscheck
4189                 $test -f "$xxx" && libstyle=static
4190             fi
4191             if test ! -f "$xxx"; then
4192                 xxx=$thisdir/lib${thislib}_s$_a
4193                 $test -f "$xxx" && eval $libscheck
4194                 $test -f "$xxx" && libstyle=static
4195                 $test -f "$xxx" && thislib=${thislib}_s
4196             fi
4197             if test ! -f "$xxx"; then
4198                 xxx=$thisdir/Slib$thislib$_a
4199                 $test -f "$xxx" && eval $libscheck
4200                 $test -f "$xxx" && libstyle=static
4201             fi
4202             if $test -f "$xxx"; then
4203                 case "$libstyle" in
4204                 shared) echo "Found -l$thislib (shared)." ;;
4205                 static) echo "Found -l$thislib." ;;
4206                 *)      echo "Found -l$thislib ($libstyle)." ;;
4207                 esac
4208                 case " $dflt " in
4209                 *"-l$thislib "*);;
4210                 *) dflt="$dflt -l$thislib"
4211                    libsfound="$libsfound $xxx"
4212                    yyy=`basename $xxx`
4213                    libsfiles="$libsfiles $yyy"
4214                    yyy=`echo $xxx|$sed -e "s%/$yyy\\$%%"`
4215                    case " $libsdirs " in
4216                    *" $yyy "*) ;;
4217                    *) libsdirs="$libsdirs $yyy" ;;
4218                    esac
4219                    ;;
4220                 esac
4221                 break
4222             fi  
4223         done
4224         if $test ! -f "$xxx"; then
4225             echo "No -l$thislib."
4226         fi
4227 done
4228 set X $dflt
4229 shift
4230 dflt="$*"
4231 case "$libs" in
4232 '') dflt="$dflt";;
4233 *) dflt="$libs";;
4234 esac
4235 case "$dflt" in
4236 ' '|'') dflt='none';;
4237 esac
4238
4239 $cat <<EOM
4240
4241 In order to compile $package on your machine, a number of libraries
4242 are usually needed.  Include any other special libraries here as well.
4243 Say "none" for none.  The default list is almost always right.
4244 EOM
4245
4246 echo " "
4247 rp="What libraries to use?"
4248 . ./myread
4249 case "$ans" in
4250 none) libs=' ';;
4251 *) libs="$ans";;
4252 esac
4253
4254 : determine optimization, if desired, or use for debug flag also
4255 case "$optimize" in
4256 ' '|$undef) dflt='none';;
4257 '') dflt='-O';;
4258 *) dflt="$optimize";;
4259 esac
4260 $cat <<EOH
4261
4262 By default, $package compiles with the -O flag to use the optimizer.
4263 Alternately, you might want to use the symbolic debugger, which uses
4264 the -g flag (on traditional Unix systems).  Either flag can be
4265 specified here.  To use neither flag, specify the word "none".
4266
4267 EOH
4268 rp="What optimizer/debugger flag should be used?"
4269 . ./myread
4270 optimize="$ans"
4271 case "$optimize" in
4272 'none') optimize=" ";;
4273 esac
4274
4275 dflt=''
4276 : We will not override a previous value, but we might want to
4277 : augment a hint file
4278 case "$hint" in
4279 default|recommended)
4280         case "$gccversion" in
4281         1*) dflt='-fpcc-struct-return' ;;
4282         esac
4283         case "$optimize" in
4284         *-g*) dflt="$dflt -DDEBUGGING";;
4285         esac
4286         case "$gccversion" in
4287         2*) if test -d /etc/conf/kconfig.d &&
4288                         $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
4289                 then
4290                         dflt="$dflt -posix"
4291                 fi
4292                 ;;
4293         esac
4294         case "$gccversion" in
4295         1*) ;;
4296         2.[0-8]*) ;;
4297         ?*)     echo " "
4298                 echo "Checking if your compiler accepts -fno-strict-aliasing" 2>&1
4299                 echo 'int main(void) { return 0; }' > gcctest.c
4300                 if $cc -O2 -fno-strict-aliasing -o gcctest gcctest.c; then
4301                         echo "Yes, it does." 2>&1
4302                         case "$ccflags" in
4303                         *strict-aliasing*) 
4304                                 echo "Leaving current flags $ccflags alone." 2>&1
4305                                 ;;
4306                         *) dflt="$dflt -fno-strict-aliasing" ;;
4307                         esac
4308                 else
4309                         echo "Nope, it doesn't, but that's ok." 2>&1
4310                 fi
4311                 ;;
4312         esac
4313         ;;
4314 esac
4315
4316 case "$mips_type" in
4317 *BSD*|'') inclwanted="$locincpth $usrinc";;
4318 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
4319 esac
4320 for thisincl in $inclwanted; do
4321         if $test -d $thisincl; then
4322                 if $test x$thisincl != x$usrinc; then
4323                         case "$dflt" in
4324                         *" -I$thisincl "*);;
4325                         *) dflt="$dflt -I$thisincl ";;
4326                         esac
4327                 fi
4328         fi
4329 done
4330
4331 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
4332         xxx=true;
4333 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
4334         xxx=true;
4335 else
4336         xxx=false;
4337 fi;
4338 if $xxx; then
4339         case "$dflt" in
4340         *$2*);;
4341         *) dflt="$dflt -D$2";;
4342         esac;
4343 fi'
4344
4345 set signal.h LANGUAGE_C; eval $inctest
4346
4347 case "$usesocks" in
4348 $define)
4349         ccflags="$ccflags -DSOCKS"
4350         ;;
4351 esac
4352
4353 case "$hint" in
4354 default|recommended) dflt="$ccflags $dflt" ;;
4355 *) dflt="$ccflags";;
4356 esac
4357
4358 case "$dflt" in
4359 ''|' ') dflt=none;;
4360 esac
4361
4362 $cat <<EOH
4363
4364 Your C compiler may want other flags.  For this question you should include
4365 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
4366 but you should NOT include libraries or ld flags like -lwhatever.  If you
4367 want $package to honor its debug switch, you should include -DDEBUGGING here.
4368 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
4369
4370 To use no flags, specify the word "none".
4371
4372 EOH
4373 set X $dflt
4374 shift
4375 dflt=${1+"$@"}
4376 rp="Any additional cc flags?"
4377 . ./myread
4378 case "$ans" in
4379 none) ccflags='';;
4380 *) ccflags="$ans";;
4381 esac
4382
4383 : the following weeds options from ccflags that are of no interest to cpp
4384 case "$cppflags" in
4385 '') cppflags="$ccflags" ;;
4386 *)  cppflags="$cppflags $ccflags" ;;
4387 esac
4388 case "$gccversion" in
4389 1*) cppflags="$cppflags -D__GNUC__"
4390 esac
4391 case "$mips_type" in
4392 '');;
4393 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
4394 esac
4395 case "$cppflags" in
4396 '');;
4397 *)
4398         echo " "
4399         echo "Let me guess what the preprocessor flags are..." >&4
4400         set X $cppflags
4401         shift
4402         cppflags=''
4403         $cat >cpp.c <<'EOM'
4404 #define BLURFL foo
4405
4406 BLURFL xx LFRULB
4407 EOM
4408         previous=''
4409         for flag in $*
4410         do
4411                 case "$flag" in
4412                 -*) ftry="$flag";;
4413                 *) ftry="$previous $flag";;
4414                 esac
4415                 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
4416                         >cpp1.out 2>/dev/null && \
4417                         $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
4418                         >cpp2.out 2>/dev/null && \
4419                         $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
4420                         $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
4421                 then
4422                         cppflags="$cppflags $ftry"
4423                         previous=''
4424                 else
4425                         previous="$flag"
4426                 fi
4427         done
4428         set X $cppflags
4429         shift
4430         cppflags=${1+"$@"}
4431         case "$cppflags" in
4432         *-*)  echo "They appear to be: $cppflags";;
4433         esac
4434         $rm -f cpp.c cpp?.out
4435         ;;
4436 esac
4437
4438 : flags used in final linking phase
4439 case "$ldflags" in
4440 '') if ./venix; then
4441                 dflt='-i -z'
4442         else
4443                 dflt=''
4444         fi
4445         case "$ccflags" in
4446         *-posix*) dflt="$dflt -posix" ;;
4447         esac
4448         ;;
4449 *) dflt="$ldflags";;
4450 esac
4451
4452 : Try to guess additional flags to pick up local libraries.
4453 for thislibdir in $libpth; do
4454         case " $loclibpth " in
4455         *" $thislibdir "*)
4456                 case "$dflt " in 
4457                 *"-L$thislibdir "*) ;;
4458                 *)  dflt="$dflt -L$thislibdir" ;;
4459                 esac
4460                 ;;
4461         esac
4462 done
4463
4464 case "$dflt" in
4465 '') dflt='none' ;;
4466 esac
4467
4468 $cat <<EOH
4469
4470 Your C linker may need flags.  For this question you should
4471 include -L/whatever and any other flags used by the C linker, but you
4472 should NOT include libraries like -lwhatever.
4473
4474 Make sure you include the appropriate -L/path flags if your C linker
4475 does not normally search all of the directories you specified above,
4476 namely
4477         $libpth
4478 To use no flags, specify the word "none".
4479
4480 EOH
4481
4482 rp="Any additional ld flags (NOT including libraries)?"
4483 . ./myread
4484 case "$ans" in
4485 none) ldflags='';;
4486 *) ldflags="$ans";;
4487 esac
4488 rmlist="$rmlist pdp11"
4489
4490 : coherency check
4491 echo " "
4492 echo "Checking your choice of C compiler and flags for coherency..." >&4
4493 $cat > try.c <<'EOF'
4494 #include <stdio.h>
4495 int main() { printf("Ok\n"); exit(0); }
4496 EOF
4497 set X $cc -o try $optimize $ccflags $ldflags try.c $libs
4498 shift
4499 $cat >try.msg <<'EOM'
4500 I've tried to compile and run the following simple program:
4501
4502 EOM
4503 $cat try.c >> try.msg
4504
4505 $cat >> try.msg <<EOM
4506
4507 I used the command:
4508
4509         $*
4510         $run ./try
4511
4512 and I got the following output:
4513
4514 EOM
4515 dflt=y
4516 if $sh -c "$cc -o try $optimize $ccflags $ldflags try.c $libs" >>try.msg 2>&1; then
4517         if $sh -c "$run ./try" >>try.msg 2>&1; then
4518                 xxx=`$run ./try`
4519                 case "$xxx" in
4520                 "Ok") dflt=n ;;
4521                 *)      echo 'The program compiled OK, but produced no output.' >> try.msg
4522                         case " $libs " in
4523                         *" -lsfio "*)
4524                                 cat >> try.msg <<'EOQS'
4525 If $libs contains -lsfio, and sfio is mis-configured, then it
4526 sometimes (apparently) runs and exits with a 0 status, but with no
4527 output!  It may have to do with sfio's use of _exit vs. exit.
4528
4529 EOQS
4530                                 rp="You have a big problem.  Shall I abort Configure"
4531                                 dflt=y
4532                                 ;;
4533                         esac
4534                         ;;
4535                 esac
4536         else
4537                 echo "The program compiled OK, but exited with status $?." >>try.msg
4538                 rp="You have a problem.  Shall I abort Configure"
4539                 dflt=y
4540         fi
4541 else
4542         echo "I can't compile the test program." >>try.msg
4543         rp="You have a BIG problem.  Shall I abort Configure"
4544         dflt=y
4545 fi
4546 case "$dflt" in
4547 y)
4548         $cat try.msg >&4
4549         case "$knowitall" in
4550         '')
4551                 echo "(The supplied flags or libraries might be incorrect.)"
4552                 ;;
4553         *) dflt=n;;
4554         esac
4555         echo " "
4556         . ./myread
4557         case "$ans" in
4558         n*|N*) ;;
4559         *)      echo "Ok.  Stopping Configure." >&4
4560                 exit 1
4561                 ;;
4562         esac
4563         ;;
4564 n) echo "OK, that should do.";;
4565 esac
4566 $rm -f try try.* core
4567
4568 : define a shorthand compile call
4569 compile='
4570 mc_file=$1;
4571 shift;
4572 $cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs > /dev/null 2>&1;'
4573 : define a shorthand compile call for compilations that should be ok.
4574 compile_ok='
4575 mc_file=$1;
4576 shift;
4577 $cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs;'
4578
4579 : check for lengths of integral types
4580 echo " "
4581 case "$intsize" in
4582 '')
4583         echo "Checking to see how big your integers are..." >&4
4584         $cat >try.c <<'EOCP'
4585 #include <stdio.h>
4586 int main()
4587 {
4588         printf("intsize=%d;\n", (int)sizeof(int));
4589         printf("longsize=%d;\n", (int)sizeof(long));
4590         printf("shortsize=%d;\n", (int)sizeof(short));
4591         exit(0);
4592 }
4593 EOCP
4594         set try
4595         if eval $compile_ok && $run ./try > /dev/null; then
4596                 eval `$run ./try`
4597                 echo "Your integers are $intsize bytes long."
4598                 echo "Your long integers are $longsize bytes long."
4599                 echo "Your short integers are $shortsize bytes long."
4600         else
4601                 $cat >&4 <<EOM
4602 !
4603 Help! I can't compile and run the intsize test program: please enlighten me!
4604 (This is probably a misconfiguration in your system or libraries, and
4605 you really ought to fix it.  Still, I'll try anyway.)
4606 !
4607 EOM
4608                 dflt=4
4609                 rp="What is the size of an integer (in bytes)?"
4610                 . ./myread
4611                 intsize="$ans"
4612                 dflt=$intsize
4613                 rp="What is the size of a long integer (in bytes)?"
4614                 . ./myread
4615                 longsize="$ans"
4616                 dflt=2
4617                 rp="What is the size of a short integer (in bytes)?"
4618                 . ./myread
4619                 shortsize="$ans"
4620         fi
4621         ;;
4622 esac
4623 $rm -f try try.*
4624
4625 : check for void type
4626 echo " "
4627 echo "Checking to see how well your C compiler groks the void type..." >&4
4628 case "$voidflags" in
4629 '')
4630         $cat >try.c <<'EOCP'
4631 #if TRY & 1
4632 void sub() {
4633 #else
4634 sub() {
4635 #endif
4636         extern void moo();      /* function returning void */
4637         void (*goo)();          /* ptr to func returning void */
4638 #if TRY & 8
4639         void *hue;              /* generic ptr */
4640 #endif
4641 #if TRY & 2
4642         void (*foo[10])();
4643 #endif
4644
4645 #if TRY & 4
4646         if(goo == moo) {
4647                 exit(0);
4648         }
4649 #endif
4650         exit(0);
4651 }
4652 int main() { sub(); }
4653 EOCP
4654         if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
4655                 voidflags=$defvoidused
4656         echo "Good.  It appears to support void to the level $package wants.">&4
4657                 if $contains warning .out >/dev/null 2>&1; then
4658                         echo "However, you might get some warnings that look like this:"
4659                         $cat .out
4660                 fi
4661         else
4662 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
4663                 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
4664                         echo "It supports 1..."
4665                         if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
4666                                 echo "It also supports 2..."
4667                                 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
4668                                         voidflags=7
4669                                         echo "And it supports 4 but not 8 definitely."
4670                                 else
4671                                         echo "It doesn't support 4..."
4672                                         if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
4673                                                 voidflags=11
4674                                                 echo "But it supports 8."
4675                                         else
4676                                                 voidflags=3
4677                                                 echo "Neither does it support 8."
4678                                         fi
4679                                 fi
4680                         else
4681                                 echo "It does not support 2..."
4682                                 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
4683                                         voidflags=13
4684                                         echo "But it supports 4 and 8."
4685                                 else
4686                                         if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
4687                                                 voidflags=5
4688                                                 echo "And it supports 4 but has not heard about 8."
4689                                         else
4690                                                 echo "However it supports 8 but not 4."
4691                                         fi
4692                                 fi
4693                         fi
4694                 else
4695                         echo "There is no support at all for void."
4696                         voidflags=0
4697                 fi
4698         fi
4699 esac
4700 case "$voidflags" in
4701 "$defvoidused") ;;
4702 *)      $cat >&4 <<'EOM'
4703   Support flag bits are:
4704     1: basic void declarations.
4705     2: arrays of pointers to functions returning void.
4706     4: operations between pointers to and addresses of void functions.
4707     8: generic void pointers.
4708 EOM
4709         dflt="$voidflags";
4710         rp="Your void support flags add up to what?"
4711         . ./myread
4712         voidflags="$ans"
4713         ;;
4714 esac
4715 $rm -f try.* .out
4716
4717 : check for length of pointer
4718 echo " "
4719 case "$ptrsize" in
4720 '')
4721         echo "Checking to see how big your pointers are..." >&4
4722         if test "$voidflags" -gt 7; then
4723                 echo '#define VOID_PTR char *' > try.c
4724         else
4725                 echo '#define VOID_PTR void *' > try.c
4726         fi
4727         $cat >>try.c <<'EOCP'
4728 #include <stdio.h>
4729 int main()
4730 {
4731     printf("%d\n", (int)sizeof(VOID_PTR));
4732     exit(0);
4733 }
4734 EOCP
4735         set try
4736         if eval $compile_ok; then
4737                 ptrsize=`$run ./try`
4738                 echo "Your pointers are $ptrsize bytes long."
4739         else
4740                 dflt='4'
4741                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
4742                 rp="What is the size of a pointer (in bytes)?"
4743                 . ./myread
4744                 ptrsize="$ans"
4745         fi
4746         ;;
4747 esac
4748 $rm -f try.c try
4749
4750 : check for long long
4751 echo " "
4752 echo "Checking to see if you have long long..." >&4
4753 echo 'int main() { long long x = 7; return 0; }' > try.c
4754 set try
4755 if eval $compile; then
4756         val="$define"
4757         echo "You have long long."
4758 else
4759         val="$undef"
4760         echo "You do not have long long."
4761 fi
4762 $rm try.*
4763 set d_longlong
4764 eval $setvar
4765
4766 : check for length of long long
4767 case "${d_longlong}${longlongsize}" in
4768 $define)
4769         echo " "
4770         echo "Checking to see how big your long longs are..." >&4
4771         $cat >try.c <<'EOCP'
4772 #include <stdio.h>
4773 int main()
4774 {
4775     printf("%d\n", (int)sizeof(long long));
4776     return(0);
4777 }
4778 EOCP
4779         set try
4780         if eval $compile_ok; then
4781                 longlongsize=`$run ./try`
4782                 echo "Your long longs are $longlongsize bytes long."
4783         else
4784                 dflt='8'
4785                 echo " "
4786                 echo "(I can't seem to compile the test program.  Guessing...)"
4787                 rp="What is the size of a long long (in bytes)?"
4788                 . ./myread
4789                 longlongsize="$ans"
4790         fi
4791         if $test "X$longsize" = "X$longlongsize"; then
4792                 echo "(That isn't any different from an ordinary long.)"
4793         fi      
4794         ;;
4795 esac
4796 $rm -f try.* try
4797
4798 : determine filename position in cpp output
4799 echo " "
4800 echo "Computing filename position in cpp output for #include directives..." >&4
4801 echo '#include <stdio.h>' > foo.c
4802 $cat >fieldn <<EOF
4803 $startsh
4804 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
4805 $grep '^[       ]*#.*stdio\.h' | \
4806 while read cline; do
4807         pos=1
4808         set \$cline
4809         while $test \$# -gt 0; do
4810                 if $test -r \`echo \$1 | $tr -d '"'\`; then
4811                         echo "\$pos"
4812                         exit 0
4813                 fi
4814                 shift
4815                 pos=\`expr \$pos + 1\`
4816         done
4817 done
4818 EOF
4819 chmod +x fieldn
4820 fieldn=`./fieldn`
4821 $rm -f foo.c fieldn
4822 case $fieldn in
4823 '') pos='???';;
4824 1) pos=first;;
4825 2) pos=second;;
4826 3) pos=third;;
4827 *) pos="${fieldn}th";;
4828 esac
4829 echo "Your cpp writes the filename in the $pos field of the line."
4830
4831 : locate header file
4832 $cat >findhdr <<EOF
4833 $startsh
4834 wanted=\$1
4835 name=''
4836 for usrincdir in $usrinc
4837 do
4838         if test -f \$usrincdir/\$wanted; then
4839                 echo "\$usrincdir/\$wanted"
4840                 exit 0
4841         fi
4842 done
4843 awkprg='{ print \$$fieldn }'
4844 echo "#include <\$wanted>" > foo\$\$.c
4845 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
4846 $grep "^[       ]*#.*\$wanted" | \
4847 while read cline; do
4848         name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
4849         case "\$name" in
4850         *[/\\\\]\$wanted) echo "\$name"; exit 1;;
4851         *[\\\\/]\$wanted) echo "\$name"; exit 1;;
4852         *) exit 2;;
4853         esac;
4854 done;
4855 #
4856 # status = 0: grep returned 0 lines, case statement not executed
4857 # status = 1: headerfile found
4858 # status = 2: while loop executed, no headerfile found
4859 #
4860 status=\$?
4861 $rm -f foo\$\$.c;
4862 if test \$status -eq 1; then
4863         exit 0;
4864 fi
4865 exit 1
4866 EOF
4867 chmod +x findhdr
4868
4869 : define an alternate in-header-list? function
4870 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
4871 cont=true; xxf="echo \"<\$1> found.\" >&4";
4872 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
4873 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
4874 esac;
4875 case $# in 4) instead=instead;; *) instead="at last";; esac;
4876 while $test "$cont"; do
4877         xxx=`./findhdr $1`
4878         var=$2; eval "was=\$$2";
4879         if $test "$xxx" && $test -r "$xxx";
4880         then eval $xxf;
4881         eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
4882                 cont="";
4883         else eval $xxnf;
4884         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
4885         set $yyy; shift; shift; yyy=$@;
4886         case $# in 0) cont="";;
4887         2) xxf="echo \"but I found <\$1> $instead.\" >&4";
4888                 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
4889         *) xxf="echo \"but I found <\$1\> instead.\" >&4";
4890                 xxnf="echo \"there is no <\$1>, ...\" >&4";;
4891         esac;
4892 done;
4893 while $test "$yyy";
4894 do set $yyy; var=$2; eval "was=\$$2";
4895         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
4896         set $yyy; shift; shift; yyy=$@;
4897 done'
4898
4899 : see if inttypes.h is available
4900 : we want a real compile instead of Inhdr because some systems
4901 : have an inttypes.h which includes non-existent headers
4902 echo " "
4903 $cat >try.c <<EOCP
4904 #include <inttypes.h>
4905 int main() {
4906         static int32_t foo32 = 0x12345678;
4907 }
4908 EOCP
4909 set try
4910 if eval $compile; then
4911         echo "<inttypes.h> found." >&4
4912         val="$define"
4913 else
4914         echo "<inttypes.h> NOT found." >&4
4915         val="$undef"
4916 fi
4917 $rm -f try.c try
4918 set i_inttypes
4919 eval $setvar
4920
4921 : check for int64_t
4922 echo " "
4923 echo "Checking to see if you have int64_t..." >&4
4924 $cat >try.c <<EOCP
4925 #include <sys/types.h>
4926 #$i_inttypes I_INTTYPES
4927 #ifdef I_INTTYPES
4928 #include <inttypes.h>
4929 #endif
4930 int main() { int64_t x = 7; }
4931 EOCP
4932 set try
4933 if eval $compile; then
4934         val="$define"
4935         echo "You have int64_t."
4936 else
4937         val="$undef"
4938         echo "You do not have int64_t."
4939 fi
4940 $rm -f try try.*
4941 set d_int64_t
4942 eval $setvar
4943
4944
4945 echo " "
4946 echo "Checking which 64-bit integer type we could use..." >&4
4947
4948 case "$intsize" in
4949 8) val=int
4950    set quadtype
4951    eval $setvar
4952    val='"unsigned int"'
4953    set uquadtype
4954    eval $setvar
4955    quadkind=1
4956    ;;
4957 *) case "$longsize" in
4958    8) val=long
4959       set quadtype
4960       eval $setvar
4961       val='"unsigned long"'
4962       set uquadtype
4963       eval $setvar
4964       quadkind=2
4965       ;;
4966    *) case "$d_longlong:$longlongsize" in
4967       define:8)
4968         val='"long long"'
4969         set quadtype
4970         eval $setvar
4971         val='"unsigned long long"'
4972         set uquadtype
4973         eval $setvar
4974         quadkind=3
4975         ;;
4976       *) case "$d_int64_t" in
4977          define)
4978            val=int64_t
4979            set quadtype
4980            eval $setvar
4981            val=uint64_t
4982            set uquadtype
4983            eval $setvar
4984            quadkind=4
4985            ;;
4986          esac
4987          ;;
4988       esac
4989       ;;
4990    esac
4991    ;;
4992 esac
4993
4994 case "$quadtype" in
4995 '')     echo "Alas, no 64-bit integer types in sight." >&4
4996         d_quad="$undef"
4997         ;;
4998 *)      echo "We could use '$quadtype' for 64-bit integers." >&4
4999         d_quad="$define"
5000         ;;
5001 esac
5002
5003
5004 case "$uselonglong" in
5005 "$define"|true|[yY]*)
5006         cat <<EOM >&4
5007
5008 *** Configure -Duselonglong is deprecated, using -Duse64bitint instead.
5009 EOM
5010         use64bitint="$define"
5011         ;;
5012 esac                          
5013 case "$use64bits" in
5014 "$define"|true|[yY]*)
5015         cat <<EOM >&4
5016
5017 *** Configure -Duse64bits is deprecated, using -Duse64bitint instead.
5018 EOM
5019         use64bitint="$define"
5020         ;;
5021 esac                          
5022 case "$use64bitints" in
5023 "$define"|true|[yY]*)
5024         cat <<EOM >&4
5025
5026 *** There is no Configure -Duse64bitints, using -Duse64bitint instead.
5027 EOM
5028         use64bitint="$define"
5029         ;;
5030 esac                          
5031 case "$use64bitsint" in
5032 "$define"|true|[yY]*)
5033         cat <<EOM >&4
5034
5035 *** There is no Configure -Duse64bitsint, using -Duse64bitint instead.
5036 EOM
5037         use64bitint="$define"
5038         ;;
5039 esac                          
5040 case "$uselonglongs" in
5041 "$define"|true|[yY]*)
5042         cat <<EOM >&4
5043
5044 *** There is no Configure -Duselonglongs, using -Duse64bitint instead.
5045 EOM
5046         use64bitint="$define"
5047         ;;
5048 esac                          
5049 case "$use64bitsall" in
5050 "$define"|true|[yY]*)
5051         cat <<EOM >&4
5052
5053 *** There is no Configure -Duse64bitsall, using -Duse64bitall instead.
5054 EOM
5055         use64bitall="$define"
5056         ;;
5057 esac                          
5058
5059 case "$ccflags" in
5060 *-DUSE_LONG_LONG*|*-DUSE_64_BIT_INT*|*-DUSE_64_BIT_ALL*) use64bitint="$define";;
5061 esac
5062 case "$use64bitall" in
5063 "$define"|true|[yY]*) use64bitint="$define" ;;
5064 esac
5065
5066 case "$longsize" in
5067 8) cat <<EOM
5068
5069 You have natively 64-bit long integers.
5070 EOM
5071    val="$define"
5072    ;;
5073 *) case "$use64bitint" in
5074    "$define"|true|[yY]*) dflt='y';;
5075    *) dflt='n';;
5076    esac
5077    case "$d_quad" in
5078    "$define") ;;
5079    *) dflt='n' ;;
5080    esac
5081    cat <<EOM
5082
5083 Perl can be built to take advantage of 64-bit integer types
5084 on some systems.  To do so, Configure can be run with -Duse64bitint.
5085 Choosing this option will most probably introduce binary incompatibilities.
5086
5087 If this doesn't make any sense to you, just accept the default '$dflt'.
5088 (The default has been chosen based on your configuration.)
5089 EOM
5090    rp='Try to use 64-bit integers, if available?'
5091    . ./myread
5092    case "$ans" in
5093    [yY]*) val="$define" ;;
5094    *)     val="$undef"  ;;
5095    esac
5096    ;;
5097 esac
5098 set use64bitint
5099 eval $setvar
5100
5101 case "$use64bitall" in
5102 "$define"|true|[yY]*) dflt='y' ;;
5103 *) case "$longsize" in
5104    8) dflt='y' ;;
5105    *) dflt='n' ;;
5106    esac
5107    ;;
5108 esac    
5109 cat <<EOM
5110
5111 You may also choose to try maximal 64-bitness.  It means using as much
5112 64-bitness as possible on the platform.  This in turn means even more
5113 binary incompatibilities.  On the other hand, your platform may not
5114 have any more 64-bitness available than what you already have chosen.
5115
5116 If this doesn't make any sense to you, just accept the default '$dflt'.
5117 (The default has been chosen based on your configuration.)
5118 EOM
5119 rp='Try to use maximal 64-bit support, if available?'
5120 . ./myread
5121 case "$ans" in
5122 [yY]*) val="$define" ;;
5123 *)     val="$undef"  ;;
5124 esac
5125 set use64bitall
5126 eval $setvar
5127 case "$use64bitall" in
5128 "$define")
5129         case "$use64bitint" in
5130         "$undef")
5131                 cat <<EOM
5132
5133 Since you have chosen a maximally 64-bit build, I'm also turning on
5134 the use of 64-bit integers.
5135 EOM
5136                 use64bitint="$define" ;;
5137         esac
5138         ;;
5139 esac
5140
5141 case "$use64bitall" in
5142 "$define"|true|[yY]*)
5143         case "$ptrsize" in
5144         4)      cat <<EOM >&4
5145
5146 *** You have chosen a maximally 64-bit build, but your pointers
5147 *** are only 4 bytes wide, disabling maximal 64-bitness.
5148
5149 EOM
5150                 use64bitall="$undef"
5151                 case "$use64bitint" in
5152                 "$define"|true|[yY]*) ;;
5153                 *)      cat <<EOM >&4
5154
5155 *** Downgrading from maximal 64-bitness to using 64-bit integers.
5156
5157 EOM
5158                         use64bitint="$define"
5159                         ;;
5160                 esac
5161                 ;;
5162         esac
5163         ;;
5164 esac
5165
5166 case "$use64bitint" in
5167 "$define"|true|[yY]*)
5168 : Look for a hint-file generated 'call-back-unit'.  If the
5169 : user has specified that a 64-bit perl is to be built,
5170 : we may need to set or change some other defaults.
5171         if $test -f use64bitint.cbu; then
5172                 echo "Your platform has some specific hints for 64-bit integers, using them..."
5173                 . ./use64bitint.cbu
5174         fi
5175         case "$longsize" in
5176         4) case "$archname64" in
5177            '') archname64=64int ;;
5178            esac
5179            ;;
5180         esac
5181         ;;
5182 esac
5183
5184 case "$use64bitall" in
5185 "$define"|true|[yY]*)
5186 : Look for a hint-file generated 'call-back-unit'.  If the
5187 : user has specified that a maximally 64-bit perl is to be built,
5188 : we may need to set or change some other defaults.
5189         if $test -f use64bitall.cbu; then
5190                 echo "Your platform has some specific hints for 64-bit builds, using them..."
5191                 . ./use64bitall.cbu
5192         fi
5193         case "$longsize" in
5194         4) case "$archname64" in
5195            ''|64int) archname64=64all ;;
5196            esac
5197            ;;
5198         esac
5199         ;;
5200 esac
5201
5202 echo " "
5203 echo "Checking for GNU C Library..." >&4
5204 cat >try.c <<EOM
5205 #include <stdio.h>
5206 int main()
5207 {
5208 #ifdef __GLIBC__
5209     exit(0);
5210 #else
5211     exit(1);
5212 #endif
5213 }
5214 EOM
5215 set try
5216 if eval $compile_ok && $run ./try; then
5217         val="$define"
5218         echo "You are using the GNU C Library"
5219 else
5220         val="$undef"
5221         echo "You are not using the GNU C Library"
5222 fi
5223 $rm -f try try.*
5224 set d_gnulibc
5225 eval $setvar
5226
5227 : see if nm is to be used to determine whether a symbol is defined or not
5228 case "$usenm" in
5229 '')
5230         dflt=''
5231         case "$d_gnulibc" in
5232         "$define")
5233                 echo " "
5234                 echo "nm probably won't work on the GNU C Library." >&4
5235                 dflt=n
5236                 ;;
5237         esac
5238         case "$dflt" in
5239         '') 
5240                 if $test "$osname" = aix -a ! -f /lib/syscalls.exp; then
5241                         echo " "
5242                         echo "Whoops!  This is an AIX system without /lib/syscalls.exp!" >&4
5243                         echo "'nm' won't be sufficient on this sytem." >&4
5244                         dflt=n
5245                 fi
5246                 ;;
5247         esac
5248         case "$dflt" in
5249         '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
5250                 if $test $dflt -gt 20; then
5251                         dflt=y
5252                 else
5253                         dflt=n
5254                 fi
5255                 ;;
5256         esac
5257         ;;
5258 *)
5259         case "$usenm" in
5260         true|$define) dflt=y;;
5261         *) dflt=n;;
5262         esac
5263         ;;
5264 esac
5265 $cat <<EOM
5266
5267 I can use $nm to extract the symbols from your C libraries. This
5268 is a time consuming task which may generate huge output on the disk (up
5269 to 3 megabytes) but that should make the symbols extraction faster. The
5270 alternative is to skip the 'nm' extraction part and to compile a small
5271 test program instead to determine whether each symbol is present. If
5272 you have a fast C compiler and/or if your 'nm' output cannot be parsed,
5273 this may be the best solution.
5274
5275 You probably shouldn't let me use 'nm' if you are using the GNU C Library.
5276
5277 EOM
5278 rp="Shall I use $nm to extract C symbols from the libraries?"
5279 . ./myread
5280 case "$ans" in
5281 [Nn]*) usenm=false;;
5282 *) usenm=true;;
5283 esac
5284
5285 runnm=$usenm
5286 case "$reuseval" in
5287 true) runnm=false;;
5288 esac
5289
5290 : nm options which may be necessary
5291 case "$nm_opt" in
5292 '') if $test -f /mach_boot; then
5293                 nm_opt=''       # Mach
5294         elif $test -d /usr/ccs/lib; then
5295                 nm_opt='-p'     # Solaris (and SunOS?)
5296         elif $test -f /dgux; then
5297                 nm_opt='-p'     # DG-UX
5298         elif $test -f /lib64/rld; then
5299                 nm_opt='-p'     # 64-bit Irix
5300         else
5301                 nm_opt=''
5302         fi;;
5303 esac
5304
5305 : nm options which may be necessary for shared libraries but illegal
5306 : for archive libraries.  Thank you, Linux.
5307 case "$nm_so_opt" in
5308 '')     case "$myuname" in
5309         *linux*)
5310                 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
5311                         nm_so_opt='--dynamic'
5312                 fi
5313                 ;;
5314         esac
5315         ;;
5316 esac
5317
5318 case "$runnm" in
5319 true)
5320 : get list of predefined functions in a handy place
5321 echo " "
5322 case "$libc" in
5323 '') libc=unknown
5324         case "$libs" in
5325         *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
5326         esac
5327         ;;
5328 esac
5329 case "$libs" in
5330 '') ;;
5331 *)  for thislib in $libs; do
5332         case "$thislib" in
5333         -lc|-lc_s)
5334                 : Handle C library specially below.
5335                 ;;
5336         -l*)
5337                 thislib=`echo $thislib | $sed -e 's/^-l//'`
5338                 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
5339                         :
5340                 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
5341                         :
5342                 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
5343                         :
5344                 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
5345                         :
5346                 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
5347                         :
5348                 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
5349                         :
5350                 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
5351                         :
5352                 else
5353                         try=''
5354                 fi
5355                 libnames="$libnames $try"
5356                 ;;
5357         *) libnames="$libnames $thislib" ;;
5358         esac
5359         done
5360         ;;
5361 esac
5362 xxx=normal
5363 case "$libc" in
5364 unknown)
5365         set /lib/libc.$so
5366         for xxx in $libpth; do
5367                 $test -r $1 || set $xxx/libc.$so
5368                 : The messy sed command sorts on library version numbers.
5369                 $test -r $1 || \
5370                         set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
5371                         tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
5372                                 h
5373                                 s/[0-9][0-9]*/0000&/g
5374                                 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
5375                                 G
5376                                 s/\n/ /' | \
5377                          $sort | $sed -e 's/^.* //'`
5378                 eval set \$$#
5379         done
5380         $test -r $1 || set /usr/ccs/lib/libc.$so
5381         $test -r $1 || set /lib/libsys_s$_a
5382         ;;
5383 *)
5384         set blurfl
5385         ;;
5386 esac
5387 if $test -r "$1"; then
5388         echo "Your (shared) C library seems to be in $1."
5389         libc="$1"
5390 elif $test -r /lib/libc && $test -r /lib/clib; then
5391         echo "Your C library seems to be in both /lib/clib and /lib/libc."
5392         xxx=apollo
5393         libc='/lib/clib /lib/libc'
5394         if $test -r /lib/syslib; then
5395                 echo "(Your math library is in /lib/syslib.)"
5396                 libc="$libc /lib/syslib"
5397         fi
5398 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
5399         echo "Your C library seems to be in $libc, as you said before."
5400 elif $test -r $incpath/usr/lib/libc$_a; then
5401         libc=$incpath/usr/lib/libc$_a;
5402         echo "Your C library seems to be in $libc.  That's fine."
5403 elif $test -r /lib/libc$_a; then
5404         libc=/lib/libc$_a;
5405         echo "Your C library seems to be in $libc.  You're normal."
5406 else
5407         if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
5408                 :
5409         elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
5410                 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
5411         elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
5412                 :
5413         elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
5414                 :
5415         elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
5416                 :
5417         else
5418                 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
5419         fi
5420         if $test -r "$tans"; then
5421                 echo "Your C library seems to be in $tans, of all places."
5422                 libc=$tans
5423         else
5424                 libc='blurfl'
5425         fi
5426 fi
5427 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
5428         dflt="$libc"
5429         cat <<EOM
5430
5431 If the guess above is wrong (which it might be if you're using a strange
5432 compiler, or your machine supports multiple models), you can override it here.
5433
5434 EOM
5435 else
5436         dflt=''
5437         echo $libpth | $tr ' ' $trnl | $sort | $uniq > libpath
5438         cat >&4 <<EOM
5439 I can't seem to find your C library.  I've looked in the following places:
5440
5441 EOM
5442         $sed 's/^/      /' libpath
5443         cat <<EOM
5444
5445 None of these seems to contain your C library. I need to get its name...
5446
5447 EOM
5448 fi
5449 fn=f
5450 rp='Where is your C library?'
5451 . ./getfile
5452 libc="$ans"
5453
5454 echo " "
5455 echo $libc $libnames | $tr ' ' $trnl | $sort | $uniq > libnames
5456 set X `cat libnames`
5457 shift
5458 xxx=files
5459 case $# in 1) xxx=file; esac
5460 echo "Extracting names from the following $xxx for later perusal:" >&4
5461 echo " "
5462 $sed 's/^/      /' libnames >&4
5463 echo " "
5464 $echo $n "This may take a while...$c" >&4
5465
5466 for file in $*; do
5467         case $file in
5468         *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
5469         *) $nm $nm_opt $file 2>/dev/null;;
5470         esac
5471 done >libc.tmp
5472
5473 $echo $n ".$c"
5474 $grep fprintf libc.tmp > libc.ptf
5475 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
5476 xrun='eval "<libc.tmp $com >libc.list"; echo "done" >&4'
5477 xxx='[ADTSIW]'
5478 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx  *_[_.]*//p' -e 's/^.* $xxx  *//p'";\
5479         eval $xscan;\
5480         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5481                 eval $xrun
5482 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
5483         eval $xscan;\
5484         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5485                 eval $xrun
5486 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
5487         eval $xscan;\
5488         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5489                 eval $xrun
5490 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
5491         eval $xscan;\
5492         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5493                 eval $xrun
5494 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
5495         eval $xscan;\
5496         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5497                 eval $xrun
5498 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
5499         eval $xscan;\
5500         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5501                 eval $xrun
5502 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
5503                                 -e '/ file/d' -e 's/^\([^       ]*\).*/\1/p'";\
5504         eval $xscan;\
5505         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5506                 eval $xrun
5507 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
5508         eval $xscan;\
5509         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5510                 eval $xrun
5511 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
5512         eval $xscan;\
5513         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5514                 eval $xrun
5515 elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
5516         eval $xscan;\
5517         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5518                 eval $xrun
5519 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
5520         eval $xscan;\
5521         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5522                 eval $xrun
5523 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
5524         eval $xscan;\
5525         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5526                 eval $xrun
5527 elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
5528         eval $xscan;\
5529         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5530                 eval $xrun
5531 elif com="sed -n -e 's/^__.*//' -e 's/[       ]*D[    ]*[0-9]*.*//p'";\
5532         eval $xscan;\
5533         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5534                 eval $xrun
5535 else
5536         $nm -p $* 2>/dev/null >libc.tmp
5537         $grep fprintf libc.tmp > libc.ptf
5538         if com="$sed -n -e 's/^.* [ADTSIW]  *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
5539                 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
5540         then
5541                 nm_opt='-p'
5542                 eval $xrun
5543         else
5544                 echo " "
5545                 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
5546                 com=''
5547                 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
5548                         for thisname in $libnames $libc; do
5549                                 $ar t $thisname >>libc.tmp
5550                         done
5551                         $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
5552                         echo "Ok." >&4
5553                 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
5554                         # Repeat libc to extract forwarders to DLL entries too
5555                         for thisname in $libnames $libc; do
5556                                 $ar tv $thisname >>libc.tmp
5557                                 # Revision 50 of EMX has bug in $ar.
5558                                 # it will not extract forwarders to DLL entries
5559                                 # Use emximp which will extract exactly them.
5560                                 emximp -o tmp.imp $thisname \
5561                                     2>/dev/null && \
5562                                     $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
5563                                     < tmp.imp >>libc.tmp
5564                                 $rm tmp.imp
5565                         done
5566                         $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
5567                         echo "Ok." >&4
5568                 else
5569                         echo "$ar didn't seem to work right." >&4
5570                         echo "Maybe this is a Cray...trying bld instead..." >&4
5571                         if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
5572                         then
5573                                 for thisname in $libnames; do
5574                                         bld t $libnames | \
5575                                         $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
5576                                         $ar t $thisname >>libc.tmp
5577                                 done
5578                                 echo "Ok." >&4
5579                         else
5580                                 echo "That didn't work either.  Giving up." >&4
5581                                 exit 1
5582                         fi
5583                 fi
5584         fi
5585 fi
5586 nm_extract="$com"
5587 if $test -f /lib/syscalls.exp; then
5588         echo " "
5589         echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
5590         $sed -n 's/^\([^        ]*\)[   ]*syscall[0-9]*[        ]*$/\1/p' /lib/syscalls.exp >>libc.list
5591 fi
5592 ;;
5593 esac
5594 $rm -f libnames libpath
5595
5596 : is a C symbol defined?
5597 csym='tlook=$1;
5598 case "$3" in
5599 -v) tf=libc.tmp; tc=""; tdc="";;
5600 -a) tf=libc.tmp; tc="[0]"; tdc="[]";;
5601 *) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";;
5602 esac;
5603 tx=yes;
5604 case "$reuseval-$4" in
5605 true-) ;;
5606 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
5607 esac;
5608 case "$tx" in
5609 yes)
5610         case "$runnm" in
5611         true)
5612                 if $contains $tlook $tf >/dev/null 2>&1;
5613                 then tval=true;
5614                 else tval=false;
5615                 fi;;
5616         *)
5617                 echo "int main() { extern short $1$tdc; printf(\"%hd\", $1$tc); }" > t.c;
5618                 if $cc -o t $optimize $ccflags $ldflags t.c $libs >/dev/null 2>&1;
5619                 then tval=true;
5620                 else tval=false;
5621                 fi;
5622                 $rm -f t t.c;;
5623         esac;;
5624 *)
5625         case "$tval" in
5626         $define) tval=true;;
5627         *) tval=false;;
5628         esac;;
5629 esac;
5630 eval "$2=$tval"'
5631
5632 : define an is-in-libc? function
5633 inlibc='echo " "; td=$define; tu=$undef;
5634 sym=$1; var=$2; eval "was=\$$2";
5635 tx=yes;
5636 case "$reuseval$was" in
5637 true) ;;
5638 true*) tx=no;;
5639 esac;
5640 case "$tx" in
5641 yes)
5642         set $sym tres -f;
5643         eval $csym;
5644         case "$tres" in
5645         true)
5646                 echo "$sym() found." >&4;
5647                 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
5648         *)
5649                 echo "$sym() NOT found." >&4;
5650                 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
5651         esac;;
5652 *)
5653         case "$was" in
5654         $define) echo "$sym() found." >&4;;
5655         *) echo "$sym() NOT found." >&4;;
5656         esac;;
5657 esac'
5658
5659 : see if sqrtl exists
5660 set sqrtl d_sqrtl
5661 eval $inlibc
5662
5663 case "$ccflags" in
5664 *-DUSE_LONG_DOUBLE*|*-DUSE_MORE_BITS*) uselongdouble="$define" ;;
5665 esac
5666
5667 case "$uselongdouble" in
5668 $define|true|[yY]*)     dflt='y';;
5669 *) dflt='n';;
5670 esac
5671 cat <<EOM
5672
5673 Perl can be built to take advantage of long doubles which
5674 (if available) may give more accuracy and range for floating point numbers.
5675
5676 If this doesn't make any sense to you, just accept the default '$dflt'.
5677 EOM
5678 rp='Try to use long doubles if available?'
5679 . ./myread
5680 case "$ans" in
5681 y|Y)    val="$define"   ;;
5682 *)      val="$undef"    ;;
5683 esac
5684 set uselongdouble
5685 eval $setvar
5686
5687 case "$uselongdouble" in
5688 true|[yY]*) uselongdouble="$define" ;;
5689 esac
5690
5691 case "$uselongdouble" in
5692 $define)
5693 : Look for a hint-file generated 'call-back-unit'.  If the
5694 : user has specified that long doubles should be used,
5695 : we may need to set or change some other defaults.
5696         if $test -f uselongdouble.cbu; then
5697                 echo "Your platform has some specific hints for long doubles, using them..."
5698                 . ./uselongdouble.cbu
5699         else
5700                 $cat <<EOM
5701 (Your platform doesn't have any specific hints for long doubles.)
5702 EOM
5703         fi
5704         ;;
5705 esac
5706
5707 case "$uselongdouble:$d_sqrtl" in
5708 $define:$undef)
5709                 $cat <<EOM >&4
5710
5711 *** You requested the use of long doubles but you do not seem to have
5712 *** the mathematic functions for long doubles.  I'm disabling the use
5713 *** of long doubles.
5714
5715 EOM
5716         uselongdouble=$undef
5717         ;;
5718 esac
5719
5720 : check for length of double
5721 echo " "
5722 case "$doublesize" in
5723 '')
5724         echo "Checking to see how big your double precision numbers are..." >&4
5725         $cat >try.c <<'EOCP'
5726 #include <stdio.h>
5727 int main()
5728 {
5729     printf("%d\n", (int)sizeof(double));
5730     exit(0);
5731 }
5732 EOCP
5733         set try
5734         if eval $compile_ok; then
5735                 doublesize=`$run ./try`
5736                 echo "Your double is $doublesize bytes long."
5737         else
5738                 dflt='8'
5739                 echo "(I can't seem to compile the test program.  Guessing...)"
5740                 rp="What is the size of a double precision number (in bytes)?"
5741                 . ./myread
5742                 doublesize="$ans"
5743         fi
5744         ;;
5745 esac
5746 $rm -f try.c try
5747
5748 : check for long doubles
5749 echo " "
5750 echo "Checking to see if you have long double..." >&4
5751 echo 'int main() { long double x = 7.0; }' > try.c
5752 set try
5753 if eval $compile; then
5754         val="$define"
5755         echo "You have long double."
5756 else
5757         val="$undef"
5758         echo "You do not have long double."
5759 fi
5760 $rm try.*
5761 set d_longdbl
5762 eval $setvar
5763
5764 : check for length of long double
5765 case "${d_longdbl}${longdblsize}" in
5766 $define)
5767         echo " "
5768         echo "Checking to see how big your long doubles are..." >&4
5769         $cat >try.c <<'EOCP'
5770 #include <stdio.h>
5771 int main()
5772 {
5773         printf("%d\n", sizeof(long double));
5774 }
5775 EOCP
5776         set try
5777         set try
5778         if eval $compile; then
5779                 longdblsize=`$run ./try`
5780                 echo "Your long doubles are $longdblsize bytes long."
5781         else
5782                 dflt='8'
5783                 echo " "
5784                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
5785                 rp="What is the size of a long double (in bytes)?"
5786                 . ./myread
5787                 longdblsize="$ans"
5788         fi
5789         if $test "X$doublesize" = "X$longdblsize"; then
5790                 echo "(That isn't any different from an ordinary double.)"
5791         fi      
5792         ;;
5793 esac
5794 $rm -f try.* try
5795
5796 case "$useperlio" in
5797 $define|true|[yY]*|'')  dflt='y';;
5798 *) dflt='n';;
5799 esac
5800 cat <<EOM
5801
5802 Previous version of $package used the standard IO mechanisms as
5803 defined in <stdio.h>.  Versions 5.003_02 and later of $package allow
5804 alternate IO mechanisms via the PerlIO abstraction layer, but the
5805 stdio mechanism is still available if needed.  The abstraction layer
5806 can use AT&T's sfio (if you already have sfio installed) or regular stdio.
5807 Using PerlIO with sfio may cause problems with some extension modules.
5808
5809 If this doesn't make any sense to you, just accept the default '$dflt'.
5810 EOM
5811 rp='Use the PerlIO abstraction layer?'
5812 . ./myread
5813 case "$ans" in
5814 y|Y) 
5815         val="$define"
5816         ;;
5817 *)      
5818         echo "Ok, doing things the stdio way."
5819         val="$undef"
5820         ;;
5821 esac
5822 set useperlio
5823 eval $setvar 
5824
5825 case "$usesocks" in
5826 $define|true|[yY]*)
5827         case "$useperlio" in
5828         $define|true|[yY]*) ;;
5829         *)      cat >&4 <<EOM
5830
5831 You are using the SOCKS proxy protocol library which means that you
5832 should also use the PerlIO layer.  You may be headed for trouble.
5833
5834 EOM
5835                 ;;
5836         esac
5837         ;;
5838 esac
5839
5840         
5841 : determine the architecture name
5842 echo " "
5843 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
5844         tarch=`arch`"-$osname"
5845 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
5846         if uname -m > tmparch 2>&1 ; then
5847                 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
5848                         -e 's/$/'"-$osname/" tmparch`
5849         else
5850                 tarch="$osname"
5851         fi
5852         $rm -f tmparch
5853 else
5854         tarch="$osname"
5855 fi
5856 case "$myarchname" in
5857 ''|"$tarch") ;;
5858 *)
5859         echo "(Your architecture name used to be $myarchname.)"
5860         archname=''
5861         ;;
5862 esac
5863 case "$targetarch" in
5864 '') ;;
5865 *)  archname=`echo $targetarch|sed 's,^[^-]*-,,'` ;;
5866 esac
5867 myarchname="$tarch"
5868 case "$archname" in
5869 '') dflt="$tarch";;
5870 *) dflt="$archname";;
5871 esac
5872 rp='What is your architecture name'
5873 . ./myread
5874 archname="$ans"
5875 case "$usethreads" in
5876 $define)
5877         echo "Threads selected." >&4
5878         case "$archname" in
5879         *-thread*) echo "...and architecture name already has -thread." >&4
5880                 ;;
5881         *)      archname="$archname-thread"
5882                 echo "...setting architecture name to $archname." >&4
5883                 ;;
5884         esac
5885         ;;
5886 esac
5887 case "$usemultiplicity" in
5888 $define)
5889         echo "Multiplicity selected." >&4
5890         case "$archname" in
5891         *-multi*) echo "...and architecture name already has -multi." >&4
5892                 ;;
5893         *)      archname="$archname-multi"
5894                 echo "...setting architecture name to $archname." >&4
5895                 ;;
5896         esac
5897         ;;
5898 esac
5899 case "$use64bitint$use64bitall" in
5900 *"$define"*)
5901         case "$archname64" in
5902         '')
5903                 echo "This architecture is naturally 64-bit, not changing architecture name." >&4
5904                 ;;
5905         *)
5906                 case "$use64bitint" in
5907                 "$define") echo "64 bit integers selected." >&4 ;;
5908                 esac
5909                 case "$use64bitall" in
5910                 "$define") echo "Maximal 64 bitness selected." >&4 ;;
5911                 esac
5912                 case "$archname" in
5913                 *-$archname64*) echo "...and architecture name already has $archname64." >&4
5914                         ;;
5915                 *)      archname="$archname-$archname64"
5916                         echo "...setting architecture name to $archname." >&4
5917                         ;;
5918                 esac
5919                 ;;
5920         esac
5921 esac
5922 case "$uselongdouble" in
5923 $define)
5924         echo "Long doubles selected." >&4
5925         case "$longdblsize" in
5926         $doublesize)
5927                 echo "...but long doubles are equal to doubles, not changing architecture name." >&4
5928                 ;;
5929         *)
5930                 case "$archname" in
5931                 *-ld*) echo "...and architecture name already has -ld." >&4
5932                         ;;
5933                 *)      archname="$archname-ld"
5934                         echo "...setting architecture name to $archname." >&4
5935                         ;;
5936                 esac
5937                 ;;
5938         esac
5939         ;;
5940 esac
5941 case "$useperlio" in
5942 $define)
5943         echo "Perlio selected." >&4
5944         ;;
5945 *)
5946         echo "Perlio not selected, using stdio." >&4
5947         case "$archname" in
5948         *-stdio*) echo "...and architecture name already has -stdio." >&4
5949                 ;;
5950         *)      archname="$archname-stdio"
5951                 echo "...setting architecture name to $archname." >&4
5952                 ;;
5953         esac
5954         ;;
5955 esac
5956
5957 : determine root of directory hierarchy where package will be installed.
5958 case "$prefix" in
5959 '')
5960         dflt=`./loc . /usr/local /usr/local /local /opt /usr`
5961         ;;
5962 *)
5963         dflt="$prefix"
5964         ;;
5965 esac
5966 $cat <<EOM
5967
5968 By default, $package will be installed in $dflt/bin, manual pages
5969 under $dflt/man, etc..., i.e. with $dflt as prefix for all
5970 installation directories. Typically this is something like /usr/local.
5971 If you wish to have binaries under /usr/bin but other parts of the
5972 installation under /usr/local, that's ok: you will be prompted
5973 separately for each of the installation directories, the prefix being
5974 only used to set the defaults.
5975
5976 EOM
5977 fn=d~
5978 rp='Installation prefix to use?'
5979 . ./getfile
5980 oldprefix=''
5981 case "$prefix" in
5982 '') ;;
5983 *)
5984         case "$ans" in
5985         "$prefix") ;;
5986         *) oldprefix="$prefix";;
5987         esac
5988         ;;
5989 esac
5990 prefix="$ans"
5991 prefixexp="$ansexp"
5992
5993 case "$afsroot" in
5994 '')     afsroot=/afs ;;
5995 *)      afsroot=$afsroot ;;
5996 esac
5997
5998 : is AFS running?
5999 echo " "
6000 case "$afs" in
6001 $define|true)   afs=true ;;
6002 $undef|false)   afs=false ;;
6003 *)      if test -d $afsroot; then
6004                 afs=true
6005         else
6006                 afs=false
6007         fi
6008         ;;
6009 esac
6010 if $afs; then
6011         echo "AFS may be running... I'll be extra cautious then..." >&4
6012 else
6013         echo "AFS does not seem to be running..." >&4
6014 fi
6015
6016 : determine installation prefix for where package is to be installed.
6017 if $afs; then 
6018 $cat <<EOM
6019
6020 Since you are running AFS, I need to distinguish the directory in which
6021 files will reside from the directory in which they are installed (and from
6022 which they are presumably copied to the former directory by occult means).
6023
6024 EOM
6025         case "$installprefix" in
6026         '') dflt=`echo $prefix | sed 's#^/afs/#/afs/.#'`;;
6027         *) dflt="$installprefix";;
6028         esac
6029 else
6030 $cat <<EOM
6031
6032 In some special cases, particularly when building $package for distribution,
6033 it is convenient to distinguish between the directory in which files should 
6034 be installed from the directory ($prefix) in which they 
6035 will eventually reside.  For most users, these two directories are the same.
6036
6037 EOM
6038         case "$installprefix" in
6039         '') dflt=$prefix ;;
6040         *) dflt=$installprefix;;
6041         esac
6042 fi
6043 fn=d~
6044 rp='What installation prefix should I use for installing files?'
6045 . ./getfile
6046 installprefix="$ans"
6047 installprefixexp="$ansexp"
6048
6049 : set the prefixit variable, to compute a suitable default value
6050 prefixit='case "$3" in
6051 ""|none)
6052         case "$oldprefix" in
6053         "") eval "$1=\"\$$2\"";;
6054         *)
6055                 case "$3" in
6056                 "") eval "$1=";;
6057                 none)
6058                         eval "tp=\"\$$2\"";
6059                         case "$tp" in
6060                         ""|" ") eval "$1=\"\$$2\"";;
6061                         *) eval "$1=";;
6062                         esac;;
6063                 esac;;
6064         esac;;
6065 *)
6066         eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
6067         case "$tp" in
6068         --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
6069         /*-$oldprefix/*|\~*-$oldprefix/*)
6070                 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
6071         *) eval "$1=\"\$$2\"";;
6072         esac;;
6073 esac'
6074
6075 : get the patchlevel
6076 echo " "
6077 echo "Getting the current patchlevel..." >&4
6078 if $test -r $rsrc/patchlevel.h;then
6079         revision=`awk '/define[         ]+PERL_REVISION/ {print $3}' $rsrc/patchlevel.h`
6080         patchlevel=`awk '/define[       ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
6081         subversion=`awk '/define[       ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
6082         api_revision=`awk '/define[     ]+PERL_API_REVISION/ {print $3}' $rsrc/patchlevel.h`
6083         api_version=`awk '/define[      ]+PERL_API_VERSION/ {print $3}' $rsrc/patchlevel.h`
6084         api_subversion=`awk '/define[   ]+PERL_API_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
6085        perl_patchlevel=`grep ',"DEVEL[0-9][0-9]*"' $rsrc/patchlevel.h|sed 's/[^0-9]//g'`
6086 else
6087         revision=0
6088         patchlevel=0
6089         subversion=0
6090         api_revision=0
6091         api_version=0
6092         api_subversion=0
6093         perl_patchlevel=0
6094         $echo "(You do not have patchlevel.h.  Eek.)"
6095 fi
6096 if $test -r $rsrc/.patch ; then  
6097         if $test "`cat $rsrc/.patch`" -gt "$perl_patchlevel" ; then
6098                 perl_patchlevel=`cat $rsrc/.patch`
6099         fi
6100 fi
6101 : Define a handy string here to avoid duplication in myconfig.SH and configpm.
6102 version_patchlevel_string="version $patchlevel subversion $subversion"
6103 case "$perl_patchlevel" in
6104 0|'') ;;
6105 *) version_patchlevel_string="$version_patchlevel_string patch $perl_patchlevel" ;;
6106 esac
6107
6108 $echo "(You have $package $version_patchlevel_string.)"
6109
6110 case "$osname" in
6111 dos|vms)
6112         : XXX Should be a Configure test for double-dots in filenames.
6113         version=`echo $revision $patchlevel $subversion | \
6114                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
6115         api_versionstring=`echo $api_revision $api_version $api_subversion | \
6116                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
6117         ;;
6118 *)
6119         version=`echo $revision $patchlevel $subversion | \
6120                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
6121         api_versionstring=`echo $api_revision $api_version $api_subversion | \
6122                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
6123         ;;
6124 esac
6125 : Special case the 5.005_xx maintenance series, which used 5.005
6126 : without any subversion label as a subdirectory in $sitelib
6127 if test "${api_revision}${api_version}${api_subversion}" = "550"; then
6128         api_versionstring='5.005'
6129 fi
6130
6131 : determine installation style
6132 : For now, try to deduce it from prefix unless it is already set.
6133 : Reproduce behavior of 5.005 and earlier, maybe drop that in 5.7.
6134 case "$installstyle" in
6135 '')     case "$prefix" in
6136                 *perl*) dflt='lib';;
6137                 *) dflt='lib/perl5' ;;
6138         esac
6139         ;;
6140 *)      dflt="$installstyle" ;;
6141 esac
6142 : Probably not worth prompting for this since we prompt for all
6143 : the directories individually, and the prompt would be too long and
6144 : confusing anyway.
6145 installstyle=$dflt
6146
6147 : determine where private library files go
6148 : Usual default is /usr/local/lib/perl5/$version.
6149 : Also allow things like /opt/perl/lib/$version, since 
6150 : /opt/perl/lib/perl5... would be redundant.
6151 : The default "style" setting is made in installstyle.U
6152 case "$installstyle" in
6153 *lib/perl5*) set dflt privlib lib/$package/$version ;;
6154 *)       set dflt privlib lib/$version ;;
6155 esac
6156 eval $prefixit
6157 $cat <<EOM
6158
6159 There are some auxiliary files for $package that need to be put into a
6160 private library directory that is accessible by everyone.
6161
6162 EOM
6163 fn=d~+
6164 rp='Pathname where the private library files will reside?'
6165 . ./getfile
6166 privlib="$ans"
6167 privlibexp="$ansexp"
6168 : Change installation prefix, if necessary.
6169 if $test X"$prefix" != X"$installprefix"; then
6170         installprivlib=`echo $privlibexp | sed "s#^$prefix#$installprefix#"`
6171 else
6172         installprivlib="$privlibexp"
6173 fi
6174
6175 : set the prefixup variable, to restore leading tilda escape
6176 prefixup='case "$prefixexp" in
6177 "$prefix") ;;
6178 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
6179 esac'
6180
6181 : determine where public architecture dependent libraries go
6182 set archlib archlib
6183 eval $prefixit
6184 : privlib default is /usr/local/lib/$package/$version
6185 : archlib default is /usr/local/lib/$package/$version/$archname
6186 : privlib may have an optional trailing /share.
6187 tdflt=`echo $privlib | $sed 's,/share$,,'`
6188 tdflt=$tdflt/$archname
6189 case "$archlib" in
6190 '')     dflt=$tdflt
6191         ;;
6192 *)      dflt="$archlib"
6193     ;;
6194 esac
6195 $cat <<EOM
6196
6197 $spackage contains architecture-dependent library files.  If you are
6198 sharing libraries in a heterogeneous environment, you might store
6199 these files in a separate location.  Otherwise, you can just include
6200 them with the rest of the public library files.
6201
6202 EOM
6203 fn=d+~
6204 rp='Where do you want to put the public architecture-dependent libraries?'
6205 . ./getfile
6206 archlib="$ans"
6207 archlibexp="$ansexp"
6208 if $test X"$archlib" = X"$privlib"; then
6209         d_archlib="$undef"
6210 else
6211         d_archlib="$define"
6212 fi
6213 : Change installation prefix, if necessary.
6214 if $test X"$prefix" != X"$installprefix"; then
6215         installarchlib=`echo $archlibexp | sed "s#^$prefix#$installprefix#"`
6216 else
6217         installarchlib="$archlibexp"
6218 fi
6219
6220
6221 : Binary compatibility with 5.005 is not possible for builds
6222 : with advanced features
6223 case "$usethreads$usemultiplicity" in
6224 *define*)
6225         bincompat5005="$undef"
6226         d_bincompat5005="$undef"
6227         ;;
6228 *)      $cat <<EOM
6229
6230 This version of Perl can be compiled for binary compatibility with 5.005.
6231 If you decide to do so, you will be able to continue using most of the
6232 extensions that were compiled for Perl 5.005.
6233
6234 EOM
6235         case "$bincompat5005$d_bincompat5005" in
6236         *"$undef"*) dflt=n ;;
6237         *) dflt=y ;;
6238         esac
6239         rp='Binary compatibility with Perl 5.005?'
6240         . ./myread
6241         case "$ans" in
6242         y*) val="$define" ;;
6243         *)  val="$undef" ;;
6244         esac
6245         set d_bincompat5005
6246         eval $setvar
6247         case "$d_bincompat5005" in
6248         "$define")
6249                 bincompat5005="$define"
6250                 ;;
6251         *)      bincompat5005="$undef"
6252                 d_bincompat5005="$undef"
6253                 ;;
6254         esac
6255         ;;
6256 esac
6257
6258
6259 : see if setuid scripts can be secure
6260 $cat <<EOM
6261
6262 Some kernels have a bug that prevents setuid #! scripts from being
6263 secure.  Some sites have disabled setuid #! scripts because of this.
6264
6265 First let's decide if your kernel supports secure setuid #! scripts.
6266 (If setuid #! scripts would be secure but have been disabled anyway,
6267 don't say that they are secure if asked.)
6268
6269 EOM
6270
6271 val="$undef"
6272 if $test -d /dev/fd; then
6273         echo "#!$ls" >reflect
6274         chmod +x,u+s reflect
6275         ./reflect >flect 2>&1
6276         if $contains "/dev/fd" flect >/dev/null; then
6277                 echo "Congratulations, your kernel has secure setuid scripts!" >&4
6278                 val="$define"
6279         else
6280                 $cat <<EOM
6281 If you are not sure if they are secure, I can check but I'll need a
6282 username and password different from the one you are using right now.
6283 If you don't have such a username or don't want me to test, simply
6284 enter 'none'.
6285
6286 EOM
6287                 rp='Other username to test security of setuid scripts with?'
6288                 dflt='none'
6289                 . ./myread
6290                 case "$ans" in
6291                 n|none)
6292                         case "$d_suidsafe" in
6293                         '')     echo "I'll assume setuid scripts are *not* secure." >&4
6294                                 dflt=n;;
6295                         "$undef")
6296                                 echo "Well, the $hint value is *not* secure." >&4
6297                                 dflt=n;;
6298                         *)      echo "Well, the $hint value *is* secure." >&4
6299                                 dflt=y;;
6300                         esac
6301                         ;;
6302                 *)
6303                         $rm -f reflect flect
6304                         echo "#!$ls" >reflect
6305                         chmod +x,u+s reflect
6306                         echo >flect
6307                         chmod a+w flect
6308                         echo '"su" will (probably) prompt you for '"$ans's password."
6309                         su $ans -c './reflect >flect'
6310                         if $contains "/dev/fd" flect >/dev/null; then
6311                                 echo "Okay, it looks like setuid scripts are secure." >&4
6312                                 dflt=y
6313                         else
6314                                 echo "I don't think setuid scripts are secure." >&4
6315                                 dflt=n
6316                         fi
6317                         ;;
6318                 esac
6319                 rp='Does your kernel have *secure* setuid scripts?'
6320                 . ./myread
6321                 case "$ans" in
6322                 [yY]*)  val="$define";;
6323                 *)      val="$undef";;
6324                 esac
6325         fi
6326 else
6327         echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
6328         echo "(That's for file descriptors, not floppy disks.)"
6329         val="$undef"
6330 fi
6331 set d_suidsafe
6332 eval $setvar
6333
6334 $rm -f reflect flect
6335
6336 : now see if they want to do setuid emulation
6337 echo " "
6338 val="$undef"
6339 case "$d_suidsafe" in
6340 "$define")
6341         val="$undef"
6342         echo "No need to emulate SUID scripts since they are secure here." >& 4
6343         ;;
6344 *)
6345         $cat <<EOM
6346 Some systems have disabled setuid scripts, especially systems where
6347 setuid scripts cannot be secure.  On systems where setuid scripts have
6348 been disabled, the setuid/setgid bits on scripts are currently
6349 useless.  It is possible for $package to detect those bits and emulate
6350 setuid/setgid in a secure fashion.  This emulation will only work if
6351 setuid scripts have been disabled in your kernel.
6352
6353 EOM
6354         case "$d_dosuid" in
6355         "$define") dflt=y ;;
6356         *) dflt=n ;;
6357         esac
6358         rp="Do you want to do setuid/setgid emulation?"
6359         . ./myread
6360         case "$ans" in
6361         [yY]*)  val="$define";;
6362         *)      val="$undef";;
6363         esac
6364         ;;
6365 esac
6366 set d_dosuid
6367 eval $setvar
6368
6369 : see if this is a malloc.h system
6370 set malloc.h i_malloc
6371 eval $inhdr
6372
6373 : see if stdlib is available
6374 set stdlib.h i_stdlib
6375 eval $inhdr
6376
6377 : determine which malloc to compile in
6378 echo " "
6379 case "$usemymalloc" in
6380 [yY]*|true|$define)     dflt='y' ;;
6381 [nN]*|false|$undef)     dflt='n' ;;
6382 *)      case "$ptrsize" in
6383         4) dflt='y' ;;
6384         *) dflt='n' ;;
6385         esac
6386         ;;
6387 esac
6388 rp="Do you wish to attempt to use the malloc that comes with $package?"
6389 . ./myread
6390 usemymalloc="$ans"
6391 case "$ans" in
6392 y*|true)
6393         usemymalloc='y'
6394         mallocsrc='malloc.c'
6395         mallocobj="malloc$_o"
6396         d_mymalloc="$define"
6397         case "$libs" in
6398         *-lmalloc*)
6399                 : Remove malloc from list of libraries to use
6400                 echo "Removing unneeded -lmalloc from library list" >&4
6401                 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
6402                 shift
6403                 libs="$*"
6404                 echo "libs = $libs" >&4
6405                 ;;
6406         esac
6407         ;;
6408 *)
6409         usemymalloc='n'
6410         mallocsrc=''
6411         mallocobj=''
6412         d_mymalloc="$undef"
6413         ;;
6414 esac
6415
6416 : compute the return types of malloc and free
6417 echo " "
6418 $cat >malloc.c <<END
6419 #$i_malloc I_MALLOC
6420 #$i_stdlib I_STDLIB
6421 #include <stdio.h>
6422 #include <sys/types.h>
6423 #ifdef I_MALLOC
6424 #include <malloc.h>
6425 #endif
6426 #ifdef I_STDLIB
6427 #include <stdlib.h>
6428 #endif
6429 #ifdef TRY_MALLOC
6430 void *malloc();
6431 #endif
6432 #ifdef TRY_FREE
6433 void free();
6434 #endif
6435 END
6436 case "$malloctype" in
6437 '')
6438         if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
6439                 malloctype='void *'
6440         else
6441                 malloctype='char *'
6442         fi
6443         ;;
6444 esac
6445 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
6446
6447 case "$freetype" in
6448 '')
6449         if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
6450                 freetype='void'
6451         else
6452                 freetype='int'
6453         fi
6454         ;;
6455 esac
6456 echo "Your system uses $freetype free(), it would seem." >&4
6457 $rm -f malloc.[co]
6458 $cat <<EOM
6459
6460 After $package is installed, you may wish to install various
6461 add-on modules and utilities.  Typically, these add-ons will
6462 be installed under $prefix with the rest
6463 of this package.  However, you may wish to install such add-ons
6464 elsewhere under a different prefix.
6465
6466 If you do not wish to put everything under a single prefix, that's
6467 ok.  You will be prompted for the individual locations; this siteprefix
6468 is only used to suggest the defaults.
6469
6470 The default should be fine for most people.
6471
6472 EOM
6473 fn=d~+
6474 rp='Installation prefix to use for add-on modules and utilities?'
6475 : XXX Here might be another good place for an installstyle setting.
6476 case "$siteprefix" in
6477 '') dflt=$prefix ;;
6478 *)  dflt=$siteprefix ;;
6479 esac
6480 . ./getfile
6481 : XXX Prefixit unit does not yet support siteprefix and vendorprefix
6482 oldsiteprefix=''
6483 case "$siteprefix" in
6484 '') ;;
6485 *)      case "$ans" in
6486         "$prefix") ;;
6487         *) oldsiteprefix="$prefix";;
6488         esac
6489         ;;
6490 esac
6491 siteprefix="$ans"
6492 siteprefixexp="$ansexp"
6493
6494 : determine where site specific libraries go.
6495 : Usual default is /usr/local/lib/perl5/site_perl/$version
6496 : The default "style" setting is made in installstyle.U
6497 : XXX No longer works with Prefixit stuff.
6498 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6499 case "$sitelib" in
6500 '') case "$installstyle" in
6501         *lib/perl5*) dflt=$siteprefix/lib/$package/site_$prog/$version ;;
6502         *)       dflt=$siteprefix/lib/site_$prog/$version ;;
6503         esac
6504         ;;
6505 *)      dflt="$sitelib"
6506         ;;
6507 esac
6508 $cat <<EOM
6509
6510 The installation process will create a directory for
6511 site-specific extensions and modules.  Most users find it convenient
6512 to place all site-specific files in this directory rather than in the
6513 main distribution directory.
6514
6515 EOM
6516 fn=d~+
6517 rp='Pathname for the site-specific library files?'
6518 . ./getfile
6519 sitelib="$ans"
6520 sitelibexp="$ansexp"
6521 sitelib_stem=`echo "$sitelibexp" | sed "s,/$version$,,"`
6522 : Change installation prefix, if necessary.
6523 if $test X"$prefix" != X"$installprefix"; then
6524         installsitelib=`echo $sitelibexp | $sed "s#^$prefix#$installprefix#"`
6525 else
6526         installsitelib="$sitelibexp"
6527 fi
6528
6529 : determine where site specific architecture-dependent libraries go.
6530 : sitelib  default is /usr/local/lib/perl5/site_perl/$version
6531 : sitearch default is /usr/local/lib/perl5/site_perl/$version/$archname
6532 : sitelib may have an optional trailing /share.
6533 case "$sitearch" in
6534 '')     dflt=`echo $sitelib | $sed 's,/share$,,'`
6535         dflt="$dflt/$archname"
6536         ;;
6537 *)      dflt="$sitearch"
6538         ;;
6539 esac
6540 set sitearch sitearch none
6541 eval $prefixit
6542 $cat <<EOM
6543
6544 The installation process will also create a directory for
6545 architecture-dependent site-specific extensions and modules.
6546
6547 EOM
6548 fn=d~+
6549 rp='Pathname for the site-specific architecture-dependent library files?'
6550 . ./getfile
6551 sitearch="$ans"
6552 sitearchexp="$ansexp"
6553 : Change installation prefix, if necessary.
6554 if $test X"$prefix" != X"$installprefix"; then
6555         installsitearch=`echo $sitearchexp | sed "s#^$prefix#$installprefix#"`
6556 else
6557         installsitearch="$sitearchexp"
6558 fi
6559
6560 $cat <<EOM
6561
6562 The installation process will also create a directory for
6563 vendor-supplied add-ons.  Vendors who supply perl with their system
6564 may find it convenient to place all vendor-supplied files in this
6565 directory rather than in the main distribution directory.  This will
6566 ease upgrades between binary-compatible maintenance versions of perl.
6567
6568 Of course you may also use these directories in whatever way you see
6569 fit.  For example, you might use them to access modules shared over a
6570 company-wide network.
6571
6572 The default answer should be fine for most people.
6573 This causes further questions about vendor add-ons to be skipped
6574 and no vendor-specific directories will be configured for perl.
6575
6576 EOM
6577 rp='Do you want to configure vendor-specific add-on directories?'
6578 case "$usevendorprefix" in
6579 define|true|[yY]*) dflt=y ;;
6580 *)      : User may have set vendorprefix directly on Configure command line.
6581         case "$vendorprefix" in
6582         ''|' ') dflt=n ;;
6583         *)      dflt=y ;;
6584         esac
6585         ;;
6586 esac
6587 . ./myread
6588 case "$ans" in
6589 [yY]*)  fn=d~+
6590         rp='Installation prefix to use for vendor-supplied add-ons?'
6591         case "$vendorprefix" in
6592         '') dflt='' ;;
6593         *)  dflt=$vendorprefix ;;
6594         esac
6595         . ./getfile
6596         : XXX Prefixit unit does not yet support siteprefix and vendorprefix
6597         oldvendorprefix=''
6598         case "$vendorprefix" in
6599         '') ;;
6600         *)      case "$ans" in
6601                 "$prefix") ;;
6602                 *) oldvendorprefix="$prefix";;
6603                 esac
6604                 ;;
6605         esac
6606         usevendorprefix="$define"
6607         vendorprefix="$ans"
6608         vendorprefixexp="$ansexp"
6609         ;;
6610 *)      usevendorprefix="$undef"
6611         vendorprefix=''
6612         vendorprefixexp=''
6613         ;;
6614 esac
6615
6616 case "$vendorprefix" in
6617 '')     d_vendorlib="$undef"
6618         vendorlib=''
6619         vendorlibexp=''
6620         ;;
6621 *)      d_vendorlib="$define"
6622         : determine where vendor-supplied modules go.
6623         : Usual default is /usr/local/lib/perl5/vendor_perl/$version
6624         case "$vendorlib" in
6625         '')
6626                 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6627                 case "$installstyle" in
6628                 *lib/perl5*) dflt=$vendorprefix/lib/$package/vendor_$prog/$version ;;
6629                 *)           dflt=$vendorprefix/lib/vendor_$prog/$version ;;
6630                 esac
6631                 ;;
6632         *)      dflt="$vendorlib"
6633                 ;;
6634         esac
6635         fn=d~+
6636         rp='Pathname for the vendor-supplied library files?'
6637         . ./getfile
6638         vendorlib="$ans"
6639         vendorlibexp="$ansexp"
6640         ;;
6641 esac
6642 vendorlib_stem=`echo "$vendorlibexp" | sed "s,/$version$,,"`
6643 : Change installation prefix, if necessary.
6644 if $test X"$prefix" != X"$installprefix"; then
6645         installvendorlib=`echo $vendorlibexp | $sed "s#^$prefix#$installprefix#"`
6646 else
6647         installvendorlib="$vendorlibexp"
6648 fi
6649
6650 case "$vendorprefix" in
6651 '')     d_vendorarch="$undef"
6652         vendorarch=''
6653         vendorarchexp=''
6654         ;;
6655 *)      d_vendorarch="$define"
6656         : determine where vendor-supplied architecture-dependent libraries go.
6657         : vendorlib  default is /usr/local/lib/perl5/vendor_perl/$version
6658         : vendorarch default is /usr/local/lib/perl5/vendor_perl/$version/$archname
6659         : vendorlib may have an optional trailing /share.
6660         case "$vendorarch" in
6661         '')     dflt=`echo $vendorlib | $sed 's,/share$,,'`
6662                 dflt="$dflt/$archname"
6663                 ;;
6664         *)      dflt="$vendorarch" ;;
6665         esac
6666         fn=d~+
6667         rp='Pathname for vendor-supplied architecture-dependent files?'
6668         . ./getfile
6669         vendorarch="$ans"
6670         vendorarchexp="$ansexp"
6671         ;;
6672 esac
6673 : Change installation prefix, if necessary.
6674 if $test X"$prefix" != X"$installprefix"; then
6675         installvendorarch=`echo $vendorarchexp | sed "s#^$prefix#$installprefix#"`
6676 else
6677         installvendorarch="$vendorarchexp"
6678 fi
6679
6680 : Final catch-all directories to search
6681 $cat <<EOM
6682
6683 Lastly, you can have perl look in other directories for extensions and
6684 modules in addition to those already specified.
6685 These directories will be searched after 
6686         $sitearch 
6687         $sitelib 
6688 EOM
6689 test X"$vendorlib" != "X" && echo '     ' $vendorlib
6690 test X"$vendorarch" != "X" && echo '    ' $vendorarch
6691 echo ' '
6692 case "$otherlibdirs" in
6693 ''|' ') dflt='none' ;;
6694 *)      dflt="$otherlibdirs" ;;
6695 esac
6696 $cat <<EOM
6697 Enter a colon-separated set of extra paths to include in perl's @INC
6698 search path, or enter 'none' for no extra paths.
6699
6700 EOM
6701
6702 rp='Colon-separated list of additional directories for perl to search?'
6703 . ./myread
6704 case "$ans" in
6705 ' '|''|none)    otherlibdirs=' ' ;;     
6706 *)      otherlibdirs="$ans" ;;
6707 esac
6708 case "$otherlibdirs" in
6709 ' ') val=$undef ;;
6710 *)      val=$define ;;
6711 esac
6712 set d_perl_otherlibdirs
6713 eval $setvar
6714
6715 : Cruising for prototypes
6716 echo " "
6717 echo "Checking out function prototypes..." >&4
6718 $cat >prototype.c <<'EOCP'
6719 int main(int argc, char *argv[]) {
6720         exit(0);}
6721 EOCP
6722 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
6723         echo "Your C compiler appears to support function prototypes."
6724         val="$define"
6725 else
6726         echo "Your C compiler doesn't seem to understand function prototypes."
6727         val="$undef"
6728 fi
6729 set prototype
6730 eval $setvar
6731 $rm -f prototype*
6732
6733 case "$prototype" in
6734 "$define") ;;
6735 *)      ansi2knr='ansi2knr'
6736         echo " "
6737         cat <<EOM >&4
6738
6739 $me:  FATAL ERROR:
6740 This version of $package can only be compiled by a compiler that 
6741 understands function prototypes.  Unfortunately, your C compiler 
6742         $cc $ccflags
6743 doesn't seem to understand them.  Sorry about that.
6744
6745 If GNU cc is available for your system, perhaps you could try that instead.  
6746
6747 Eventually, we hope to support building Perl with pre-ANSI compilers.
6748 If you would like to help in that effort, please contact <perlbug@perl.org>.
6749
6750 Aborting Configure now.
6751 EOM
6752         exit 2
6753         ;;
6754 esac
6755
6756 : determine where public executables go
6757 echo " "
6758 set dflt bin bin
6759 eval $prefixit
6760 fn=d~
6761 rp='Pathname where the public executables will reside?'
6762 . ./getfile
6763 if $test "X$ansexp" != "X$binexp"; then
6764         installbin=''
6765 fi
6766 bin="$ans"
6767 binexp="$ansexp"
6768 : Change installation prefix, if necessary.
6769 : XXX Bug? -- ignores Configure -Dinstallprefix setting.
6770 if $test X"$prefix" != X"$installprefix"; then
6771         installbin=`echo $binexp | sed "s#^$prefix#$installprefix#"`
6772 else
6773         installbin="$binexp"
6774 fi
6775
6776 echo " "
6777 case "$extras" in
6778 '') dflt='n';;
6779 *) dflt='y';;
6780 esac
6781 cat <<EOM
6782 Perl can be built with extra modules or bundles of modules which
6783 will be fetched from the CPAN and installed alongside Perl.
6784
6785 Notice that you will need access to the CPAN; either via the Internet,
6786 or a local copy, for example a CD-ROM or a local CPAN mirror.  (You will
6787 be asked later to configure the CPAN.pm module which will in turn do
6788 the installation of the rest of the extra modules or bundles.)
6789
6790 Notice also that if the modules require any external software such as
6791 libraries and headers (the libz library and the zlib.h header for the
6792 Compress::Zlib module, for example) you MUST have any such software
6793 already installed, this configuration process will NOT install such
6794 things for you.
6795
6796 If this doesn't make any sense to you, just accept the default '$dflt'.
6797 EOM
6798 rp='Install any extra modules (y or n)?'
6799 . ./myread
6800 case "$ans" in
6801 y|Y)
6802         cat <<EOM
6803
6804 Please list any extra modules or bundles to be installed from CPAN,
6805 with spaces between the names.  The names can be in any format the
6806 'install' command of CPAN.pm will understand.  (Answer 'none',
6807 without the quotes, to install no extra modules or bundles.)
6808 EOM
6809         rp='Extras?'
6810         dflt="$extras"
6811         . ./myread
6812         extras="$ans"
6813 esac
6814 case "$extras" in
6815 ''|'none')
6816         val=''
6817         $rm -f ../extras.lst
6818         ;;
6819 *)      echo "(Saving the list of extras for later...)"
6820         echo "$extras" > ../extras.lst
6821         val="'$extras'"
6822         ;;
6823 esac
6824 set extras
6825 eval $setvar
6826 echo " "
6827
6828 : Find perl5.005 or later.
6829 echo "Looking for a previously installed perl5.005 or later... "
6830 case "$perl5" in
6831 '')     for tdir in `echo "$binexp$path_sep$PATH" | $sed "s/$path_sep/ /g"`; do
6832                 : Check if this perl is recent and can load a simple module
6833                 if $test -x $tdir/perl$exe_ext && $tdir/perl -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6834                         perl5=$tdir/perl
6835                         break;
6836                 elif $test -x $tdir/perl5$exe_ext && $tdir/perl5 -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6837                         perl5=$tdir/perl5
6838                         break;
6839                 fi
6840         done
6841         ;;
6842 *)      perl5="$perl5"
6843         ;;
6844 esac
6845 case "$perl5" in
6846 '')     echo "None found.  That's ok.";;
6847 *)      echo "Using $perl5." ;;
6848 esac
6849
6850 : Determine list of previous versions to include in @INC
6851 $cat > getverlist <<EOPL
6852 #!$perl5 -w
6853 use File::Basename;
6854 \$api_versionstring = "$api_versionstring";
6855 \$version = "$version";
6856 \$stem = "$sitelib_stem";
6857 \$archname = "$archname";
6858 EOPL
6859         $cat >> getverlist <<'EOPL'
6860 # Can't have leading @ because metaconfig interprets it as a command!
6861 ;@inc_version_list=();
6862 # XXX Redo to do opendir/readdir? 
6863 if (-d $stem) {
6864     chdir($stem);
6865     ;@candidates = glob("5.*");
6866 }
6867 else {
6868     ;@candidates = ();
6869 }
6870
6871 # XXX ToDo:  These comparisons must be reworked when two-digit
6872 # subversions come along, so that 5.7.10 compares as greater than
6873 # 5.7.3!  By that time, hope that 5.6.x is sufficiently
6874 # widespread that we can use the built-in version vectors rather
6875 # than reinventing them here.  For 5.6.0, however, we must
6876 # assume this script will likely be run by 5.005_0x.  --AD 1/2000.
6877 foreach $d (@candidates) {
6878     if ($d lt $version) {
6879         if ($d ge $api_versionstring) {
6880             unshift(@inc_version_list, grep { -d } "$d/$archname", $d);
6881         }
6882         elsif ($d ge "5.005") {
6883             unshift(@inc_version_list, grep { -d } $d);
6884         }
6885     }
6886     else {
6887         # Skip newer version.  I.e. don't look in
6888         # 5.7.0 if we're installing 5.6.1.
6889     }
6890 }
6891
6892 if (@inc_version_list) {
6893     print join(' ', @inc_version_list);
6894 }
6895 else {
6896     # Blank space to preserve value for next Configure run.
6897     print " ";
6898 }
6899 EOPL
6900 chmod +x getverlist
6901 case "$inc_version_list" in
6902 '')     if test -x "$perl5$exe_ext"; then
6903                 dflt=`$perl5 getverlist`
6904         else
6905                 dflt='none'
6906         fi
6907         ;;
6908 $undef) dflt='none' ;;
6909 *)  eval dflt=\"$inc_version_list\" ;;
6910 esac
6911 case "$dflt" in
6912 ''|' ') dflt=none ;;
6913 esac
6914 case "$dflt" in
6915 5.005) case "$bincompat5005" in
6916        $define|true|[yY]*) ;;
6917        *) dflt=none ;;
6918        esac
6919        ;;
6920 esac
6921 $cat <<'EOM'
6922
6923 In order to ease the process of upgrading, this version of perl 
6924 can be configured to use modules built and installed with earlier 
6925 versions of perl that were installed under $prefix.  Specify here
6926 the list of earlier versions that this version of perl should check.
6927 If Configure detected no earlier versions of perl installed under
6928 $prefix, then the list will be empty.  Answer 'none' to tell perl
6929 to not search earlier versions.
6930
6931 The default should almost always be sensible, so if you're not sure,
6932 just accept the default.
6933 EOM
6934
6935 rp='List of earlier versions to include in @INC?'
6936 . ./myread
6937 case "$ans" in
6938 [Nn]one|''|' ') inc_version_list=' ' ;;
6939 *) inc_version_list="$ans" ;;
6940 esac
6941 case "$inc_version_list" in
6942 ''|' ') 
6943         inc_version_list_init='0';;
6944 *)      inc_version_list_init=`echo $inc_version_list |
6945                 $sed -e 's/^/"/' -e 's/ /","/g' -e 's/$/",0/'`
6946         ;;
6947 esac
6948 $rm -f getverlist
6949
6950 : determine whether to install perl also as /usr/bin/perl
6951
6952 echo " "
6953 if $test -d /usr/bin -a "X$installbin" != X/usr/bin; then
6954         $cat <<EOM
6955 Many scripts expect perl to be installed as /usr/bin/perl.
6956 I can install the perl you are about to compile also as /usr/bin/perl
6957 (in addition to $installbin/perl).
6958 EOM
6959         case "$installusrbinperl" in
6960         "$undef"|[nN]*) dflt='n';;
6961         *)              dflt='y';;
6962         esac
6963         rp="Do you want to install perl as /usr/bin/perl?"
6964         . ./myread
6965         case "$ans" in
6966         [yY]*)  val="$define";;
6967         *)      val="$undef" ;;
6968         esac
6969 else
6970         val="$undef"
6971 fi
6972 set installusrbinperl
6973 eval $setvar
6974
6975 : see if dld is available
6976 set dld.h i_dld
6977 eval $inhdr
6978
6979 : see if dlopen exists
6980 xxx_runnm="$runnm"
6981 runnm=false
6982 set dlopen d_dlopen
6983 eval $inlibc
6984 runnm="$xxx_runnm"
6985
6986 : determine which dynamic loading, if any, to compile in
6987 echo " "
6988 dldir="ext/DynaLoader"
6989 case "$usedl" in
6990 $define|y|true)
6991         dflt='y'
6992         usedl="$define"
6993         ;;
6994 $undef|n|false)
6995         dflt='n'
6996         usedl="$undef"
6997         ;;
6998 *) 
6999         dflt='n'
7000         case "$d_dlopen" in
7001             $define) dflt='y' ;;
7002         esac
7003         case "$i_dld" in
7004             $define) dflt='y' ;;
7005         esac
7006         : Does a dl_xxx.xs file exist for this operating system
7007         $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
7008         ;;
7009 esac
7010 rp="Do you wish to use dynamic loading?"
7011 . ./myread
7012 usedl="$ans"
7013 case "$ans" in
7014 y*) usedl="$define"
7015         case "$dlsrc" in
7016         '')
7017                 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
7018                         dflt="$dldir/dl_${osname}.xs"
7019                 elif $test "$d_dlopen" = "$define" ; then
7020                         dflt="$dldir/dl_dlopen.xs"
7021                 elif $test "$i_dld" = "$define" ; then
7022                         dflt="$dldir/dl_dld.xs"
7023                 else
7024                         dflt=''
7025                 fi
7026                 ;;
7027         *)      dflt="$dldir/$dlsrc"
7028                 ;;
7029         esac
7030     echo "The following dynamic loading files are available:"
7031         : Can not go over to $dldir because getfile has path hard-coded in.
7032         tdir=`pwd`; cd $rsrc; $ls -C $dldir/dl*.xs; cd $tdir
7033         rp="Source file to use for dynamic loading"
7034         fn="fne"
7035         gfpth="$src"
7036         . ./getfile
7037         usedl="$define"
7038         : emulate basename
7039         dlsrc=`echo $ans | $sed -e 's%.*/\([^/]*\)$%\1%'`
7040
7041         $cat << EOM
7042
7043 Some systems may require passing special flags to $cc -c to
7044 compile modules that will be used to create a shared library.
7045 To use no flags, say "none".
7046
7047 EOM
7048     case "$cccdlflags" in
7049     '') case "$gccversion" in
7050                 '') case "$osname" in
7051                         hpux)   dflt='+z' ;;
7052                         next)   dflt='none' ;;
7053                         irix*)  dflt='-KPIC' ;;
7054                         svr4*|esix*|solaris|nonstopux) dflt='-KPIC' ;;
7055                         sunos)  dflt='-pic' ;;
7056                         *)      dflt='none' ;;
7057                     esac
7058                         ;;
7059                 *)  case "$osname" in
7060                         darwin) dflt='none' ;;
7061                         svr4*|esix*|solaris|nonstopux) dflt='-fPIC' ;;
7062                         *)      dflt='-fpic' ;;
7063                     esac ;;
7064             esac ;;
7065         ' ') dflt='none' ;;
7066     *)  dflt="$cccdlflags" ;;
7067     esac
7068     rp="Any special flags to pass to $cc -c to compile shared library modules?"
7069     . ./myread
7070     case "$ans" in
7071     none) cccdlflags=' ' ;;
7072     *) cccdlflags="$ans" ;;
7073     esac
7074
7075     cat << EOM
7076
7077 Some systems use ld to create libraries that can be dynamically loaded,
7078 while other systems (such as those using ELF) use $cc.
7079
7080 EOM
7081         case "$ld" in
7082         '')     $cat >try.c <<'EOM'
7083 /* Test for whether ELF binaries are produced */
7084 #include <fcntl.h>
7085 #include <stdlib.h>
7086 int main() {
7087         char b[4];
7088         int i = open("a.out",O_RDONLY);
7089         if(i == -1) 
7090                 exit(1); /* fail */
7091         if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
7092                 exit(0); /* succeed (yes, it's ELF) */
7093         else
7094                 exit(1); /* fail */
7095 }
7096 EOM
7097                 if $cc $ccflags $ldflags try.c >/dev/null 2>&1 && $run ./a.out; then
7098                         cat <<EOM
7099 You appear to have ELF support.  I'll use $cc to build dynamic libraries.
7100 EOM
7101                         dflt="$cc"
7102                 else
7103                         echo "I'll use ld to build dynamic libraries."
7104                         dflt='ld'
7105                 fi
7106                 rm -f try.c a.out
7107                 ;;
7108         *)      dflt="$ld"
7109                 ;;
7110         esac
7111
7112     rp="What command should be used to create dynamic libraries?"
7113     . ./myread
7114         ld="$ans"
7115
7116     cat << EOM
7117
7118 Some systems may require passing special flags to $ld to create a
7119 library that can be dynamically loaded.  If your ld flags include
7120 -L/other/path options to locate libraries outside your loader's normal
7121 search path, you may need to specify those -L options here as well.  To
7122 use no flags, say "none".
7123
7124 EOM
7125     case "$lddlflags" in
7126     '') case "$osname" in
7127                         beos) dflt='-nostart' ;;
7128                         hpux) dflt='-b';
7129                               case "$gccversion" in
7130                               '') dflt="$dflt +vnocompatwarnings" ;;
7131                               esac
7132                               ;;        
7133                         linux|irix*)    dflt='-shared' ;;
7134                         next)  dflt='none' ;;
7135                         solaris) dflt='-G' ;;
7136                         sunos) dflt='-assert nodefinitions' ;;
7137                         svr4*|esix*|nonstopux) dflt="-G $ldflags" ;;
7138                 *)     dflt='none' ;;
7139                         esac
7140                         ;;
7141     *) dflt="$lddlflags" ;;
7142     esac
7143
7144         : Try to guess additional flags to pick up local libraries.
7145         : Be careful not to append to a plain 'none'
7146         case "$dflt" in
7147         none) dflt='' ;;
7148         esac
7149         for thisflag in $ldflags; do
7150                 case "$thisflag" in
7151                 -L*|-R*)
7152                         case " $dflt " in
7153                         *" $thisflag "*) ;;
7154                         *) dflt="$dflt $thisflag" ;;
7155                         esac
7156                         ;;
7157                 esac
7158         done
7159
7160         case "$dflt" in
7161         ''|' ') dflt='none' ;;
7162         esac
7163
7164     rp="Any special flags to pass to $ld to create a dynamically loaded library?"
7165     . ./myread
7166     case "$ans" in
7167     none) lddlflags=' ' ;;
7168     *) lddlflags="$ans" ;;
7169     esac
7170
7171         cat <<EOM
7172
7173 Some systems may require passing special flags to $cc to indicate that
7174 the resulting executable will use dynamic linking.  To use no flags,
7175 say "none".
7176
7177 EOM
7178     case "$ccdlflags" in
7179     '') case "$osname" in
7180                 hpux)   dflt='-Wl,-E' ;;
7181                 linux)  dflt='-rdynamic' ;;
7182                 next)   dflt='none' ;;
7183                 sunos)  dflt='none' ;;
7184                 *)      dflt='none' ;;
7185             esac ;;
7186     ' ')  dflt='none' ;;
7187     *)  dflt="$ccdlflags" ;;
7188     esac
7189     rp="Any special flags to pass to $cc to use dynamic linking?"
7190     . ./myread
7191     case "$ans" in
7192     none) ccdlflags=' ' ;;
7193     *) ccdlflags="$ans" ;;
7194     esac
7195     ;;
7196 *)  usedl="$undef"
7197         ld='ld'
7198     dlsrc='dl_none.xs'
7199     lddlflags=''
7200     ccdlflags=''
7201     ;;
7202 esac
7203
7204 also=''
7205 case "$usedl" in
7206 $undef)
7207         # No dynamic loading being used, so don't bother even to prompt.
7208         useshrplib='false'
7209         ;;
7210 *)      case "$useshrplib" in
7211         '')     case "$osname" in
7212                 svr4*|nonstopux|dgux|dynixptx|esix|powerux|beos|cygwin*)
7213                         dflt=y
7214                         also='Building a shared libperl is required for dynamic loading to work on your system.'
7215                         ;;
7216                 next*)
7217                         case "$osvers" in
7218                         4*)     dflt=y
7219                                 also='Building a shared libperl is needed for MAB support.'
7220                                 ;;
7221                         *)      dflt=n
7222                                 ;;
7223                         esac
7224                         ;;
7225                 *)      dflt=n
7226                         ;;
7227                 esac
7228                 ;;
7229         $define|true|[Yy]*)
7230                 dflt=y
7231                 ;;
7232         *)      dflt=n
7233                 ;;
7234         esac
7235         $cat << EOM
7236
7237 The perl executable is normally obtained by linking perlmain.c with
7238 libperl${_a}, any static extensions (usually just DynaLoader), and
7239 any other libraries needed on this system (such as -lm, etc.).  Since
7240 your system supports dynamic loading, it is probably possible to build
7241 a shared libperl.$so.  If you will have more than one executable linked
7242 to libperl.$so, this will significantly reduce the size of each
7243 executable, but it may have a noticeable affect on performance.  The
7244 default is probably sensible for your system.
7245 $also
7246
7247 EOM
7248         rp="Build a shared libperl.$so (y/n)"
7249         . ./myread
7250         case "$ans" in
7251         true|$define|[Yy]*)
7252                 useshrplib='true'  ;;
7253         *)      useshrplib='false' ;;
7254         esac
7255         ;;
7256 esac
7257
7258 case "$useshrplib" in
7259 true)
7260         case "$libperl" in
7261         '')
7262                 # Figure out a good name for libperl.so.  Since it gets stored in
7263                 # a version-specific architecture-dependent library, the version
7264                 # number isn't really that important, except for making cc/ld happy.
7265                 #
7266                 # A name such as libperl.so.3.1
7267                 majmin="libperl.$so.$patchlevel.$subversion"
7268                 # A name such as libperl.so.301
7269                 majonly=`echo $patchlevel $subversion |
7270                         $awk '{printf "%d%02d", $1, $2}'`
7271                 majonly=libperl.$so.$majonly
7272                 # I'd prefer to keep the os-specific stuff here to a minimum, and
7273                 # rely on figuring it out from the naming of libc.
7274                 case "${osname}${osvers}" in
7275                 next4*)
7276                         dflt=libperl.5.$so
7277                         # XXX How handle the --version stuff for MAB?
7278                         ;;
7279                 linux*)  # ld won't link with a bare -lperl otherwise.
7280                         dflt=libperl.$so
7281                         ;;
7282                 cygwin*) # include version
7283                         dflt=`echo libperl$version | sed -e 's/\./_/g'`$lib_ext
7284                         ;;
7285                 *)      # Try to guess based on whether libc has major.minor.
7286                         case "$libc" in
7287                         *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
7288                         *libc.$so.[0-9]*) dflt=$majonly ;;
7289                         *)      dflt=libperl.$so ;;
7290                         esac
7291                         ;;
7292                 esac
7293                 ;;
7294         *)      dflt=$libperl
7295                 ;;
7296         esac
7297         cat << EOM
7298
7299 I need to select a good name for the shared libperl.  If your system uses
7300 library names with major and minor numbers, then you might want something
7301 like $majmin.  Alternatively, if your system uses a single version
7302 number for shared libraries, then you might want to use $majonly.
7303 Or, your system might be quite happy with a simple libperl.$so.
7304
7305 Since the shared libperl will get installed into a version-specific
7306 architecture-dependent directory, the version number of the shared perl
7307 library probably isn't important, so the default should be o.k.
7308
7309 EOM
7310         rp='What name do you want to give to the shared libperl?'
7311         . ./myread
7312         libperl=$ans
7313         echo "Ok, I'll use $libperl"
7314         ;;
7315 *)
7316         libperl="libperl${_a}"
7317         ;;
7318 esac
7319
7320 # Detect old use of shrpdir via undocumented Configure -Dshrpdir
7321 case "$shrpdir" in
7322 '') ;;
7323 *)      $cat >&4 <<EOM
7324 WARNING:  Use of the shrpdir variable for the installation location of
7325 the shared $libperl is not supported.  It was never documented and
7326 will not work in this version.  Let me (perlbug@perl.org)
7327 know of any problems this may cause.
7328
7329 EOM
7330         case "$shrpdir" in
7331         "$archlibexp/CORE")
7332                 $cat >&4 <<EOM
7333 But your current setting of $shrpdir is
7334 the default anyway, so it's harmless.
7335 EOM
7336                 ;;
7337         *)
7338                 $cat >&4 <<EOM
7339 Further, your current attempted setting of $shrpdir
7340 conflicts with the value of $archlibexp/CORE
7341 that installperl will use.
7342 EOM
7343                 ;;
7344         esac
7345         ;;
7346 esac
7347
7348 # How will the perl executable find the installed shared $libperl?
7349 # Add $xxx to ccdlflags.
7350 # If we can't figure out a command-line option, use $shrpenv to
7351 # set env LD_RUN_PATH.  The main perl makefile uses this.
7352 shrpdir=$archlibexp/CORE
7353 xxx=''
7354 tmp_shrpenv=''
7355 if "$useshrplib"; then
7356     case "$osname" in 
7357         aix)
7358                 # We'll set it in Makefile.SH...
7359                 ;;
7360         solaris|netbsd)
7361                 xxx="-R $shrpdir"
7362                 ;;
7363         freebsd)
7364                 xxx="-Wl,-R$shrpdir"
7365                 ;;
7366         linux|irix*|dec_osf)
7367                 xxx="-Wl,-rpath,$shrpdir"
7368                 ;;
7369         next)
7370                 # next doesn't like the default...
7371                 ;;
7372         beos)
7373                 # beos doesn't like the default, either.
7374                 ;;
7375         hpux*)
7376                 # hpux doesn't like the default, either.
7377                 tmp_shrpenv="env LDOPTS=\"+s +b${shrpdir}\""
7378                 ;;
7379         *)
7380                 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
7381                 ;;
7382         esac
7383         case "$xxx" in
7384         '') ;;
7385         *)      
7386                 # Only add $xxx if it isn't already in ccdlflags.
7387                 case " $ccdlflags " in
7388                 *" $xxx "*)     ;;
7389                 *)      ccdlflags="$ccdlflags $xxx"
7390                         cat <<EOM >&4
7391
7392 Adding $xxx to the flags
7393 passed to $ld so that the perl executable will find the 
7394 installed shared $libperl.
7395
7396 EOM
7397                         ;;
7398                 esac
7399                 ;;
7400         esac
7401 fi
7402 # Fix ccdlflags in AIX for building external extensions.
7403 # (For building Perl itself bare -bE:perl.exp is needed,
7404 #  Makefile.SH takes care of this.)
7405 case "$osname" in
7406 aix) ccdlflags="$ccdlflags -bE:$installarchlib/CORE/perl.exp" ;;
7407 esac
7408 # Respect a hint or command-line value.
7409 case "$shrpenv" in
7410 '') shrpenv="$tmp_shrpenv" ;;
7411 esac
7412 case "$ldlibpthname" in
7413 '')     ldlibpthname=LD_LIBRARY_PATH ;;
7414 none)   ldlibpthname='' ;;
7415 esac
7416
7417 : determine where manual pages are on this system
7418 echo " "
7419 case "$sysman" in
7420 '') 
7421         syspath='/usr/share/man/man1 /usr/man/man1'
7422         syspath="$syspath /usr/man/mann /usr/man/manl /usr/man/local/man1"
7423         syspath="$syspath /usr/man/u_man/man1"
7424         syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
7425         syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
7426         syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
7427         sysman=`./loc . /usr/man/man1 $syspath`
7428         ;;
7429 esac
7430 if $test -d "$sysman"; then
7431         echo "System manual is in $sysman." >&4
7432 else
7433         echo "Could not find manual pages in source form." >&4
7434 fi
7435
7436 : determine where manual pages go
7437 set man1dir man1dir none
7438 eval $prefixit
7439 $cat <<EOM
7440
7441 $spackage has manual pages available in source form.
7442 EOM
7443 case "$nroff" in
7444 nroff)
7445         echo "However, you don't have nroff, so they're probably useless to you."
7446         case "$man1dir" in
7447         '') man1dir="none";;
7448         esac;;
7449 esac
7450 echo "If you don't want the manual sources installed, answer 'none'."
7451 case "$man1dir" in
7452 ' ') dflt=none
7453         ;;
7454 '')
7455         lookpath="$prefixexp/share/man/man1"
7456         lookpath="$lookpath $prefixexp/man/man1 $prefixexp/man/l_man/man1"
7457         lookpath="$lookpath $prefixexp/man/p_man/man1"
7458         lookpath="$lookpath $prefixexp/man/u_man/man1"
7459         lookpath="$lookpath $prefixexp/man/man.1"
7460         case "$sysman" in
7461         */?_man*)       dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
7462         *)      dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
7463         esac
7464         set dflt
7465         eval $prefixup
7466         ;;
7467 *)  dflt="$man1dir"
7468         ;;
7469 esac
7470 echo " "
7471 fn=dn+~
7472 rp="Where do the main $spackage manual pages (source) go?"
7473 . ./getfile
7474 if $test "X$man1direxp" != "X$ansexp"; then
7475         installman1dir=''
7476 fi
7477 man1dir="$ans"
7478 man1direxp="$ansexp"
7479 case "$man1dir" in
7480 '')     man1dir=' '
7481         installman1dir='';;
7482 esac
7483
7484 : Change installation prefix, if necessary.
7485 if $test X"$prefix" != X"$installprefix"; then
7486         installman1dir=`echo $man1direxp | $sed "s#^$prefix#$installprefix#"`
7487 else
7488         installman1dir="$man1direxp"
7489 fi
7490
7491 : What suffix to use on installed man pages
7492
7493 case "$man1dir" in
7494 ' ')
7495         man1ext='0'
7496         ;;
7497 *)
7498         rp="What suffix should be used for the main $spackage man pages?"
7499         case "$man1ext" in
7500         '')     case "$man1dir" in
7501                 *1)  dflt=1 ;;
7502                 *1p) dflt=1p ;;
7503                 *1pm) dflt=1pm ;;
7504                 *l) dflt=l;;
7505                 *n) dflt=n;;
7506                 *o) dflt=o;;
7507                 *p) dflt=p;;
7508                 *C) dflt=C;;
7509                 *L) dflt=L;;
7510                 *L1) dflt=L1;;
7511                 *) dflt=1;;
7512                 esac
7513                 ;;
7514         *)      dflt="$man1ext";;
7515         esac
7516         . ./myread
7517         man1ext="$ans"
7518         ;;
7519 esac
7520
7521 : see if we can have long filenames
7522 echo " "
7523 first=123456789abcdef
7524 $rm -f $first
7525 if (echo hi >$first) 2>/dev/null; then
7526         if $test -f 123456789abcde; then
7527                 echo 'You cannot have filenames longer than 14 characters.  Sigh.' >&4
7528                 val="$undef"
7529         else
7530                 echo 'You can have filenames longer than 14 characters.'>&4
7531                 val="$define"
7532         fi
7533 else
7534         $cat <<'EOM'
7535 You can't have filenames longer than 14 chars.
7536 You can't even think about them!
7537 EOM
7538         val="$undef"
7539 fi 
7540 set d_flexfnam
7541 eval $setvar
7542 $rm -rf 123456789abcde*
7543
7544 : determine where library module manual pages go
7545 set man3dir man3dir none
7546 eval $prefixit
7547 $cat <<EOM
7548
7549 $spackage has manual pages for many of the library modules.
7550 EOM
7551
7552 case "$nroff" in
7553 nroff)
7554         $cat <<'EOM'
7555 However, you don't have nroff, so they're probably useless to you.
7556 EOM
7557         case "$man3dir" in
7558         '') man3dir="none";;
7559         esac;;
7560 esac
7561
7562 case "$d_flexfnam" in
7563 undef)
7564         $cat <<'EOM'
7565 However, your system can't handle the long file names like File::Basename.3. 
7566 EOM
7567         case "$man3dir" in
7568         '') man3dir="none";;
7569         esac;;
7570 esac
7571
7572 echo "If you don't want the manual sources installed, answer 'none'."
7573 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
7574 case "$man3dir" in
7575 '')     dflt=`echo "$man1dir" | $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'`
7576         if $test -d "$privlib/man/man3"; then
7577                 cat <<EOM >&4
7578
7579 WARNING:  Previous versions of perl installed man3 pages into
7580 $privlib/man/man3.  This version will suggest a 
7581 new default of $dflt.  
7582 EOM
7583                 tdflt=$dflt
7584                 dflt='n'
7585                 rp='Do you wish to preserve the old behavior?(y/n)'
7586                 . ./myread
7587                 case "$ans" in
7588                 y*) dflt="$privlib/man/man3" ;;
7589                 *)  dflt=$tdflt ;;
7590                 esac
7591     fi
7592         ;;
7593 *)      dflt="$man3dir" ;;
7594 esac
7595 case "$dflt" in
7596 ' ') dflt=none ;;
7597 esac
7598 echo " "
7599 fn=dn+~
7600 rp="Where do the $package library man pages (source) go?"
7601 . ./getfile
7602 man3dir="$ans"
7603 man3direxp="$ansexp"
7604 case "$man3dir" in
7605 '')     man3dir=' '
7606         installman3dir='';;
7607 esac
7608
7609 : Change installation prefix, if necessary.
7610 if $test X"$prefix" != X"$installprefix"; then
7611         installman3dir=`echo $man3direxp | $sed "s#^$prefix#$installprefix#"`
7612 else
7613         installman3dir="$man3direxp"
7614 fi
7615
7616 : What suffix to use on installed man pages
7617 case "$man3dir" in
7618 ' ')
7619         man3ext='0'
7620         ;;
7621 *)
7622         rp="What suffix should be used for the $package library man pages?"
7623         case "$man3ext" in
7624         '')     case "$man3dir" in
7625                 *3)  dflt=3 ;;
7626                 *3p) dflt=3p ;;
7627                 *3pm) dflt=3pm ;;
7628                 *l) dflt=l;;
7629                 *n) dflt=n;;
7630                 *o) dflt=o;;
7631                 *p) dflt=p;;
7632                 *C) dflt=C;;
7633                 *L) dflt=L;;
7634                 *L3) dflt=L3;;
7635                 *) dflt=3;;
7636                 esac
7637                 ;;
7638         *)      dflt="$man3ext";;
7639         esac
7640         . ./myread
7641         man3ext="$ans"
7642         ;;
7643 esac
7644
7645 : see if we have to deal with yellow pages, now NIS.
7646 if $test -d /usr/etc/yp || $test -d /etc/yp; then
7647         if $test -f /usr/etc/nibindd; then
7648                 echo " "
7649                 echo "I'm fairly confident you're on a NeXT."
7650                 echo " "
7651                 rp='Do you get the hosts file via NetInfo?'
7652                 dflt=y
7653                 case "$hostcat" in
7654                 nidump*) ;;
7655                 '') ;;
7656                 *) dflt=n;;
7657                 esac
7658                 . ./myread
7659                 case "$ans" in
7660                 y*) hostcat='nidump hosts .';;
7661                 *)      case "$hostcat" in
7662                         nidump*) hostcat='';;
7663                         esac
7664                         ;;
7665                 esac
7666         fi
7667         case "$hostcat" in
7668         nidump*) ;;
7669         *)
7670                 case "$hostcat" in
7671                 *ypcat*) dflt=y;;
7672                 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
7673                                 dflt=y
7674                         else
7675                                 dflt=n
7676                         fi;;
7677                 *) dflt=n;;
7678                 esac
7679                 echo " "
7680                 rp='Are you getting the hosts file via yellow pages?'
7681                 . ./myread
7682                 case "$ans" in
7683                 y*) hostcat='ypcat hosts';;
7684                 *) hostcat='cat /etc/hosts';;
7685                 esac
7686                 ;;
7687         esac
7688 fi
7689 case "$hostcat" in
7690 '') test -f /etc/hosts && hostcat='cat /etc/hosts';;
7691 esac
7692 case "$groupcat" in
7693 '') test -f /etc/group && groupcat='cat /etc/group';;
7694 esac
7695 case "$passcat" in
7696 '') test -f /etc/passwd && passcat='cat /etc/passwd';;
7697 esac
7698
7699 : now get the host name
7700 echo " "
7701 echo "Figuring out host name..." >&4
7702 case "$myhostname" in
7703 '') cont=true
7704         echo 'Maybe "hostname" will work...'
7705         if tans=`sh -c hostname 2>&1` ; then
7706                 myhostname=$tans
7707                 phostname=hostname
7708                 cont=''
7709         fi
7710         ;;
7711 *) cont='';;
7712 esac
7713 if $test "$cont"; then
7714         if ./xenix; then
7715                 echo 'Oh, dear.  Maybe "/etc/systemid" is the key...'
7716                 if tans=`cat /etc/systemid 2>&1` ; then
7717                         myhostname=$tans
7718                         phostname='cat /etc/systemid'
7719                         echo "Whadyaknow.  Xenix always was a bit strange..."
7720                         cont=''
7721                 fi
7722         elif $test -r /etc/systemid; then
7723                 echo "(What is a non-Xenix system doing with /etc/systemid?)"
7724         fi
7725 fi
7726 if $test "$cont"; then
7727         echo 'No, maybe "uuname -l" will work...'
7728         if tans=`sh -c 'uuname -l' 2>&1` ; then
7729                 myhostname=$tans
7730                 phostname='uuname -l'
7731         else
7732                 echo 'Strange.  Maybe "uname -n" will work...'
7733                 if tans=`sh -c 'uname -n' 2>&1` ; then
7734                         myhostname=$tans
7735                         phostname='uname -n'
7736                 else
7737                         echo 'Oh well, maybe I can mine it out of whoami.h...'
7738                         if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
7739                                 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
7740                                 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
7741                         else
7742                                 case "$myhostname" in
7743                                 '') echo "Does this machine have an identity crisis or something?"
7744                                         phostname='';;
7745                                 *)
7746                                         echo "Well, you said $myhostname before..."
7747                                         phostname='echo $myhostname';;
7748                                 esac
7749                         fi
7750                 fi
7751         fi
7752 fi
7753 : you do not want to know about this
7754 set $myhostname
7755 myhostname=$1
7756
7757 : verify guess
7758 if $test "$myhostname" ; then
7759         dflt=y
7760         rp='Your host name appears to be "'$myhostname'".'" Right?"
7761         . ./myread
7762         case "$ans" in
7763         y*) ;;
7764         *) myhostname='';;
7765         esac
7766 fi
7767
7768 : bad guess or no guess
7769 while $test "X$myhostname" = X ; do
7770         dflt=''
7771         rp="Please type the (one word) name of your host:"
7772         . ./myread
7773         myhostname="$ans"
7774 done
7775
7776 : translate upper to lower if necessary
7777 case "$myhostname" in
7778 *[A-Z]*)
7779         echo "(Normalizing case in your host name)"
7780         myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
7781         ;;
7782 esac
7783
7784 case "$myhostname" in
7785 *.*)
7786         dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
7787         myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
7788         echo "(Trimming domain name from host name--host name is now $myhostname)"
7789         ;;
7790 *) case "$mydomain" in
7791         '')
7792                 {
7793                         test "X$hostcat" = "Xypcat hosts" &&
7794                         ypmatch "$myhostname" hosts 2>/dev/null |\
7795                                 $sed -e 's/[     ]*#.*//; s/$/ /' > hosts && \
7796                         $test -s hosts
7797                 } || {
7798                         test "X$hostcat" != "X" &&
7799                         $hostcat | $sed -n -e "s/[       ]*#.*//; s/\$/ /
7800                                         /[       ]$myhostname[  . ]/p" > hosts
7801                 }
7802                 tmp_re="[       . ]"
7803                 if $test -f hosts; then
7804                         $test x`$awk "/[0-9].*[  ]$myhostname$tmp_re/ { sum++ }
7805                              END { print sum }" hosts` = x1 || tmp_re="[         ]"
7806                         dflt=.`$awk "/[0-9].*[   ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
7807                                 hosts | $sort | $uniq | \
7808                                 $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
7809                         case `$echo X$dflt` in
7810                         X*\ *)  echo "(Several hosts in the database matched hostname)"
7811                                 dflt=.
7812                                 ;;
7813                         X.) echo "(You do not have fully-qualified names in the hosts database)"
7814                                 ;;
7815                         esac
7816                 else
7817                         echo "(I cannot locate a hosts database anywhere)"
7818                         dflt=.
7819                 fi
7820                 case "$dflt" in
7821                 .)
7822                         tans=`./loc resolv.conf X /etc /usr/etc`
7823                         if $test -f "$tans"; then
7824                                 echo "(Attempting domain name extraction from $tans)"
7825                                 dflt=.`$sed -n -e 's/   / /g' \
7826                                   -e 's/^search  *\([^ ]*\).*/\1/p' $tans \
7827                                   | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
7828                                 case "$dflt" in
7829                                 .) dflt=.`$sed -n -e 's/        / /g' \
7830                                      -e 's/^domain  *\([^ ]*\).*/\1/p' $tans \
7831                                      | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
7832                                         ;;
7833                                 esac
7834                         fi
7835                         ;;
7836                 esac
7837                 case "$dflt" in
7838                 .) echo "(No help from resolv.conf either -- attempting clever guess)"
7839                         dflt=.`sh -c domainname 2>/dev/null`
7840                         case "$dflt" in
7841                         '') dflt='.';;
7842                         .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
7843                         esac
7844                         ;;
7845                 esac
7846                 case "$dflt$osname" in
7847                 .os390) echo "(Attempting domain name extraction from //'SYS1.TCPPARMS(TCPDATA)')"
7848                         dflt=.`awk '/^DOMAINORIGIN/ {print $2}' "//'SYS1.TCPPARMS(TCPDATA)'" 2>/dev/null`
7849                         ;;
7850                 esac
7851                 case "$dflt" in
7852                 .) echo "(Lost all hope -- silly guess then)"
7853                         dflt='.uucp'
7854                         ;;
7855                 esac
7856                 $rm -f hosts
7857                 ;;
7858         *) dflt="$mydomain";;
7859         esac;;
7860 esac
7861 echo " "
7862 rp="What is your domain name?"
7863 . ./myread
7864 tans="$ans"
7865 case "$ans" in
7866 '') ;;
7867 .*) ;;
7868 *) tans=".$tans";;
7869 esac
7870 mydomain="$tans"
7871
7872 : translate upper to lower if necessary
7873 case "$mydomain" in
7874 *[A-Z]*)
7875         echo "(Normalizing case in your domain name)"
7876         mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
7877         ;;
7878 esac
7879
7880 : a little sanity check here
7881 case "$phostname" in
7882 '') ;;
7883 *)
7884         case `$phostname | ./tr '[A-Z]' '[a-z]'` in
7885         $myhostname$mydomain|$myhostname) ;;
7886         *)
7887                 case "$phostname" in
7888                 sed*)
7889                         echo "(That doesn't agree with your whoami.h file, by the way.)"
7890                         ;;
7891                 *)
7892                         echo "(That doesn't agree with your $phostname command, by the way.)"
7893                         ;;
7894                 esac
7895         ;;
7896         esac
7897         ;;
7898 esac
7899
7900 $cat <<EOM
7901
7902 I need to get your e-mail address in Internet format if possible, i.e.
7903 something like user@host.domain. Please answer accurately since I have
7904 no easy means to double check it. The default value provided below
7905 is most probably close to reality but may not be valid from outside
7906 your organization...
7907
7908 EOM
7909 cont=x
7910 while test "$cont"; do
7911         case "$cf_email" in
7912         '') dflt="$cf_by@$myhostname$mydomain";;
7913         *) dflt="$cf_email";;
7914         esac
7915         rp='What is your e-mail address?'
7916         . ./myread
7917         cf_email="$ans"
7918         case "$cf_email" in
7919         *@*.*) cont='' ;;
7920         *)
7921                 rp='Address does not look like an Internet one.  Use it anyway?'
7922                 case "$fastread" in
7923                 yes) dflt=y ;;
7924                 *) dflt=n ;;
7925                 esac
7926                 . ./myread
7927                 case "$ans" in
7928                 y*) cont='' ;;
7929                 *) echo " " ;;
7930                 esac
7931                 ;;
7932         esac
7933 done
7934
7935 $cat <<EOM
7936
7937 If you or somebody else will be maintaining perl at your site, please
7938 fill in the correct e-mail address here so that they may be contacted
7939 if necessary. Currently, the "perlbug" program included with perl
7940 will send mail to this address in addition to perlbug@perl.org. You may
7941 enter "none" for no administrator.
7942
7943 EOM
7944 case "$perladmin" in
7945 '') dflt="$cf_email";;
7946 *) dflt="$perladmin";;
7947 esac
7948 rp='Perl administrator e-mail address'
7949 . ./myread
7950 perladmin="$ans"
7951
7952 : determine whether to only install version-specific parts.
7953 echo " "
7954 $cat <<EOM
7955 Do you want to install only the version-specific parts of the perl
7956 distribution?  Usually you do *not* want to do this.
7957 EOM
7958 case "$versiononly" in
7959 "$define"|[Yy]*|true) dflt='y' ;;
7960 *) dflt='n';
7961 esac
7962 rp="Do you want to install only the version-specific parts of perl?"
7963 . ./myread
7964 case "$ans" in
7965 [yY]*)  val="$define";;
7966 *)      val="$undef" ;;
7967 esac
7968 set versiononly
7969 eval $setvar
7970
7971 : figure out how to guarantee perl startup
7972 case "$startperl" in
7973 '')
7974         case "$sharpbang" in
7975         *!)
7976                 $cat <<EOH
7977
7978 I can use the #! construct to start perl on your system. This will
7979 make startup of perl scripts faster, but may cause problems if you
7980 want to share those scripts and perl is not in a standard place
7981 ($binexp/perl) on all your platforms. The alternative is to force
7982 a shell by starting the script with a single ':' character.
7983
7984 EOH
7985                 case "$versiononly" in
7986                 "$define")      dflt="$binexp/perl$version";;  
7987                 *)              dflt="$binexp/perl";;
7988                 esac
7989                 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
7990                 . ./myread
7991                 case "$ans" in
7992                 none)   startperl=": # use perl";;
7993                 *)      startperl="#!$ans"
7994                         if $test 30 -lt `echo "$ans" | wc -c`; then
7995                                 $cat >&4 <<EOM
7996
7997 WARNING:  Some systems limit the #! command to 32 characters.
7998 If you experience difficulty running Perl scripts with #!, try
7999 installing Perl in a directory with a shorter pathname.
8000
8001 EOM
8002                         fi ;;
8003                 esac
8004                 ;;
8005         *) startperl=": # use perl"
8006                 ;;
8007         esac
8008         ;;
8009 esac
8010 echo "I'll use $startperl to start perl scripts."
8011
8012 : figure best path for perl in scripts
8013 case "$perlpath" in
8014 '')
8015         perlpath="$binexp/perl"
8016         case "$startperl" in
8017         *!*) ;;
8018         *)
8019                 $cat <<EOH
8020
8021 I will use the "eval 'exec'" idiom to start Perl on your system.
8022 I can use the full path of your Perl binary for this purpose, but
8023 doing so may cause problems if you want to share those scripts and
8024 Perl is not always in a standard place ($binexp/perl).
8025
8026 EOH
8027                 dflt="$binexp/perl"
8028                 rp="What path shall I use in \"eval 'exec'\"?"
8029                 . ./myread
8030                 perlpath="$ans"
8031                 ;;
8032         esac
8033         ;;
8034 esac
8035 case "$startperl" in
8036 *!*)    ;;
8037 *)      echo "I'll use $perlpath in \"eval 'exec'\"" ;;
8038 esac
8039
8040 : determine where public executable scripts go
8041 set scriptdir scriptdir
8042 eval $prefixit
8043 case "$scriptdir" in
8044 '')
8045         dflt="$bin"
8046         : guess some guesses
8047         $test -d /usr/share/scripts && dflt=/usr/share/scripts
8048         $test -d /usr/share/bin     && dflt=/usr/share/bin
8049         $test -d /usr/local/script  && dflt=/usr/local/script
8050         $test -d /usr/local/scripts && dflt=/usr/local/scripts
8051         $test -d $prefixexp/script  && dflt=$prefixexp/script
8052         set dflt
8053         eval $prefixup
8054         ;;
8055 *)  dflt="$scriptdir"
8056         ;;
8057 esac
8058 $cat <<EOM
8059  
8060 Some installations have a separate directory just for executable scripts so
8061 that they can mount it across multiple architectures but keep the scripts in
8062 one spot.  You might, for example, have a subdirectory of /usr/share for this.
8063 Or you might just lump your scripts in with all your other executables.
8064  
8065 EOM
8066 fn=d~
8067 rp='Where do you keep publicly executable scripts?'
8068 . ./getfile
8069 if $test "X$ansexp" != "X$scriptdirexp"; then
8070         installscript=''
8071 fi
8072 scriptdir="$ans"
8073 scriptdirexp="$ansexp"
8074 : Change installation prefix, if necessary.
8075 if $test X"$prefix" != X"$installprefix"; then
8076         installscript=`echo $scriptdirexp | sed "s#^$prefix#$installprefix#"`
8077 else
8078         installscript="$scriptdirexp"
8079 fi
8080
8081 : determine where add-on public executables go
8082 case "$sitebin" in
8083 '')     dflt=$siteprefix/bin ;;
8084 *)      dflt=$sitebin ;;
8085 esac
8086 fn=d~
8087 rp='Pathname where the add-on public executables should be installed?'
8088 . ./getfile
8089 sitebin="$ans"
8090 sitebinexp="$ansexp"
8091 : Change installation prefix, if necessary.
8092 if $test X"$prefix" != X"$installprefix"; then
8093         installsitebin=`echo $sitebinexp | sed "s#^$prefix#$installprefix#"`
8094 else
8095         installsitebin="$sitebinexp"
8096 fi
8097
8098 : define an is-a-typedef? function
8099 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
8100 case "$inclist" in
8101 "") inclist="sys/types.h";;
8102 esac;
8103 eval "varval=\$$var";
8104 case "$varval" in
8105 "")
8106         $rm -f temp.c;
8107         for inc in $inclist; do
8108                 echo "#include <$inc>" >>temp.c;
8109         done;
8110         echo "#ifdef $type" >> temp.c;
8111         echo "printf(\"We have $type\");" >> temp.c;
8112         echo "#endif" >> temp.c;
8113         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
8114         if $contains $type temp.E >/dev/null 2>&1; then
8115                 eval "$var=\$type";
8116         else
8117                 eval "$var=\$def";
8118         fi;
8119         $rm -f temp.?;;
8120 *) eval "$var=\$varval";;
8121 esac'
8122
8123 : define an is-a-typedef? function that prompts if the type is not available.
8124 typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
8125 case "$inclist" in
8126 "") inclist="sys/types.h";;
8127 esac;
8128 eval "varval=\$$var";
8129 case "$varval" in
8130 "")
8131         $rm -f temp.c;
8132         for inc in $inclist; do
8133                 echo "#include <$inc>" >>temp.c;
8134         done;
8135         echo "#ifdef $type" >> temp.c;
8136         echo "printf(\"We have $type\");" >> temp.c;
8137         echo "#endif" >> temp.c;
8138         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
8139         echo " " ;
8140         echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
8141         if $contains $type temp.E >/dev/null 2>&1; then
8142                 echo "$type found." >&4;
8143                 eval "$var=\$type";
8144         else
8145                 echo "$type NOT found." >&4;
8146                 dflt="$def";
8147                 . ./myread ;
8148                 eval "$var=\$ans";
8149         fi;
8150         $rm -f temp.?;;
8151 *) eval "$var=\$varval";;
8152 esac'
8153
8154 : see what type lseek is declared as in the kernel
8155 rp="What is the type used for lseek's offset on this system?"
8156 set off_t lseektype long stdio.h sys/types.h
8157 eval $typedef_ask
8158
8159 echo " "
8160 echo "Checking to see how big your file offsets are..." >&4
8161 $cat >try.c <<EOCP
8162 #include <sys/types.h>
8163 #include <stdio.h>
8164 int main()
8165 {
8166     printf("%d\n", (int)sizeof($lseektype));
8167     return(0); 
8168 }
8169 EOCP
8170 set try
8171 if eval $compile_ok; then
8172         lseeksize=`$run ./try`
8173         echo "Your file offsets are $lseeksize bytes long."
8174 else
8175         dflt=$longsize
8176         echo " "
8177         echo "(I can't seem to compile the test program.  Guessing...)"
8178         rp="What is the size of your file offsets (in bytes)?"
8179         . ./myread
8180         lseeksize="$ans"
8181 fi
8182 $rm -f try.c try
8183
8184 : see what type file positions are declared as in the library
8185 rp="What is the type for file position used by fsetpos()?"
8186 set fpos_t fpostype long stdio.h sys/types.h
8187 eval $typedef_ask
8188
8189 echo " "
8190 case "$fpostype" in
8191 *_t) zzz="$fpostype"    ;;
8192 *)   zzz="fpos_t"       ;;
8193 esac
8194 echo "Checking the size of $zzz..." >&4 
8195 cat > try.c <<EOCP
8196 #include <sys/types.h>
8197 #include <stdio.h>
8198 int main() {
8199     printf("%d\n", (int)sizeof($fpostype));
8200     exit(0);
8201 }
8202 EOCP
8203 set try
8204 if eval $compile_ok; then
8205         yyy=`$run ./try`
8206         case "$yyy" in
8207         '')     fpossize=4
8208                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
8209                 ;;
8210         *)      fpossize=$yyy
8211                 echo "Your $zzz is $fpossize bytes long."
8212                 ;;
8213         esac
8214 else
8215         dflt="$longsize"
8216         echo " " >&4
8217         echo "(I can't compile the test program.  Guessing...)" >&4
8218         rp="What is the size of your file positions (in bytes)?"
8219         . ./myread
8220         fpossize="$ans"
8221 fi
8222
8223
8224
8225 # Backward compatibility (uselfs is deprecated).
8226 case "$uselfs" in
8227 "$define"|true|[yY]*)
8228         cat <<EOM >&4
8229
8230 *** Configure -Duselfs is deprecated, using -Duselargefiles instead.
8231 EOM
8232         uselargefiles="$define"
8233         ;;
8234 esac                          
8235
8236 case "$lseeksize:$fpossize" in
8237 8:8) cat <<EOM
8238
8239 You can have files larger than 2 gigabytes.
8240 EOM
8241    val="$define" ;;
8242 *)    case "$uselargefiles" in
8243    "$undef"|false|[nN]*) dflt='n' ;;
8244    *)   dflt='y' ;;
8245    esac
8246    cat <<EOM
8247
8248 Perl can be built to understand large files (files larger than 2 gigabytes)
8249 on some systems.  To do so, Configure can be run with -Duselargefiles.
8250
8251 If this doesn't make any sense to you, just accept the default '$dflt'.
8252 EOM
8253    rp='Try to understand large files, if available?'
8254    . ./myread
8255    case "$ans" in
8256    y|Y)         val="$define" ;;
8257    *)           val="$undef"  ;;
8258    esac
8259    ;;
8260 esac
8261 set uselargefiles
8262 eval $setvar
8263 case "$uselargefiles" in
8264 "$define")
8265 : Look for a hint-file generated 'call-back-unit'.  If the
8266 : user has specified that a large files perl is to be built,
8267 : we may need to set or change some other defaults.
8268         if $test -f uselargefiles.cbu; then
8269                 echo "Your platform has some specific hints for large file builds, using them..."
8270                 . ./uselargefiles.cbu
8271                 echo " "
8272                 echo "Rechecking to see how big your file offsets are..." >&4
8273                 $cat >try.c <<EOCP
8274 #include <sys/types.h>
8275 #include <stdio.h>
8276 int main()
8277 {
8278     printf("%d\n", (int)sizeof($lseektype));
8279     return(0); 
8280 }
8281 EOCP
8282                 set try
8283                 if eval $compile_ok; then
8284                         lseeksize=`$run ./try`
8285                         $echo "Your file offsets are now $lseeksize bytes long."
8286                 else
8287                         dflt="$lseeksize"
8288                         echo " "
8289                         echo "(I can't seem to compile the test program.  Guessing...)"
8290                         rp="What is the size of your file offsets (in bytes)?"
8291                         . ./myread
8292                         lseeksize="$ans"
8293                 fi
8294                 case "$fpostype" in
8295                 *_t) zzz="$fpostype"    ;;
8296                 *)   zzz="fpos_t"       ;;
8297                 esac
8298                 $echo $n "Rechecking the size of $zzz...$c" >&4 
8299                 $cat > try.c <<EOCP
8300 #include <sys/types.h>
8301 #include <stdio.h>
8302 int main() {
8303     printf("%d\n", (int)sizeof($fpostype));
8304     exit(0);
8305 }
8306 EOCP
8307                 set try
8308                 if eval $compile_ok; then
8309                         yyy=`$run ./try`
8310                         dflt="$lseeksize"
8311                         case "$yyy" in
8312                         '')     echo " "
8313                                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
8314                                 ;;
8315                         *)      fpossize=$yyy
8316                                 echo " $fpossize bytes." >&4
8317                                 ;;
8318                         esac
8319                 else
8320                         dflt="$fpossize"
8321                         echo " "
8322                         echo "(I can't compile the test program.  Guessing...)" >&4
8323                         rp="What is the size of your file positions (in bytes)?"
8324                         . ./myread
8325                         fpossize="$ans"
8326                 fi
8327                 $rm -f try.c try
8328         fi
8329         ;;
8330 esac
8331
8332 case "$vendorprefix" in
8333 '')     d_vendorbin="$undef"
8334         vendorbin=''
8335         vendorbinexp=''
8336         ;;
8337 *)      d_vendorbin="$define"
8338         : determine where vendor-supplied executables go.
8339         case "$vendorbin" in
8340         '') dflt=$vendorprefix/bin ;;
8341         *)      dflt="$vendorbin" ;;
8342         esac
8343         fn=d~+
8344         rp='Pathname for the vendor-supplied executables directory?'
8345         . ./getfile
8346         vendorbin="$ans"
8347         vendorbinexp="$ansexp"
8348         ;;
8349 esac
8350 : Change installation prefix, if necessary.
8351 if $test X"$prefix" != X"$installprefix"; then
8352         installvendorbin=`echo $vendorbinexp | $sed "s#^$prefix#$installprefix#"`
8353 else
8354         installvendorbin="$vendorbinexp"
8355 fi
8356
8357 : see if qgcvt exists
8358 set qgcvt d_qgcvt
8359 eval $inlibc
8360
8361 echo " "
8362
8363 if $test X"$d_longdbl" = X"$define"; then
8364
8365 echo "Checking how to print long doubles..." >&4
8366
8367 if $test X"$sPRIfldbl" = X -a X"$doublesize" = X"$longdblsize"; then
8368         $cat >try.c <<'EOCP'
8369 #include <sys/types.h>
8370 #include <stdio.h>
8371 int main() {
8372   double d = 123.456;
8373   printf("%.3f\n", d);
8374 }
8375 EOCP
8376         set try
8377         if eval $compile; then
8378                 yyy=`$run ./try`
8379                 case "$yyy" in
8380                 123.456)
8381                         sPRIfldbl='"f"'; sPRIgldbl='"g"'; sPRIeldbl='"e"';
8382                         sPRIFUldbl='"F"'; sPRIGUldbl='"G"'; sPRIEUldbl='"E"';
8383                         echo "We will use %f."
8384                         ;;
8385                 esac
8386         fi
8387 fi
8388
8389 if $test X"$sPRIfldbl" = X; then
8390         $cat >try.c <<'EOCP'
8391 #include <sys/types.h>
8392 #include <stdio.h>
8393 int main() {
8394   long double d = 123.456;
8395   printf("%.3Lf\n", d);
8396 }
8397 EOCP
8398         set try
8399         if eval $compile; then
8400                 yyy=`$run ./try`
8401                 case "$yyy" in
8402                 123.456)
8403                         sPRIfldbl='"Lf"'; sPRIgldbl='"Lg"'; sPRIeldbl='"Le"';
8404                         sPRIFUldbl='"LF"'; sPRIGUldbl='"LG"'; sPRIEUldbl='"LE"';
8405                         echo "We will use %Lf."
8406                         ;;
8407                 esac
8408         fi
8409 fi
8410
8411 if $test X"$sPRIfldbl" = X; then
8412         $cat >try.c <<'EOCP'
8413 #include <sys/types.h>
8414 #include <stdio.h>
8415 int main() {
8416   long double d = 123.456;
8417   printf("%.3llf\n", d);
8418 }
8419 EOCP
8420         set try
8421         if eval $compile; then
8422                 yyy=`$run ./try`
8423                 case "$yyy" in
8424                 123.456)
8425                         sPRIfldbl='"llf"'; sPRIgldbl='"llg"'; sPRIeldbl='"lle"';
8426                         sPRIFUldbl='"llF"'; sPRIGUldbl='"llG"'; sPRIEUldbl='"llE"';
8427                         echo "We will use %llf."
8428                         ;;
8429                 esac
8430         fi
8431 fi
8432
8433 if $test X"$sPRIfldbl" = X; then
8434         $cat >try.c <<'EOCP'
8435 #include <sys/types.h>
8436 #include <stdio.h>
8437 int main() {
8438   long double d = 123.456;
8439   printf("%.3lf\n", d);
8440 }
8441 EOCP
8442         set try
8443         if eval $compile; then
8444                 yyy=`$run ./try`
8445                 case "$yyy" in
8446                 123.456)
8447                         sPRIfldbl='"lf"'; sPRIgldbl='"lg"'; sPRIeldbl='"le"';
8448                         sPRIFUldbl='"lF"'; sPRIGUldbl='"lG"'; sPRIEUldbl='"lE"';
8449                         echo "We will use %lf."
8450                         ;;
8451                 esac
8452         fi
8453 fi
8454
8455 if $test X"$sPRIfldbl" = X; then
8456         echo "Cannot figure out how to print long doubles." >&4
8457 else
8458         sSCNfldbl=$sPRIfldbl    # expect consistency
8459 fi
8460
8461 $rm -f try try.*
8462
8463 fi # d_longdbl
8464
8465 case "$sPRIfldbl" in
8466 '')     d_PRIfldbl="$undef"; d_PRIgldbl="$undef"; d_PRIeldbl="$undef"; 
8467         d_PRIFUldbl="$undef"; d_PRIGUldbl="$undef"; d_PRIEUldbl="$undef"; 
8468         d_SCNfldbl="$undef";
8469         ;;
8470 *)      d_PRIfldbl="$define"; d_PRIgldbl="$define"; d_PRIeldbl="$define"; 
8471         d_PRIFUldbl="$define"; d_PRIGUldbl="$define"; d_PRIEUldbl="$define"; 
8472         d_SCNfldbl="$define";
8473         ;;
8474 esac
8475
8476 : Check how to convert floats to strings.
8477 echo " "
8478 echo "Checking for an efficient way to convert floats to strings."
8479 echo " " > try.c
8480 case "$uselongdouble" in
8481 "$define") echo "#define USE_LONG_DOUBLE" >>try.c ;;
8482 esac
8483 case "$d_longdbl" in
8484 "$define") echo "#define HAS_LONG_DOUBLE" >>try.c ;;
8485 esac
8486 case "$d_PRIgldbl" in
8487 "$define") echo "#define HAS_PRIgldbl"    >>try.c ;;
8488 esac
8489 $cat >>try.c <<EOP
8490 #ifdef TRY_gconvert
8491 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
8492 char *myname = "gconvert";
8493 #endif
8494 #ifdef TRY_gcvt
8495 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
8496 char *myname = "gcvt";
8497 #endif
8498 #ifdef TRY_qgcvt
8499 #define Gconvert(x,n,t,b) qgcvt((x),(n),(b))
8500 char *myname = "qgcvt";
8501 #define DOUBLETYPE long double
8502 #endif
8503 #ifdef TRY_sprintf
8504 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE) && defined(HAS_PRIgldbl)
8505 #define Gconvert(x,n,t,b) sprintf((b),"%.*"$sPRIgldbl,(n),(x))
8506 #else
8507 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
8508 #endif
8509 char *myname = "sprintf";
8510 #endif
8511
8512 #ifndef DOUBLETYPE
8513 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
8514 #define DOUBLETYPE long double
8515 #else
8516 #define DOUBLETYPE double
8517 #endif
8518 #endif
8519
8520 #include <stdio.h>
8521
8522 #define I_STDLIB $i_stdlib
8523 #ifdef I_STDLIB
8524 #include <stdlib.h>
8525 #endif
8526
8527 int
8528 checkit(expect, got)
8529 char *expect;
8530 char *got;
8531 {
8532     if (strcmp(expect, got)) {
8533                 printf("%s oddity:  Expected %s, got %s\n",
8534                         myname, expect, got);
8535                 exit(1);
8536         }
8537 }
8538
8539 int main()
8540
8541         char buf[64]; 
8542         buf[63] = '\0';
8543
8544         /* This must be 1st test on (which?) platform */
8545         /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
8546         Gconvert((DOUBLETYPE)0.1, 8, 0, buf);
8547         checkit("0.1", buf);
8548
8549         Gconvert((DOUBLETYPE)1.0, 8, 0, buf); 
8550         checkit("1", buf);
8551
8552         Gconvert((DOUBLETYPE)1.1, 8, 0, buf); 
8553         checkit("1.1", buf);
8554
8555         Gconvert((DOUBLETYPE)1.01, 8, 0, buf); 
8556         checkit("1.01", buf);
8557
8558         Gconvert((DOUBLETYPE)1.001, 8, 0, buf); 
8559         checkit("1.001", buf);
8560
8561         Gconvert((DOUBLETYPE)1.0001, 8, 0, buf); 
8562         checkit("1.0001", buf);
8563
8564         Gconvert((DOUBLETYPE)1.00001, 8, 0, buf); 
8565         checkit("1.00001", buf);
8566
8567         Gconvert((DOUBLETYPE)1.000001, 8, 0, buf); 
8568         checkit("1.000001", buf);
8569
8570         Gconvert((DOUBLETYPE)0.0, 8, 0, buf); 
8571         checkit("0", buf);
8572
8573         Gconvert((DOUBLETYPE)-1.0, 8, 0, buf); 
8574         checkit("-1", buf);
8575
8576         /* Some Linux gcvt's give 1.e+5 here. */
8577         Gconvert((DOUBLETYPE)100000.0, 8, 0, buf); 
8578         checkit("100000", buf);
8579         
8580         /* Some Linux gcvt's give -1.e+5 here. */
8581         Gconvert((DOUBLETYPE)-100000.0, 8, 0, buf); 
8582         checkit("-100000", buf);
8583
8584         Gconvert((DOUBLETYPE)123.456, 8, 0, buf); 
8585         checkit("123.456", buf);
8586
8587         /* Testing of 1e+129 in bigintpm.t must not get extra '.' here. */
8588         Gconvert((DOUBLETYPE)1e30, 8, 0, buf);
8589         if (strlen(buf) > 5)
8590             checkit("1e+030", buf); /* for Microsoft */
8591         else
8592             checkit("1e+30", buf);
8593
8594         exit(0);
8595 }
8596 EOP
8597 case "$d_Gconvert" in
8598 gconvert*) xxx_list='gconvert gcvt sprintf' ;;
8599 gcvt*) xxx_list='gcvt gconvert sprintf' ;;
8600 sprintf*) xxx_list='sprintf gconvert gcvt' ;;
8601 *) xxx_list='gconvert gcvt sprintf' ;;
8602 esac
8603
8604 case "$d_longdbl$uselongdouble$d_PRIgldbl" in
8605 "$define$define$define")
8606     # for long doubles prefer first qgcvt, then sprintf
8607     xxx_list="`echo $xxx_list|sed s/sprintf//`" 
8608     xxx_list="sprintf $xxx_list"
8609     case "$d_qgcvt" in
8610     "$define") xxx_list="qgcvt $xxx_list" ;;
8611     esac
8612     ;;
8613 esac
8614
8615 for xxx_convert in $xxx_list; do
8616         echo "Trying $xxx_convert..."
8617         $rm -f try try$_o
8618         set try -DTRY_$xxx_convert
8619         if eval $compile; then
8620                 echo "$xxx_convert() found." >&4
8621                 if $run ./try; then
8622                         echo "I'll use $xxx_convert to convert floats into a string." >&4
8623                         break;
8624                 else
8625                         echo "...But $xxx_convert didn't work as I expected."
8626                 fi
8627         else
8628                 echo "$xxx_convert NOT found." >&4
8629         fi
8630 done
8631         
8632 case "$xxx_convert" in
8633 gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
8634 gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
8635 qgcvt) d_Gconvert='qgcvt((x),(n),(b))' ;;
8636 *) case "$uselongdouble$d_longdbl$d_PRIgldbl" in
8637    "$define$define$define")
8638       d_Gconvert="sprintf((b),\"%.*\"$sPRIgldbl,(n),(x))" ;;
8639    *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
8640    esac
8641    ;;  
8642 esac
8643
8644 : see if _fwalk exists
8645 set fwalk d__fwalk
8646 eval $inlibc
8647
8648 : Initialize h_fcntl
8649 h_fcntl=false
8650
8651 : Initialize h_sysfile
8652 h_sysfile=false
8653
8654 : access call always available on UNIX
8655 set access d_access
8656 eval $inlibc
8657
8658 : locate the flags for 'access()'
8659 case "$d_access" in
8660 "$define")
8661         echo " "
8662         $cat >access.c <<'EOCP'
8663 #include <sys/types.h>
8664 #ifdef I_FCNTL
8665 #include <fcntl.h>
8666 #endif
8667 #ifdef I_SYS_FILE
8668 #include <sys/file.h>
8669 #endif
8670 #ifdef I_UNISTD
8671 #include <unistd.h>
8672 #endif
8673 int main() {
8674         exit(R_OK);
8675 }
8676 EOCP
8677         : check sys/file.h first, no particular reason here
8678         if $test `./findhdr sys/file.h` && \
8679                 $cc -o access $cppflags -DI_SYS_FILE access.c >/dev/null 2>&1 ; then
8680                 h_sysfile=true;
8681                 echo "<sys/file.h> defines the *_OK access constants." >&4
8682         elif $test `./findhdr fcntl.h` && \
8683                 $cc -o access $cppflags -DI_FCNTL access.c >/dev/null 2>&1 ; then
8684                 h_fcntl=true;
8685                 echo "<fcntl.h> defines the *_OK access constants." >&4
8686         elif $test `./findhdr unistd.h` && \
8687                 $cc -o access $cppflags -DI_UNISTD access.c >/dev/null 2>&1 ; then
8688                 echo "<unistd.h> defines the *_OK access constants." >&4
8689         else
8690                 echo "I can't find the four *_OK access constants--I'll use mine." >&4
8691         fi
8692         ;;
8693 esac
8694 $rm -f access*
8695
8696 : see if accessx exists
8697 set accessx d_accessx
8698 eval $inlibc
8699
8700 : see if alarm exists
8701 set alarm d_alarm
8702 eval $inlibc
8703
8704 : see if atolf exists
8705 set atolf d_atolf
8706 eval $inlibc
8707
8708 : see if atoll exists
8709 set atoll d_atoll
8710 eval $inlibc
8711
8712 : Look for GNU-cc style attribute checking
8713 echo " "
8714 echo "Checking whether your compiler can handle __attribute__ ..." >&4
8715 $cat >attrib.c <<'EOCP'
8716 #include <stdio.h>
8717 void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn));
8718 EOCP
8719 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
8720         if $contains 'warning' attrib.out >/dev/null 2>&1; then
8721                 echo "Your C compiler doesn't fully support __attribute__."
8722                 val="$undef"
8723         else
8724                 echo "Your C compiler supports __attribute__."
8725                 val="$define"
8726         fi
8727 else
8728         echo "Your C compiler doesn't seem to understand __attribute__ at all."
8729         val="$undef"
8730 fi
8731 set d_attribut
8732 eval $setvar
8733 $rm -f attrib*
8734
8735 : see if bcmp exists
8736 set bcmp d_bcmp
8737 eval $inlibc
8738
8739 : see if bcopy exists
8740 set bcopy d_bcopy
8741 eval $inlibc
8742
8743 : see if this is a unistd.h system
8744 set unistd.h i_unistd
8745 eval $inhdr
8746
8747 : see if getpgrp exists
8748 set getpgrp d_getpgrp
8749 eval $inlibc
8750
8751 case "$d_getpgrp" in
8752 "$define")
8753         echo " "
8754         echo "Checking to see which flavor of getpgrp is in use..."
8755         $cat >try.c <<EOP
8756 #$i_unistd I_UNISTD
8757 #include <sys/types.h>
8758 #ifdef I_UNISTD
8759 #  include <unistd.h>
8760 #endif
8761 int main()
8762 {
8763         if (getuid() == 0) {
8764                 printf("(I see you are running Configure as super-user...)\n");
8765                 setuid(1);
8766         }
8767 #ifdef TRY_BSD_PGRP
8768         if (getpgrp(1) == 0)
8769                 exit(0);
8770 #else
8771         if (getpgrp() > 0)
8772                 exit(0);
8773 #endif
8774         exit(1);
8775 }
8776 EOP
8777         if $cc -o try -DTRY_BSD_PGRP $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
8778                 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
8779                 val="$define"
8780         elif $cc -o try $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
8781                 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
8782                 val="$undef"
8783         else
8784                 echo "I can't seem to compile and run the test program."
8785                 if ./usg; then
8786                         xxx="a USG one, i.e. you use getpgrp()."
8787                 else
8788                         # SVR4 systems can appear rather BSD-ish.
8789                         case "$i_unistd" in
8790                         $undef)
8791                                 xxx="a BSD one, i.e. you use getpgrp(pid)."
8792                                 val="$define"
8793                                 ;;
8794                         $define)
8795                                 xxx="probably a USG one, i.e. you use getpgrp()."
8796                                 val="$undef"
8797                                 ;;
8798                         esac
8799                 fi
8800                 echo "Assuming your getpgrp is $xxx" >&4
8801         fi
8802         ;;
8803 *) val="$undef";;
8804 esac
8805 set d_bsdgetpgrp
8806 eval $setvar
8807 $rm -f try try.*
8808
8809 : see if setpgrp exists
8810 set setpgrp d_setpgrp
8811 eval $inlibc
8812
8813 case "$d_setpgrp" in
8814 "$define")
8815         echo " "
8816         echo "Checking to see which flavor of setpgrp is in use..."
8817         $cat >try.c <<EOP
8818 #$i_unistd I_UNISTD
8819 #include <sys/types.h>
8820 #ifdef I_UNISTD
8821 #  include <unistd.h>
8822 #endif
8823 int main()
8824 {
8825         if (getuid() == 0) {
8826                 printf("(I see you are running Configure as super-user...)\n");
8827                 setuid(1);
8828         }
8829 #ifdef TRY_BSD_PGRP
8830         if (-1 == setpgrp(1, 1))
8831                 exit(0);
8832 #else
8833         if (setpgrp() != -1)
8834                 exit(0);
8835 #endif
8836         exit(1);
8837 }
8838 EOP
8839         if $cc -o try -DTRY_BSD_PGRP $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
8840                 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
8841                 val="$define"
8842         elif $cc -o try $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
8843                 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
8844                 val="$undef"
8845         else
8846                 echo "(I can't seem to compile and run the test program.)"
8847                 if ./usg; then
8848                         xxx="a USG one, i.e. you use setpgrp()."
8849                 else
8850                         # SVR4 systems can appear rather BSD-ish.
8851                         case "$i_unistd" in
8852                         $undef)
8853                                 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
8854                                 val="$define"
8855                                 ;;
8856                         $define)
8857                                 xxx="probably a USG one, i.e. you use setpgrp()."
8858                                 val="$undef"
8859                                 ;;
8860                         esac
8861                 fi
8862                 echo "Assuming your setpgrp is $xxx" >&4
8863         fi
8864         ;;
8865 *) val="$undef";;
8866 esac
8867 set d_bsdsetpgrp
8868 eval $setvar
8869 $rm -f try try.*
8870 : see if bzero exists
8871 set bzero d_bzero
8872 eval $inlibc
8873
8874 : see if signal is declared as pointer to function returning int or void
8875 echo " "
8876 xxx=`./findhdr signal.h`
8877 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
8878 if $contains 'int.*\*[  ]*signal' $$.tmp >/dev/null 2>&1 ; then
8879         echo "You have int (*signal())() instead of void." >&4
8880         val="$undef"
8881 elif $contains 'void.*\*[       ]*signal' $$.tmp >/dev/null 2>&1 ; then
8882         echo "You have void (*signal())()." >&4
8883         val="$define"
8884 elif $contains 'extern[         ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
8885         echo "You have int (*signal())() instead of void." >&4
8886         val="$undef"
8887 elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
8888         echo "You have void (*signal())()." >&4
8889         val="$define"
8890 else
8891         case "$d_voidsig" in
8892         '')
8893         echo "I can't determine whether signal handler returns void or int..." >&4
8894                 dflt=void
8895                 rp="What type does your signal handler return?"
8896                 . ./myread
8897                 case "$ans" in
8898                 v*) val="$define";;
8899                 *) val="$undef";;
8900                 esac;;
8901         "$define")
8902                 echo "As you already told me, signal handler returns void." >&4
8903                 val="$define"
8904                 ;;
8905         *)      echo "As you already told me, signal handler returns int." >&4
8906                 val="$undef"
8907                 ;;
8908         esac
8909 fi
8910 set d_voidsig
8911 eval $setvar
8912 case "$d_voidsig" in
8913 "$define") signal_t="void";;
8914 *) signal_t="int";;
8915 esac
8916 $rm -f $$.tmp
8917
8918 : check for ability to cast large floats to 32-bit ints.
8919 echo " "
8920 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
8921 if $test "$intsize" -ge 4; then
8922         xxx=int
8923 else
8924         xxx=long
8925 fi
8926 $cat >try.c <<EOCP
8927 #include <stdio.h>
8928 #include <sys/types.h>
8929 #include <signal.h>
8930 $signal_t blech(s) int s; { exit(3); }
8931 int main()
8932 {
8933         $xxx i32;
8934         double f, g;
8935         int result = 0;
8936         char str[16];
8937         signal(SIGFPE, blech);
8938
8939         /* Don't let compiler optimize the test away.  Store the number 
8940            in a writable string for gcc to pass to sscanf under HP/UX.
8941         */
8942         sprintf(str, "2147483647");
8943         sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
8944         g = 10 * f;
8945         i32  = ($xxx) g;
8946
8947         /* x86 processors will probably give 0x8000 0000, which is a
8948        sign change.  We don't want that.  We want to mimic SPARC
8949            behavior here, which is to preserve the sign and give
8950            back 0x7fff ffff.
8951         */
8952         if (i32 != ($xxx) f)
8953                 result |= 1;
8954         exit(result);
8955 }
8956 EOCP
8957 set try
8958 if eval $compile_ok; then
8959         $run ./try
8960         yyy=$?
8961 else
8962         echo "(I can't seem to compile the test program--assuming it can't)"
8963         yyy=1
8964 fi
8965 case "$yyy" in
8966 0)      val="$define"
8967         echo "Yup, it can."
8968         ;;
8969 *)      val="$undef"
8970         echo "Nope, it can't."
8971         ;;
8972 esac
8973 set d_casti32
8974 eval $setvar
8975 $rm -f try try.*
8976
8977 : check for ability to cast negative floats to unsigned
8978 echo " "
8979 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
8980 $cat >try.c <<EOCP
8981 #include <stdio.h>
8982 #include <sys/types.h>
8983 #include <signal.h>
8984 $signal_t blech(s) int s; { exit(7); }
8985 $signal_t blech_in_list(s) int s; { exit(4); }
8986 unsigned long dummy_long(p) unsigned long p; { return p; }
8987 unsigned int dummy_int(p) unsigned int p; { return p; }
8988 unsigned short dummy_short(p) unsigned short p; { return p; }
8989 int main()
8990 {
8991         double f;
8992         unsigned long along;
8993         unsigned int aint;
8994         unsigned short ashort;
8995         int result = 0;
8996         char str[16];
8997         
8998         /* Frustrate gcc-2.7.2's optimizer which failed this test with
8999            a direct f = -123. assignment.  gcc-2.8.0 reportedly
9000            optimized the whole file away
9001         */
9002         /* Store the number in a writable string for gcc to pass to 
9003            sscanf under HP/UX.
9004         */
9005         sprintf(str, "-123");
9006         sscanf(str, "%lf", &f);  /* f = -123.; */
9007
9008         signal(SIGFPE, blech);
9009         along = (unsigned long)f;
9010         aint = (unsigned int)f;
9011         ashort = (unsigned short)f;
9012         if (along != (unsigned long)-123)
9013                 result |= 1;
9014         if (aint != (unsigned int)-123)
9015                 result |= 1;
9016         if (ashort != (unsigned short)-123)
9017                 result |= 1;
9018         sprintf(str, "1073741824.");
9019         sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
9020         f = f + f;
9021         along = 0;
9022         along = (unsigned long)f;
9023         if (along != 0x80000000)
9024                 result |= 2;
9025         f -= 1.;
9026         along = 0;
9027         along = (unsigned long)f;
9028         if (along != 0x7fffffff)
9029                 result |= 1;
9030         f += 2.;
9031         along = 0;
9032         along = (unsigned long)f;
9033         if (along != 0x80000001)
9034                 result |= 2;
9035         if (result)
9036                 exit(result);
9037         signal(SIGFPE, blech_in_list);
9038         sprintf(str, "123.");
9039         sscanf(str, "%lf", &f);  /* f = 123.; */
9040         along = dummy_long((unsigned long)f);
9041         aint = dummy_int((unsigned int)f);
9042         ashort = dummy_short((unsigned short)f);
9043         if (along != (unsigned long)123)
9044                 result |= 4;
9045         if (aint != (unsigned int)123)
9046                 result |= 4;
9047         if (ashort != (unsigned short)123)
9048                 result |= 4;
9049         exit(result);
9050
9051 }
9052 EOCP
9053 set try
9054 if eval $compile_ok; then
9055         $run ./try
9056         castflags=$?
9057 else
9058         echo "(I can't seem to compile the test program--assuming it can't)"
9059         castflags=7
9060 fi
9061 case "$castflags" in
9062 0)      val="$define"
9063         echo "Yup, it can."
9064         ;;
9065 *)      val="$undef"
9066         echo "Nope, it can't."
9067         ;;
9068 esac
9069 set d_castneg
9070 eval $setvar
9071 $rm -f try.*
9072
9073 : see if vprintf exists
9074 echo " "
9075 if set vprintf val -f d_vprintf; eval $csym; $val; then
9076         echo 'vprintf() found.' >&4
9077         val="$define"
9078         $cat >try.c <<'EOF'
9079 #include <varargs.h>
9080
9081 int main() { xxx("foo"); }
9082
9083 xxx(va_alist)
9084 va_dcl
9085 {
9086         va_list args;
9087         char buf[10];
9088
9089         va_start(args);
9090         exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
9091 }
9092 EOF
9093         set try
9094         if eval $compile && $run ./try; then
9095                 echo "Your vsprintf() returns (int)." >&4
9096                 val2="$undef"
9097         else
9098                 echo "Your vsprintf() returns (char*)." >&4
9099                 val2="$define"
9100         fi
9101 else
9102         echo 'vprintf() NOT found.' >&4
9103                 val="$undef"
9104                 val2="$undef"
9105 fi
9106 $rm -f try try.*
9107 set d_vprintf
9108 eval $setvar
9109 val=$val2
9110 set d_charvspr
9111 eval $setvar
9112
9113 : see if chown exists
9114 set chown d_chown
9115 eval $inlibc
9116
9117 : see if chroot exists
9118 set chroot d_chroot
9119 eval $inlibc
9120
9121 : see if chsize exists
9122 set chsize d_chsize
9123 eval $inlibc
9124
9125 : see if class exists
9126 set class d_class
9127 eval $inlibc
9128
9129 hasstruct='varname=$1; struct=$2; shift; shift;
9130 while $test $# -ge 2; do
9131         case "$1" in
9132         $define) echo "#include <$2>";;
9133         esac ;
9134     shift 2;
9135 done > try.c;
9136 echo "int main () { struct $struct foo; }" >> try.c;
9137 set try;
9138 if eval $compile; then
9139         val="$define";
9140 else
9141         val="$undef";
9142 fi;
9143 set $varname;
9144 eval $setvar;
9145 $rm -f try.c try.o'
9146
9147 : see if sys/types.h has to be included
9148 set sys/types.h i_systypes
9149 eval $inhdr
9150
9151 hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
9152 while $test $# -ge 2; do
9153         case "$1" in
9154         $define) echo "#include <$2>";;
9155         esac ;
9156     shift 2;
9157 done > try.c;
9158 echo "int main () { struct $struct foo; char* bar; bar = (char*)foo.$field; }" >> try.c;
9159 set try;
9160 if eval $compile; then
9161         val="$define";
9162 else
9163         val="$undef";
9164 fi;
9165 set $varname;
9166 eval $setvar;
9167 $rm -f try.c try.o'
9168
9169 socketlib=''
9170 sockethdr=''
9171 : see whether socket exists
9172 echo " "
9173 $echo $n "Hmm... $c" >&4
9174 if set socket val -f d_socket; eval $csym; $val; then
9175         echo "Looks like you have Berkeley networking support." >&4
9176         d_socket="$define"
9177         if set setsockopt val -f; eval $csym; $val; then
9178                 d_oldsock="$undef"
9179         else
9180                 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
9181                 d_oldsock="$define"
9182         fi
9183 else
9184         if $contains socklib libc.list >/dev/null 2>&1; then
9185                 echo "Looks like you have Berkeley networking support." >&4
9186                 d_socket="$define"
9187                 : we will have to assume that it supports the 4.2 BSD interface
9188                 d_oldsock="$undef"
9189         else
9190                 echo "You don't have Berkeley networking in libc$_a..." >&4
9191                 if test "X$d_socket" = "X$define"; then
9192                    echo "...but you seem to believe that you have sockets." >&4
9193                 else
9194                         for net in net socket
9195                         do
9196                                 if test -f /usr/lib/lib$net$_a; then
9197                                         ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) ||  \
9198                                         $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
9199                                         if $contains socket libc.list >/dev/null 2>&1; then
9200                                                 d_socket="$define"
9201                                                 socketlib="-l$net"
9202                                                 case "$net" in
9203                                                 net)
9204                                                         echo "...but the Wollongong group seems to have hacked it in." >&4
9205                                                         sockethdr="-I/usr/netinclude"
9206                                                         ;;
9207                                                 esac
9208                                                 echo "Found Berkeley sockets interface in lib$net." >& 4 
9209                                                 if $contains setsockopt libc.list >/dev/null 2>&1; then
9210                                                         d_oldsock="$undef"
9211                                                 else
9212                                                         echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
9213                                                         d_oldsock="$define"
9214                                                 fi
9215                                                 break
9216                                         fi
9217                                 fi
9218                         done
9219                         if test "X$d_socket" != "X$define"; then
9220                            echo "or anywhere else I see." >&4
9221                            d_socket="$undef"
9222                            d_oldsock="$undef"
9223                         fi
9224                 fi
9225         fi
9226 fi
9227
9228 : see if socketpair exists
9229 set socketpair d_sockpair
9230 eval $inlibc
9231
9232
9233 echo " "
9234 echo "Checking the availability of certain socket constants..." >& 4
9235 for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
9236         enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
9237         $cat >try.c <<EOF
9238 #include <sys/types.h>
9239 #include <sys/socket.h>
9240 int main() {
9241     int i = $ENUM;
9242 }
9243 EOF
9244         val="$undef"
9245         set try; if eval $compile; then
9246                 val="$define"
9247         fi
9248         set d_${enum}; eval $setvar
9249         $rm -f try.c try
9250 done
9251
9252 : see if this is a sys/uio.h system
9253 set sys/uio.h i_sysuio
9254 eval $inhdr
9255
9256
9257 echo " "
9258 echo "Checking to see if your system supports struct cmsghdr..." >&4
9259 set d_cmsghdr_s cmsghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
9260 eval $hasstruct
9261 case "$d_cmsghdr_s" in
9262 "$define")      echo "Yes, it does."   ;;
9263 *)              echo "No, it doesn't." ;;
9264 esac
9265
9266
9267 : check for const keyword
9268 echo " "
9269 echo 'Checking to see if your C compiler knows about "const"...' >&4
9270 $cat >const.c <<'EOCP'
9271 typedef struct spug { int drokk; } spug;
9272 int main()
9273 {
9274         const char *foo;
9275         const spug y;
9276 }
9277 EOCP
9278 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
9279         val="$define"
9280         echo "Yup, it does."
9281 else
9282         val="$undef"
9283         echo "Nope, it doesn't."
9284 fi
9285 set d_const
9286 eval $setvar
9287
9288 : see if crypt exists
9289 echo " "
9290 if set crypt val -f d_crypt; eval $csym; $val; then
9291         echo 'crypt() found.' >&4
9292         val="$define"
9293         cryptlib=''
9294 else
9295         cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
9296         if $test -z "$cryptlib"; then
9297                 cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
9298         else
9299                 cryptlib=-lcrypt
9300         fi
9301         if $test -z "$cryptlib"; then
9302                 cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
9303         else
9304                 cryptlib=-lcrypt
9305         fi
9306         if $test -z "$cryptlib"; then
9307                 cryptlib=`./loc libcrypt$_a "" $libpth`
9308         else
9309                 cryptlib=-lcrypt
9310         fi
9311         if $test -z "$cryptlib"; then
9312                 echo 'crypt() NOT found.' >&4
9313                 val="$undef"
9314         else
9315                 val="$define"
9316         fi
9317 fi
9318 set d_crypt
9319 eval $setvar
9320
9321 : get csh whereabouts
9322 case "$csh" in
9323 'csh') val="$undef" ;;
9324 *) val="$define" ;;
9325 esac
9326 set d_csh
9327 eval $setvar
9328 : Respect a hint or command line value for full_csh.
9329 case "$full_csh" in
9330 '') full_csh=$csh ;;
9331 esac
9332
9333 : see if cuserid exists
9334 set cuserid d_cuserid
9335 eval $inlibc
9336
9337 : see if this is a limits.h system
9338 set limits.h i_limits
9339 eval $inhdr
9340
9341 : see if this is a float.h system
9342 set float.h i_float
9343 eval $inhdr
9344
9345 : See if number of significant digits in a double precision number is known
9346 echo " "
9347 $cat >dbl_dig.c <<EOM
9348 #$i_limits I_LIMITS
9349 #$i_float I_FLOAT
9350 #ifdef I_LIMITS
9351 #include <limits.h>
9352 #endif
9353 #ifdef I_FLOAT
9354 #include <float.h>
9355 #endif
9356 #ifdef DBL_DIG
9357 printf("Contains DBL_DIG");
9358 #endif
9359 EOM
9360 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
9361 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
9362         echo "DBL_DIG found." >&4
9363         val="$define"
9364 else
9365         echo "DBL_DIG NOT found." >&4
9366         val="$undef"
9367 fi
9368 $rm -f dbl_dig.?
9369 set d_dbl_dig
9370 eval $setvar
9371
9372 hasproto='varname=$1; func=$2; shift; shift;
9373 while $test $# -ge 2; do
9374         case "$1" in
9375         $define) echo "#include <$2>";;
9376         esac ;
9377     shift 2;
9378 done > try.c;
9379 $cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
9380 if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
9381         echo "$func() prototype found.";
9382         val="$define";
9383 else
9384         echo "$func() prototype NOT found.";
9385         val="$undef";
9386 fi;
9387 set $varname;
9388 eval $setvar;
9389 $rm -f try.c tryout.c'
9390
9391 : see if dbm.h is available
9392 : see if dbmclose exists
9393 set dbmclose d_dbmclose
9394 eval $inlibc
9395
9396 case "$d_dbmclose" in
9397 $define)
9398         set dbm.h i_dbm
9399         eval $inhdr
9400         case "$i_dbm" in
9401         $define)
9402                 val="$undef"
9403                 set i_rpcsvcdbm
9404                 eval $setvar
9405                 ;;
9406         *)      set rpcsvc/dbm.h i_rpcsvcdbm
9407                 eval $inhdr
9408                 ;;
9409         esac
9410         ;;
9411 *)      echo "We won't be including <dbm.h>"
9412         val="$undef"
9413         set i_dbm
9414         eval $setvar
9415         val="$undef"
9416         set i_rpcsvcdbm
9417         eval $setvar
9418         ;;
9419 esac
9420
9421 : see if prototype for dbminit is available
9422 echo " "
9423 set d_dbminitproto dbminit $i_dbm dbm.h
9424 eval $hasproto
9425
9426 : see if difftime exists
9427 set difftime d_difftime
9428 eval $inlibc
9429
9430 : see if this is a dirent system
9431 echo " "
9432 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
9433         val="$define"
9434         echo "<dirent.h> found." >&4
9435 else
9436         val="$undef"
9437         if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
9438                 echo "<sys/dir.h> found." >&4
9439                 echo " "
9440         else
9441                 xinc=`./findhdr sys/ndir.h`
9442         fi
9443         echo "<dirent.h> NOT found." >&4
9444 fi
9445 set i_dirent
9446 eval $setvar
9447
9448 : Look for type of directory structure.
9449 echo " "
9450 $cppstdin $cppflags $cppminus < "$xinc" > try.c
9451
9452 case "$direntrytype" in
9453 ''|' ')
9454         case "$i_dirent" in
9455         $define) guess1='struct dirent' ;;
9456         *) guess1='struct direct'  ;;
9457         esac
9458         ;;
9459 *)      guess1="$direntrytype"
9460         ;;
9461 esac
9462
9463 case "$guess1" in
9464 'struct dirent') guess2='struct direct' ;;
9465 *) guess2='struct dirent' ;;
9466 esac
9467                 
9468 if $contains "$guess1" try.c >/dev/null 2>&1; then
9469         direntrytype="$guess1"
9470         echo "Your directory entries are $direntrytype." >&4
9471 elif $contains "$guess2" try.c >/dev/null 2>&1; then
9472         direntrytype="$guess2"
9473         echo "Your directory entries seem to be $direntrytype." >&4
9474 else
9475         echo "I don't recognize your system's directory entries." >&4
9476         rp="What type is used for directory entries on this system?"
9477         dflt="$guess1"
9478         . ./myread
9479         direntrytype="$ans"
9480 fi
9481 $rm -f try.c
9482
9483
9484 : see if the directory entry stores field length
9485 echo " "
9486 $cppstdin $cppflags $cppminus < "$xinc" > try.c
9487 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
9488         echo "Good, your directory entry keeps length information in d_namlen." >&4
9489         val="$define"
9490 else
9491         echo "Your directory entry does not know about the d_namlen field." >&4
9492         val="$undef"
9493 fi
9494 set d_dirnamlen
9495 eval $setvar
9496 $rm -f try.c
9497
9498 : see if dlerror exists
9499 xxx_runnm="$runnm"
9500 runnm=false
9501 set dlerror d_dlerror
9502 eval $inlibc
9503 runnm="$xxx_runnm"
9504
9505 : see if dlfcn is available
9506 set dlfcn.h i_dlfcn
9507 eval $inhdr
9508
9509 case "$usedl" in
9510 $define|y|true)
9511         $cat << EOM
9512
9513 On a few systems, the dynamically loaded modules that perl generates and uses
9514 will need a different extension than shared libs. The default will probably
9515 be appropriate.
9516
9517 EOM
9518         case "$dlext" in
9519         '')     dflt="$so" ;;
9520         *)      dflt="$dlext" ;;
9521         esac
9522         rp='What is the extension of dynamically loaded modules'
9523         . ./myread
9524         dlext="$ans"
9525         ;;
9526 *)
9527         dlext="none"
9528         ;;
9529 esac
9530
9531 : Check if dlsym need a leading underscore
9532 echo " "
9533 val="$undef"
9534
9535 case "$dlsrc" in
9536 dl_dlopen.xs)
9537         echo "Checking whether your dlsym() needs a leading underscore ..." >&4
9538         $cat >dyna.c <<'EOM'
9539 fred () { }
9540 EOM
9541
9542 $cat >fred.c<<EOM
9543
9544 #include <stdio.h>
9545 #$i_dlfcn I_DLFCN
9546 #ifdef I_DLFCN
9547 #include <dlfcn.h>      /* the dynamic linker include file for SunOS/Solaris */
9548 #else
9549 #include <sys/types.h>
9550 #include <nlist.h>
9551 #include <link.h>
9552 #endif
9553
9554 extern int fred() ;
9555
9556 int main()
9557 {
9558     void * handle ;
9559     void * symbol ;
9560 #ifndef RTLD_LAZY
9561     int mode = 1 ;
9562 #else
9563     int mode = RTLD_LAZY ;
9564 #endif
9565     handle = dlopen("./dyna.$dlext", mode) ;
9566     if (handle == NULL) {
9567         printf ("1\n") ;
9568         fflush (stdout) ;
9569         exit(0);
9570     }
9571     symbol = dlsym(handle, "fred") ;
9572     if (symbol == NULL) {
9573         /* try putting a leading underscore */
9574         symbol = dlsym(handle, "_fred") ;
9575         if (symbol == NULL) {
9576             printf ("2\n") ;
9577             fflush (stdout) ;
9578             exit(0);
9579         }
9580         printf ("3\n") ;
9581     }
9582     else
9583         printf ("4\n") ;
9584     fflush (stdout) ;
9585     exit(0);
9586 }
9587 EOM
9588         : Call the object file tmp-dyna.o in case dlext=o.
9589         if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 && 
9590                 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 && 
9591                 $ld -o dyna.$dlext $ldflags $lddlflags tmp-dyna${_o} > /dev/null 2>&1 && 
9592                 $cc -o fred $ccflags $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1 && $to dyna.$dlext; then
9593                 xxx=`$run ./fred`
9594                 case $xxx in
9595                 1)      echo "Test program failed using dlopen." >&4
9596                         echo "Perhaps you should not use dynamic loading." >&4;;
9597                 2)      echo "Test program failed using dlsym." >&4
9598                         echo "Perhaps you should not use dynamic loading." >&4;;
9599                 3)      echo "dlsym needs a leading underscore" >&4
9600                         val="$define" ;;
9601                 4)      echo "dlsym doesn't need a leading underscore." >&4;;
9602                 esac
9603         else
9604                 echo "I can't compile and run the test program." >&4
9605                 echo "I'm guessing that dlsym doesn't need a leading underscore." >&4
9606         fi
9607         ;;
9608 esac
9609                 
9610 $rm -f fred fred.? dyna.$dlext dyna.? tmp-dyna.?
9611
9612 set d_dlsymun
9613 eval $setvar
9614
9615 : see if prototype for drand48 is available
9616 echo " "
9617 set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
9618 eval $hasproto
9619
9620 : see if dup2 exists
9621 set dup2 d_dup2
9622 eval $inlibc
9623
9624 : see if eaccess exists
9625 set eaccess d_eaccess
9626 eval $inlibc
9627
9628 : see if endgrent exists
9629 set endgrent d_endgrent
9630 eval $inlibc
9631
9632 : see if endhostent exists
9633 set endhostent d_endhent
9634 eval $inlibc
9635
9636 : see if endnetent exists
9637 set endnetent d_endnent
9638 eval $inlibc
9639
9640 : see if endprotoent exists
9641 set endprotoent d_endpent
9642 eval $inlibc
9643
9644 : see if endpwent exists
9645 set endpwent d_endpwent
9646 eval $inlibc
9647
9648 : see if endservent exists
9649 set endservent d_endsent
9650 eval $inlibc
9651
9652 : Locate the flags for 'open()'
9653 echo " "
9654 $cat >try.c <<'EOCP'
9655 #include <sys/types.h>
9656 #ifdef I_FCNTL
9657 #include <fcntl.h>
9658 #endif
9659 #ifdef I_SYS_FILE
9660 #include <sys/file.h>
9661 #endif
9662 int main() {
9663         if(O_RDONLY);
9664 #ifdef O_TRUNC
9665         exit(0);
9666 #else
9667         exit(1);
9668 #endif
9669 }
9670 EOCP
9671 : check sys/file.h first to get FREAD on Sun
9672 if $test `./findhdr sys/file.h` && \
9673                 set try -DI_SYS_FILE && eval $compile; then
9674         h_sysfile=true;
9675         echo "<sys/file.h> defines the O_* constants..." >&4
9676         if $run ./try; then
9677                 echo "and you have the 3 argument form of open()." >&4
9678                 val="$define"
9679         else
9680                 echo "but not the 3 argument form of open().  Oh, well." >&4
9681                 val="$undef"
9682         fi
9683 elif $test `./findhdr fcntl.h` && \
9684                 set try -DI_FCNTL && eval $compile; then
9685         h_fcntl=true;
9686         echo "<fcntl.h> defines the O_* constants..." >&4
9687         if $run ./try; then
9688                 echo "and you have the 3 argument form of open()." >&4
9689                 val="$define"
9690         else
9691                 echo "but not the 3 argument form of open().  Oh, well." >&4
9692                 val="$undef"
9693         fi
9694 else
9695         val="$undef"
9696         echo "I can't find the O_* constant definitions!  You got problems." >&4
9697 fi
9698 set d_open3
9699 eval $setvar
9700 $rm -f try try.*
9701
9702 : see which of string.h or strings.h is needed
9703 echo " "
9704 strings=`./findhdr string.h`
9705 if $test "$strings" && $test -r "$strings"; then
9706         echo "Using <string.h> instead of <strings.h>." >&4
9707         val="$define"
9708 else
9709         val="$undef"
9710         strings=`./findhdr strings.h`
9711         if $test "$strings" && $test -r "$strings"; then
9712                 echo "Using <strings.h> instead of <string.h>." >&4
9713         else
9714                 echo "No string header found -- You'll surely have problems." >&4
9715         fi
9716 fi
9717 set i_string
9718 eval $setvar
9719 case "$i_string" in
9720 "$undef") strings=`./findhdr strings.h`;;
9721 *)        strings=`./findhdr string.h`;;
9722 esac
9723
9724 : check for non-blocking I/O stuff
9725 case "$h_sysfile" in
9726 true) echo "#include <sys/file.h>" > head.c;;
9727 *)
9728        case "$h_fcntl" in
9729        true) echo "#include <fcntl.h>" > head.c;;
9730        *) echo "#include <sys/fcntl.h>" > head.c;;
9731        esac
9732        ;;
9733 esac
9734 echo " "
9735 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
9736 case "$o_nonblock" in
9737 '')
9738         $cat head.c > try.c
9739         $cat >>try.c <<'EOCP'
9740 #include <stdio.h>
9741 #include <stdlib.h>
9742 int main() {
9743 #ifdef O_NONBLOCK
9744         printf("O_NONBLOCK\n");
9745         exit(0);
9746 #endif
9747 #ifdef O_NDELAY
9748         printf("O_NDELAY\n");
9749         exit(0);
9750 #endif
9751 #ifdef FNDELAY
9752         printf("FNDELAY\n");
9753         exit(0);
9754 #endif
9755         exit(0);
9756 }
9757 EOCP
9758         set try
9759         if eval $compile_ok; then
9760                 o_nonblock=`$run ./try`
9761                 case "$o_nonblock" in
9762                 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
9763                 *) echo "Seems like we can use $o_nonblock.";;
9764                 esac
9765         else
9766                 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
9767         fi
9768         ;;
9769 *) echo "Using $hint value $o_nonblock.";;
9770 esac
9771 $rm -f try try.* .out core
9772
9773 echo " "
9774 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
9775 case "$eagain" in
9776 '')
9777         $cat head.c > try.c
9778         $cat >>try.c <<EOCP
9779 #include <errno.h>
9780 #include <sys/types.h>
9781 #include <signal.h>
9782 #include <stdio.h> 
9783 #include <stdlib.h> 
9784 #define MY_O_NONBLOCK $o_nonblock
9785 #ifndef errno  /* XXX need better Configure test */
9786 extern int errno;
9787 #endif
9788 #$i_unistd I_UNISTD
9789 #ifdef I_UNISTD
9790 #include <unistd.h>
9791 #endif
9792 #$i_string I_STRING
9793 #ifdef I_STRING
9794 #include <string.h>
9795 #else
9796 #include <strings.h>
9797 #endif
9798 $signal_t blech(x) int x; { exit(3); }
9799 EOCP
9800         $cat >> try.c <<'EOCP'
9801 int main()
9802 {
9803         int pd[2];
9804         int pu[2];
9805         char buf[1];
9806         char string[100];
9807
9808         pipe(pd);       /* Down: child -> parent */
9809         pipe(pu);       /* Up: parent -> child */
9810         if (0 != fork()) {
9811                 int ret;
9812                 close(pd[1]);   /* Parent reads from pd[0] */
9813                 close(pu[0]);   /* Parent writes (blocking) to pu[1] */
9814 #ifdef F_SETFL
9815                 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
9816                         exit(1);
9817 #else
9818                 exit(4);
9819 #endif
9820                 signal(SIGALRM, blech);
9821                 alarm(5);
9822                 if ((ret = read(pd[0], buf, 1)) > 0)    /* Nothing to read! */
9823                         exit(2);
9824                 sprintf(string, "%d\n", ret);
9825                 write(2, string, strlen(string));
9826                 alarm(0);
9827 #ifdef EAGAIN
9828                 if (errno == EAGAIN) {
9829                         printf("EAGAIN\n");
9830                         goto ok;
9831                 }
9832 #endif
9833 #ifdef EWOULDBLOCK
9834                 if (errno == EWOULDBLOCK)
9835                         printf("EWOULDBLOCK\n");
9836 #endif
9837         ok:
9838                 write(pu[1], buf, 1);   /* Unblocks child, tell it to close our pipe */
9839                 sleep(2);                               /* Give it time to close our pipe */
9840                 alarm(5);
9841                 ret = read(pd[0], buf, 1);      /* Should read EOF */
9842                 alarm(0);
9843                 sprintf(string, "%d\n", ret);
9844                 write(3, string, strlen(string));
9845                 exit(0);
9846         }
9847
9848         close(pd[0]);                   /* We write to pd[1] */
9849         close(pu[1]);                   /* We read from pu[0] */
9850         read(pu[0], buf, 1);    /* Wait for parent to signal us we may continue */
9851         close(pd[1]);                   /* Pipe pd is now fully closed! */
9852         exit(0);                                /* Bye bye, thank you for playing! */
9853 }
9854 EOCP
9855         set try
9856         if eval $compile_ok; then
9857                 echo "$startsh" >mtry
9858                 echo "$run ./try >try.out 2>try.ret 3>try.err || exit 4" >>mtry
9859                 chmod +x mtry
9860                 ./mtry >/dev/null 2>&1
9861                 case $? in
9862                 0) eagain=`$cat try.out`;;
9863                 1) echo "Could not perform non-blocking setting!";;
9864                 2) echo "I did a successful read() for something that was not there!";;
9865                 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
9866                 4) echo "Could not find F_SETFL!";;
9867                 *) echo "Something terribly wrong happened during testing.";;
9868                 esac
9869                 rd_nodata=`$cat try.ret`
9870                 echo "A read() system call with no data present returns $rd_nodata."
9871                 case "$rd_nodata" in
9872                 0|-1) ;;
9873                 *)
9874                         echo "(That's peculiar, fixing that to be -1.)"
9875                         rd_nodata=-1
9876                         ;;
9877                 esac
9878                 case "$eagain" in
9879                 '')
9880                         echo "Forcing errno EAGAIN on read() with no data available."
9881                         eagain=EAGAIN
9882                         ;;
9883                 *)
9884                         echo "Your read() sets errno to $eagain when no data is available."
9885                         ;;
9886                 esac
9887                 status=`$cat try.err`
9888                 case "$status" in
9889                 0) echo "And it correctly returns 0 to signal EOF.";;
9890                 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
9891                 *) echo "However, your read() returns '$status' on EOF??";;
9892                 esac
9893                 val="$define"
9894                 if test "$status" = "$rd_nodata"; then
9895                         echo "WARNING: you can't distinguish between EOF and no data!"
9896                         val="$undef"
9897                 fi
9898         else
9899                 echo "I can't compile the test program--assuming errno EAGAIN will do."
9900                 eagain=EAGAIN
9901         fi
9902         set d_eofnblk
9903         eval $setvar
9904         ;;
9905 *)
9906         echo "Using $hint value $eagain."
9907         echo "Your read() returns $rd_nodata when no data is present."
9908         case "$d_eofnblk" in
9909         "$define") echo "And you can see EOF because read() returns 0.";;
9910         "$undef") echo "But you can't see EOF status from read() returned value.";;
9911         *)
9912                 echo "(Assuming you can't see EOF status from read anyway.)"
9913                 d_eofnblk=$undef
9914                 ;;
9915         esac
9916         ;;
9917 esac
9918 $rm -f try try.* .out core head.c mtry
9919
9920 : see if fchdir exists
9921 set fchdir d_fchdir
9922 eval $inlibc
9923
9924 : see if fchmod exists
9925 set fchmod d_fchmod
9926 eval $inlibc
9927
9928 : see if fchown exists
9929 set fchown d_fchown
9930 eval $inlibc
9931
9932 : see if this is an fcntl system
9933 set fcntl d_fcntl
9934 eval $inlibc
9935
9936 echo " "
9937 : See if fcntl-based locking works.
9938 $cat >try.c <<EOCP
9939 #include <stdlib.h>
9940 #include <unistd.h>
9941 #include <fcntl.h>
9942 #include <signal.h>
9943 $signal_t blech(x) int x; { exit(3); }
9944 int main() {
9945 #if defined(F_SETLK) && defined(F_SETLKW)
9946      struct flock flock;
9947      int retval, fd;
9948      fd = open("try.c", O_RDONLY);
9949      flock.l_type = F_RDLCK;
9950      flock.l_whence = SEEK_SET;
9951      flock.l_start = flock.l_len = 0;
9952      signal(SIGALRM, blech);
9953      alarm(10);
9954      retval = fcntl(fd, F_SETLK, &flock);
9955      close(fd);
9956      (retval < 0 ? exit(2) : exit(0));
9957 #else
9958      exit(2);
9959 #endif
9960 }
9961 EOCP
9962 echo "Checking if fcntl-based file locking works... "
9963 case "$d_fcntl" in
9964 "$define")
9965         set try
9966         if eval $compile_ok; then
9967                 if $run ./try; then
9968                         echo "Yes, it seems to work."
9969                         val="$define"
9970                 else
9971                         echo "Nope, it didn't work."
9972                         val="$undef"
9973                         case "$?" in
9974                         3) $cat >&4 <<EOM
9975 ***
9976 *** I had to forcibly timeout from fcntl(..., F_SETLK, ...).
9977 *** This is (almost) impossible.
9978 *** If your NFS lock daemons are not feeling well, something like
9979 *** this may happen, please investigate.  Cannot continue, aborting.
9980 ***
9981 EOM
9982                                 exit 1
9983                                 ;;
9984                         esac
9985                 fi
9986         else
9987                 echo "I'm unable to compile the test program, so I'll assume not."
9988                 val="$undef"
9989         fi
9990         ;;
9991 *) val="$undef";
9992         echo "Nope, since you don't even have fcntl()."
9993         ;;
9994 esac
9995 set d_fcntl_can_lock
9996 eval $setvar
9997 $rm -f try*
9998
9999
10000 : see if sys/select.h has to be included
10001 set sys/select.h i_sysselct
10002 eval $inhdr
10003
10004 : see if we should include time.h, sys/time.h, or both
10005 echo " "
10006 if test "X$timeincl" = X; then
10007         echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
10008         $echo $n "I'm now running the test program...$c"
10009         $cat >try.c <<'EOCP'
10010 #include <sys/types.h>
10011 #ifdef I_TIME
10012 #include <time.h>
10013 #endif
10014 #ifdef I_SYSTIME
10015 #ifdef SYSTIMEKERNEL
10016 #define KERNEL
10017 #endif
10018 #include <sys/time.h>
10019 #endif
10020 #ifdef I_SYSSELECT
10021 #include <sys/select.h>
10022 #endif
10023 int main()
10024 {
10025         struct tm foo;
10026 #ifdef S_TIMEVAL
10027         struct timeval bar;
10028 #endif
10029 #ifdef S_TIMEZONE
10030         struct timezone tzp;
10031 #endif
10032         if (foo.tm_sec == foo.tm_sec)
10033                 exit(0);
10034 #ifdef S_TIMEVAL
10035         if (bar.tv_sec == bar.tv_sec)
10036                 exit(0);
10037 #endif
10038         exit(1);
10039 }
10040 EOCP
10041         flags=''
10042         for s_timezone in '-DS_TIMEZONE' ''; do
10043         sysselect=''
10044         for s_timeval in '-DS_TIMEVAL' ''; do
10045         for i_systimek in '' '-DSYSTIMEKERNEL'; do
10046         for i_time in '' '-DI_TIME'; do
10047         for i_systime in '-DI_SYSTIME' ''; do
10048                 case "$flags" in
10049                 '') $echo $n ".$c"
10050                         set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
10051                         if eval $compile; then
10052                                 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
10053                                 shift
10054                                 flags="$*"
10055                                 echo " "
10056                                 $echo $n "Succeeded with $flags$c"
10057                         fi
10058                         ;;
10059                 esac
10060         done
10061         done
10062         done
10063         done
10064         done
10065         timeincl=''
10066         echo " "
10067         case "$flags" in
10068         *SYSTIMEKERNEL*) i_systimek="$define"
10069                 timeincl=`./findhdr sys/time.h`
10070                 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
10071         *) i_systimek="$undef";;
10072         esac
10073         case "$flags" in
10074         *I_TIME*) i_time="$define"
10075                 timeincl=`./findhdr time.h`" $timeincl"
10076                 echo "We'll include <time.h>." >&4;;
10077         *) i_time="$undef";;
10078         esac
10079         case "$flags" in
10080         *I_SYSTIME*) i_systime="$define"
10081                 timeincl=`./findhdr sys/time.h`" $timeincl"
10082                 echo "We'll include <sys/time.h>." >&4;;
10083         *) i_systime="$undef";;
10084         esac
10085         $rm -f try.c try
10086 fi
10087
10088 : check for fd_set items
10089 $cat <<EOM
10090
10091 Checking to see how well your C compiler handles fd_set and friends ...
10092 EOM
10093 $cat >try.c <<EOCP
10094 #$i_systime I_SYS_TIME
10095 #$i_sysselct I_SYS_SELECT
10096 #$d_socket HAS_SOCKET
10097 #include <sys/types.h>
10098 #ifdef HAS_SOCKET
10099 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
10100 #endif
10101 #ifdef I_SYS_TIME
10102 #include <sys/time.h>
10103 #endif
10104 #ifdef I_SYS_SELECT
10105 #include <sys/select.h>
10106 #endif
10107 int main() {
10108         fd_set fds;
10109
10110 #ifdef TRYBITS
10111         if(fds.fds_bits);
10112 #endif
10113
10114 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
10115         exit(0);
10116 #else
10117         exit(1);
10118 #endif
10119 }
10120 EOCP
10121 set try -DTRYBITS
10122 if eval $compile; then
10123         d_fds_bits="$define"
10124         d_fd_set="$define"
10125         echo "Well, your system knows about the normal fd_set typedef..." >&4
10126         if $run ./try; then
10127                 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
10128                 d_fd_macros="$define"
10129         else
10130                 $cat >&4 <<'EOM'
10131 but not the normal fd_set macros!  Gaaack!  I'll have to cover for you.
10132 EOM
10133                 d_fd_macros="$undef"
10134         fi
10135 else
10136         $cat <<'EOM'
10137 Hmm, your compiler has some difficulty with fd_set.  Checking further...
10138 EOM
10139         set try
10140         if eval $compile; then
10141                 d_fds_bits="$undef"
10142                 d_fd_set="$define"
10143                 echo "Well, your system has some sort of fd_set available..." >&4
10144                 if $run ./try; then
10145                         echo "and you have the normal fd_set macros." >&4
10146                         d_fd_macros="$define"
10147                 else
10148                         $cat <<'EOM'
10149 but not the normal fd_set macros!  Gross!  More work for me...
10150 EOM
10151                         d_fd_macros="$undef"
10152                 fi
10153         else
10154         echo "Well, you got zip.  That's OK, I can roll my own fd_set stuff." >&4
10155                 d_fd_set="$undef"
10156                 d_fds_bits="$undef"
10157                 d_fd_macros="$undef"
10158         fi
10159 fi
10160 $rm -f try try.*
10161
10162 : see if fgetpos exists
10163 set fgetpos d_fgetpos
10164 eval $inlibc
10165
10166 : see if finite exists
10167 set finite d_finite
10168 eval $inlibc
10169
10170 : see if finitel exists
10171 set finitel d_finitel
10172 eval $inlibc
10173
10174 : see if flock exists
10175 set flock d_flock
10176 eval $inlibc
10177
10178 : see if this is a sys/file.h system
10179 val=''
10180 set sys/file.h val
10181 eval $inhdr
10182
10183 : do we need to include sys/file.h ?
10184 case "$val" in
10185 "$define")
10186         echo " "
10187         if $h_sysfile; then
10188                 val="$define"
10189                 echo "We'll be including <sys/file.h>." >&4
10190         else
10191                 val="$undef"
10192                 echo "We won't be including <sys/file.h>." >&4
10193         fi
10194         ;;
10195 *)
10196         h_sysfile=false
10197         ;;
10198 esac
10199 set i_sysfile
10200 eval $setvar
10201
10202 : see if prototype for flock is available
10203 echo " "
10204 set d_flockproto flock $i_sysfile sys/file.h
10205 eval $hasproto
10206
10207 : see if fork exists
10208 set fork d_fork
10209 eval $inlibc
10210
10211 : see if fp_class exists
10212 set fp_class d_fp_class
10213 eval $inlibc
10214
10215 : see if pathconf exists
10216 set pathconf d_pathconf
10217 eval $inlibc
10218
10219 : see if fpathconf exists
10220 set fpathconf d_fpathconf
10221 eval $inlibc
10222
10223 : see if fpclass exists
10224 set fpclass d_fpclass
10225 eval $inlibc
10226
10227 : see if fpclassify exists
10228 set fpclassify d_fpclassify
10229 eval $inlibc
10230
10231 : see if fpclassl exists
10232 set fpclassl d_fpclassl
10233 eval $inlibc
10234
10235
10236 : check for fpos64_t
10237 echo " "
10238 echo "Checking to see if you have fpos64_t..." >&4
10239 $cat >try.c <<EOCP
10240 #include <stdio.h>
10241 int main() { fpos64_t x = 7; }
10242 EOCP
10243 set try
10244 if eval $compile; then
10245         val="$define"
10246         echo "You have fpos64_t."
10247 else
10248         val="$undef"
10249         echo "You do not have fpos64_t."
10250         case "$fpossize" in
10251         8) echo "(Your fpos_t is 64 bits, so you could use that.)" ;;
10252         esac
10253 fi
10254 $rm -f try.* try
10255 set d_fpos64_t
10256 eval $setvar
10257
10258 : see if frexpl exists
10259 set frexpl d_frexpl
10260 eval $inlibc
10261
10262 : see if this is a sys/param system
10263 set sys/param.h i_sysparam
10264 eval $inhdr
10265
10266 : see if this is a sys/mount.h system
10267 set sys/mount.h i_sysmount
10268 eval $inhdr
10269
10270
10271 echo " "
10272 echo "Checking to see if your system supports struct fs_data..." >&4
10273 set d_fs_data_s fs_data $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h
10274 eval $hasstruct
10275 case "$d_fs_data_s" in
10276 "$define")      echo "Yes, it does."   ;;
10277 *)              echo "No, it doesn't." ;;
10278 esac
10279
10280 : see if fseeko exists
10281 set fseeko d_fseeko
10282 eval $inlibc
10283 case "$longsize" in
10284 8) echo "(Your long is 64 bits, so you could use fseek.)" ;;
10285 esac
10286
10287 : see if fsetpos exists
10288 set fsetpos d_fsetpos
10289 eval $inlibc
10290
10291
10292 : see if fstatfs exists
10293 set fstatfs d_fstatfs
10294 eval $inlibc
10295
10296
10297 : see if statvfs exists
10298 set statvfs d_statvfs
10299 eval $inlibc
10300
10301 : see if fstatvfs exists
10302 set fstatvfs d_fstatvfs
10303 eval $inlibc
10304
10305
10306 : see if fsync exists
10307 set fsync d_fsync
10308 eval $inlibc
10309
10310 : see if ftello exists
10311 set ftello d_ftello
10312 eval $inlibc
10313 case "$longsize" in
10314 8) echo "(Your long is 64 bits, so you could use ftell.)" ;;
10315 esac
10316
10317 : see if getcwd exists
10318 set getcwd d_getcwd
10319 eval $inlibc
10320
10321 : see if getespwnam exists
10322 set getespwnam d_getespwnam
10323 eval $inlibc
10324
10325
10326 : see if getfsstat exists
10327 set getfsstat d_getfsstat
10328 eval $inlibc
10329
10330 : see if getgrent exists
10331 set getgrent d_getgrent
10332 eval $inlibc
10333
10334 : see if gethostbyaddr exists
10335 set gethostbyaddr d_gethbyaddr
10336 eval $inlibc
10337
10338 : see if gethostbyname exists
10339 set gethostbyname d_gethbyname
10340 eval $inlibc
10341
10342 : see if gethostent exists
10343 set gethostent d_gethent
10344 eval $inlibc
10345
10346 : see how we will look up host name
10347 echo " "
10348 call=''
10349 if set gethostname val -f d_gethname; eval $csym; $val; then
10350         echo 'gethostname() found.' >&4
10351         d_gethname="$define"
10352         call=gethostname
10353 fi
10354 if set uname val -f d_uname; eval $csym; $val; then
10355         if ./xenix; then
10356                 $cat <<'EOM'
10357 uname() was found, but you're running xenix, and older versions of xenix
10358 have a broken uname(). If you don't really know whether your xenix is old
10359 enough to have a broken system call, use the default answer.
10360
10361 EOM
10362                 dflt=y
10363                 case "$d_uname" in
10364                 "$define") dflt=n;;
10365                 esac
10366                 rp='Is your uname() broken?'
10367                 . ./myread
10368                 case "$ans" in
10369                 n*) d_uname="$define"; call=uname;;
10370                 esac
10371         else
10372                 echo 'uname() found.' >&4
10373                 d_uname="$define"
10374                 case "$call" in
10375                 '') call=uname ;;
10376                 esac
10377         fi
10378 fi
10379 case "$d_gethname" in
10380 '') d_gethname="$undef";;
10381 esac
10382 case "$d_uname" in
10383 '') d_uname="$undef";;
10384 esac
10385 case "$d_uname$d_gethname" in
10386 *define*)
10387         dflt=n
10388         cat <<EOM
10389  
10390 Every now and then someone has a $call() that lies about the hostname
10391 but can't be fixed for political or economic reasons.  If you wish, I can
10392 pretend $call() isn't there and maybe compute hostname at run-time
10393 thanks to the '$phostname' command.
10394
10395 EOM
10396         rp="Shall I ignore $call() from now on?"
10397         . ./myread
10398         case "$ans" in
10399         y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
10400         esac;;
10401 esac
10402 case "$phostname" in
10403 '') aphostname='';;
10404 *) case "$aphostname" in
10405         /*) ;;
10406         *) set X $phostname
10407                 shift
10408                 file=$1
10409                 shift
10410                 file=`./loc $file $file $pth`
10411                 aphostname=`echo $file $*`
10412                 ;;
10413         esac
10414         ;;
10415 esac
10416 case "$d_uname$d_gethname" in
10417 *define*) ;;
10418 *)
10419         case "$phostname" in
10420         '')
10421                 echo "There will be no way for $package to get your hostname." >&4;;
10422         *)
10423         echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
10424                 ;;
10425         esac;;
10426 esac
10427 case "$d_phostname" in
10428 '') d_phostname="$undef";;
10429 esac
10430
10431 : see if this is a netdb.h system
10432 set netdb.h i_netdb
10433 eval $inhdr
10434
10435 : see if prototypes for various gethostxxx netdb.h functions are available
10436 echo " "
10437 set d_gethostprotos gethostent $i_netdb netdb.h
10438 eval $hasproto
10439
10440 : see if getitimer exists
10441 set getitimer d_getitimer
10442 eval $inlibc
10443
10444 : see if getlogin exists
10445 set getlogin d_getlogin
10446 eval $inlibc
10447
10448 : see if getmnt exists
10449 set getmnt d_getmnt
10450 eval $inlibc
10451
10452 : see if getmntent exists
10453 set getmntent d_getmntent
10454 eval $inlibc
10455
10456 : see if getnetbyaddr exists
10457 set getnetbyaddr d_getnbyaddr
10458 eval $inlibc
10459
10460 : see if getnetbyname exists
10461 set getnetbyname d_getnbyname
10462 eval $inlibc
10463
10464 : see if getnetent exists
10465 set getnetent d_getnent
10466 eval $inlibc
10467
10468 : see if prototypes for various getnetxxx netdb.h functions are available
10469 echo " "
10470 set d_getnetprotos getnetent $i_netdb netdb.h
10471 eval $hasproto
10472
10473 : see if getpagesize exists
10474 set getpagesize d_getpagsz
10475 eval $inlibc
10476
10477
10478 : see if getprotobyname exists
10479 set getprotobyname d_getpbyname
10480 eval $inlibc
10481
10482 : see if getprotobynumber exists
10483 set getprotobynumber d_getpbynumber
10484 eval $inlibc
10485
10486 : see if getprotoent exists
10487 set getprotoent d_getpent
10488 eval $inlibc
10489
10490 : see if getpgid exists
10491 set getpgid d_getpgid
10492 eval $inlibc
10493
10494 : see if getpgrp2 exists
10495 set getpgrp2 d_getpgrp2
10496 eval $inlibc
10497
10498 : see if getppid exists
10499 set getppid d_getppid
10500 eval $inlibc
10501
10502 : see if getpriority exists
10503 set getpriority d_getprior
10504 eval $inlibc
10505
10506 : see if prototypes for various getprotoxxx netdb.h functions are available
10507 echo " "
10508 set d_getprotoprotos getprotoent $i_netdb netdb.h
10509 eval $hasproto
10510
10511 : see if getprpwnam exists
10512 set getprpwnam d_getprpwnam
10513 eval $inlibc
10514
10515 : see if getpwent exists
10516 set getpwent d_getpwent
10517 eval $inlibc
10518
10519
10520 : see if getservbyname exists
10521 set getservbyname d_getsbyname
10522 eval $inlibc
10523
10524 : see if getservbyport exists
10525 set getservbyport d_getsbyport
10526 eval $inlibc
10527
10528 : see if getservent exists
10529 set getservent d_getsent
10530 eval $inlibc
10531
10532 : see if prototypes for various getservxxx netdb.h functions are available
10533 echo " "
10534 set d_getservprotos getservent $i_netdb netdb.h
10535 eval $hasproto
10536
10537 : see if getspnam exists
10538 set getspnam d_getspnam
10539 eval $inlibc
10540
10541 : see if gettimeofday or ftime exists
10542 set gettimeofday d_gettimeod
10543 eval $inlibc
10544 case "$d_gettimeod" in
10545 "$undef")
10546         set ftime d_ftime 
10547         eval $inlibc
10548         ;;
10549 *)
10550         val="$undef"; set d_ftime; eval $setvar
10551         ;;
10552 esac
10553 case "$d_gettimeod$d_ftime" in
10554 "$undef$undef")
10555         echo " "
10556         echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
10557         ;;
10558 esac
10559
10560 : see if this is an grp system
10561 set grp.h i_grp
10562 eval $inhdr
10563
10564 case "$i_grp" in
10565 $define)
10566         xxx=`./findhdr grp.h`
10567         $cppstdin $cppflags $cppminus < $xxx >$$.h
10568
10569         if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
10570                 val="$define"
10571         else
10572                 val="$undef"
10573         fi
10574         set d_grpasswd
10575         eval $setvar
10576
10577         $rm -f $$.h
10578         ;;
10579 *)
10580         val="$undef";
10581         set d_grpasswd; eval $setvar
10582         ;;
10583 esac
10584
10585 : see if hasmntopt exists
10586 set hasmntopt d_hasmntopt
10587 eval $inlibc
10588
10589 : see if this is a netinet/in.h or sys/in.h system
10590 set netinet/in.h i_niin sys/in.h i_sysin
10591 eval $inhdr
10592
10593 : see if arpa/inet.h has to be included
10594 set arpa/inet.h i_arpainet
10595 eval $inhdr
10596
10597 : see if htonl --and friends-- exists
10598 val=''
10599 set htonl val
10600 eval $inlibc
10601
10602 : Maybe they are macros.
10603 case "$val" in
10604 $undef)
10605         $cat >htonl.c <<EOM
10606 #include <stdio.h>
10607 #include <sys/types.h>
10608 #$i_niin I_NETINET_IN
10609 #$i_sysin I_SYS_IN
10610 #$i_arpainet I_ARPA_INET
10611 #ifdef I_NETINET_IN
10612 #include <netinet/in.h>
10613 #endif
10614 #ifdef I_SYS_IN
10615 #include <sys/in.h>
10616 #endif
10617 #ifdef I_ARPA_INET
10618 #include <arpa/inet.h>
10619 #endif
10620 #ifdef htonl
10621 printf("Defined as a macro.");
10622 #endif
10623 EOM
10624         $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
10625         if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
10626                 val="$define"
10627                 echo "But it seems to be defined as a macro." >&4
10628         fi
10629         $rm -f htonl.?
10630         ;;
10631 esac
10632 set d_htonl
10633 eval $setvar
10634
10635 : index or strchr
10636 echo " "
10637 if set index val -f; eval $csym; $val; then
10638         if set strchr val -f d_strchr; eval $csym; $val; then
10639                 if $contains strchr "$strings" >/dev/null 2>&1 ; then
10640                         val="$define"
10641                         vali="$undef"
10642                         echo "strchr() found." >&4
10643                 else
10644                         val="$undef"
10645                         vali="$define"
10646                         echo "index() found." >&4
10647                 fi
10648         else
10649                 val="$undef"
10650                 vali="$define"
10651                 echo "index() found." >&4
10652         fi
10653 else
10654         if set strchr val -f d_strchr; eval $csym; $val; then
10655                 val="$define"
10656                 vali="$undef"
10657                 echo "strchr() found." >&4
10658         else
10659                 echo "No index() or strchr() found!" >&4
10660                 val="$undef"
10661                 vali="$undef"
10662         fi
10663 fi
10664 set d_strchr; eval $setvar
10665 val="$vali"
10666 set d_index; eval $setvar
10667
10668 : check whether inet_aton exists
10669 set inet_aton d_inetaton
10670 eval $inlibc
10671
10672 : Look for isascii
10673 echo " "
10674 $cat >isascii.c <<'EOCP'
10675 #include <stdio.h>
10676 #include <ctype.h>
10677 int main() {
10678         int c = 'A';
10679         if (isascii(c))
10680                 exit(0);
10681         else
10682                 exit(1);
10683 }
10684 EOCP
10685 set isascii
10686 if eval $compile; then
10687         echo "isascii() found." >&4
10688         val="$define"
10689 else
10690         echo "isascii() NOT found." >&4
10691         val="$undef"
10692 fi
10693 set d_isascii
10694 eval $setvar
10695 $rm -f isascii*
10696
10697 : see if isfinite exists
10698 set isfinite d_isfinite
10699 eval $inlibc
10700
10701 : see if isinf exists
10702 set isinf d_isinf
10703 eval $inlibc
10704
10705 : see if isnan exists
10706 set isnan d_isnan
10707 eval $inlibc
10708
10709 : see if isnanl exists
10710 set isnanl d_isnanl
10711 eval $inlibc
10712
10713 : see if killpg exists
10714 set killpg d_killpg
10715 eval $inlibc
10716
10717 : see if lchown exists
10718 echo " "
10719 $cat > try.c <<'EOCP'
10720 /* System header to define __stub macros and hopefully few prototypes,
10721     which can conflict with char lchown(); below.  */
10722 #include <assert.h>
10723 /* Override any gcc2 internal prototype to avoid an error.  */
10724 /* We use char because int might match the return type of a gcc2
10725    builtin and then its argument prototype would still apply.  */
10726 char lchown();
10727 int main() {
10728     /*  The GNU C library defines this for functions which it implements
10729         to always fail with ENOSYS.  Some functions are actually named
10730         something starting with __ and the normal name is an alias.  */
10731 #if defined (__stub_lchown) || defined (__stub___lchown)
10732 choke me
10733 #else
10734 lchown();
10735 #endif
10736 ; return 0; }
10737 EOCP
10738 set try
10739 if eval $compile; then
10740     $echo "lchown() found." >&4
10741     val="$define"
10742 else
10743     $echo "lchown() NOT found." >&4
10744     val="$undef"
10745 fi
10746 set d_lchown
10747 eval $setvar
10748
10749 : See if number of significant digits in a double precision number is known
10750 echo " "
10751 $cat >ldbl_dig.c <<EOM
10752 #$i_limits I_LIMITS
10753 #$i_float I_FLOAT
10754 #ifdef I_LIMITS
10755 #include <limits.h>
10756 #endif
10757 #ifdef I_FLOAT
10758 #include <float.h>
10759 #endif
10760 #ifdef LDBL_DIG
10761 printf("Contains LDBL_DIG");
10762 #endif
10763 EOM
10764 $cppstdin $cppflags $cppminus < ldbl_dig.c >ldbl_dig.E 2>/dev/null
10765 if $contains 'LDBL_DIG' ldbl_dig.E >/dev/null 2>&1; then
10766         echo "LDBL_DIG found." >&4
10767         val="$define"
10768 else
10769         echo "LDBL_DIG NOT found." >&4
10770         val="$undef"
10771 fi
10772 $rm -f ldbl_dig.?
10773 set d_ldbl_dig
10774 eval $setvar
10775
10776 : see if link exists
10777 set link d_link
10778 eval $inlibc
10779
10780 : see if localeconv exists
10781 set localeconv d_locconv
10782 eval $inlibc
10783
10784 : see if lockf exists
10785 set lockf d_lockf
10786 eval $inlibc
10787
10788 : see if prototype for lseek is available
10789 echo " "
10790 set d_lseekproto lseek $i_systypes sys/types.h $i_unistd unistd.h
10791 eval $hasproto
10792
10793 : see if lstat exists
10794 set lstat d_lstat
10795 eval $inlibc
10796
10797 : see if madvise exists
10798 set madvise d_madvise
10799 eval $inlibc
10800
10801 : see if mblen exists
10802 set mblen d_mblen
10803 eval $inlibc
10804
10805 : see if mbstowcs exists
10806 set mbstowcs d_mbstowcs
10807 eval $inlibc
10808
10809 : see if mbtowc exists
10810 set mbtowc d_mbtowc
10811 eval $inlibc
10812
10813 : see if memchr exists
10814 set memchr d_memchr
10815 eval $inlibc
10816
10817 : see if memcmp exists
10818 set memcmp d_memcmp
10819 eval $inlibc
10820
10821 : see if memcpy exists
10822 set memcpy d_memcpy
10823 eval $inlibc
10824
10825 : see if memmove exists
10826 set memmove d_memmove
10827 eval $inlibc
10828
10829 : see if memset exists
10830 set memset d_memset
10831 eval $inlibc
10832
10833 : see if mkdir exists
10834 set mkdir d_mkdir
10835 eval $inlibc
10836
10837 : see if mkdtemp exists
10838 set mkdtemp d_mkdtemp
10839 eval $inlibc
10840
10841 : see if mkfifo exists
10842 set mkfifo d_mkfifo
10843 eval $inlibc
10844
10845 : see if mkstemp exists
10846 set mkstemp d_mkstemp
10847 eval $inlibc
10848
10849 : see if mkstemps exists
10850 set mkstemps d_mkstemps
10851 eval $inlibc
10852
10853 : see if mktime exists
10854 set mktime d_mktime
10855 eval $inlibc
10856
10857 : see if this is a sys/mman.h system
10858 set sys/mman.h i_sysmman
10859 eval $inhdr
10860
10861 : see if mmap exists
10862 set mmap d_mmap
10863 eval $inlibc
10864 : see what shmat returns
10865 : default to something harmless
10866 mmaptype='void *'
10867 case "$i_sysmman$d_mmap" in
10868 "$define$define")
10869         $cat >mmap.c <<'END'
10870 #include <sys/mman.h>
10871 void *mmap();
10872 END
10873         if $cc $ccflags -c mmap.c >/dev/null 2>&1; then
10874                 mmaptype='void *'
10875         else
10876                 mmaptype='caddr_t'
10877         fi
10878         echo "and it returns ($mmaptype)." >&4
10879         ;;
10880 esac
10881
10882
10883
10884 : see if modfl exists
10885 set modfl d_modfl
10886 eval $inlibc
10887
10888 d_modfl_pow32_bug="$undef"
10889
10890 case "$d_longdbl$d_modfl" in
10891 $define$define)
10892         $cat <<EOM
10893 Checking to see whether your modfl() is okay for large values...
10894 EOM
10895 $cat >try.c <<EOCP
10896 #include <math.h> 
10897 #include <stdio.h>
10898 int main() {
10899     long double nv = 4294967303.15;
10900     long double v, w;
10901     v = modfl(nv, &w);         
10902 #ifdef __GLIBC__
10903     printf("glibc");
10904 #endif
10905     printf(" %"$sPRIfldbl" %"$sPRIfldbl" %"$sPRIfldbl"\n", nv, v, w);
10906     return 0;
10907 }
10908 EOCP
10909         case "$osname:$gccversion" in
10910         aix:)   saveccflags="$ccflags"
10911                 ccflags="$ccflags -qlongdouble" ;; # to avoid core dump
10912         esac
10913         set try
10914         if eval $compile; then
10915                 foo=`$run ./try`
10916                 case "$foo" in
10917                 *" 4294967303.150000 1.150000 4294967302.000000")
10918                         echo >&4 "Your modfl() is broken for large values."
10919                         d_modfl_pow32_bug="$define"
10920                         case "$foo" in
10921                         glibc)  echo >&4 "You should upgrade your glibc to at least 2.2.2 to get a fixed modfl()."
10922                         ;;
10923                         esac
10924                         ;;
10925                 *" 4294967303.150000 0.150000 4294967303.000000")
10926                         echo >&4 "Your modfl() seems okay for large values."
10927                         ;;
10928                 *)      echo >&4 "I don't understand your modfl() at all."
10929                         d_modfl="$undef"
10930                         ;;
10931                 esac
10932                 $rm -f try.* try core core.try.*
10933         else
10934                 echo "I cannot figure out whether your modfl() is okay, assuming it isn't."
10935                 d_modfl="$undef"
10936         fi
10937         case "$osname:$gccversion" in
10938         aix:)   ccflags="$saveccflags" ;; # restore
10939         esac
10940         ;;
10941 esac
10942
10943 : see if mprotect exists
10944 set mprotect d_mprotect
10945 eval $inlibc
10946
10947 : see if msgctl exists
10948 set msgctl d_msgctl
10949 eval $inlibc
10950
10951 : see if msgget exists
10952 set msgget d_msgget
10953 eval $inlibc
10954
10955 : see if msgsnd exists
10956 set msgsnd d_msgsnd
10957 eval $inlibc
10958
10959 : see if msgrcv exists
10960 set msgrcv d_msgrcv
10961 eval $inlibc
10962
10963 : see how much of the 'msg*(2)' library is present.
10964 h_msg=true
10965 echo " "
10966 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
10967 *"$undef"*) h_msg=false;;
10968 esac
10969 case "$osname" in
10970 freebsd)
10971     case "`ipcs 2>&1`" in
10972     "SVID messages"*"not configured"*)
10973         echo "Your $osname does not have the msg*(2) configured." >&4
10974         h_msg=false
10975         val="$undef"
10976         set msgctl d_msgctl
10977         eval $setvar
10978         set msgget d_msgget
10979         eval $setvar
10980         set msgsnd d_msgsnd
10981         eval $setvar
10982         set msgrcv d_msgrcv
10983         eval $setvar
10984         ;;
10985     esac
10986     ;;
10987 esac
10988 : we could also check for sys/ipc.h ...
10989 if $h_msg && $test `./findhdr sys/msg.h`; then
10990         echo "You have the full msg*(2) library." >&4
10991         val="$define"
10992 else
10993         echo "You don't have the full msg*(2) library." >&4
10994         val="$undef"
10995 fi
10996 set d_msg
10997 eval $setvar
10998
10999
11000 echo " "
11001 echo "Checking to see if your system supports struct msghdr..." >&4
11002 set d_msghdr_s msghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
11003 eval $hasstruct
11004 case "$d_msghdr_s" in
11005 "$define")      echo "Yes, it does."   ;;
11006 *)              echo "No, it doesn't." ;;
11007 esac
11008
11009
11010 : see if msync exists
11011 set msync d_msync
11012 eval $inlibc
11013
11014 : see if munmap exists
11015 set munmap d_munmap
11016 eval $inlibc
11017
11018 : see if nice exists
11019 set nice d_nice
11020 eval $inlibc
11021
11022 : see if this is a langinfo.h system
11023 set langinfo.h i_langinfo
11024 eval $inhdr
11025
11026 : see if nl_langinfo exists
11027 set nl_langinfo d_nl_langinfo
11028 eval $inlibc
11029
11030 : check for length of character
11031 echo " "
11032 case "$charsize" in
11033 '')
11034         echo "Checking to see how big your characters are (hey, you never know)..." >&4
11035         $cat >try.c <<'EOCP'
11036 #include <stdio.h>
11037 int main()
11038 {
11039     printf("%d\n", (int)sizeof(char));
11040     exit(0);
11041 }
11042 EOCP
11043         set try
11044         if eval $compile_ok; then
11045                 dflt=`$run ./try`
11046         else
11047                 dflt='1'
11048                 echo "(I can't seem to compile the test program.  Guessing...)"
11049         fi
11050         ;;
11051 *)
11052         dflt="$charsize"
11053         ;;
11054 esac
11055 rp="What is the size of a character (in bytes)?"
11056 . ./myread
11057 charsize="$ans"
11058 $rm -f try.c try
11059
11060 : check for volatile keyword
11061 echo " "
11062 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
11063 $cat >try.c <<'EOCP'
11064 int main()
11065 {
11066         typedef struct _goo_struct goo_struct;
11067         goo_struct * volatile goo = ((goo_struct *)0);
11068         struct _goo_struct {
11069                 long long_int;
11070                 int reg_int;
11071                 char char_var;
11072         };
11073         typedef unsigned short foo_t;
11074         char *volatile foo;
11075         volatile int bar;
11076         volatile foo_t blech;
11077         foo = foo;
11078 }
11079 EOCP
11080 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
11081         val="$define"
11082         echo "Yup, it does."
11083 else
11084         val="$undef"
11085         echo "Nope, it doesn't."
11086 fi
11087 set d_volatile
11088 eval $setvar
11089 $rm -f try.*
11090
11091
11092 echo " "
11093 $echo "Choosing the C types to be used for Perl's internal types..." >&4
11094
11095 case "$use64bitint:$d_quad:$quadtype" in
11096 define:define:?*)
11097         ivtype="$quadtype"
11098         uvtype="$uquadtype"
11099         ivsize=8
11100         uvsize=8
11101         ;;
11102 *)      ivtype="long"
11103         uvtype="unsigned long"
11104         ivsize=$longsize
11105         uvsize=$longsize
11106         ;;
11107 esac
11108
11109 case "$uselongdouble:$d_longdbl" in
11110 define:define)
11111         nvtype="long double"
11112         nvsize=$longdblsize
11113         ;;
11114 *)      nvtype=double
11115         nvsize=$doublesize
11116         ;;
11117 esac
11118
11119 $echo "(IV will be "$ivtype", $ivsize bytes)"
11120 $echo "(UV will be "$uvtype", $uvsize bytes)"
11121 $echo "(NV will be "$nvtype", $nvsize bytes)"
11122
11123 $cat >try.c <<EOCP
11124 #$i_inttypes I_INTTYPES
11125 #ifdef I_INTTYPES
11126 #include <inttypes.h>
11127 #endif
11128 #include <stdio.h>
11129 int main() {
11130 #ifdef INT8
11131    int8_t i =  INT8_MAX;
11132   uint8_t u = UINT8_MAX;
11133   printf("int8_t\n");
11134 #endif
11135 #ifdef INT16
11136    int16_t i =  INT16_MAX;
11137   uint16_t i = UINT16_MAX;
11138   printf("int16_t\n");
11139 #endif
11140 #ifdef INT32
11141    int32_t i =  INT32_MAX;
11142   uint32_t u = UINT32_MAX;
11143   printf("int32_t\n");
11144 #endif
11145 }
11146 EOCP
11147
11148 case "$i8type" in
11149 '')     case "$charsize" in
11150         1)      i8type=char
11151                 u8type="unsigned char"
11152                 i8size=$charsize
11153                 u8size=$charsize
11154                 ;;
11155         esac
11156         ;;
11157 esac
11158 case "$i8type" in
11159 '')     set try -DINT8
11160         if eval $compile; then
11161                 case "`$run ./try`" in
11162                 int8_t) i8type=int8_t
11163                         u8type=uint8_t
11164                         i8size=1
11165                         u8size=1
11166                         ;;
11167                 esac
11168         fi
11169         ;;
11170 esac
11171 case "$i8type" in
11172 '')     if $test $charsize -ge 1; then
11173                 i8type=char
11174                 u8type="unsigned char"
11175                 i8size=$charsize
11176                 u8size=$charsize
11177         fi
11178         ;;
11179 esac
11180
11181 case "$i16type" in
11182 '')     case "$shortsize" in
11183         2)      i16type=short
11184                 u16type="unsigned short"
11185                 i16size=$shortsize
11186                 u16size=$shortsize
11187                 ;;
11188         esac
11189         ;;
11190 esac
11191 case "$i16type" in
11192 '')     set try -DINT16
11193         if eval $compile; then
11194                 case "`$run ./try`" in
11195                 int16_t)
11196                         i16type=int16_t
11197                         u16type=uint16_t
11198                         i16size=2
11199                         u16size=2
11200                         ;;
11201                 esac
11202         fi
11203         ;;
11204 esac
11205 case "$i16type" in
11206 '')     if $test $shortsize -ge 2; then
11207                 i16type=short
11208                 u16type="unsigned short"
11209                 i16size=$shortsize
11210                 u16size=$shortsize
11211         fi
11212         ;;
11213 esac
11214
11215 case "$i32type" in
11216 '')     case "$longsize" in
11217         4)      i32type=long
11218                 u32type="unsigned long"
11219                 i32size=$longsize
11220                 u32size=$longsize
11221                 ;;
11222         *)      case "$intsize" in
11223                 4)      i32type=int
11224                         u32type="unsigned int"
11225                         i32size=$intsize
11226                         u32size=$intsize
11227                         ;;
11228                 esac
11229                 ;;
11230         esac
11231         ;;
11232 esac
11233 case "$i32type" in
11234 '')     set try -DINT32
11235         if eval $compile; then
11236                 case "`$run ./try`" in
11237                 int32_t)
11238                         i32type=int32_t
11239                         u32type=uint32_t
11240                         i32size=4
11241                         u32size=4
11242                         ;;
11243                 esac
11244         fi
11245         ;;
11246 esac
11247 case "$i32type" in
11248 '')     if $test $intsize -ge 4; then
11249                 i32type=int
11250                 u32type="unsigned int"
11251                 i32size=$intsize
11252                 u32size=$intsize
11253         fi
11254         ;;
11255 esac
11256
11257 case "$i64type" in
11258 '')     case "$d_quad:$quadtype" in
11259         define:?*)
11260                 i64type="$quadtype"
11261                 u64type="$uquadtype"
11262                 i64size=8
11263                 u64size=8
11264                 ;;
11265         esac
11266         ;;
11267 esac
11268
11269 $echo "Checking how many bits of your UVs your NVs can preserve..." >&4
11270 : volatile so that the compiler has to store it out to memory.
11271 if test X"$d_volatile" = X"$define"; then
11272         volatile=volatile
11273 fi
11274 $cat <<EOP >try.c
11275 #include <stdio.h>
11276 #include <sys/types.h>
11277 #include <signal.h>
11278 #ifdef SIGFPE
11279 $volatile int bletched = 0;
11280 $signal_t blech(s) int s; { bletched = 1; }
11281 #endif
11282 int main() {
11283     $uvtype u = 0;
11284     $nvtype d;
11285     int     n = 8 * $uvsize;
11286     int     i;
11287 #ifdef SIGFPE
11288     signal(SIGFPE, blech);
11289 #endif
11290
11291     for (i = 0; i < n; i++) {
11292       u = u << 1 | ($uvtype)1;
11293       d = ($nvtype)u;
11294       if (($uvtype)d != u)
11295         break;
11296       if (d <= 0)
11297         break;
11298       d = ($nvtype)(u - 1);
11299       if (($uvtype)d != (u - 1))
11300         break;
11301 #ifdef SIGFPE
11302       if (bletched) {
11303         break;
11304 #endif
11305       } 
11306     }
11307     printf("%d\n", ((i == n) ? -n : i));
11308     exit(0);
11309 }
11310 EOP
11311 set try
11312
11313 d_nv_preserves_uv="$undef"
11314 if eval $compile; then
11315         d_nv_preserves_uv_bits="`$run ./try`"
11316 fi
11317 case "$d_nv_preserves_uv_bits" in
11318 \-[1-9]*)       
11319         d_nv_preserves_uv_bits=`expr 0 - $d_nv_preserves_uv_bits`
11320         $echo "Your NVs can preserve all $d_nv_preserves_uv_bits bits of your UVs."  2>&1
11321         d_nv_preserves_uv="$define"
11322         ;;
11323 [1-9]*) $echo "Your NVs can preserve only $d_nv_preserves_uv_bits bits of your UVs."  2>&1
11324         d_nv_preserves_uv="$undef" ;;
11325 *)      $echo "Can't figure out how many bits your NVs preserve." 2>&1
11326         d_nv_preserves_uv_bits="$undef" ;;
11327 esac
11328
11329 $rm -f try.* try
11330
11331
11332 : check for off64_t
11333 echo " "
11334 echo "Checking to see if you have off64_t..." >&4
11335 $cat >try.c <<EOCP
11336 #include <sys/types.h>
11337 #include <unistd.h>
11338 int main() { off64_t x = 7; }
11339 EOCP
11340 set try
11341 if eval $compile; then
11342         val="$define"
11343         echo "You have off64_t."
11344 else
11345         val="$undef"
11346         echo "You do not have off64_t."
11347         case "$lseeksize" in
11348         8) echo "(Your off_t is 64 bits, so you could use that.)" ;;
11349         esac
11350 fi
11351 $rm -f try.* try
11352 set d_off64_t
11353 eval $setvar
11354
11355 : see if POSIX threads are available
11356 set pthread.h i_pthread
11357 eval $inhdr
11358
11359
11360
11361
11362 : how to create joinable pthreads
11363 if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
11364         echo " "
11365         echo "Checking what constant to use for creating joinable pthreads..." >&4 
11366         $cat >try.c <<'EOCP'
11367 #include <pthread.h>
11368 int main() {
11369     int detachstate = JOINABLE;
11370 }
11371 EOCP
11372         set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
11373         if eval $compile; then
11374                 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
11375                 val="$undef" # Yes, undef.
11376                 set d_old_pthread_create_joinable
11377                 eval $setvar
11378                 val=""
11379                 set old_pthread_create_joinable
11380                 eval $setvar
11381         else
11382                 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
11383                 if eval $compile; then
11384                         echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
11385                         val="$define"
11386                         set d_old_pthread_create_joinable
11387                         eval $setvar
11388                         val=PTHREAD_CREATE_UNDETACHED
11389                         set old_pthread_create_joinable
11390                         eval $setvar
11391                 else            
11392                         set try -DJOINABLE=__UNDETACHED
11393                         if eval $compile; then
11394                                 echo "You seem to use __UNDETACHED." >&4
11395                                 val="$define"
11396                                 set d_old_pthread_create_joinable
11397                                 eval $setvar
11398                                 val=__UNDETACHED
11399                                 set old_pthread_create_joinable
11400                                 eval $setvar
11401                         else
11402                                 echo "Egads, nothing obvious found.  Guessing that you use 0." >&4
11403                                 val="$define"
11404                                 set d_old_pthread_create_joinable
11405                                 eval $setvar
11406                                 val=0
11407                                 set old_pthread_create_joinable
11408                                 eval $setvar
11409                         fi
11410                 fi
11411         fi
11412         $rm -f try try.*
11413 else
11414     d_old_pthread_create_joinable="$undef"
11415     old_pthread_create_joinable=""
11416 fi
11417
11418 : see if pause exists
11419 set pause d_pause
11420 eval $inlibc
11421
11422 : see if pipe exists
11423 set pipe d_pipe
11424 eval $inlibc
11425
11426 : see if poll exists
11427 set poll d_poll
11428 eval $inlibc
11429
11430 : see if readlink exists
11431 set readlink d_readlink
11432 eval $inlibc
11433
11434 echo " "
11435 echo "Checking for /proc/self/exe..." >&4
11436 val="$undef"
11437 case "$d_readlink" in
11438 "$define")
11439         if $issymlink /proc/self/exe ; then
11440                 $ls -l /proc/self/exe > reflect
11441                 if $contains $ls reflect >/dev/null 2>&1; then
11442                         val="$define"
11443                         echo "You have Linux-like /proc/self/exe."
11444                 fi
11445                 $rm reflect
11446         fi
11447         ;;
11448 esac
11449 set d_procselfexe
11450 eval $setvar
11451
11452 : see if pthread_atfork exists
11453 set pthread_atfork d_pthread_atfork
11454 eval $inlibc
11455
11456
11457 : see whether the various POSIXish _yields exist
11458 $cat >try.c <<EOP
11459 #include <pthread.h>
11460 #include <stdio.h>
11461 int main() {
11462 #ifdef SCHED_YIELD
11463         sched_yield();
11464 #else
11465 #ifdef PTHREAD_YIELD
11466         pthread_yield();
11467 #else
11468 #ifdef PTHREAD_YIELD_NULL
11469         pthread_yield(NULL);
11470 #endif
11471 #endif
11472 #endif
11473 }
11474 EOP
11475 : see if sched_yield exists
11476 set try -DSCHED_YIELD
11477 if eval $compile; then
11478     val="$define"
11479     sched_yield='sched_yield()'
11480 else
11481     val="$undef"
11482 fi
11483 case "$usethreads" in
11484 $define)
11485         case "$val" in
11486         $define) echo 'sched_yield() found.' >&4        ;;
11487         *)       echo 'sched_yield() NOT found.' >&4    ;;
11488         esac
11489 esac
11490 set d_sched_yield
11491 eval $setvar
11492
11493 : see if pthread_yield exists
11494 set try -DPTHREAD_YIELD
11495 if eval $compile; then
11496     val="$define"
11497     case "$sched_yield" in
11498     '') sched_yield='pthread_yield()' ;;
11499     esac
11500 else
11501     set try -DPTHREAD_YIELD_NULL
11502     if eval $compile; then
11503         val="$define"
11504         case "$sched_yield" in
11505         '') sched_yield='pthread_yield(NULL)' ;;
11506         esac
11507     else
11508         val="$undef"
11509     fi
11510 fi
11511 case "$usethreads" in
11512 $define)
11513         case "$val" in
11514         $define) echo 'pthread_yield() found.' >&4      ;;
11515         *)       echo 'pthread_yield() NOT found.' >&4  ;;
11516         esac
11517         ;;
11518 esac
11519 set d_pthread_yield
11520 eval $setvar
11521
11522 case "$sched_yield" in
11523 '') sched_yield=undef ;;
11524 esac
11525
11526 $rm -f try try.*
11527
11528 : see if this is a pwd.h system
11529 set pwd.h i_pwd
11530 eval $inhdr
11531
11532 case "$i_pwd" in
11533 $define)
11534         xxx=`./findhdr pwd.h`
11535         $cppstdin $cppflags $cppminus < $xxx >$$.h
11536
11537         if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
11538                 val="$define"
11539         else
11540                 val="$undef"
11541         fi
11542         set d_pwquota
11543         eval $setvar
11544
11545         if $contains 'pw_age' $$.h >/dev/null 2>&1; then
11546                 val="$define"
11547         else
11548                 val="$undef"
11549         fi
11550         set d_pwage
11551         eval $setvar
11552
11553         if $contains 'pw_change' $$.h >/dev/null 2>&1; then
11554                 val="$define"
11555         else
11556                 val="$undef"
11557         fi
11558         set d_pwchange
11559         eval $setvar
11560
11561         if $contains 'pw_class' $$.h >/dev/null 2>&1; then
11562                 val="$define"
11563         else
11564                 val="$undef"
11565         fi
11566         set d_pwclass
11567         eval $setvar
11568
11569         if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
11570                 val="$define"
11571         else
11572                 val="$undef"
11573         fi
11574         set d_pwexpire
11575         eval $setvar
11576
11577         if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
11578                 val="$define"
11579         else
11580                 val="$undef"
11581         fi
11582         set d_pwcomment
11583         eval $setvar
11584
11585         if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
11586                 val="$define"
11587         else
11588                 val="$undef"
11589         fi
11590         set d_pwgecos
11591         eval $setvar
11592
11593         if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
11594                 val="$define"
11595         else
11596                 val="$undef"
11597         fi
11598         set d_pwpasswd
11599         eval $setvar
11600
11601         $rm -f $$.h
11602         ;;
11603 *)
11604         val="$undef"; 
11605         set d_pwquota; eval $setvar
11606         set d_pwage; eval $setvar
11607         set d_pwchange; eval $setvar
11608         set d_pwclass; eval $setvar
11609         set d_pwexpire; eval $setvar
11610         set d_pwcomment; eval $setvar
11611         set d_pwgecos; eval $setvar
11612         set d_pwpasswd; eval $setvar
11613         ;;
11614 esac
11615
11616 : see if readdir and friends exist
11617 set readdir d_readdir
11618 eval $inlibc
11619 set seekdir d_seekdir
11620 eval $inlibc
11621 set telldir d_telldir
11622 eval $inlibc
11623 set rewinddir d_rewinddir
11624 eval $inlibc
11625
11626 : see if readv exists
11627 set readv d_readv
11628 eval $inlibc
11629
11630 : see if recvmsg exists
11631 set recvmsg d_recvmsg
11632 eval $inlibc
11633
11634 : see if rename exists
11635 set rename d_rename
11636 eval $inlibc
11637
11638 : see if rmdir exists
11639 set rmdir d_rmdir
11640 eval $inlibc
11641
11642 : see if memory.h is available.
11643 val=''
11644 set memory.h val
11645 eval $inhdr
11646
11647 : See if it conflicts with string.h
11648 case "$val" in
11649 $define)
11650         case "$strings" in
11651         '') ;;
11652         *)
11653                 $cppstdin $cppflags $cppminus < $strings > mem.h
11654                 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
11655                         echo " "
11656                         echo "We won't be including <memory.h>."
11657                         val="$undef"
11658                 fi
11659                 $rm -f mem.h
11660                 ;;
11661         esac
11662 esac
11663 set i_memory
11664 eval $setvar
11665
11666 : can bcopy handle overlapping blocks?
11667 echo " "
11668 val="$undef"
11669 case "$d_memmove" in
11670 "$define") echo "I'll use memmove() instead of bcopy() for overlapping copies." ;;
11671 *)      case "$d_bcopy" in
11672         "$define")
11673                 echo "Checking to see if bcopy() can do overlapping copies..." >&4
11674                 $cat >try.c <<EOCP
11675 #$i_memory I_MEMORY
11676 #$i_stdlib I_STDLIB
11677 #$i_string I_STRING
11678 #$i_unistd I_UNISTD
11679 EOCP
11680         $cat >>try.c <<'EOCP'
11681 #include <stdio.h>
11682 #ifdef I_MEMORY
11683 #  include <memory.h>
11684 #endif
11685 #ifdef I_STDLIB
11686 #  include <stdlib.h>
11687 #endif
11688 #ifdef I_STRING
11689 #  include <string.h>
11690 #else
11691 #  include <strings.h>
11692 #endif
11693 #ifdef I_UNISTD
11694 #  include <unistd.h>  /* Needed for NetBSD */
11695 #endif
11696 int main()
11697 {
11698 char buf[128], abc[128];
11699 char *b;
11700 int len;
11701 int off;
11702 int align;
11703
11704 /* Copy "abcde..." string to char abc[] so that gcc doesn't
11705    try to store the string in read-only memory. */
11706 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
11707
11708 for (align = 7; align >= 0; align--) {
11709         for (len = 36; len; len--) {
11710                 b = buf+align;
11711                 bcopy(abc, b, len);
11712                 for (off = 1; off <= len; off++) {
11713                         bcopy(b, b+off, len);
11714                         bcopy(b+off, b, len);
11715                         if (bcmp(b, abc, len))
11716                                 exit(1);
11717                 }
11718         }
11719 }
11720 exit(0);
11721 }
11722 EOCP
11723                 set try
11724                 if eval $compile_ok; then
11725                         if ./try 2>/dev/null; then
11726                                 echo "Yes, it can."
11727                                 val="$define"
11728                         else
11729                                 echo "It can't, sorry."
11730                         fi
11731                 else
11732                         echo "(I can't compile the test program, so we'll assume not...)"
11733                 fi
11734                 ;;
11735         esac
11736         $rm -f try.* try core
11737         ;;
11738 esac
11739 set d_safebcpy
11740 eval $setvar
11741
11742 : can memcpy handle overlapping blocks?
11743 echo " "
11744 val="$undef"
11745 case "$d_memmove" in
11746 "$define") echo "I'll use memmove() instead of memcpy() for overlapping copies." ;;
11747 *)      case "$d_memcpy" in
11748         "$define")
11749                 echo "Checking to see if memcpy() can do overlapping copies..." >&4
11750                 $cat >try.c <<EOCP
11751 #$i_memory I_MEMORY
11752 #$i_stdlib I_STDLIB
11753 #$i_string I_STRING
11754 #$i_unistd I_UNISTD
11755 EOCP
11756         $cat >>try.c <<'EOCP'
11757 #include <stdio.h>
11758 #ifdef I_MEMORY
11759 #  include <memory.h>
11760 #endif
11761 #ifdef I_STDLIB
11762 #  include <stdlib.h>
11763 #endif
11764 #ifdef I_STRING
11765 #  include <string.h>
11766 #else
11767 #  include <strings.h>
11768 #endif
11769 #ifdef I_UNISTD
11770 #  include <unistd.h>  /* Needed for NetBSD */
11771 #endif
11772 int main()
11773 {
11774 char buf[128], abc[128];
11775 char *b;
11776 int len;
11777 int off;
11778 int align;
11779
11780 /* Copy "abcde..." string to char abc[] so that gcc doesn't
11781    try to store the string in read-only memory. */
11782 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
11783
11784 for (align = 7; align >= 0; align--) {
11785         for (len = 36; len; len--) {
11786                 b = buf+align;
11787                 memcpy(b, abc, len);
11788                 for (off = 1; off <= len; off++) {
11789                         memcpy(b+off, b, len);
11790                         memcpy(b, b+off, len);
11791                         if (memcmp(b, abc, len))
11792                                 exit(1);
11793                 }
11794         }
11795 }
11796 exit(0);
11797 }
11798 EOCP
11799                 set try
11800                 if eval $compile_ok; then
11801                         if ./try 2>/dev/null; then
11802                                 echo "Yes, it can."
11803                                 val="$define"
11804                         else
11805                                 echo "It can't, sorry."
11806                         fi
11807                 else
11808                         echo "(I can't compile the test program, so we'll assume not...)"
11809                 fi
11810                 ;;
11811         esac
11812         $rm -f try.* try core
11813         ;;
11814 esac
11815 set d_safemcpy
11816 eval $setvar
11817
11818 : can memcmp be trusted to compare relative magnitude?
11819 val="$undef"
11820 case "$d_memcmp" in
11821 "$define")
11822         echo " "
11823         echo "Checking if your memcmp() can compare relative magnitude..." >&4
11824         $cat >try.c <<EOCP
11825 #$i_memory I_MEMORY
11826 #$i_stdlib I_STDLIB
11827 #$i_string I_STRING
11828 #$i_unistd I_UNISTD
11829 EOCP
11830         $cat >>try.c <<'EOCP'
11831 #include <stdio.h>
11832 #ifdef I_MEMORY
11833 #  include <memory.h>
11834 #endif
11835 #ifdef I_STDLIB
11836 #  include <stdlib.h>
11837 #endif
11838 #ifdef I_STRING
11839 #  include <string.h>
11840 #else
11841 #  include <strings.h>
11842 #endif
11843 #ifdef I_UNISTD
11844 #  include <unistd.h>  /* Needed for NetBSD */
11845 #endif
11846 int main()
11847 {
11848 char a = -1;
11849 char b = 0;
11850 if ((a < b) && memcmp(&a, &b, 1) < 0)
11851         exit(1);
11852 exit(0);
11853 }
11854 EOCP
11855         set try
11856         if eval $compile_ok; then
11857                 if $run ./try 2>/dev/null; then
11858                         echo "Yes, it can."
11859                         val="$define"
11860                 else
11861                         echo "No, it can't (it uses signed chars)."
11862                 fi
11863         else
11864                 echo "(I can't compile the test program, so we'll assume not...)"
11865         fi
11866         ;;
11867 esac
11868 $rm -f try.* try core
11869 set d_sanemcmp
11870 eval $setvar
11871
11872 : see if prototype for sbrk is available
11873 echo " "
11874 set d_sbrkproto sbrk $i_unistd unistd.h
11875 eval $hasproto
11876
11877 : see if select exists
11878 set select d_select
11879 eval $inlibc
11880
11881 : see if semctl exists
11882 set semctl d_semctl
11883 eval $inlibc
11884
11885 : see if semget exists
11886 set semget d_semget
11887 eval $inlibc
11888
11889 : see if semop exists
11890 set semop d_semop
11891 eval $inlibc
11892
11893 : see how much of the 'sem*(2)' library is present.
11894 h_sem=true
11895 echo " "
11896 case "$d_semctl$d_semget$d_semop" in
11897 *"$undef"*) h_sem=false;;
11898 esac
11899 case "$osname" in
11900 freebsd)
11901     case "`ipcs 2>&1`" in
11902     "SVID messages"*"not configured"*)
11903         echo "Your $osname does not have the sem*(2) configured." >&4
11904         h_sem=false
11905         val="$undef"
11906         set semctl d_semctl
11907         eval $setvar
11908         set semget d_semget
11909         eval $setvar
11910         set semop d_semop
11911         eval $setvar
11912         ;;
11913     esac
11914     ;;
11915 esac
11916 : we could also check for sys/ipc.h ...
11917 if $h_sem && $test `./findhdr sys/sem.h`; then
11918         echo "You have the full sem*(2) library." >&4
11919         val="$define"
11920 else
11921         echo "You don't have the full sem*(2) library." >&4
11922         val="$undef"
11923 fi
11924 set d_sem
11925 eval $setvar
11926
11927 : see whether sys/sem.h defines union semun
11928 echo " "
11929 $cat > try.c <<'END'
11930 #include <sys/types.h>
11931 #include <sys/ipc.h>
11932 #include <sys/sem.h>
11933 int main () { union semun semun; semun.buf = 0; }
11934 END
11935 set try
11936 if eval $compile; then
11937     echo "You have union semun in <sys/sem.h>." >&4
11938     val="$define"
11939 else
11940     echo "You do not have union semun in <sys/sem.h>." >&4
11941     val="$undef"
11942 fi
11943 $rm -f try try.c try.h
11944 set d_union_semun
11945 eval $setvar
11946
11947 : see how to do semctl IPC_STAT
11948 case "$d_sem" in
11949 $define)
11950     : see whether semctl IPC_STAT can use union semun
11951     echo " "
11952     $cat > try.h <<END
11953 #ifndef S_IRUSR
11954 #   ifdef S_IREAD
11955 #       define S_IRUSR S_IREAD
11956 #       define S_IWUSR S_IWRITE
11957 #       define S_IXUSR S_IEXEC
11958 #   else
11959 #       define S_IRUSR 0400
11960 #       define S_IWUSR 0200
11961 #       define S_IXUSR 0100
11962 #   endif
11963 #   define S_IRGRP (S_IRUSR>>3)
11964 #   define S_IWGRP (S_IWUSR>>3)
11965 #   define S_IXGRP (S_IXUSR>>3)
11966 #   define S_IROTH (S_IRUSR>>6)
11967 #   define S_IWOTH (S_IWUSR>>6)
11968 #   define S_IXOTH (S_IXUSR>>6)
11969 #endif
11970 #ifndef S_IRWXU
11971 #   define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
11972 #   define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
11973 #   define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
11974 #endif
11975 END
11976
11977     $cat > try.c <<END
11978 #include <sys/types.h>
11979 #include <sys/ipc.h>
11980 #include <sys/sem.h>
11981 #include <sys/stat.h>
11982 #include <stdio.h>
11983 #include <errno.h>
11984 #include "try.h"
11985 #ifndef errno
11986 extern int errno;
11987 #endif
11988 #$d_union_semun HAS_UNION_SEMUN
11989 int main() {
11990     union semun
11991 #ifndef HAS_UNION_SEMUN
11992     {
11993         int val;
11994         struct semid_ds *buf;
11995         unsigned short *array;
11996     }
11997 #endif
11998     arg;
11999     int sem, st;
12000
12001 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
12002     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
12003     if (sem > -1) {
12004         struct semid_ds argbuf;
12005         arg.buf = &argbuf;
12006 #       ifdef IPC_STAT
12007         st = semctl(sem, 0, IPC_STAT, arg);
12008         if (st == 0)
12009             printf("semun\n");
12010         else
12011 #       endif /* IPC_STAT */
12012             printf("semctl IPC_STAT failed: errno = %d\n", errno);
12013 #       ifdef IPC_RMID
12014         if (semctl(sem, 0, IPC_RMID, arg) != 0)
12015 #       endif /* IPC_RMID */
12016             printf("semctl IPC_RMID failed: errno = %d\n", errno);
12017     } else
12018 #endif /* IPC_PRIVATE && ... */
12019         printf("semget failed: errno = %d\n", errno);
12020   return 0;
12021 }
12022 END
12023     val="$undef"
12024     set try
12025     if eval $compile; then
12026         xxx=`$run ./try`
12027         case "$xxx" in
12028         semun) val="$define" ;;
12029         esac
12030     fi
12031     $rm -f try try.c
12032     set d_semctl_semun
12033     eval $setvar
12034     case "$d_semctl_semun" in
12035     $define)
12036         echo "You can use union semun for semctl IPC_STAT." >&4
12037         also='also'
12038         ;;
12039     *)  echo "You cannot use union semun for semctl IPC_STAT." >&4
12040         also=''
12041         ;;
12042     esac
12043
12044     : see whether semctl IPC_STAT can use struct semid_ds pointer
12045     $cat > try.c <<'END'
12046 #include <sys/types.h>
12047 #include <sys/ipc.h>
12048 #include <sys/sem.h>
12049 #include <sys/stat.h>
12050 #include "try.h"
12051 #include <stdio.h>
12052 #include <errno.h>
12053 #ifndef errno
12054 extern int errno;
12055 #endif
12056 int main() {
12057     struct semid_ds arg;
12058     int sem, st;
12059
12060 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) &&  defined(S_IRWXO) && defined(IPC_CREAT)
12061     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
12062     if (sem > -1) {
12063 #       ifdef IPC_STAT
12064         st = semctl(sem, 0, IPC_STAT, &arg);
12065         if (st == 0)
12066             printf("semid_ds\n");
12067         else
12068 #       endif /* IPC_STAT */
12069             printf("semctl IPC_STAT failed: errno = %d\n", errno);
12070 #       ifdef IPC_RMID
12071         if (semctl(sem, 0, IPC_RMID, &arg) != 0)
12072 #       endif /* IPC_RMID */
12073             printf("semctl IPC_RMID failed: errno = %d\n", errno);
12074     } else
12075 #endif /* IPC_PRIVATE && ... */
12076         printf("semget failed: errno = %d\n", errno);
12077
12078     return 0;
12079 }
12080 END
12081     val="$undef"
12082     set try
12083     if eval $compile; then
12084         xxx=`$run ./try`
12085         case "$xxx" in
12086         semid_ds) val="$define" ;;
12087         esac
12088     fi
12089     $rm -f try try.c
12090     set d_semctl_semid_ds
12091     eval $setvar
12092     case "$d_semctl_semid_ds" in
12093     $define)
12094         echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
12095         ;;
12096     *)  echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
12097         ;;
12098     esac
12099     $rm -f try.h
12100     ;;
12101 *)  val="$undef"
12102
12103     # We do not have the full sem*(2) library, so assume we can not
12104     # use either.
12105
12106     set d_semctl_semun
12107     eval $setvar
12108
12109     set d_semctl_semid_ds
12110     eval $setvar
12111     ;;
12112 esac
12113
12114 : see if sendmsg exists
12115 set sendmsg d_sendmsg
12116 eval $inlibc
12117
12118 : see if setegid exists
12119 set setegid d_setegid
12120 eval $inlibc
12121
12122 : see if seteuid exists
12123 set seteuid d_seteuid
12124 eval $inlibc
12125
12126 : see if setgrent exists
12127 set setgrent d_setgrent
12128 eval $inlibc
12129
12130 : see if sethostent exists
12131 set sethostent d_sethent
12132 eval $inlibc
12133
12134 : see if setitimer exists
12135 set setitimer d_setitimer
12136 eval $inlibc
12137
12138 : see if setlinebuf exists
12139 set setlinebuf d_setlinebuf
12140 eval $inlibc
12141
12142 : see if setlocale exists
12143 set setlocale d_setlocale
12144 eval $inlibc
12145
12146 : see if setnetent exists
12147 set setnetent d_setnent
12148 eval $inlibc
12149
12150 : see if setprotoent exists
12151 set setprotoent d_setpent
12152 eval $inlibc
12153
12154 : see if setpgid exists
12155 set setpgid d_setpgid
12156 eval $inlibc
12157
12158 : see if setpgrp2 exists
12159 set setpgrp2 d_setpgrp2
12160 eval $inlibc
12161
12162 : see if setpriority exists
12163 set setpriority d_setprior
12164 eval $inlibc
12165
12166 : see if setproctitle exists
12167 set setproctitle d_setproctitle
12168 eval $inlibc
12169
12170 : see if setpwent exists
12171 set setpwent d_setpwent
12172 eval $inlibc
12173
12174 : see if setregid exists
12175 set setregid d_setregid
12176 eval $inlibc
12177 set setresgid d_setresgid
12178 eval $inlibc
12179
12180 : see if setreuid exists
12181 set setreuid d_setreuid
12182 eval $inlibc
12183 set setresuid d_setresuid
12184 eval $inlibc
12185
12186 : see if setrgid exists
12187 set setrgid d_setrgid
12188 eval $inlibc
12189
12190 : see if setruid exists
12191 set setruid d_setruid
12192 eval $inlibc
12193
12194 : see if setservent exists
12195 set setservent d_setsent
12196 eval $inlibc
12197
12198 : see if setsid exists
12199 set setsid d_setsid
12200 eval $inlibc
12201
12202 : see if setvbuf exists
12203 set setvbuf d_setvbuf
12204 eval $inlibc
12205
12206 : see if sfio.h is available
12207 set sfio.h i_sfio
12208 eval $inhdr
12209
12210
12211 : see if sfio library is available
12212 case "$i_sfio" in
12213 $define)
12214         val=''
12215         set sfreserve val
12216         eval $inlibc
12217         ;;
12218 *)
12219         val="$undef"
12220         ;;
12221 esac
12222 : Ok, but do we want to use it.
12223 case "$val" in
12224 $define)
12225         case "$usesfio" in
12226         true|$define|[yY]*) dflt='y';;
12227         *) dflt='n';;
12228         esac
12229         echo "$package can use the sfio library, but it is experimental."
12230         case "$useperlio" in
12231         "$undef")
12232             echo "For sfio also the PerlIO abstraction layer is needed."
12233             echo "Earlier you said you wouldn't want that."
12234             ;;
12235         esac
12236         rp="You seem to have sfio available, do you want to try using it?"
12237         . ./myread
12238         case "$ans" in
12239         y|Y)    echo "Ok, turning on both sfio and PerlIO, then."
12240                 useperlio="$define"
12241                 val="$define"
12242                 ;;
12243         *)      echo "Ok, avoiding sfio this time.  I'll use stdio instead."
12244                 val="$undef"
12245                 ;;
12246         esac
12247         ;;
12248 *)      case "$usesfio" in
12249         true|$define|[yY]*)
12250                 echo "Sorry, cannot find sfio on this machine." >&4
12251                 echo "Ignoring your setting of usesfio=$usesfio." >&4
12252                 val="$undef"
12253                 ;;
12254         esac
12255         ;;
12256 esac
12257 set d_sfio
12258 eval $setvar
12259 case "$d_sfio" in
12260 $define) usesfio='true';;
12261 *) usesfio='false';;
12262 esac
12263 case "$d_sfio" in
12264 $define) ;;
12265 *)      : Remove sfio from list of libraries to use
12266         case "$libs" in
12267         *-lsfio*)
12268                 echo "Removing unneeded -lsfio from library list" >&4
12269                 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
12270                 shift
12271                 libs="$*"
12272                 echo "libs = $libs" >&4
12273                 ;;
12274         esac
12275 ;;
12276 esac
12277
12278
12279 : see if shmctl exists
12280 set shmctl d_shmctl
12281 eval $inlibc
12282
12283 : see if shmget exists
12284 set shmget d_shmget
12285 eval $inlibc
12286
12287 : see if shmat exists
12288 set shmat d_shmat
12289 eval $inlibc
12290 : see what shmat returns
12291 case "$d_shmat" in
12292 "$define")
12293         $cat >shmat.c <<'END'
12294 #include <sys/shm.h>
12295 void *shmat();
12296 END
12297         if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
12298                 shmattype='void *'
12299         else
12300                 shmattype='char *'
12301         fi
12302         echo "and it returns ($shmattype)." >&4
12303         : see if a prototype for shmat is available
12304         xxx=`./findhdr sys/shm.h`
12305         $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
12306         if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
12307                 val="$define"
12308         else
12309                 val="$undef"
12310         fi
12311         $rm -f shmat.[co]
12312         ;;
12313 *)
12314         val="$undef"
12315         ;;
12316 esac
12317 set d_shmatprototype
12318 eval $setvar
12319
12320 : see if shmdt exists
12321 set shmdt d_shmdt
12322 eval $inlibc
12323
12324 : see how much of the 'shm*(2)' library is present.
12325 h_shm=true
12326 echo " "
12327 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
12328 *"$undef"*) h_shm=false;;
12329 esac
12330 case "$osname" in
12331 freebsd)
12332     case "`ipcs 2>&1`" in
12333     "SVID shared memory"*"not configured"*)
12334         echo "Your $osname does not have the shm*(2) configured." >&4
12335         h_shm=false
12336         val="$undef"
12337         set shmctl d_shmctl
12338         evat $setvar
12339         set shmget d_shmget
12340         evat $setvar
12341         set shmat d_shmat
12342         evat $setvar
12343         set shmdt d_shmdt
12344         evat $setvar
12345         ;;
12346     esac
12347     ;;
12348 esac
12349 : we could also check for sys/ipc.h ...
12350 if $h_shm && $test `./findhdr sys/shm.h`; then
12351         echo "You have the full shm*(2) library." >&4
12352         val="$define"
12353 else
12354         echo "You don't have the full shm*(2) library." >&4
12355         val="$undef"
12356 fi
12357 set d_shm
12358 eval $setvar
12359
12360 echo " "
12361 : see if we have sigaction
12362 if set sigaction val -f d_sigaction; eval $csym; $val; then
12363         echo 'sigaction() found.' >&4
12364         $cat > try.c <<'EOP'
12365 #include <stdio.h>
12366 #include <sys/types.h>
12367 #include <signal.h>
12368 int main()
12369 {
12370     struct sigaction act, oact;
12371     act.sa_flags = 0;
12372     oact.sa_handler = 0;
12373     /* so that act and oact are used */
12374     exit(act.sa_flags == 0 &&  oact.sa_handler == 0);
12375 }
12376 EOP
12377         set try
12378         if eval $compile_ok; then
12379                 val="$define"
12380         else
12381                 echo "But you don't seem to have a useable struct sigaction." >&4
12382                 val="$undef"
12383         fi
12384 else
12385         echo 'sigaction NOT found.' >&4
12386         val="$undef"
12387 fi
12388 set d_sigaction; eval $setvar
12389 $rm -f try try$_o try.c
12390
12391 : see if sigprocmask exists
12392 set sigprocmask d_sigprocmask
12393 eval $inlibc
12394
12395 : see if sigsetjmp exists
12396 echo " "
12397 case "$d_sigsetjmp" in
12398 '')
12399         $cat >try.c <<'EOP'
12400 #include <setjmp.h>
12401 sigjmp_buf env;
12402 int set = 1;
12403 int main()
12404 {
12405         if (sigsetjmp(env,1))
12406                 exit(set);
12407         set = 0;
12408         siglongjmp(env, 1);
12409         exit(1);
12410 }
12411 EOP
12412         set try
12413         if eval $compile; then
12414                 if $run ./try >/dev/null 2>&1; then
12415                         echo "POSIX sigsetjmp found." >&4
12416                         val="$define"
12417                 else
12418                         $cat >&4 <<EOM
12419 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
12420 I'll ignore them.
12421 EOM
12422                         val="$undef"
12423                 fi
12424         else
12425                 echo "sigsetjmp not found." >&4
12426                 val="$undef"
12427         fi
12428         ;;
12429 *) val="$d_sigsetjmp"
12430         case "$d_sigsetjmp" in
12431         $define) echo "POSIX sigsetjmp found." >&4;;
12432         $undef) echo "sigsetjmp not found." >&4;;
12433         esac
12434         ;;
12435 esac
12436 set d_sigsetjmp
12437 eval $setvar
12438 $rm -f try.c try
12439
12440 : see if sockatmark exists
12441 set sockatmark d_sockatmark
12442 eval $inlibc
12443
12444 : see if prototype for sockatmark is available
12445 echo " "
12446 set d_sockatmarkproto sockatmark $d_socket sys/socket.h
12447 eval $hasproto
12448
12449 : see if socks5_init exists
12450 set socks5_init d_socks5_init
12451 eval $inlibc
12452
12453 : see if prototype for setresgid is available
12454 echo " "
12455 set d_sresgproto setresgid $i_unistd unistd.h
12456 eval $hasproto
12457
12458 : see if prototype for setresuid is available
12459 echo " "
12460 set d_sresuproto setresuid $i_unistd unistd.h
12461 eval $hasproto
12462
12463 : see if sys/stat.h is available
12464 set sys/stat.h i_sysstat
12465 eval $inhdr
12466
12467
12468 : see if stat knows about block sizes
12469 echo " "
12470 echo "Checking to see if your struct stat has st_blocks field..." >&4
12471 set d_statblks stat st_blocks $i_sysstat sys/stat.h
12472 eval $hasfield
12473
12474
12475 : see if this is a sys/vfs.h system
12476 set sys/vfs.h i_sysvfs
12477 eval $inhdr
12478
12479
12480 : see if this is a sys/statfs.h system
12481 set sys/statfs.h i_sysstatfs
12482 eval $inhdr
12483
12484
12485 echo " "
12486 echo "Checking to see if your system supports struct statfs..." >&4
12487 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
12488 eval $hasstruct
12489 case "$d_statfs_s" in
12490 "$define")      echo "Yes, it does."   ;;
12491 *)              echo "No, it doesn't." ;;
12492 esac
12493
12494
12495
12496 : see if struct statfs knows about f_flags
12497 case "$d_statfs_s" in
12498 define) 
12499         echo " "
12500         echo "Checking to see if your struct statfs has f_flags field..." >&4
12501         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
12502         eval $hasfield
12503         ;;
12504 *)      val="$undef"
12505         set d_statfs_f_flags
12506         eval $setvar
12507         ;;
12508 esac
12509 case "$d_statfs_f_flags" in
12510 "$define")      echo "Yes, it does."   ;;
12511 *)              echo "No, it doesn't." ;;
12512 esac
12513
12514 : see if _ptr and _cnt from stdio act std
12515 echo " "
12516
12517 if $contains '_lbfsize' `./findhdr stdio.h` >/dev/null 2>&1 ; then
12518         echo "(Looks like you have stdio.h from BSD.)"
12519         case "$stdio_ptr" in
12520         '') stdio_ptr='((fp)->_p)'
12521                 ptr_lval=$define
12522                 ;;
12523         *)      ptr_lval=$d_stdio_ptr_lval;;
12524         esac
12525         case "$stdio_cnt" in
12526         '') stdio_cnt='((fp)->_r)'
12527                 cnt_lval=$define
12528                 ;;
12529         *)      cnt_lval=$d_stdio_cnt_lval;;
12530         esac
12531         case "$stdio_base" in
12532         '') stdio_base='((fp)->_ub._base ? (fp)->_ub._base : (fp)->_bf._base)';;
12533         esac
12534         case "$stdio_bufsiz" in
12535         '') stdio_bufsiz='((fp)->_ub._base ? (fp)->_ub._size : (fp)->_bf._size)';;
12536         esac
12537 elif $contains '_IO_fpos_t' `./findhdr stdio.h` `./findhdr libio.h` >/dev/null 2>&1 ; then
12538         echo "(Looks like you have stdio.h from Linux.)"
12539         case "$stdio_ptr" in
12540         '') stdio_ptr='((fp)->_IO_read_ptr)'
12541                 ptr_lval=$define
12542                 ;;
12543         *)      ptr_lval=$d_stdio_ptr_lval;;
12544         esac
12545         case "$stdio_cnt" in
12546         '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
12547                 cnt_lval=$undef
12548                 ;;
12549         *)      cnt_lval=$d_stdio_cnt_lval;;
12550         esac
12551         case "$stdio_base" in
12552         '') stdio_base='((fp)->_IO_read_base)';;
12553         esac
12554         case "$stdio_bufsiz" in
12555         '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
12556         esac
12557 else
12558         case "$stdio_ptr" in
12559         '') stdio_ptr='((fp)->_ptr)'
12560                 ptr_lval=$define
12561                 ;;
12562         *)      ptr_lval=$d_stdio_ptr_lval;;
12563         esac
12564         case "$stdio_cnt" in
12565         '') stdio_cnt='((fp)->_cnt)'
12566                 cnt_lval=$define
12567                 ;;
12568         *)      cnt_lval=$d_stdio_cnt_lval;;
12569         esac
12570         case "$stdio_base" in
12571         '') stdio_base='((fp)->_base)';;
12572         esac
12573         case "$stdio_bufsiz" in
12574         '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
12575         esac
12576 fi
12577
12578 : test whether _ptr and _cnt really work
12579 echo "Checking how std your stdio is..." >&4
12580 $cat >try.c <<EOP
12581 #include <stdio.h>
12582 #define FILE_ptr(fp)    $stdio_ptr
12583 #define FILE_cnt(fp)    $stdio_cnt
12584 int main() {
12585         FILE *fp = fopen("try.c", "r");
12586         char c = getc(fp);
12587         if (
12588                 18 <= FILE_cnt(fp) &&
12589                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
12590         )
12591                 exit(0);
12592         exit(1);
12593 }
12594 EOP
12595 val="$undef"
12596 set try
12597 if eval $compile && $to try.c; then
12598         if $run ./try; then
12599                 echo "Your stdio acts pretty std."
12600                 val="$define"
12601         else
12602                 echo "Your stdio isn't very std."
12603         fi
12604 else
12605         echo "Your stdio doesn't appear very std."
12606 fi
12607 $rm -f try.c try
12608 set d_stdstdio
12609 eval $setvar
12610
12611 : Can _ptr be used as an lvalue?
12612 case "$d_stdstdio$ptr_lval" in
12613 $define$define) val=$define ;;
12614 *) val=$undef ;;
12615 esac
12616 set d_stdio_ptr_lval
12617 eval $setvar
12618
12619 : Can _cnt be used as an lvalue?
12620 case "$d_stdstdio$cnt_lval" in
12621 $define$define) val=$define ;;
12622 *) val=$undef ;;
12623 esac
12624 set d_stdio_cnt_lval
12625 eval $setvar
12626
12627
12628 : test whether setting _ptr sets _cnt as a side effect
12629 d_stdio_ptr_lval_sets_cnt="$undef"
12630 d_stdio_ptr_lval_nochange_cnt="$undef"
12631 case "$d_stdio_ptr_lval$d_stdstdio" in
12632 $define$define)
12633         echo "Checking to see what happens if we set the stdio ptr..." >&4
12634 $cat >try.c <<EOP
12635 #include <stdio.h>
12636 /* Can we scream? */
12637 /* Eat dust sed :-) */
12638 /* In the buffer space, no one can hear you scream. */
12639 #define FILE_ptr(fp)    $stdio_ptr
12640 #define FILE_cnt(fp)    $stdio_cnt
12641 #include <sys/types.h>
12642 int main() {
12643         FILE *fp = fopen("try.c", "r");
12644         int c;
12645         char *ptr;
12646         size_t cnt;
12647         if (!fp) {
12648             puts("Fail even to read");
12649             exit(1);
12650         }
12651         c = getc(fp); /* Read away the first # */
12652         if (c == EOF) {
12653             puts("Fail even to read");
12654             exit(1);
12655         }
12656         if (!(
12657                 18 <= FILE_cnt(fp) &&
12658                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
12659         )) {
12660                 puts("Fail even to read");
12661                 exit (1);
12662         }
12663         ptr = (char*) FILE_ptr(fp);
12664         cnt = (size_t)FILE_cnt(fp);
12665
12666         FILE_ptr(fp) += 42;
12667
12668         if ((char*)FILE_ptr(fp) != (ptr + 42)) {
12669                 printf("Fail ptr check %p != %p", FILE_ptr(fp), (ptr + 42));
12670                 exit (1);
12671         }
12672         if (FILE_cnt(fp) <= 20) {
12673                 printf ("Fail (<20 chars to test)");
12674                 exit (1);
12675         }
12676         if (strncmp(FILE_ptr(fp), "Eat dust sed :-) */\n", 20) != 0) {
12677                 puts("Fail compare");
12678                 exit (1);
12679         }
12680         if (cnt == FILE_cnt(fp)) {
12681                 puts("Pass_unchanged");
12682                 exit (0);
12683         }       
12684         if (FILE_cnt(fp) == (cnt - 42)) {
12685                 puts("Pass_changed");
12686                 exit (0);
12687         }
12688         printf("Fail count was %d now %d\n", cnt, FILE_cnt(fp));
12689         return 1;
12690
12691 }
12692 EOP
12693         set try
12694         if eval $compile && $to try.c; then
12695                 case `$run ./try` in
12696                 Pass_changed)
12697                         echo "Increasing ptr in your stdio decreases cnt by the same amount.  Good." >&4
12698                         d_stdio_ptr_lval_sets_cnt="$define" ;;
12699                 Pass_unchanged)
12700                         echo "Increasing ptr in your stdio leaves cnt unchanged.  Good." >&4
12701                         d_stdio_ptr_lval_nochange_cnt="$define" ;;
12702                 Fail*)
12703                         echo "Increasing ptr in your stdio didn't do exactly what I expected.  We'll not be doing that then." >&4 ;;
12704                 *)
12705                         echo "It appears attempting to set ptr in your stdio is a bad plan." >&4 ;;
12706         esac
12707         else
12708                 echo "It seems we can't set ptr in your stdio.  Nevermind." >&4
12709         fi
12710         $rm -f try.c try
12711         ;;
12712 esac
12713
12714 : see if _base is also standard
12715 val="$undef"
12716 case "$d_stdstdio" in
12717 $define)
12718         $cat >try.c <<EOP
12719 #include <stdio.h>
12720 #define FILE_base(fp)   $stdio_base
12721 #define FILE_bufsiz(fp) $stdio_bufsiz
12722 int main() {
12723         FILE *fp = fopen("try.c", "r");
12724         char c = getc(fp);
12725         if (
12726                 19 <= FILE_bufsiz(fp) &&
12727                 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
12728         )
12729                 exit(0);
12730         exit(1);
12731 }
12732 EOP
12733         set try
12734         if eval $compile && $to try.c; then
12735                 if $run ./try; then
12736                         echo "And its _base field acts std."
12737                         val="$define"
12738                 else
12739                         echo "But its _base field isn't std."
12740                 fi
12741         else
12742                 echo "However, it seems to be lacking the _base field."
12743         fi
12744         $rm -f try.c try
12745         ;;
12746 esac
12747 set d_stdiobase
12748 eval $setvar
12749
12750 $cat >&4 <<EOM
12751 Checking how to access stdio streams by file descriptor number...
12752 EOM
12753 case "$stdio_stream_array" in
12754 '')     $cat >try.c <<EOCP
12755 #include <stdio.h>
12756 int main() {
12757   if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
12758     printf("yes\n");
12759 }
12760 EOCP
12761         for s in _iob __iob __sF
12762         do
12763                 set try -DSTDIO_STREAM_ARRAY=$s
12764                 if eval $compile; then
12765                         case "`$run ./try`" in
12766                         yes)    stdio_stream_array=$s; break ;;
12767                         esac
12768                 fi
12769         done
12770         $rm -f try.* try$exe_ext
12771 esac
12772 case "$stdio_stream_array" in
12773 '')     $cat >&4 <<EOM
12774 I can't figure out how to access stdio streams by file descriptor number.
12775 EOM
12776         d_stdio_stream_array="$undef"
12777         ;;
12778 *)      $cat >&4 <<EOM
12779 You can access stdio streams by file descriptor number by the $stdio_stream_array array.
12780 EOM
12781         d_stdio_stream_array="$define"
12782         ;;
12783 esac
12784
12785 : see if strcoll exists
12786 set strcoll d_strcoll
12787 eval $inlibc
12788
12789 : check for structure copying
12790 echo " "
12791 echo "Checking to see if your C compiler can copy structs..." >&4
12792 $cat >try.c <<'EOCP'
12793 int main()
12794 {
12795         struct blurfl {
12796                 int dyick;
12797         } foo, bar;
12798
12799         foo = bar;
12800 }
12801 EOCP
12802 if $cc -c try.c >/dev/null 2>&1 ; then
12803         val="$define"
12804         echo "Yup, it can."
12805 else
12806         val="$undef"
12807         echo "Nope, it can't."
12808 fi
12809 set d_strctcpy
12810 eval $setvar
12811 $rm -f try.*
12812
12813 : see if strerror and/or sys_errlist[] exist
12814 echo " "
12815 if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
12816     if set strerror val -f d_strerror; eval $csym; $val; then
12817                 echo 'strerror() found.' >&4
12818                 d_strerror="$define"
12819                 d_strerrm='strerror(e)'
12820                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
12821                         echo "(You also have sys_errlist[], so we could roll our own strerror.)" 
12822                         d_syserrlst="$define"
12823                 else
12824                         echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
12825                         d_syserrlst="$undef"
12826                 fi
12827     elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
12828                         $contains '#[   ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
12829                 echo 'strerror() found in string header.' >&4
12830                 d_strerror="$define"
12831                 d_strerrm='strerror(e)'
12832                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
12833                         echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
12834                                 d_syserrlst="$define"
12835                 else
12836                         echo "(You don't appear to have any sys_errlist[], how can this be?)"
12837                         d_syserrlst="$undef"
12838                 fi
12839     elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
12840                 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
12841                 d_strerror="$undef"
12842                 d_syserrlst="$define"
12843                 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
12844     else
12845                 echo 'strerror() and sys_errlist[] NOT found.' >&4
12846                 d_strerror="$undef"
12847                 d_syserrlst="$undef"
12848                 d_strerrm='"unknown"'
12849     fi
12850 fi
12851
12852 : see if strftime exists
12853 set strftime d_strftime
12854 eval $inlibc
12855
12856 : see if strtod exists
12857 set strtod d_strtod
12858 eval $inlibc
12859
12860 : see if strtol exists
12861 set strtol d_strtol
12862 eval $inlibc
12863
12864 : see if strtold exists
12865 set strtold d_strtold
12866 eval $inlibc
12867
12868 : see if strtoll exists
12869 set strtoll d_strtoll
12870 eval $inlibc
12871
12872 case "$d_longlong-$d_strtoll" in
12873 "$define-$define")
12874         $cat <<EOM
12875 Checking whether your strtoll() works okay...
12876 EOM
12877         $cat >try.c <<'EOCP'
12878 #include <errno.h>
12879 #ifdef __hpux
12880 #define strtoll __strtoll
12881 #endif
12882 #ifdef __EMX__
12883 #define strtoll _strtoll
12884 #endif
12885 #include <stdio.h>
12886 extern long long int strtoll(char *s, char **, int); 
12887 static int bad = 0;
12888 int check(char *s, long long ell, int een) {
12889         long long gll;
12890         errno = 0;
12891         gll = strtoll(s, 0, 10);
12892         if (!((gll == ell) && (errno == een)))
12893                 bad++;
12894 }
12895 int main() {
12896         check(" 1",                                      1LL, 0);
12897         check(" 0",                                      0LL, 0);
12898         check("-1",                                     -1LL, 0);
12899         check("-9223372036854775808", -9223372036854775808LL, 0);
12900         check("-9223372036854775808", -9223372036854775808LL, 0);
12901         check(" 9223372036854775807",  9223372036854775807LL, 0);
12902         check("-9223372036854775808", -9223372036854775808LL, 0);
12903         check(" 9223372036854775808",  9223372036854775807LL, ERANGE);
12904         check("-9223372036854775809", -9223372036854775808LL, ERANGE);
12905         if (!bad)
12906                 printf("ok\n");
12907 }
12908 EOCP
12909         set try
12910         if eval $compile; then
12911                 yyy=`$run ./try`
12912                 case "$yyy" in
12913                 ok) echo "Your strtoll() seems to be working okay." ;;
12914                 *) cat <<EOM >&4
12915 Your strtoll() doesn't seem to be working okay.
12916 EOM
12917                    d_strtoll="$undef"
12918                    ;;
12919                 esac
12920         else
12921                 echo "(I can't seem to compile the test program--assuming it doesn't)"
12922                 d_strtoll="$undef"
12923         fi
12924         ;;
12925 esac
12926
12927 : see if strtoq exists
12928 set strtoq d_strtoq
12929 eval $inlibc
12930
12931 : see if strtoul exists
12932 set strtoul d_strtoul
12933 eval $inlibc
12934
12935 case "$d_strtoul" in
12936 "$define")
12937         $cat <<EOM
12938 Checking whether your strtoul() works okay...
12939 EOM
12940         $cat >try.c <<'EOCP'
12941 #include <errno.h>
12942 #include <stdio.h>
12943 extern unsigned long int strtoul(char *s, char **, int); 
12944 static int bad = 0;
12945 void check(char *s, unsigned long eul, int een) {
12946         unsigned long gul;
12947         errno = 0;
12948         gul = strtoul(s, 0, 10);
12949         if (!((gul == eul) && (errno == een)))
12950                 bad++;
12951 }
12952 int main() {
12953         check(" 1", 1L, 0);
12954         check(" 0", 0L, 0);
12955 EOCP
12956         case "$longsize" in
12957         8)
12958             $cat >>try.c <<'EOCP'
12959         check("18446744073709551615", 18446744073709551615UL, 0);
12960         check("18446744073709551616", 18446744073709551615UL, ERANGE);
12961 #if 0 /* strtoul() for /^-/ strings is undefined. */
12962         check("-1", 18446744073709551615UL, 0);
12963         check("-18446744073709551614", 2, 0);
12964         check("-18446744073709551615", 1, 0);
12965         check("-18446744073709551616", 18446744073709551615UL, ERANGE);
12966         check("-18446744073709551617", 18446744073709551615UL, ERANGE);
12967 #endif
12968 EOCP
12969                 ;;
12970         4)
12971                     $cat >>try.c <<'EOCP'
12972         check("4294967295", 4294967295UL, 0);
12973         check("4294967296", 4294967295UL, ERANGE);
12974 #if 0 /* strtoul() for /^-/ strings is undefined. */
12975         check("-1", 4294967295UL, 0);
12976         check("-4294967294", 2, 0);
12977         check("-4294967295", 1, 0);
12978         check("-4294967296", 4294967295UL, ERANGE);
12979         check("-4294967297", 4294967295UL, ERANGE);
12980 #endif
12981 EOCP
12982                 ;;
12983         *)
12984 : Should we write these tests to be more portable by sprintf-ing
12985 : ~0 and then manipulating that char string as input for strtol?
12986                 ;;
12987         esac
12988         $cat >>try.c <<'EOCP'
12989         if (!bad)
12990                 printf("ok\n");
12991         return 0;
12992 }
12993 EOCP
12994         set try
12995         if eval $compile; then
12996                 case "`$run ./try`" in
12997                 ok) echo "Your strtoul() seems to be working okay." ;;
12998                 *) cat <<EOM >&4
12999 Your strtoul() doesn't seem to be working okay.
13000 EOM
13001                    d_strtoul="$undef"
13002                    ;;
13003                 esac
13004         fi
13005         ;;
13006 esac
13007
13008 : see if strtoull exists
13009 set strtoull d_strtoull
13010 eval $inlibc
13011
13012 case "$d_longlong-$d_strtoull" in
13013 "$define-$define")
13014         $cat <<EOM
13015 Checking whether your strtoull() works okay...
13016 EOM
13017         $cat >try.c <<'EOCP'
13018 #include <errno.h>
13019 #ifdef __hpux
13020 #define strtoull __strtoull
13021 #endif
13022 #include <stdio.h>
13023 extern unsigned long long int strtoull(char *s, char **, int); 
13024 static int bad = 0;
13025 int check(char *s, long long eull, int een) {
13026         long long gull;
13027         errno = 0;
13028         gull = strtoull(s, 0, 10);
13029         if (!((gull == eull) && (errno == een)))
13030                 bad++;
13031 }
13032 int main() {
13033         check(" 1",                                        1LL, 0);
13034         check(" 0",                                        0LL, 0);
13035         check("18446744073709551615",  18446744073709551615ULL, 0);
13036         check("18446744073709551616",  18446744073709551615ULL, ERANGE);
13037 #if 0 /* strtoull() for /^-/ strings is undefined. */
13038         check("-1",                    18446744073709551615ULL, 0);
13039         check("-18446744073709551614",                     2LL, 0);
13040         check("-18446744073709551615",                     1LL, 0);
13041         check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
13042         check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
13043 #endif
13044         if (!bad)
13045                 printf("ok\n");
13046 }
13047 EOCP
13048         set try
13049         if eval $compile; then
13050                 case "`$run ./try`" in
13051                 ok) echo "Your strtoull() seems to be working okay." ;;
13052                 *) cat <<EOM >&4
13053 Your strtoull() doesn't seem to be working okay.
13054 EOM
13055                    d_strtoull="$undef"
13056                    ;;
13057                 esac
13058         fi
13059         ;;
13060 esac
13061
13062 : see if strtouq exists
13063 set strtouq d_strtouq
13064 eval $inlibc
13065
13066 case "$d_strtouq" in
13067 "$define")
13068         $cat <<EOM
13069 Checking whether your strtouq() works okay...
13070 EOM
13071         $cat >try.c <<'EOCP'
13072 #include <errno.h>
13073 #include <stdio.h>
13074 extern unsigned long long int strtouq(char *s, char **, int); 
13075 static int bad = 0;
13076 void check(char *s, unsigned long long eull, int een) {
13077         unsigned long long gull;
13078         errno = 0;
13079         gull = strtouq(s, 0, 10);
13080         if (!((gull == eull) && (errno == een)))
13081                 bad++;
13082 }
13083 int main() {
13084         check(" 1",                                        1LL, 0);
13085         check(" 0",                                        0LL, 0);
13086         check("18446744073709551615",  18446744073709551615ULL, 0);
13087         check("18446744073709551616",  18446744073709551615ULL, ERANGE);
13088 #if 0 /* strtouq() for /^-/ strings is undefined. */
13089         check("-1",                    18446744073709551615ULL, 0);
13090         check("-18446744073709551614",                     2LL, 0);
13091         check("-18446744073709551615",                     1LL, 0);
13092         check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
13093         check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
13094 #endif
13095         if (!bad)
13096                 printf("ok\n");
13097         return 0;
13098 }
13099 EOCP
13100         set try
13101         if eval $compile; then
13102                 case "`$run ./try`" in
13103                 ok) echo "Your strtouq() seems to be working okay." ;;
13104                 *) cat <<EOM >&4
13105 Your strtouq() doesn't seem to be working okay.
13106 EOM
13107                    d_strtouq="$undef"
13108                    ;;
13109                 esac
13110         fi
13111         ;;
13112 esac
13113
13114 : see if strxfrm exists
13115 set strxfrm d_strxfrm
13116 eval $inlibc
13117
13118 : see if symlink exists
13119 set symlink d_symlink
13120 eval $inlibc
13121
13122 : see if syscall exists
13123 set syscall d_syscall
13124 eval $inlibc
13125
13126 : see if prototype for syscall is available
13127 echo " "
13128 set d_syscallproto syscall $i_unistd unistd.h
13129 eval $hasproto
13130
13131 : see if sysconf exists
13132 set sysconf d_sysconf
13133 eval $inlibc
13134
13135 : see if system exists
13136 set system d_system
13137 eval $inlibc
13138
13139 : see if tcgetpgrp exists
13140 set tcgetpgrp d_tcgetpgrp
13141 eval $inlibc
13142
13143 : see if tcsetpgrp exists
13144 set tcsetpgrp d_tcsetpgrp
13145 eval $inlibc
13146
13147 : see if prototype for telldir is available
13148 echo " "
13149 set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
13150 eval $hasproto
13151
13152 : see if this is a sys/times.h system
13153 set sys/times.h i_systimes
13154 eval $inhdr
13155
13156 : see if times exists
13157 echo " "
13158 if set times val -f d_times; eval $csym; $val; then
13159         echo 'times() found.' >&4
13160         d_times="$define"
13161         inc=''
13162         case "$i_systimes" in
13163         "$define") inc='sys/times.h';;
13164         esac
13165         rp="What is the type returned by times() on this system?"
13166         set clock_t clocktype long stdio.h sys/types.h $inc
13167         eval $typedef_ask
13168 else
13169         echo 'times() NOT found, hope that will do.' >&4
13170         d_times="$undef"
13171         clocktype='int'
13172 fi
13173
13174 : see if truncate exists
13175 set truncate d_truncate
13176 eval $inlibc
13177
13178 : see if tzname[] exists
13179 echo " "
13180 if set tzname val -a d_tzname; eval $csym; $val; then
13181         val="$define"
13182         echo 'tzname[] found.' >&4
13183 else
13184         val="$undef"
13185         echo 'tzname[] NOT found.' >&4
13186 fi
13187 set d_tzname
13188 eval $setvar
13189
13190 case "$osname" in
13191 next|rhapsody|darwin) multiarch="$define" ;;
13192 esac
13193 case "$multiarch" in
13194 ''|[nN]*) multiarch="$undef" ;;
13195 esac
13196
13197 : check for ordering of bytes in a long
13198 echo " "
13199 case "$usecrosscompile$multiarch" in
13200 *$define*)
13201         $cat <<EOM
13202 You seem to be either cross-compiling or doing a multiarchitecture build,
13203 skipping the byteorder check.
13204
13205 EOM
13206         byteorder='ffff'
13207         ;;
13208 *)
13209         case "$byteorder" in
13210         '')
13211                 $cat <<'EOM'
13212 In the following, larger digits indicate more significance.  A big-endian
13213 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
13214 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
13215 machines may have weird orders like 3412.  A Cray will report 87654321,
13216 an Alpha will report 12345678. If the test program works the default is
13217 probably right.
13218 I'm now running the test program...
13219 EOM
13220                 $cat >try.c <<'EOCP'
13221 #include <stdio.h>
13222 int main()
13223 {
13224         int i;
13225         union {
13226                 unsigned long l;
13227                 char c[sizeof(long)];
13228         } u;
13229
13230         if (sizeof(long) > 4)
13231                 u.l = (0x08070605L << 32) | 0x04030201L;
13232         else
13233                 u.l = 0x04030201L;
13234         for (i = 0; i < sizeof(long); i++)
13235                 printf("%c", u.c[i]+'0');
13236         printf("\n");
13237         exit(0);
13238 }
13239 EOCP
13240                 xxx_prompt=y
13241                 set try
13242                 if eval $compile && ./try > /dev/null; then
13243                         dflt=`$run ./try`
13244                         case "$dflt" in
13245                         [1-4][1-4][1-4][1-4]|12345678|87654321)
13246                                 echo "(The test program ran ok.)"
13247                                 echo "byteorder=$dflt"
13248                                 xxx_prompt=n
13249                         ;;
13250                         ????|????????) echo "(The test program ran ok.)" ;;
13251                         *) echo "(The test program didn't run right for some reason.)" ;;
13252                         esac
13253                 else
13254                         dflt='4321'
13255                         cat <<'EOM'
13256 (I can't seem to compile the test program.  Guessing big-endian...)
13257 EOM
13258                 fi
13259                 case "$xxx_prompt" in
13260                 y)
13261                         rp="What is the order of bytes in a long?"
13262                         . ./myread
13263                         byteorder="$ans"
13264                         ;;
13265                 *)      byteorder=$dflt
13266                         ;;
13267                 esac
13268                 ;;
13269         esac
13270         $rm -f try.c try
13271         ;;
13272 esac
13273
13274
13275 $cat <<EOM
13276
13277 Checking to see whether you can access character data unalignedly...
13278 EOM
13279 $cat >try.c <<EOCP
13280 #include <stdio.h>
13281 #define U32 $u32type
13282 #define BYTEORDER $byteorder
13283 int main() {
13284 #if BYTEORDER == 0x1234 || BYTEORDER == 0x4321
13285     U8 buf[] = "\0\0\0\1\0\0\0\0";
13286     U32 *up;
13287     int i;
13288
13289     if (sizeof(U32) != 4) {
13290         printf("sizeof(U32) is not 4, but %d\n", sizeof(U32));
13291         exit(1);
13292     }
13293
13294     fflush(stdout);
13295
13296     for (i = 0; i < 4; i++) {
13297         up = (U32*)(buf + i);
13298         if (! ((*up == 1 << (8*i)) ||   /* big-endian */
13299                (*up == 1 << (8*(3-i)))  /* little-endian */
13300               )
13301            )
13302         {
13303             printf("read failed (%x)\n", *up);
13304             exit(2);
13305         }
13306     }
13307
13308     /* write test */
13309     for (i = 0; i < 4; i++) {
13310         up = (U32*)(buf + i);
13311         *up = 0xBeef;
13312         if (*up != 0xBeef) {
13313             printf("write failed (%x)\n", *up);
13314             exit(3);
13315         }
13316     }
13317
13318     exit(0);
13319 #else
13320     printf("1\n");
13321     exit(1);
13322 #endif
13323     return 0;
13324 }
13325 EOCP
13326 set try
13327 if eval $compile_ok; then
13328         echo "(Testing for character data alignment may dump core.)" >&4
13329         $run ./try 2>&1 >/dev/null
13330         case "$?" in
13331         0)      cat >&4 <<EOM
13332 You can access character data pretty unalignedly.
13333 EOM
13334                 d_u32align="$undef"
13335                 ;;
13336         *)      cat >&4 <<EOM
13337 It seems that you must access character data in an aligned manner.
13338 EOM
13339                 d_u32align="$define"
13340                 ;;
13341         esac
13342         $rm -f core core.try.* try.core
13343 else
13344         rp='Can you access character data at unaligned addresses?'
13345         dflt='n'
13346         . ./myread
13347         case "$ans" in
13348         [yY]*)  d_u32align="$undef"  ;;
13349         *)      d_u32align="$define" ;;
13350         esac
13351 fi
13352
13353 : see if ualarm exists
13354 set ualarm d_ualarm
13355 eval $inlibc
13356
13357 : see if umask exists
13358 set umask d_umask
13359 eval $inlibc
13360
13361 : see if unordered exists
13362 set unordered d_unordered
13363 eval $inlibc
13364
13365 : see if usleep exists
13366 set usleep d_usleep
13367 eval $inlibc
13368
13369 : see if prototype for usleep is available
13370 echo " "
13371 set d_usleepproto usleep $i_unistd unistd.h
13372 eval $hasproto
13373
13374 : see if ustat exists
13375 set ustat d_ustat
13376 eval $inlibc
13377
13378 : backward compatibility for d_hvfork
13379 if test X$d_hvfork != X; then
13380         d_vfork="$d_hvfork"
13381         d_hvfork=''
13382 fi
13383 : see if there is a vfork
13384 val=''
13385 set vfork val
13386 eval $inlibc
13387
13388 : Ok, but do we want to use it. vfork is reportedly unreliable in 
13389 : perl on Solaris 2.x, and probably elsewhere.
13390 case "$val" in
13391 $define)
13392         echo " "
13393         case "$usevfork" in
13394         false) dflt='n';;
13395         *) dflt='y';;
13396         esac
13397         cat <<'EOM'
13398  
13399 Perl can only use a vfork() that doesn't suffer from strict
13400 restrictions on calling functions or modifying global data in
13401 the child.  For example, glibc-2.1 contains such a vfork()
13402 that is unsuitable.  If your system provides a proper fork()
13403 call, chances are that you do NOT want perl to use vfork().
13404
13405 EOM
13406         rp="Do you still want to use vfork()?"
13407         . ./myread
13408         case "$ans" in
13409         y|Y) ;;
13410         *)
13411                 echo "Ok, we won't use vfork()."
13412                 val="$undef"
13413                 ;;
13414         esac
13415         ;;
13416 esac
13417 set d_vfork
13418 eval $setvar
13419 case "$d_vfork" in
13420 $define) usevfork='true';;
13421 *) usevfork='false';;
13422 esac
13423
13424 : see if this is an sysdir system
13425 set sys/dir.h i_sysdir
13426 eval $inhdr
13427
13428 : see if this is an sysndir system
13429 set sys/ndir.h i_sysndir
13430 eval $inhdr
13431
13432 : see if closedir exists
13433 set closedir d_closedir
13434 eval $inlibc
13435
13436 case "$d_closedir" in
13437 "$define")
13438         echo " "
13439         echo "Checking whether closedir() returns a status..." >&4
13440         cat > try.c <<EOM
13441 #$i_dirent I_DIRENT             /**/
13442 #$i_sysdir I_SYS_DIR            /**/
13443 #$i_sysndir I_SYS_NDIR          /**/
13444 #$i_systypes I_SYS_TYPES        /**/
13445
13446 #if defined(I_SYS_TYPES)
13447 #include <sys/types.h>
13448 #endif
13449 #if defined(I_DIRENT)
13450 #include <dirent.h>
13451 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
13452 #include <sys/dir.h>
13453 #endif
13454 #else
13455 #ifdef I_SYS_NDIR
13456 #include <sys/ndir.h>
13457 #else
13458 #ifdef I_SYS_DIR
13459 #ifdef hp9000s500
13460 #include <ndir.h>       /* may be wrong in the future */
13461 #else
13462 #include <sys/dir.h>
13463 #endif
13464 #endif
13465 #endif
13466 #endif 
13467 int main() { return closedir(opendir(".")); }
13468 EOM
13469         set try
13470         if eval $compile_ok; then
13471                 if $run ./try > /dev/null 2>&1 ; then
13472                         echo "Yes, it does."
13473                         val="$undef"
13474                 else
13475                         echo "No, it doesn't."
13476                         val="$define"
13477                 fi
13478         else
13479                 echo "(I can't seem to compile the test program--assuming it doesn't)"
13480                 val="$define"
13481         fi
13482         ;;
13483 *)
13484         val="$undef";
13485         ;;
13486 esac
13487 set d_void_closedir
13488 eval $setvar
13489 $rm -f try try.*
13490 : see if there is a wait4
13491 set wait4 d_wait4
13492 eval $inlibc
13493
13494 : see if waitpid exists
13495 set waitpid d_waitpid
13496 eval $inlibc
13497
13498 : see if wcstombs exists
13499 set wcstombs d_wcstombs
13500 eval $inlibc
13501
13502 : see if wctomb exists
13503 set wctomb d_wctomb
13504 eval $inlibc
13505
13506 : see if writev exists
13507 set writev d_writev
13508 eval $inlibc
13509
13510 : preserve RCS keywords in files with variable substitution, grrr
13511 Date='$Date'
13512 Id='$Id'
13513 Log='$Log'
13514 RCSfile='$RCSfile'
13515 Revision='$Revision'
13516
13517 : check for alignment requirements
13518 echo " "
13519 case "$usecrosscompile$multiarch" in
13520 *$define*)
13521         $cat <<EOM
13522 You seem to be either cross-compiling or doing a multiarchitecture build,
13523 skipping the memory alignment check.
13524
13525 EOM
13526         case "$alignbytes" in
13527         '') alignbytes=8 ;;
13528         esac
13529         ;;
13530 *)
13531         case "$alignbytes" in
13532         '') echo "Checking alignment constraints..." >&4
13533                 if $test "X$uselongdouble" = Xdefine -a "X$d_longdbl" = Xdefine; then
13534                         $cat >try.c <<'EOCP'
13535 typedef long double NV;
13536 EOCP
13537                 else
13538                         $cat >try.c <<'EOCP'
13539 typedef double NV;
13540 EOCP
13541                 fi
13542                 $cat >>try.c <<'EOCP'
13543 #include <stdio.h>
13544 struct foobar {
13545         char foo;
13546         NV bar;
13547 } try_algn;
13548 int main()
13549 {
13550     printf("%d\n", (int)((char *)&try_algn.bar - (char *)&try_algn.foo));
13551     return(0);
13552 }
13553 EOCP
13554                 set try
13555                 if eval $compile_ok; then
13556                         dflt=`$run ./try`
13557                 else
13558                         dflt='8'
13559                         echo "(I can't seem to compile the test program...)"
13560                 fi
13561                 ;;
13562         *) dflt="$alignbytes"
13563                 ;;
13564         esac
13565         rp="Doubles must be aligned on a how-many-byte boundary?"
13566         . ./myread
13567         alignbytes="$ans"
13568         $rm -f try.c try
13569         ;;
13570 esac
13571
13572
13573 : set the base revision
13574 baserev=5.0
13575
13576 : how do we catenate cpp tokens here?
13577 echo " "
13578 echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
13579 $cat >cpp_stuff.c <<'EOCP'
13580 #define RCAT(a,b)a/**/b
13581 #define ACAT(a,b)a ## b
13582 RCAT(Rei,ser)
13583 ACAT(Cir,cus)
13584 EOCP
13585 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
13586 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
13587         echo "Oh!  Smells like ANSI's been here." >&4
13588         echo "We can catify or stringify, separately or together!"
13589         cpp_stuff=42
13590 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
13591         echo "Ah, yes!  The good old days!" >&4
13592         echo "However, in the good old days we don't know how to stringify and"
13593         echo "catify at the same time."
13594         cpp_stuff=1
13595 else
13596         $cat >&4 <<EOM
13597 Hmm, I don't seem to be able to catenate tokens with your cpp.  You're going
13598 to have to edit the values of CAT[2-5] in config.h...
13599 EOM
13600         cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
13601 fi
13602 $rm -f cpp_stuff.*
13603
13604 : see if this is a db.h system
13605 set db.h i_db
13606 eval $inhdr
13607
13608 case "$i_db" in
13609 $define)
13610         : Check db version.
13611         echo " "
13612         echo "Checking Berkeley DB version ..." >&4
13613         $cat >try.c <<EOCP
13614 #$d_const HASCONST
13615 #ifndef HASCONST
13616 #define const
13617 #endif
13618 #include <sys/types.h>
13619 #include <stdio.h>
13620 #include <db.h>
13621 int main(int argc, char *argv[])
13622 {
13623 #ifdef DB_VERSION_MAJOR /* DB version >= 2 */
13624     int Major, Minor, Patch ;
13625     unsigned long Version ;
13626     (void)db_version(&Major, &Minor, &Patch) ;
13627     if (argc == 2) {
13628         printf("%d %d %d %d %d %d\n",
13629                DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH,
13630                Major, Minor, Patch);
13631         exit(0);
13632     }
13633     printf("You have Berkeley DB Version 2 or greater.\n");
13634
13635     printf("db.h is from Berkeley DB Version %d.%d.%d\n",
13636                 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
13637     printf("libdb is from Berkeley DB Version %d.%d.%d\n",
13638                 Major, Minor, Patch) ;
13639
13640     /* check that db.h & libdb are compatible */
13641     if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
13642         printf("db.h and libdb are incompatible.\n") ;
13643         exit(3);        
13644     }
13645
13646     printf("db.h and libdb are compatible.\n") ;
13647
13648     Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
13649                 + DB_VERSION_PATCH ;
13650
13651     /* needs to be >= 2.3.4 */
13652     if (Version < 2003004) {
13653     /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
13654         printf("Perl needs Berkeley DB 2.3.4 or greater.\n") ;
13655         exit(2);        
13656     }
13657
13658     exit(0);
13659 #else
13660 #if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
13661     if (argc == 2) {
13662         printf("1 0 0\n");
13663         exit(0);
13664     }
13665     printf("You have Berkeley DB Version 1.\n");
13666     exit(0);    /* DB version < 2: the coast is clear. */
13667 #else
13668     exit(1);    /* <db.h> not Berkeley DB? */
13669 #endif
13670 #endif
13671 }
13672 EOCP
13673         set try
13674         if eval $compile_ok && $run ./try; then
13675                 echo 'Looks OK.' >&4
13676                 set `$run ./try 1`
13677                 db_version_major=$1
13678                 db_version_minor=$2
13679                 db_version_patch=$3
13680         else
13681                 echo "I can't use Berkeley DB with your <db.h>.  I'll disable Berkeley DB." >&4
13682                 i_db=$undef
13683                 case " $libs " in
13684                 *"-ldb "*)
13685                         : Remove db from list of libraries to use
13686                         echo "Removing unusable -ldb from library list" >&4
13687                         set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
13688                         shift
13689                         libs="$*"
13690                         echo "libs = $libs" >&4
13691                         ;;
13692                 esac
13693         fi
13694         $rm -f try.*
13695         ;;
13696 esac
13697
13698 case "$i_db" in
13699 define)
13700         : Check the return type needed for hash 
13701         echo " "
13702         echo "Checking return type needed for hash for Berkeley DB ..." >&4
13703         $cat >try.c <<EOCP
13704 #$d_const HASCONST
13705 #ifndef HASCONST
13706 #define const
13707 #endif
13708 #include <sys/types.h>
13709 #include <db.h>
13710
13711 #ifndef DB_VERSION_MAJOR
13712 u_int32_t hash_cb (ptr, size)
13713 const void *ptr;
13714 size_t size;
13715 {
13716 }
13717 HASHINFO info;
13718 int main()
13719 {
13720         info.hash = hash_cb;
13721 }
13722 #endif
13723 EOCP
13724         if $cc $ccflags -c try.c >try.out 2>&1 ; then
13725                 if $contains warning try.out >>/dev/null 2>&1 ; then
13726                         db_hashtype='int'
13727                 else
13728                         db_hashtype='u_int32_t'
13729                 fi
13730         else
13731                 : XXX Maybe we should just give up here.
13732                 db_hashtype=u_int32_t
13733                 $cat try.out >&4
13734                 echo "Help:  I can't seem to compile the db test program." >&4
13735                 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
13736         fi
13737         $rm -f try.*
13738         echo "Your version of Berkeley DB uses $db_hashtype for hash."
13739         ;;
13740 *)      db_hashtype=u_int32_t
13741         ;;
13742 esac
13743 case "$i_db" in
13744 define)
13745         : Check the return type needed for prefix 
13746         echo " "
13747         echo "Checking return type needed for prefix for Berkeley DB ..." >&4
13748         cat >try.c <<EOCP
13749 #$d_const HASCONST
13750 #ifndef HASCONST
13751 #define const
13752 #endif
13753 #include <sys/types.h>
13754 #include <db.h>
13755
13756 #ifndef DB_VERSION_MAJOR
13757 size_t prefix_cb (key1, key2)
13758 const DBT *key1;
13759 const DBT *key2;
13760 {
13761 }
13762 BTREEINFO info;
13763 int main()
13764 {
13765         info.prefix = prefix_cb;
13766 }
13767 #endif
13768 EOCP
13769         if $cc $ccflags -c try.c  >try.out 2>&1 ; then
13770                 if $contains warning try.out >>/dev/null 2>&1 ; then
13771                         db_prefixtype='int'
13772                 else
13773                         db_prefixtype='size_t'
13774                 fi
13775         else
13776                 db_prefixtype='size_t'
13777                 : XXX Maybe we should just give up here.
13778                 $cat try.out >&4
13779                 echo "Help:  I can't seem to compile the db test program." >&4
13780                 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
13781         fi
13782         $rm -f try.*
13783         echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
13784         ;;
13785 *)      db_prefixtype='size_t'
13786         ;;
13787 esac
13788
13789
13790 : How can we generate normalized random numbers ?
13791 echo " "
13792 echo "Looking for a random number function..." >&4
13793 case "$randfunc" in
13794 '')
13795         if set drand48 val -f; eval $csym; $val; then
13796                 dflt="drand48"
13797                 echo "Good, found drand48()." >&4
13798         elif set random val -f; eval $csym; $val; then
13799                 dflt="random"
13800                 echo "OK, found random()." >&4
13801         else
13802                 dflt="rand"
13803                 echo "Yick, looks like I have to use rand()." >&4
13804         fi
13805         echo " "
13806         ;;
13807 *)
13808         dflt="$randfunc"
13809         ;;
13810 esac
13811 cont=true
13812
13813 case "$ccflags" in
13814 *-Dmy_rand=*|*-Dmy_srand=*)
13815         echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
13816         ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
13817         ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
13818         ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
13819         ;;
13820 esac
13821
13822 while $test "$cont"; do
13823         rp="Use which function to generate random numbers?"
13824         . ./myread
13825         if $test "$ans" = "$dflt"; then
13826                 : null
13827         else
13828                 randbits=''
13829         fi
13830         randfunc="$ans"
13831         if set $ans val -f; eval $csym; $val; then
13832                 cont=''
13833         else
13834                 dflt=y
13835                 rp="I cannot find function $ans. Use that name anyway?"
13836                 . ./myread
13837                 dflt=rand
13838                 case "$ans" in
13839                         [yY]*) cont='';;
13840                 esac
13841         fi
13842         case "$cont" in
13843         '')
13844                 case "$randfunc" in
13845                 drand48)
13846                         drand01="drand48()"
13847                         seedfunc="srand48"
13848                         randbits=48
13849                         randseedtype=long
13850                         ;;
13851                 rand|random)
13852                         case "$randbits" in
13853                         '')
13854 echo "Checking to see how many bits your $randfunc() function produces..." >&4
13855                                 $cat >try.c <<EOCP
13856 #$i_unistd I_UNISTD
13857 #$i_stdlib I_STDLIB
13858 #include <stdio.h>
13859 #ifdef I_UNISTD
13860 #  include <unistd.h>
13861 #endif
13862 #ifdef I_STDLIB
13863 #  include <stdlib.h>
13864 #endif
13865 int main()
13866 {
13867         register int i;
13868         register unsigned long tmp;
13869         register unsigned long max = 0L;
13870
13871         for (i = 1000; i; i--) {
13872                 tmp = (unsigned long) $randfunc();
13873                 if (tmp > max) max = tmp;
13874         }
13875         for (i = 0; max; i++)
13876                 max /= 2;
13877         printf("%d\n",i);
13878 }
13879 EOCP
13880                                 set try
13881                                 if eval $compile_ok; then
13882                                         dflt=`try`
13883                                 else
13884                                         dflt='?'
13885                                         echo "(I can't seem to compile the test program...)"
13886                                 fi
13887                                 ;;
13888                         *)
13889                                 dflt="$randbits"
13890                                 ;;
13891                         esac
13892                         rp="How many bits does your $randfunc() function produce?"
13893                         . ./myread
13894                         randbits="$ans"
13895                         $rm -f try.c try
13896                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
13897                         seedfunc="s$randfunc"
13898                         randseedtype=unsigned
13899                         ;;
13900                 *)
13901                         dflt="31"
13902                         rp="How many bits does your $randfunc() function produce?"
13903                         . ./myread
13904                         randbits="$ans"
13905                         seedfunc="s$randfunc"
13906                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
13907                         if set $seedfunc val -f; eval $csym; $val; then
13908                                 echo "(Using $seedfunc() to seed random generator)"
13909                         else
13910                                 echo "(Warning: no $seedfunc() to seed random generator)"
13911                                 seedfunc=rand
13912                         fi
13913                         randseedtype=unsigned
13914                         ;;
13915                 esac
13916                 ;;
13917         esac
13918 done
13919
13920 echo " "
13921 echo "Determining whether or not we are on an EBCDIC system..." >&4
13922 $cat >try.c <<'EOM'
13923 int main()
13924 {
13925   if ('M'==0xd4) return 0;
13926   return 1;
13927 }
13928 EOM
13929
13930 val=$undef
13931 set try
13932 if eval $compile_ok; then
13933         if $run ./try; then
13934                 echo "You seem to speak EBCDIC." >&4
13935                 val="$define"
13936         else
13937                 echo "Nope, no EBCDIC, probably ASCII or some ISO Latin. Or UTF-8." >&4
13938         fi
13939 else
13940         echo "I'm unable to compile the test program." >&4
13941         echo "I'll assume ASCII or some ISO Latin. Or UTF8." >&4
13942 fi
13943 $rm -f try try.*
13944 set ebcdic
13945 eval $setvar
13946
13947 echo " "
13948 $cat >&4 <<EOM
13949 Checking how to flush all pending stdio output...
13950 EOM
13951 # I only know how to find the first 32 possibly open files on SunOS.
13952 # See also hints/sunos_4_1.sh and util.c  --AD
13953 case "$osname" in
13954 sunos) $echo '#define PERL_FFLUSH_ALL_FOPEN_MAX 32' > try.c ;;
13955 esac
13956 $cat >>try.c <<EOCP
13957 #include <stdio.h>
13958 #$i_unistd I_UNISTD
13959 #ifdef I_UNISTD
13960 # include <unistd.h>
13961 #endif
13962 #$d_sysconf HAS_SYSCONF
13963 #$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY
13964 #ifdef HAS_STDIO_STREAM_ARRAY
13965 # define STDIO_STREAM_ARRAY $stdio_stream_array
13966 #endif
13967 int main() {
13968   FILE* p;
13969   unlink("try.out");
13970   p = fopen("try.out", "w");
13971 #ifdef TRY_FPUTC
13972   fputc('x', p);
13973 #else
13974 # ifdef TRY_FPRINTF
13975   fprintf(p, "x");
13976 # endif
13977 #endif
13978 #ifdef TRY_FFLUSH_NULL
13979   fflush(NULL);
13980 #endif
13981 #ifdef TRY_FFLUSH_ALL
13982   {
13983     long open_max = -1;
13984 # ifdef PERL_FFLUSH_ALL_FOPEN_MAX
13985     open_max = PERL_FFLUSH_ALL_FOPEN_MAX;
13986 # else
13987 #  if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
13988     open_max = sysconf(_SC_OPEN_MAX);
13989 #  else
13990 #   ifdef FOPEN_MAX
13991     open_max = FOPEN_MAX;
13992 #   else
13993 #    ifdef OPEN_MAX
13994     open_max = OPEN_MAX;
13995 #    else
13996 #     ifdef _NFILE
13997     open_max = _NFILE;
13998 #     endif
13999 #    endif
14000 #   endif
14001 #  endif
14002 # endif 
14003 # ifdef HAS_STDIO_STREAM_ARRAY
14004     if (open_max > 0) {
14005       long i;
14006       for (i = 0; i < open_max; i++)
14007             if (STDIO_STREAM_ARRAY[i]._file >= 0 &&
14008                 STDIO_STREAM_ARRAY[i]._file < open_max &&
14009                 STDIO_STREAM_ARRAY[i]._flag)
14010                 fflush(&STDIO_STREAM_ARRAY[i]);
14011     }   
14012   }
14013 # endif
14014 #endif
14015   _exit(42);
14016 }
14017 EOCP
14018 : first we have to find out how _not_ to flush
14019 $to try.c
14020 if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
14021     output=''
14022     set try -DTRY_FPUTC
14023     if eval $compile; then
14024             $run ./try 2>/dev/null
14025             code="$?"
14026             $from try.out
14027             if $test ! -s try.out -a "X$code" = X42; then
14028                 output=-DTRY_FPUTC
14029             fi
14030     fi
14031     case "$output" in
14032     '')
14033             set try -DTRY_FPRINTF
14034             if eval $compile; then
14035                     $run ./try 2>/dev/null
14036                     code="$?"
14037                     $from try.out
14038                     if $test ! -s try.out -a "X$code" = X42; then
14039                         output=-DTRY_FPRINTF
14040                     fi
14041             fi
14042         ;;
14043     esac
14044 fi
14045 : check for fflush NULL behaviour
14046 case "$fflushNULL" in
14047 '')     set try -DTRY_FFLUSH_NULL $output
14048         if eval $compile; then
14049                 $run ./try 2>/dev/null
14050                 code="$?"
14051                 $from try.out
14052                 if $test -s try.out -a "X$code" = X42; then
14053                         fflushNULL="`$cat try.out`"
14054                 else
14055                         if $test "X$code" != X42; then
14056                                 $cat >&4 <<EOM
14057 (If this test failed, don't worry, we'll try another method shortly.)
14058 EOM
14059                         fi
14060                 fi
14061         fi
14062         $rm -f core try.core core.try.*
14063         case "$fflushNULL" in
14064         x)      $cat >&4 <<EOM
14065 Your fflush(NULL) works okay for output streams.
14066 Let's see if it clobbers input pipes...
14067 EOM
14068 # As of mid-March 2000 all versions of Solaris appear to have a stdio
14069 # bug that improperly flushes the input end of pipes.  So we avoid the
14070 # autoflush on fork/system/exec support for now. :-(
14071 $cat >tryp.c <<EOCP
14072 #include <stdio.h>
14073 int
14074 main(int argc, char **argv)
14075 {
14076     char buf[1024];
14077     int i;
14078     char *bp = buf;
14079     while (1) {
14080         while ((i = getc(stdin)) != -1
14081                && (*bp++ = i) != '\n'
14082                && bp < &buf[1024])
14083         /* DO NOTHING */ ;
14084         *bp = '\0';
14085         fprintf(stdout, "%s", buf);
14086         fflush(NULL);
14087         if (i == -1)
14088             return 0;
14089         bp = buf;
14090     }
14091 }
14092 EOCP
14093                 fflushNULL="$define"
14094                 set tryp
14095                 if eval $compile; then
14096                     $rm -f tryp.out
14097                     $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
14098                     if cmp tryp.c tryp.out >/dev/null 2>&1; then
14099                        $cat >&4 <<EOM
14100 fflush(NULL) seems to behave okay with input streams.
14101 EOM
14102                         fflushNULL="$define"
14103                     else
14104                         $cat >&4 <<EOM
14105 Ouch, fflush(NULL) clobbers input pipes!  We will not use it.
14106 EOM
14107                         fflushNULL="$undef"
14108                     fi
14109                 fi
14110                 $rm -f core tryp.c tryp.core core.tryp.*
14111                 ;;
14112         '')     $cat >&4 <<EOM
14113 Your fflush(NULL) isn't working (contrary to ANSI C).
14114 EOM
14115                 fflushNULL="$undef"
14116                 ;;
14117         *)      $cat >&4 <<EOM
14118 Cannot figure out whether your fflush(NULL) works or not.
14119 I'm assuming it doesn't (contrary to ANSI C).
14120 EOM
14121                 fflushNULL="$undef"
14122                 ;;
14123         esac
14124         ;;
14125 $define|true|[yY]*)
14126         fflushNULL="$define"
14127         ;;
14128 *)
14129         fflushNULL="$undef"
14130         ;;
14131 esac
14132 : check explicit looping only if NULL did not work, and if the pipe
14133 : bug does not show up on an explicit flush too
14134 case "$fflushNULL" in
14135 "$undef")
14136         $cat >tryp.c <<EOCP
14137 #include <stdio.h>
14138 int
14139 main(int argc, char **argv)
14140 {
14141     char buf[1024];
14142     int i;
14143     char *bp = buf;
14144     while (1) {
14145         while ((i = getc(stdin)) != -1
14146                && (*bp++ = i) != '\n'
14147                && bp < &buf[1024])
14148         /* DO NOTHING */ ;
14149         *bp = '\0';
14150         fprintf(stdout, "%s", buf);
14151         fflush(stdin);
14152         if (i == -1)
14153             return 0;
14154         bp = buf;
14155     }
14156 }
14157 EOCP
14158         set tryp
14159         if eval $compile; then
14160             $rm -f tryp.out
14161             $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
14162             if cmp tryp.c tryp.out >/dev/null 2>&1; then
14163                $cat >&4 <<EOM
14164 Good, at least fflush(stdin) seems to behave okay when stdin is a pipe.
14165 EOM
14166                 : now check for fflushall behaviour
14167                 case "$fflushall" in
14168                 '')     set try -DTRY_FFLUSH_ALL $output
14169                         if eval $compile; then
14170                                 $cat >&4 <<EOM
14171 (Now testing the other method--but note that this also may fail.)
14172 EOM
14173                                 $run ./try 2>/dev/null
14174                                 code=$?
14175                                 $from try.out
14176                                 if $test -s try.out -a "X$code" = X42; then
14177                                         fflushall="`$cat try.out`"
14178                                 fi
14179                         fi
14180                         $rm -f core try.core core.try.*
14181                         case "$fflushall" in
14182                         x)      $cat >&4 <<EOM
14183 Whew. Flushing explicitly all the stdio streams works.
14184 EOM
14185                                 fflushall="$define"
14186                                 ;;
14187                         '')     $cat >&4 <<EOM
14188 Sigh. Flushing explicitly all the stdio streams doesn't work.
14189 EOM
14190                                 fflushall="$undef"
14191                                 ;;
14192                         *)      $cat >&4 <<EOM
14193 Cannot figure out whether flushing stdio streams explicitly works or not.
14194 I'm assuming it doesn't.
14195 EOM
14196                                 fflushall="$undef"
14197                                 ;;
14198                         esac
14199                         ;;
14200                 "$define"|true|[yY]*)
14201                         fflushall="$define"
14202                         ;;
14203                 *)
14204                         fflushall="$undef"
14205                         ;;
14206                 esac
14207             else
14208                 $cat >&4 <<EOM
14209 All is futile.  Even fflush(stdin) clobbers input pipes!
14210 EOM
14211                 fflushall="$undef"
14212             fi
14213         else
14214             fflushall="$undef"
14215         fi
14216         $rm -f core tryp.c tryp.core core.tryp.*
14217         ;;
14218 *)      fflushall="$undef"
14219         ;;
14220 esac
14221
14222 case "$fflushNULL$fflushall" in
14223 undefundef)
14224         $cat <<EOM
14225 OK, I give up.  I cannot figure out how to flush pending stdio output.
14226 We won't be flushing handles at all before fork/exec/popen.
14227 EOM
14228         ;;
14229 esac
14230 $rm -f try.* try$exe_ext
14231
14232 : Store the full pathname to the ar program for use in the C program
14233 : Respect a hint or command line value for full_ar.
14234 case "$full_ar" in
14235 '') full_ar=$ar ;;
14236 esac
14237
14238 : Store the full pathname to the sed program for use in the C program
14239 full_sed=$sed
14240
14241 : see what type gids are declared as in the kernel
14242 echo " "
14243 echo "Looking for the type for group ids returned by getgid()."
14244 set gid_t gidtype xxx stdio.h sys/types.h
14245 eval $typedef
14246 case "$gidtype" in
14247 xxx)
14248         xxx=`./findhdr sys/user.h`
14249         set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
14250         case $1 in
14251         unsigned) dflt="$1 $2" ;;
14252         *) dflt="$1" ;;
14253         esac
14254         ;;
14255 *) dflt="$gidtype";;
14256 esac
14257 case "$gidtype" in
14258 gid_t) echo "gid_t found." ;;
14259 *)      rp="What is the type for group ids returned by getgid()?"
14260         . ./myread
14261         gidtype="$ans"
14262         ;;
14263 esac
14264
14265 echo " "
14266 case "$gidtype" in
14267 *_t) zzz="$gidtype"     ;;
14268 *)   zzz="gid"          ;;
14269 esac
14270 echo "Checking the size of $zzz..." >&4 
14271 cat > try.c <<EOCP
14272 #include <sys/types.h>
14273 #include <stdio.h>
14274 int main() {
14275     printf("%d\n", (int)sizeof($gidtype));
14276     exit(0);
14277 }
14278 EOCP
14279 set try
14280 if eval $compile_ok; then
14281         yyy=`$run ./try`
14282         case "$yyy" in
14283         '')     gidsize=4
14284                 echo "(I can't execute the test program--guessing $gidsize.)" >&4
14285                 ;;
14286         *)      gidsize=$yyy
14287                 echo "Your $zzz is $gidsize bytes long."
14288                 ;;
14289         esac
14290 else
14291         gidsize=4
14292         echo "(I can't compile the test program--guessing $gidsize.)" >&4
14293 fi
14294
14295
14296 echo " "
14297 case "$gidtype" in
14298 *_t) zzz="$gidtype"     ;;
14299 *)   zzz="gid"          ;;
14300 esac
14301 echo "Checking the sign of $zzz..." >&4 
14302 cat > try.c <<EOCP
14303 #include <sys/types.h>
14304 #include <stdio.h>
14305 int main() {
14306         $gidtype foo = -1;
14307         if (foo < 0)
14308                 printf("-1\n");
14309         else
14310                 printf("1\n");
14311 }
14312 EOCP
14313 set try
14314 if eval $compile; then
14315         yyy=`$run ./try`
14316         case "$yyy" in
14317         '')     gidsign=1
14318                 echo "(I can't execute the test program--guessing unsigned.)" >&4
14319                 ;;
14320         *)      gidsign=$yyy
14321                 case "$gidsign" in
14322                  1) echo "Your $zzz is unsigned." ;;
14323                 -1) echo "Your $zzz is signed."   ;;
14324                 esac
14325                 ;;
14326         esac
14327 else
14328         gidsign=1
14329         echo "(I can't compile the test program--guessing unsigned.)" >&4
14330 fi
14331
14332
14333 echo " "
14334
14335 if $test X"$quadtype" != X; then
14336
14337 echo "Checking how to print 64-bit integers..." >&4
14338
14339 if $test X"$sPRId64" = X -a X"$quadtype" = Xint; then
14340         $cat >try.c <<'EOCP'
14341 #include <sys/types.h>
14342 #include <stdio.h>
14343 int main() {
14344   int q = 12345678901;
14345   printf("%ld\n", q);
14346 }
14347 EOCP
14348         set try
14349         if eval $compile; then
14350                 yyy=`$run ./try`
14351                 case "$yyy" in
14352                 12345678901)
14353                         sPRId64='"d"'; sPRIi64='"i"'; sPRIu64='"u"';
14354                         sPRIo64='"o"'; sPRIx64='"x"'; sPRIXU64='"X"';
14355                         echo "We will use %d."
14356                         ;;
14357                 esac
14358         fi
14359 fi
14360
14361 if $test X"$sPRId64" = X -a X"$quadtype" = Xlong; then
14362         $cat >try.c <<'EOCP'
14363 #include <sys/types.h>
14364 #include <stdio.h>
14365 int main() {
14366   long q = 12345678901;
14367   printf("%ld\n", q);
14368 }
14369 EOCP
14370         set try
14371         if eval $compile; then
14372                 yyy=`$run ./try`
14373                 case "$yyy" in
14374                 12345678901)
14375                         sPRId64='"ld"'; sPRIi64='"li"'; sPRIu64='"lu"';
14376                         sPRIo64='"lo"'; sPRIx64='"lx"'; sPRIXU64='"lX"';
14377                         echo "We will use %ld."
14378                         ;;
14379                 esac
14380         fi
14381 fi
14382
14383 if $test X"$sPRId64" = X -a X"$i_inttypes" = X"$define" -a X"$quadtype" = Xint64_t; then
14384         $cat >try.c <<'EOCP'
14385 #include <sys/types.h>
14386 #include <inttypes.h>
14387 #include <stdio.h>
14388 int main() {
14389   int64_t q = 12345678901;
14390   printf("%" PRId64 "\n", q);
14391 }
14392 EOCP
14393         set try
14394         if eval $compile; then
14395                 yyy=`$run ./try`
14396                 case "$yyy" in
14397                 12345678901)
14398                         sPRId64=PRId64; sPRIi64=PRIi64; sPRIu64=PRIu64;
14399                         sPRIo64=PRIo64; sPRIx64=PRIx64; sPRIXU64=PRIXU64;
14400                         echo "We will use the C9X style."
14401                         ;;
14402                 esac
14403         fi
14404 fi
14405
14406 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
14407         $cat >try.c <<EOCP
14408 #include <sys/types.h>
14409 #include <stdio.h>
14410 int main() {
14411   $quadtype q = 12345678901;
14412   printf("%Ld\n", q);
14413 }
14414 EOCP
14415         set try
14416         if eval $compile; then
14417                 yyy=`$run ./try`
14418                 case "$yyy" in
14419                 12345678901)
14420                         sPRId64='"Ld"'; sPRIi64='"Li"'; sPRIu64='"Lu"';
14421                         sPRIo64='"Lo"'; sPRIx64='"Lx"'; sPRIXU64='"LX"';
14422                         echo "We will use %Ld."
14423                         ;;
14424                 esac
14425         fi
14426 fi
14427
14428 if $test X"$sPRId64" = X -a X"$quadtype" = X"long long"; then
14429         $cat >try.c <<'EOCP'
14430 #include <sys/types.h>
14431 #include <stdio.h>
14432 int main() {
14433   long long q = 12345678901LL; /* AIX cc requires the LL suffix. */
14434   printf("%lld\n", q);
14435 }
14436 EOCP
14437         set try
14438         if eval $compile; then
14439                 yyy=`$run ./try`
14440                 case "$yyy" in
14441                 12345678901)
14442                         sPRId64='"lld"'; sPRIi64='"lli"'; sPRIu64='"llu"';
14443                         sPRIo64='"llo"'; sPRIx64='"llx"'; sPRIXU64='"llX"';
14444                         echo "We will use the %lld style."
14445                         ;;
14446                 esac
14447         fi
14448 fi
14449
14450 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
14451         $cat >try.c <<EOCP
14452 #include <sys/types.h>
14453 #include <stdio.h>
14454 int main() {
14455   $quadtype q = 12345678901;
14456   printf("%qd\n", q);
14457 }
14458 EOCP
14459         set try
14460         if eval $compile; then
14461                 yyy=`$run ./try`
14462                 case "$yyy" in
14463                 12345678901)
14464                         sPRId64='"qd"'; sPRIi64='"qi"'; sPRIu64='"qu"';
14465                         sPRIo64='"qo"'; sPRIx64='"qx"'; sPRIXU64='"qX"';
14466                         echo "We will use %qd."
14467                         ;;
14468                 esac
14469         fi
14470 fi
14471
14472 if $test X"$sPRId64" = X; then
14473         echo "Cannot figure out how to print 64-bit integers." >&4
14474 fi
14475
14476 $rm -f try try.*
14477
14478 fi
14479
14480 case "$sPRId64" in
14481 '')     d_PRId64="$undef"; d_PRIi64="$undef"; d_PRIu64="$undef"; 
14482         d_PRIo64="$undef"; d_PRIx64="$undef"; d_PRIXU64="$undef"; 
14483         ;;
14484 *)      d_PRId64="$define"; d_PRIi64="$define"; d_PRIu64="$define"; 
14485         d_PRIo64="$define"; d_PRIx64="$define"; d_PRIXU64="$define"; 
14486         ;;
14487 esac
14488
14489
14490 echo " "
14491 $echo "Checking the format strings to be used for Perl's internal types..." >&4
14492
14493 if $test X"$ivsize" = X8; then
14494         ivdformat="$sPRId64"
14495         uvuformat="$sPRIu64"
14496         uvoformat="$sPRIo64"
14497         uvxformat="$sPRIx64"
14498         uvXUformat="$sPRIXU64"
14499 else
14500         if $test X"$ivsize" = X"$longsize"; then
14501                 ivdformat='"ld"'
14502                 uvuformat='"lu"'
14503                 uvoformat='"lo"'
14504                 uvxformat='"lx"'
14505                 uvXUformat='"lX"'
14506         else
14507                 if $test X"$ivsize" = X"$intsize"; then
14508                         ivdformat='"d"'
14509                         uvuformat='"u"'
14510                         uvoformat='"o"'
14511                         uvxformat='"x"'
14512                         uvXUformat='"X"'
14513                 else
14514                         : far out
14515                         if $test X"$ivsize" = X"$shortsize"; then
14516                                 ivdformat='"hd"'
14517                                 uvuformat='"hu"'
14518                                 uvoformat='"ho"'
14519                                 uvxformat='"hx"'
14520                                 uvXUformat='"hX"'
14521                         fi
14522                 fi
14523         fi
14524 fi
14525
14526 if $test X"$uselongdouble" = X"$define" -a X"$d_longdbl" = X"$define" -a X"$d_PRIgldbl" = X"$define"; then
14527         nveformat="$sPRIeldbl"
14528         nvfformat="$sPRIfldbl"
14529         nvgformat="$sPRIgldbl"
14530         nvEUformat="$sPRIEUldbl"
14531         nvFUformat="$sPRIFUldbl"
14532         nvGUformat="$sPRIGUldbl"
14533 else
14534         nveformat='"e"'
14535         nvfformat='"f"'
14536         nvgformat='"g"'
14537         nvEUformat='"E"'
14538         nvFUformat='"F"'
14539         nvGUformat='"G"'
14540 fi
14541
14542 case "$ivdformat" in
14543 '') echo "$0: Fatal: failed to find format strings, cannot continue." >& 4
14544     exit 1
14545     ;;
14546 esac
14547
14548
14549 echo " "
14550 $echo "Checking the format string to be used for gids..." >&4
14551
14552 case "$gidsign" in
14553 -1)     if $test X"$gidsize" = X"$ivsize"; then
14554                 gidformat="$ivdformat"
14555         else
14556                 if $test X"$gidsize" = X"$longsize"; then
14557                         gidformat='"ld"'
14558                 else
14559                         if $test X"$gidsize" = X"$intsize"; then
14560                                 gidformat='"d"'
14561                         else
14562                                 if $test X"$gidsize" = X"$shortsize"; then
14563                                         gidformat='"hd"'
14564                                 fi
14565                         fi
14566                 fi
14567         fi
14568         ;;
14569 *)      if $test X"$gidsize" = X"$uvsize"; then
14570                 gidformat="$uvuformat"
14571         else
14572                 if $test X"$gidsize" = X"$longsize"; then
14573                         gidformat='"lu"'
14574                 else
14575                         if $test X"$gidsize" = X"$intsize"; then
14576                                 gidformat='"u"'
14577                         else
14578                                 if $test X"$gidsize" = X"$shortsize"; then
14579                                         gidformat='"hu"'
14580                                 fi
14581                         fi
14582                 fi
14583         fi
14584         ;;
14585 esac
14586
14587 : see if getgroups exists
14588 set getgroups d_getgrps
14589 eval $inlibc
14590
14591 : see if setgroups exists
14592 set setgroups d_setgrps
14593 eval $inlibc
14594
14595
14596 : Find type of 2nd arg to 'getgroups()' and 'setgroups()'
14597 echo " "
14598 case "$d_getgrps$d_setgrps" in
14599 *define*)
14600         case "$groupstype" in
14601         '') dflt="$gidtype" ;;
14602         *)  dflt="$groupstype" ;;
14603         esac
14604         $cat <<EOM
14605 What type of pointer is the second argument to getgroups() and setgroups()?
14606 Usually this is the same as group ids, $gidtype, but not always.
14607
14608 EOM
14609         rp='What type pointer is the second argument to getgroups() and setgroups()?'
14610         . ./myread
14611         groupstype="$ans"
14612         ;;
14613 *)  groupstype="$gidtype";;
14614 esac
14615
14616 echo " "
14617 echo "Checking if your $make program sets \$(MAKE)..." >&4
14618 case "$make_set_make" in
14619 '')
14620         $sed 's/^X //' > testmake.mak << 'EOF'
14621 Xall:
14622 X       @echo 'maketemp="$(MAKE)"'
14623 EOF
14624         case "`$make -f testmake.mak 2>/dev/null`" in
14625         *maketemp=*) make_set_make='#' ;;
14626         *)      make_set_make="MAKE=$make" ;;
14627         esac
14628         $rm -f testmake.mak
14629         ;;
14630 esac
14631 case "$make_set_make" in
14632 '#') echo "Yup, it does.";;
14633 *) echo "Nope, it doesn't.";;
14634 esac
14635
14636 : see what type is used for mode_t
14637 rp="What is the type used for file modes for system calls (e.g. fchmod())?"
14638 set mode_t modetype int stdio.h sys/types.h
14639 eval $typedef_ask
14640
14641 : see if stdarg is available
14642 echo " "
14643 if $test `./findhdr stdarg.h`; then
14644         echo "<stdarg.h> found." >&4
14645         valstd="$define"
14646 else
14647         echo "<stdarg.h> NOT found." >&4
14648         valstd="$undef"
14649 fi
14650
14651 : see if varags is available
14652 echo " "
14653 if $test `./findhdr varargs.h`; then
14654         echo "<varargs.h> found." >&4
14655 else
14656         echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
14657 fi
14658
14659 : set up the varargs testing programs
14660 $cat > varargs.c <<EOP
14661 #ifdef I_STDARG
14662 #include <stdarg.h>
14663 #endif
14664 #ifdef I_VARARGS
14665 #include <varargs.h>
14666 #endif
14667
14668 #ifdef I_STDARG
14669 int f(char *p, ...)
14670 #else
14671 int f(va_alist)
14672 va_dcl
14673 #endif
14674 {
14675         va_list ap;
14676 #ifndef I_STDARG
14677         char *p;
14678 #endif
14679 #ifdef I_STDARG
14680         va_start(ap,p);
14681 #else
14682         va_start(ap);
14683         p = va_arg(ap, char *);
14684 #endif
14685         va_end(ap);
14686 }
14687 EOP
14688 $cat > varargs <<EOP
14689 $startsh
14690 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
14691         echo "true"
14692 else
14693         echo "false"
14694 fi
14695 $rm -f varargs$_o
14696 EOP
14697 chmod +x varargs
14698
14699 : now check which varargs header should be included
14700 echo " "
14701 i_varhdr=''
14702 case "$valstd" in
14703 "$define")
14704         if `./varargs I_STDARG`; then
14705                 val='stdarg.h'
14706         elif `./varargs I_VARARGS`; then
14707                 val='varargs.h'
14708         fi
14709         ;;
14710 *)
14711         if `./varargs I_VARARGS`; then
14712                 val='varargs.h'
14713         fi
14714         ;;
14715 esac
14716 case "$val" in
14717 '')
14718 echo "I could not find the definition for va_dcl... You have problems..." >&4
14719         val="$undef"; set i_stdarg; eval $setvar
14720         val="$undef"; set i_varargs; eval $setvar
14721         ;;
14722 *) 
14723         set i_varhdr
14724         eval $setvar
14725         case "$i_varhdr" in
14726         stdarg.h)
14727                 val="$define"; set i_stdarg; eval $setvar
14728                 val="$undef"; set i_varargs; eval $setvar
14729                 ;;
14730         varargs.h)
14731                 val="$undef"; set i_stdarg; eval $setvar
14732                 val="$define"; set i_varargs; eval $setvar
14733                 ;;
14734         esac
14735         echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
14736 esac
14737 $rm -f varargs*
14738
14739 : see if we need va_copy
14740 echo " "
14741 case "$i_stdarg" in
14742 "$define")
14743         $cat >try.c <<EOCP
14744 #include <stdarg.h>
14745 #include <stdio.h>
14746 #$i_stdlib I_STDLIB
14747 #ifdef I_STDLIB
14748 #include <stdlib.h>
14749 #endif
14750 #include <signal.h>
14751
14752 int
14753 ivfprintf(FILE *f, const char *fmt, va_list *valp)
14754 {
14755   return vfprintf(f, fmt, *valp);
14756 }
14757  
14758 int    
14759 myvfprintf(FILE *f, const  char *fmt, va_list val)
14760 {
14761   return ivfprintf(f, fmt, &val);
14762 }
14763       
14764 int
14765 myprintf(char *fmt, ...) 
14766 {
14767   va_list val;
14768   va_start(val, fmt);
14769   return myvfprintf(stdout, fmt, val); 
14770 }         
14771
14772 int
14773 main(int ac, char **av)
14774 {
14775   signal(SIGSEGV, exit);
14776
14777   myprintf("%s%cs all right, then\n", "that", '\'');                            
14778   exit(0);      
14779 }
14780 EOCP
14781         set try
14782         if eval $compile && $run ./try 2>&1 >/dev/null; then
14783                 case "`$run ./try`" in
14784                 "that's all right, then")
14785                         okay=yes
14786                         ;;
14787                 esac
14788         fi
14789         case "$okay" in
14790         yes)    echo "It seems that you don't need va_copy()." >&4
14791                 need_va_copy="$undef"
14792                 ;;
14793         *)      echo "It seems that va_copy() or similar will be needed." >&4
14794                 need_va_copy="$define"
14795                 ;;
14796         esac
14797         $rm -f try.* core core.* *.core *.core.*
14798         ;;
14799 *)      echo "You don't have <stdarg.h>, not checking for va_copy()." >&4
14800         ;;
14801 esac
14802
14803 : define a fucntion to check prototypes
14804 $cat > protochk <<EOSH
14805 $startsh
14806 cc="$cc"
14807 optimize="$optimize"
14808 ccflags="$ccflags"
14809 prototype="$prototype"
14810 define="$define"
14811 rm=$rm
14812 EOSH
14813
14814 $cat >> protochk <<'EOSH'
14815
14816 $rm -f try.c
14817 foo="$1"
14818 shift
14819 while test $# -ge 2; do
14820         case "$1" in
14821                 $define) echo "#include <$2>" >> try.c ;;
14822                 literal) echo "$2" >> try.c ;;
14823         esac
14824     shift 2
14825 done
14826 test "$prototype" = "$define"  && echo '#define CAN_PROTOTYPE' >> try.c
14827 cat >> try.c <<'EOCP'
14828 #ifdef CAN_PROTOTYPE
14829 #define _(args) args
14830 #else
14831 #define _(args) ()
14832 #endif
14833 EOCP
14834 echo "$foo" >> try.c
14835 echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
14836 $cc $optimize $ccflags -c try.c > /dev/null 2>&1
14837 status=$?
14838 $rm -f try.[co]
14839 exit $status
14840 EOSH
14841 chmod +x protochk
14842 $eunicefix protochk
14843
14844 : see what type is used for size_t
14845 rp="What is the type used for the length parameter for string functions?"
14846 set size_t sizetype 'unsigned int' stdio.h sys/types.h
14847 eval $typedef_ask
14848
14849 : check for type of arguments to gethostbyaddr. 
14850 if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
14851         case "$d_gethbyaddr" in
14852         $define)
14853                 $cat <<EOM
14854
14855 Checking to see what type of arguments are accepted by gethostbyaddr().
14856 EOM
14857                 hdrs="$define sys/types.h
14858                         $d_socket sys/socket.h 
14859                         $i_niin netinet/in.h 
14860                         $i_netdb netdb.h
14861                         $i_unistd unistd.h"
14862                 : The first arg can 'char *' or 'void *'
14863                 : The second arg is some of integral type
14864                 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
14865                         for yyy in size_t long int; do
14866                                 case "$netdb_host_type" in
14867                                 '')     try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
14868                                         if ./protochk "$try" $hdrs; then
14869                                                 echo "Your system accepts $xxx for the first arg."
14870                                                 echo "...and $yyy for the second arg."
14871                                                 netdb_host_type="$xxx"
14872                                                 netdb_hlen_type="$yyy"
14873                                         fi
14874                                         ;;
14875                                 esac
14876                         done
14877                 done
14878                 : In case none of those worked, prompt the user.
14879                 case "$netdb_host_type" in
14880                 '')     rp='What is the type for the 1st argument to gethostbyaddr?'
14881                         dflt='char *'
14882                         . ./myread
14883                         netdb_host_type=$ans
14884                         rp='What is the type for the 2nd argument to gethostbyaddr?'
14885                         dflt="$sizetype"
14886                         . ./myread
14887                         netdb_hlen_type=$ans
14888                         ;;
14889                 esac
14890                 ;;
14891         *)      : no gethostbyaddr, so pick harmless defaults
14892                 netdb_host_type='char *'
14893                 netdb_hlen_type="$sizetype"
14894                 ;;
14895         esac
14896         # Remove the "const" if needed. -- but then we'll have a 
14897         # prototype clash!
14898         # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
14899 fi
14900
14901 : check for type of argument to gethostbyname. 
14902 if test "X$netdb_name_type" = X ; then
14903         case "$d_gethbyname" in
14904         $define)
14905                 $cat <<EOM
14906
14907 Checking to see what type of argument is accepted by gethostbyname().
14908 EOM
14909                 hdrs="$define sys/types.h
14910                         $d_socket sys/socket.h 
14911                         $i_niin netinet/in.h 
14912                         $i_netdb netdb.h
14913                         $i_unistd unistd.h"
14914                 for xxx in "const char *" "char *"; do
14915                         case "$netdb_name_type" in
14916                         '')     try="extern struct hostent *gethostbyname($xxx);"
14917                                 if ./protochk "$try" $hdrs; then
14918                                         echo "Your system accepts $xxx."
14919                                         netdb_name_type="$xxx"
14920                                 fi
14921                                 ;;
14922                         esac
14923                 done
14924                 : In case none of those worked, prompt the user.
14925                 case "$netdb_name_type" in
14926                 '')     rp='What is the type for the 1st argument to gethostbyname?'
14927                         dflt='char *'
14928                         . ./myread
14929                         netdb_name_type=$ans
14930                         ;;
14931                 esac
14932                 ;;
14933         *)      : no gethostbyname, so pick harmless default
14934                 netdb_name_type='char *'
14935                 ;;
14936         esac
14937 fi
14938
14939 : check for type of 1st argument to getnetbyaddr. 
14940 if test "X$netdb_net_type" = X ; then
14941         case "$d_getnbyaddr" in
14942         $define)
14943                 $cat <<EOM
14944
14945 Checking to see what type of 1st argument is accepted by getnetbyaddr().
14946 EOM
14947                 hdrs="$define sys/types.h
14948                         $d_socket sys/socket.h 
14949                         $i_niin netinet/in.h 
14950                         $i_netdb netdb.h
14951                         $i_unistd unistd.h"
14952                 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
14953                         case "$netdb_net_type" in
14954                         '')     try="extern struct netent *getnetbyaddr($xxx, int);"
14955                                 if ./protochk "$try" $hdrs; then
14956                                         echo "Your system accepts $xxx."
14957                                         netdb_net_type="$xxx"
14958                                 fi
14959                                 ;;
14960                         esac
14961                 done
14962                 : In case none of those worked, prompt the user.
14963                 case "$netdb_net_type" in
14964                 '')     rp='What is the type for the 1st argument to getnetbyaddr?'
14965                         dflt='long'
14966                         . ./myread
14967                         netdb_net_type=$ans
14968                         ;;
14969                 esac
14970                 ;;
14971         *)      : no getnetbyaddr, so pick harmless default
14972                 netdb_net_type='long'
14973                 ;;
14974         esac
14975 fi
14976 : locate the preferred pager for this system
14977 case "$pager" in
14978 '')
14979         dflt=''
14980         case "$pg" in
14981         /*) dflt=$pg;;
14982         [a-zA-Z]:/*) dflt=$pg;;
14983         esac
14984         case "$more" in
14985         /*) dflt=$more;;
14986         [a-zA-Z]:/*) dflt=$more;;
14987         esac
14988         case "$less" in
14989         /*) dflt=$less;;
14990         [a-zA-Z]:/*) dflt=$less;;
14991         esac
14992         case "$dflt" in
14993         '') dflt=/usr/ucb/more;;
14994         esac
14995         ;;
14996 *) dflt="$pager";;
14997 esac
14998 echo " "
14999 fn=f/
15000 rp='What pager is used on your system?'
15001 . ./getfile
15002 pager="$ans"
15003
15004 : see what type pids are declared as in the kernel
15005 rp="What is the type of process ids on this system?"
15006 set pid_t pidtype int stdio.h sys/types.h
15007 eval $typedef_ask
15008
15009 : Find earliest binary compatible site_perl subdirectory perl can use.
15010 case "$bincompat5005" in
15011 "$define") xs_apiversion='5.005' ;;
15012 *) xs_apiversion=$version ;;   # The current site_perl version.
15013 esac
15014 : Find earliest pure perl site_perl subdirectory perl can use.
15015 : The versioned directories started at 5.005.
15016 pm_apiversion='5.005'
15017
15018 : see if ar generates random libraries by itself
15019 echo " "
15020 echo "Checking how to generate random libraries on your machine..." >&4
15021 echo 'int bar1() { return bar2(); }' > bar1.c
15022 echo 'int bar2() { return 2; }' > bar2.c
15023 $cat > foo.c <<'EOP'
15024 int main() { printf("%d\n", bar1()); exit(0); }
15025 EOP
15026 $cc $ccflags -c bar1.c >/dev/null 2>&1
15027 $cc $ccflags -c bar2.c >/dev/null 2>&1
15028 $cc $ccflags -c foo.c >/dev/null 2>&1
15029 $ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
15030 if $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
15031         $run ./foobar >/dev/null 2>&1; then
15032         echo "$ar appears to generate random libraries itself."
15033         orderlib=false
15034         ranlib=":"
15035 elif $ar ts bar$_a >/dev/null 2>&1 &&
15036         $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
15037         $run ./foobar >/dev/null 2>&1; then
15038                 echo "a table of contents needs to be added with '$ar ts'."
15039                 orderlib=false
15040                 ranlib="$ar ts"
15041 else
15042         case "$ranlib" in
15043         :) ranlib='';;
15044         '')
15045                 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
15046                 $test -f $ranlib || ranlib=''
15047                 ;;
15048         esac
15049         if $test -n "$ranlib"; then
15050                 echo "your system has '$ranlib'; we'll use that."
15051                 orderlib=false
15052         else
15053                 echo "your system doesn't seem to support random libraries"
15054                 echo "so we'll use lorder and tsort to order the libraries."
15055                 orderlib=true
15056                 ranlib=":"
15057         fi
15058 fi
15059 $rm -f foo* bar* 
15060
15061 : check for type of arguments to select. 
15062 case "$selecttype" in
15063 '') case "$d_select" in
15064         $define)
15065                 echo " "
15066                 $cat <<EOM
15067 Checking to see what type of arguments are accepted by select().
15068 EOM
15069                 hdrs="$define sys/types.h
15070                         $i_systime sys/time.h 
15071                         $i_sysselct sys/select.h
15072                         $d_socket sys/socket.h"
15073                 : The first arg can be int, unsigned, or size_t
15074                 : The last arg may or may not be 'const'
15075                 val=''
15076                 : void pointer has been seen but using that
15077                 : breaks the selectminbits test
15078                 for xxx in 'fd_set *' 'int *'; do
15079                         for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
15080                                 for tmo in 'struct timeval *' 'const struct timeval *'; do
15081                                         case "$val" in
15082                                         '')     try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
15083                                                 if ./protochk "$try" $hdrs; then
15084                                                         echo "Your system accepts $xxx."
15085                                                         val="$xxx"
15086                                                 fi
15087                                                 ;;
15088                                         esac
15089                                 done
15090                         done
15091                 done
15092                 case "$val" in
15093                 '')     rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
15094                         case "$d_fd_set" in
15095                                 $define) dflt="fd_set *" ;;
15096                                 *)              dflt="int *" ;;
15097                         esac
15098                         . ./myread
15099                         val=$ans
15100                         ;;
15101                 esac
15102                 selecttype="$val"
15103                 ;;
15104         *)      : no select, so pick a harmless default
15105                 selecttype='int *'
15106                 ;;
15107         esac
15108         ;;
15109 esac
15110
15111 : check for the select 'width'
15112 case "$selectminbits" in
15113 '') case "$d_select" in
15114         $define)
15115                 $cat <<EOM
15116
15117 Checking to see on how many bits at a time your select() operates...
15118 EOM
15119                 $cat >try.c <<EOCP
15120 #include <sys/types.h>
15121 #$i_time I_TIME
15122 #$i_systime I_SYS_TIME
15123 #$i_systimek I_SYS_TIME_KERNEL
15124 #ifdef I_TIME
15125 #   include <time.h>
15126 #endif
15127 #ifdef I_SYS_TIME
15128 #   ifdef I_SYS_TIME_KERNEL
15129 #       define KERNEL
15130 #   endif
15131 #   include <sys/time.h>
15132 #   ifdef I_SYS_TIME_KERNEL
15133 #       undef KERNEL
15134 #   endif
15135 #endif
15136 #$i_sysselct I_SYS_SELECT
15137 #ifdef I_SYS_SELECT
15138 #include <sys/select.h>
15139 #endif
15140 #$d_socket HAS_SOCKET
15141 #ifdef HAS_SOCKET
15142 #   include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
15143 #endif
15144 #include <stdio.h>
15145 $selecttype b;
15146 #define S sizeof(*(b))
15147 #define MINBITS 64
15148 #define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
15149 #define NBITS  (NBYTES * 8)
15150 int main() {
15151     char s[NBYTES];
15152     struct timeval t;
15153     int i;
15154     FILE* fp;
15155     int fd;
15156
15157     fclose(stdin);
15158     fp = fopen("try.c", "r");
15159     if (fp == 0)
15160       exit(1);
15161     fd = fileno(fp);
15162     if (fd < 0)
15163       exit(2);
15164     b = ($selecttype)s;
15165     for (i = 0; i < NBITS; i++)
15166         FD_SET(i, b);
15167     t.tv_sec  = 0;
15168     t.tv_usec = 0;
15169     select(fd + 1, b, 0, 0, &t);
15170     for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
15171     printf("%d\n", i + 1);
15172     return 0;
15173 }
15174 EOCP
15175                 set try
15176                 if eval $compile_ok; then
15177                         selectminbits=`$run ./try`
15178                         case "$selectminbits" in
15179                         '')     cat >&4 <<EOM
15180 Cannot figure out on how many bits at a time your select() operates.
15181 I'll play safe and guess it is 32 bits.
15182 EOM
15183                                 selectminbits=32
15184                                 bits="32 bits"
15185                                 ;;
15186                         1)      bits="1 bit" ;;
15187                         *)      bits="$selectminbits bits" ;;
15188                         esac
15189                         echo "Your select() operates on $bits at a time." >&4
15190                 else
15191                         rp='What is the minimum number of bits your select() operates on?'
15192                         case "$byteorder" in
15193                         1234|12345678)  dflt=32 ;;
15194                         *)              dflt=1  ;;
15195                         esac
15196                         . ./myread
15197                         val=$ans
15198                         selectminbits="$val"
15199                 fi
15200                 $rm -f try.* try
15201                 ;;
15202         *)      : no select, so pick a harmless default
15203                 selectminbits='32'
15204                 ;;
15205         esac
15206         ;;
15207 esac
15208
15209 : Trace out the files included by signal.h, then look for SIGxxx names.
15210 : Remove SIGARRAYSIZE used by HPUX.
15211 : Remove SIGSTKSIZE used by Linux.
15212 : Remove SIGSTKSZ used by Posix.
15213 : Remove SIGTYP void lines used by OS2.
15214 : Some cpps, like os390, dont give the file name anywhere
15215 if [ "X$fieldn" = X ]; then
15216         : Just make some guesses.  We check them later.
15217         xxx='/usr/include/signal.h /usr/include/sys/signal.h'
15218 else
15219         xxx=`echo '#include <signal.h>' |
15220         $cppstdin $cppminus $cppflags 2>/dev/null |
15221         $grep '^[       ]*#.*include' | 
15222         $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sed 's!\\\\\\\\!/!g' | $sort | $uniq`
15223 fi
15224 : Check this list of files to be sure we have parsed the cpp output ok.
15225 : This will also avoid potentially non-existent files, such 
15226 : as ../foo/bar.h
15227 xxxfiles=''
15228 for xx in $xxx /dev/null ; do
15229         $test -f "$xx" && xxxfiles="$xxxfiles $xx"
15230 done
15231 : If we have found no files, at least try signal.h
15232 case "$xxxfiles" in
15233 '')     xxxfiles=`./findhdr signal.h` ;;
15234 esac
15235 xxx=`awk '
15236 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
15237         print substr($2, 4, 20)
15238 }
15239 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
15240         print substr($3, 4, 20)
15241 }' $xxxfiles`
15242 : Append some common names just in case the awk scan failed.
15243 xxx="$xxx ABRT ALRM BUS CANCEL CHLD CLD CONT DIL EMT FPE"
15244 xxx="$xxx FREEZE HUP ILL INT IO IOT KILL LOST LWP PHONE"
15245 xxx="$xxx PIPE POLL PROF PWR QUIT RTMAX RTMIN SEGV STKFLT STOP"
15246 xxx="$xxx SYS TERM THAW TRAP TSTP TTIN TTOU URG USR1 USR2"
15247 xxx="$xxx USR3 USR4 VTALRM WAITING WINCH WIND WINDOW XCPU XFSZ"
15248
15249 : generate a few handy files for later
15250 $cat > signal.c <<'EOCP'
15251 #include <sys/types.h>
15252 #include <signal.h>
15253 #include <stdio.h>
15254 int main() {
15255
15256 /* Strange style to avoid deeply-nested #if/#else/#endif */
15257 #ifndef NSIG
15258 #  ifdef _NSIG
15259 #    define NSIG (_NSIG)
15260 #  endif
15261 #endif
15262
15263 #ifndef NSIG
15264 #  ifdef SIGMAX
15265 #    define NSIG (SIGMAX+1)
15266 #  endif
15267 #endif
15268
15269 #ifndef NSIG
15270 #  ifdef SIG_MAX
15271 #    define NSIG (SIG_MAX+1)
15272 #  endif
15273 #endif
15274
15275 #ifndef NSIG
15276 #  ifdef MAXSIG
15277 #    define NSIG (MAXSIG+1)
15278 #  endif
15279 #endif
15280
15281 #ifndef NSIG
15282 #  ifdef MAX_SIG
15283 #    define NSIG (MAX_SIG+1)
15284 #  endif
15285 #endif
15286
15287 #ifndef NSIG
15288 #  ifdef SIGARRAYSIZE
15289 #    define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
15290 #  endif
15291 #endif
15292
15293 #ifndef NSIG
15294 #  ifdef _sys_nsig
15295 #    define NSIG (_sys_nsig) /* Solaris 2.5 */
15296 #  endif
15297 #endif
15298
15299 /* Default to some arbitrary number that's big enough to get most
15300    of the common signals.
15301 */
15302 #ifndef NSIG
15303 #    define NSIG 50
15304 #endif
15305
15306 printf("NSIG %d\n", NSIG);
15307
15308 #ifndef JUST_NSIG
15309
15310 EOCP
15311
15312 echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
15313 {
15314         printf "#ifdef SIG"; printf $1; printf "\n"
15315         printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
15316         printf $1; printf ");\n"
15317         printf "#endif\n"
15318 }
15319 END {
15320         printf "#endif /* JUST_NSIG */\n";
15321         printf "exit(0);\n}\n";
15322 }
15323 ' >>signal.c
15324 $cat >signal.awk <<'EOP'
15325 BEGIN { ndups = 0 }
15326 $1 ~ /^NSIG$/ { nsig = $2 }
15327 ($1 !~ /^NSIG$/) && (NF == 2) {
15328     if ($2 > maxsig) { maxsig = $2 }
15329     if (sig_name[$2]) {
15330         dup_name[ndups] = $1
15331         dup_num[ndups] = $2
15332         ndups++ 
15333     }
15334     else {
15335         sig_name[$2] = $1
15336         sig_num[$2] = $2
15337     }
15338 }
15339 END { 
15340     if (nsig == 0) {
15341         nsig = maxsig + 1
15342     }
15343     printf("NSIG %d\n", nsig);
15344     for (n = 1; n < nsig; n++) {
15345         if (sig_name[n]) {
15346             printf("%s %d\n", sig_name[n], sig_num[n])
15347         }
15348         else {
15349             printf("NUM%d %d\n", n, n) 
15350         }
15351     }
15352     for (n = 0; n < ndups; n++) {
15353         printf("%s %d\n", dup_name[n], dup_num[n])
15354     }
15355 }
15356 EOP
15357 $cat >signal_cmd <<EOS
15358 $startsh
15359 if $test -s signal.lst; then
15360     echo "Using your existing signal.lst file"
15361         exit 0
15362 fi
15363 xxx="$xxx"
15364 EOS
15365 $cat >>signal_cmd <<'EOS'
15366
15367 set signal
15368 if eval $compile_ok; then
15369         $run ./signal$_exe | $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
15370 else
15371         echo "(I can't seem be able to compile the whole test program)" >&4
15372         echo "(I'll try it in little pieces.)" >&4
15373         set signal -DJUST_NSIG
15374         if eval $compile_ok; then
15375                 $run ./signal$_exe > signal.nsg
15376                 $cat signal.nsg
15377         else
15378                 echo "I can't seem to figure out how many signals you have." >&4
15379                 echo "Guessing 50." >&4
15380                 echo 'NSIG 50' > signal.nsg
15381         fi
15382         : Now look at all the signal names, one at a time.
15383         for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
15384                 $cat > signal.c <<EOCP
15385 #include <sys/types.h>
15386 #include <signal.h>
15387 #include <stdio.h>
15388 int main() {
15389 printf("$xx %d\n", SIG${xx});
15390 return 0;
15391 }
15392 EOCP
15393                 set signal
15394                 if eval $compile; then
15395                         echo "SIG${xx} found."
15396                         $run ./signal$_exe  >> signal.ls1
15397                 else
15398                         echo "SIG${xx} NOT found."
15399                 fi
15400         done
15401         if $test -s signal.ls1; then
15402                 $cat signal.nsg signal.ls1 |
15403                         $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
15404         fi
15405
15406 fi
15407 if $test -s signal.lst; then
15408         :
15409 else
15410         echo "(AAK! I can't compile the test programs -- Guessing)" >&4
15411         echo 'kill -l' >signal
15412         set X `csh -f <signal`
15413         $rm -f signal
15414         shift
15415         case $# in
15416         0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
15417         esac
15418         echo $@ | $tr ' ' $trnl | \
15419             $awk '{ printf "%s %d\n", $1, ++s; }
15420                   END { printf "NSIG %d\n", ++s }' >signal.lst
15421 fi
15422 $rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
15423 EOS
15424 chmod a+x signal_cmd
15425 $eunicefix signal_cmd
15426
15427 : generate list of signal names
15428 echo " "
15429 case "$sig_name_init" in
15430 '') doinit=yes ;;
15431 *)  case "$sig_num_init" in
15432     ''|*,*) doinit=yes ;;
15433     esac ;;
15434 esac
15435 case "$doinit" in
15436 yes)
15437         echo "Generating a list of signal names and numbers..." >&4
15438         . ./signal_cmd
15439         sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
15440         sig_name=`$awk 'BEGIN { printf "ZERO " }
15441                         !/^NSIG/ { printf "%s ", $1 }' signal.lst`
15442         sig_num=`$awk  'BEGIN { printf "0 " }
15443                         !/^NSIG/ { printf "%d ", $2 }' signal.lst`
15444         sig_name_init=`$awk 'BEGIN      { printf "\"ZERO\", " }
15445                              !/^NSIG/   { printf "\"%s\", ", $1 }
15446                              END        { printf "0\n" }' signal.lst`
15447         sig_num_init=`$awk  'BEGIN      { printf "0, " }
15448                              !/^NSIG/   { printf "%d, ", $2}
15449                              END        { printf "0\n"}' signal.lst`
15450         ;;
15451 esac
15452 echo "The following $sig_count signals are available:"
15453 echo " "
15454 echo $sig_name | $awk \
15455 'BEGIN { linelen = 0 }
15456 {
15457         for (i = 1; i <= NF; i++) {
15458                 name = "SIG" $i " "
15459                 linelen = linelen + length(name)
15460                 if (linelen > 70) {
15461                         printf "\n"
15462                         linelen = length(name)
15463                 }
15464                 printf "%s", name
15465         }
15466         printf "\n"
15467 }'
15468 sig_size=`echo $sig_name | awk '{print NF}'`
15469 $rm -f signal signal.c signal.awk signal.lst signal_cmd 
15470
15471 echo " "
15472 case "$sizetype" in
15473 *_t) zzz="$sizetype"    ;;
15474 *)   zzz="filesize"     ;;
15475 esac
15476 echo "Checking the size of $zzz..." >&4 
15477 cat > try.c <<EOCP
15478 #include <sys/types.h>
15479 #include <stdio.h>
15480 int main() {
15481     printf("%d\n", (int)sizeof($sizetype));
15482     exit(0);
15483 }
15484 EOCP
15485 set try
15486 if eval $compile_ok; then
15487         yyy=`$run ./try`
15488         case "$yyy" in
15489         '')     sizesize=4
15490                 echo "(I can't execute the test program--guessing $sizesize.)" >&4
15491                 ;;
15492         *)      sizesize=$yyy
15493                 echo "Your $zzz size is $sizesize bytes."
15494                 ;;
15495         esac
15496 else
15497         sizesize=4
15498         echo "(I can't compile the test program--guessing $sizesize.)" >&4
15499 fi
15500
15501
15502 : check for socklen_t
15503 echo " "
15504 echo "Checking to see if you have socklen_t..." >&4
15505 $cat >try.c <<EOCP
15506 #include <sys/types.h>
15507 #$d_socket HAS_SOCKET
15508 #ifdef HAS_SOCKET
15509 #include <sys/socket.h>
15510 #endif
15511 int main() { socklen_t x = 16; }
15512 EOCP
15513 set try
15514 if eval $compile; then
15515         val="$define"
15516         echo "You have socklen_t."
15517 else
15518         val="$undef"
15519         echo "You do not have socklen_t."
15520         case "$sizetype" in
15521         size_t) echo "(You do have size_t, that might work. Some people are happy with just an int.)" ;;
15522         esac
15523 fi
15524 $rm -f try try.*
15525 set d_socklen_t
15526 eval $setvar
15527
15528 : see if this is a socks.h system
15529 set socks.h i_socks
15530 eval $inhdr
15531
15532 : check for type of the size argument to socket calls
15533 case "$d_socket" in
15534 "$define")
15535         $cat <<EOM
15536
15537 Checking to see what type is the last argument of accept().
15538 EOM
15539         yyy=''
15540         case "$d_socklen_t" in
15541         "$define") yyy="$yyy socklen_t"
15542         esac
15543         yyy="$yyy $sizetype int long unsigned"
15544         for xxx in $yyy; do
15545                 case "$socksizetype" in
15546                 '')     try="extern int accept(int, struct sockaddr *, $xxx *);"
15547                         case "$usesocks" in
15548                         "$define")
15549                                 if ./protochk "$try" $i_systypes sys/types.h $d_socket sys/socket.h literal '#define INCLUDE_PROTOTYPES' $i_socks socks.h.; then
15550                                         echo "Your system accepts '$xxx *' for the last argument of accept()."
15551                                         socksizetype="$xxx"
15552                                 fi
15553                                 ;;
15554                         *)      if ./protochk "$try"  $i_systypes sys/types.h $d_socket sys/socket.h; then
15555                                         echo "Your system accepts '$xxx *' for the last argument of accept()."
15556                                         socksizetype="$xxx"
15557                                 fi
15558                                 ;;
15559                         esac
15560                         ;;
15561                 esac
15562         done
15563 : In case none of those worked, prompt the user.
15564         case "$socksizetype" in
15565         '')     rp='What is the type for socket address structure sizes?'
15566                 dflt='int'
15567                 . ./myread
15568                 socksizetype=$ans
15569                 ;;
15570         esac
15571         ;;
15572 *)      : no sockets, so pick relatively harmless default
15573         socksizetype='int'
15574         ;;
15575 esac
15576
15577 : see what type is used for signed size_t
15578 set ssize_t ssizetype int stdio.h sys/types.h
15579 eval $typedef
15580 dflt="$ssizetype"
15581 $cat > try.c <<EOM
15582 #include <stdio.h>
15583 #include <sys/types.h>
15584 #define Size_t $sizetype
15585 #define SSize_t $dflt
15586 int main()
15587 {
15588         if (sizeof(Size_t) == sizeof(SSize_t))
15589                 printf("$dflt\n");
15590         else if (sizeof(Size_t) == sizeof(int))
15591                 printf("int\n");
15592         else 
15593                 printf("long\n");
15594         exit(0);
15595 }
15596 EOM
15597 echo " "
15598 set try
15599 if eval $compile_ok && $run ./try > /dev/null; then
15600         ssizetype=`$run ./try`
15601         echo "I'll be using $ssizetype for functions returning a byte count." >&4
15602 else
15603         $cat >&4 <<EOM
15604 Help! I can't compile and run the ssize_t test program: please enlighten me!
15605 (This is probably a misconfiguration in your system or libraries, and
15606 you really ought to fix it.  Still, I'll try anyway.)
15607
15608 I need a type that is the same size as $sizetype, but is guaranteed to
15609 be signed.  Common values are ssize_t, int and long.
15610
15611 EOM
15612         rp="What signed type is the same size as $sizetype?"
15613         . ./myread
15614         ssizetype="$ans"
15615 fi
15616 $rm -f try try.*
15617
15618 : see what type of char stdio uses.
15619 echo " "
15620 echo '#include <stdio.h>' | $cppstdin $cppminus > stdioh
15621 if $contains 'unsigned.*char.*_ptr;' stdioh >/dev/null 2>&1 ; then
15622         echo "Your stdio uses unsigned chars." >&4
15623         stdchar="unsigned char"
15624 else
15625         echo "Your stdio uses signed chars." >&4
15626         stdchar="char"
15627 fi
15628 $rm -f stdioh
15629
15630
15631
15632 : see if time exists
15633 echo " "
15634 if test "X$d_time" = X -o X"$timetype" = X; then
15635     if set time val -f d_time; eval $csym; $val; then
15636                 echo 'time() found.' >&4
15637                 val="$define"
15638                 rp="What is the type returned by time() on this system?"
15639                 set time_t timetype long stdio.h sys/types.h
15640                 eval $typedef_ask
15641     else
15642                 echo 'time() not found, hope that will do.' >&4
15643                 val="$undef"
15644                 timetype='int';
15645     fi
15646     set d_time
15647     eval $setvar
15648 fi
15649
15650 : see what type uids are declared as in the kernel
15651 echo " "
15652 echo "Looking for the type for user ids returned by getuid()."
15653 set uid_t uidtype xxx stdio.h sys/types.h
15654 eval $typedef
15655 case "$uidtype" in
15656 xxx)
15657         xxx=`./findhdr sys/user.h`
15658         set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
15659         case $1 in
15660         unsigned) dflt="$1 $2" ;;
15661         *) dflt="$1" ;;
15662         esac
15663         ;;
15664 *) dflt="$uidtype";;
15665 esac
15666 case "$uidtype" in
15667 uid_t)  echo "uid_t found." ;;
15668 *)      rp="What is the type for user ids returned by getuid()?"
15669         . ./myread
15670         uidtype="$ans"
15671         ;;
15672 esac
15673
15674 echo " "
15675 case "$uidtype" in
15676 *_t) zzz="$uidtype"     ;;
15677 *)   zzz="uid"          ;;
15678 esac
15679 echo "Checking the size of $zzz..." >&4 
15680 cat > try.c <<EOCP
15681 #include <sys/types.h>
15682 #include <stdio.h>
15683 int main() {
15684     printf("%d\n", (int)sizeof($uidtype));
15685     exit(0);
15686 }
15687 EOCP
15688 set try
15689 if eval $compile_ok; then
15690         yyy=`$run ./try`
15691         case "$yyy" in
15692         '')     uidsize=4
15693                 echo "(I can't execute the test program--guessing $uidsize.)" >&4
15694                 ;;
15695         *)      uidsize=$yyy
15696                 echo "Your $zzz is $uidsize bytes long."
15697                 ;;
15698         esac
15699 else
15700         uidsize=4
15701         echo "(I can't compile the test program--guessing $uidsize.)" >&4
15702 fi
15703
15704 echo " "
15705 case "$uidtype" in
15706 *_t) zzz="$uidtype"     ;;
15707 *)   zzz="uid"          ;;
15708 esac
15709 echo "Checking the sign of $zzz..." >&4
15710 cat > try.c <<EOCP
15711 #include <sys/types.h>
15712 #include <stdio.h>
15713 int main() {
15714         $uidtype foo = -1;
15715         if (foo < 0)
15716                 printf("-1\n");
15717         else
15718                 printf("1\n");
15719 }
15720 EOCP
15721 set try
15722 if eval $compile; then
15723         yyy=`$run ./try`
15724         case "$yyy" in
15725         '')     uidsign=1
15726                 echo "(I can't execute the test program--guessing unsigned.)" >&4
15727                 ;;
15728         *)      uidsign=$yyy
15729                 case "$uidsign" in
15730                  1) echo "Your $zzz is unsigned." ;;
15731                 -1) echo "Your $zzz is signed."   ;;
15732                 esac
15733                 ;;
15734         esac
15735 else
15736         uidsign=1
15737         echo "(I can't compile the test program--guessing unsigned.)" >&4
15738 fi
15739
15740
15741
15742 echo " "
15743 $echo "Checking the format string to be used for uids..." >&4
15744
15745 case "$uidsign" in
15746 -1)     if $test X"$uidsize" = X"$ivsize"; then
15747                 uidformat="$ivdformat"
15748         else
15749                 if $test X"$uidsize" = X"$longsize"; then
15750                         uidformat='"ld"'
15751                 else
15752                         if $test X"$uidsize" = X"$intsize"; then
15753                                 uidformat='"d"'
15754                         else
15755                                 if $test X"$uidsize" = X"$shortsize"; then
15756                                         uidformat='"hd"'
15757                                 fi
15758                         fi
15759                 fi
15760         fi
15761         ;;
15762 *)      if $test X"$uidsize" = X"$uvsize"; then
15763                 uidformat="$uvuformat"
15764         else
15765                 if $test X"$uidsize" = X"$longsize"; then
15766                         uidformat='"lu"'
15767                 else
15768                         if $test X"$uidsize" = X"$intsize"; then
15769                                 uidformat='"u"'
15770                         else
15771                                 if $test X"$uidsize" = X"$shortsize"; then
15772                                         uidformat='"hu"'
15773                                 fi
15774                         fi
15775                 fi
15776         fi
15777         ;;
15778 esac
15779
15780 : determine compiler compiler
15781 case "$yacc" in
15782 '')
15783         dflt=yacc;;
15784 *)
15785         dflt="$yacc";;
15786 esac
15787 echo " "
15788 comp='yacc'
15789 if $test -f "$byacc"; then
15790         dflt="$byacc"
15791         comp="byacc or $comp"
15792 fi
15793 if $test -f "$bison"; then
15794         comp="$comp or bison -y"
15795 fi
15796 rp="Which compiler compiler ($comp) shall I use?"
15797 . ./myread
15798 yacc="$ans"
15799 case "$yacc" in
15800 *bis*)
15801         case "$yacc" in
15802         *-y*) ;;
15803         *)
15804                 yacc="$yacc -y"
15805                 echo "(Adding -y option to bison to get yacc-compatible behaviour.)"
15806                 ;;
15807         esac
15808         ;;
15809 esac
15810
15811 : see if fcntl.h is there
15812 val=''
15813 set fcntl.h val
15814 eval $inhdr
15815
15816 : see if we can include fcntl.h
15817 case "$val" in
15818 "$define")
15819         echo " "
15820         if $h_fcntl; then
15821                 val="$define"
15822                 echo "We'll be including <fcntl.h>." >&4
15823         else
15824                 val="$undef"
15825                 if $h_sysfile; then
15826         echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
15827                 else
15828                         echo "We won't be including <fcntl.h>." >&4
15829                 fi
15830         fi
15831         ;;
15832 *)
15833         h_fcntl=false
15834         val="$undef"
15835         ;;
15836 esac
15837 set i_fcntl
15838 eval $setvar
15839
15840 : see if this is a fp.h system
15841 set fp.h i_fp
15842 eval $inhdr
15843
15844 : see if this is a fp_class.h system
15845 set fp_class.h i_fp_class
15846 eval $inhdr
15847
15848 : see if this is a ieeefp.h system
15849 set ieeefp.h i_ieeefp
15850 eval $inhdr
15851
15852 : see if this is a libutil.h system
15853 set libutil.h i_libutil
15854 eval $inhdr
15855
15856 : see if locale.h is available
15857 set locale.h i_locale
15858 eval $inhdr
15859
15860 : see if mach cthreads are available
15861 if test "X$usethreads" = "X$define"; then
15862         set mach/cthreads.h i_machcthr
15863         eval $inhdr
15864 else
15865         i_machcthr="$undef"
15866 fi
15867
15868
15869
15870 : see if this is a math.h system
15871 set math.h i_math
15872 eval $inhdr
15873
15874 : see if this is a mntent.h system
15875 set mntent.h i_mntent
15876 eval $inhdr
15877
15878 : see if ndbm.h is available
15879 set ndbm.h t_ndbm
15880 eval $inhdr
15881 case "$t_ndbm" in
15882 $define)
15883         : see if dbm_open exists
15884         set dbm_open d_dbm_open
15885         eval $inlibc
15886         case "$d_dbm_open" in
15887         $undef)
15888                 t_ndbm="$undef"
15889                 echo "We won't be including <ndbm.h>"
15890                 ;;
15891         esac
15892         ;;
15893 esac
15894 val="$t_ndbm"
15895 set i_ndbm
15896 eval $setvar
15897
15898 : see if net/errno.h is available
15899 val=''
15900 set net/errno.h val
15901 eval $inhdr
15902
15903 : Unfortunately, it causes problems on some systems.  Arrgh.
15904 case "$val" in
15905 $define)
15906         cat > try.c <<'EOM'
15907 #include <stdio.h>
15908 #include <errno.h>
15909 #include <net/errno.h>
15910 int func()
15911 {
15912         return ENOTSOCK;
15913 }
15914 EOM
15915         if $cc $ccflags -c try.c >/dev/null 2>&1; then
15916                 echo "We'll be including <net/errno.h>." >&4
15917         else
15918                 echo "We won't be including <net/errno.h>." >&4
15919                 val="$undef"
15920         fi
15921         $rm -f try.* try
15922         ;;
15923 esac
15924 set i_neterrno
15925 eval $setvar
15926
15927 : see if netinet/tcp.h is available
15928 set netinet/tcp.h i_netinettcp
15929 eval $inhdr
15930
15931 : see if this is a poll.h system
15932 set poll.h i_poll
15933 eval $inhdr
15934
15935 : see if this is a prot.h system
15936 set prot.h i_prot
15937 eval $inhdr
15938
15939 echo " "
15940 $echo "Guessing which symbols your C compiler and preprocessor define..." >&4 
15941 $cat <<'EOSH' > Cppsym.know
15942 a29k ABI64 aegis AES_SOURCE AIX AIX32 AIX370
15943 AIX41 AIX42 AIX43 AIX_SOURCE aixpc ALL_SOURCE
15944 alliant alpha am29000 AM29000 AMD64 amiga AMIGAOS AMIX
15945 ansi ANSI_C_SOURCE apollo ardent ARM32 atarist att386 att3b
15946 BeOS BIG_ENDIAN BIT_MSF bsd BSD bsd43 bsd4_2 bsd4_3 BSD4_3 bsd4_4
15947 BSD_4_3 BSD_4_4 BSD_NET2 BSD_TIME BSD_TYPES BSDCOMPAT bsdi
15948 bull c cadmus clipper CMU COFF COMPILER_VERSION
15949 concurrent convex cpu cray CRAY CRAYMPP ctix CX_UX
15950 CYGWIN DGUX DGUX_SOURCE DJGPP dmert DOLPHIN DPX2 DSO
15951 Dynix DynixPTX ELF encore EPI EXTENSIONS FAVOR_BSD
15952 FILE_OFFSET_BITS FreeBSD GCC_NEW_VARARGS gcos gcx gimpel
15953 GLIBC GLIBC_MINOR
15954 GNU_SOURCE GNUC GNUC_MINOR GNU_LIBRARY GO32 gould GOULD_PN
15955 H3050R H3050RX hbullx20 hcx host_mips
15956 hp200 hp300 hp700 HP700 hp800 hp9000
15957 hp9000s200 hp9000s300 hp9000s400 hp9000s500
15958 hp9000s700 hp9000s800 hp9k8 hp_osf hppa hpux HPUX_SOURCE
15959 i186 i286 i386 i486 i586 i686 i8086 i80960 i860 I960
15960 IA64 iAPX286 ibm ibm032 ibmesa IBMR2 ibmrt ILP32 ILP64
15961 INLINE_INTRINSICS INTRINSICS INT64 interdata is68k ksr1
15962 LANGUAGE_C LARGE_FILE_API LARGEFILE64_SOURCE
15963 LARGEFILE_SOURCE LFS64_LARGEFILE LFS_LARGEFILE
15964 Linux LITTLE_ENDIAN LONG64 LONG_DOUBLE LONG_LONG
15965 LONGDOUBLE LONGLONG LP64 luna luna88k Lynx
15966 M68000 m68k m88100 m88k M88KBCS_TARGET M_COFF
15967 M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM M_SYS3
15968 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX MACH machine MachTen
15969 MATH_HAS_NO_SIDE_EFFECTS
15970 mc300 mc500 mc68000 mc68010 mc68020 mc68030 mc68040
15971 mc68060 mc68k mc68k32 mc700 mc88000 mc88100 merlin
15972 mert MiNT mips MIPS_FPSET MIPS_ISA MIPS_SIM MIPS_SZINT
15973 MIPS_SZLONG MIPS_SZPTR MIPSEB MIPSEL MODERN_C motorola
15974 mpeix MSDOS MTXINU MULTIMAX mvs MVS n16 ncl_el ncl_mr
15975 NetBSD news1500 news1700 news1800 news1900 news3700
15976 news700 news800 news900 NeXT NLS nonstopux ns16000 ns32000
15977 ns32016 ns32332 ns32k nsc32000
15978 OCS88 OEMVS OpenBSD os OS2 OS390 osf OSF1 OSF_SOURCE
15979 pa_risc PA_RISC1_1 PA_RISC2_0 PARAGON parisc
15980 pc532 pdp11 PGC PIC plexus PORTAR posix
15981 POSIX1B_SOURCE POSIX2_SOURCE POSIX4_SOURCE
15982 POSIX_C_SOURCE POSIX_SOURCE POWER
15983 PROTOTYPES PWB pyr QNX R3000 REENTRANT RES Rhapsody RISC6000
15984 riscix riscos RT S390 SA110 scs SCO sequent sgi SGI_SOURCE SH3 sinix
15985 SIZE_INT SIZE_LONG SIZE_PTR SOCKET_SOURCE SOCKETS_SOURCE
15986 sony sony_news sonyrisc sparc sparclite spectrum
15987 stardent stdc STDC_EXT stratos sun sun3 sun386
15988 Sun386i svr3 svr4 SVR4_2 SVR4_SOURCE svr5
15989 SX system SYSTYPE_BSD SYSTYPE_BSD43 SYSTYPE_BSD44
15990 SYSTYPE_SVR4 SYSTYPE_SVR5 SYSTYPE_SYSV SYSV SYSV3 SYSV4 SYSV5
15991 sysV68 sysV88 Tek4132 Tek4300 titan
15992 TM3200 TM5400 TM5600
15993 tower tower32 tower32_200 tower32_600 tower32_700
15994 tower32_800 tower32_850 tss
15995 u370 u3b u3b2 u3b20 u3b200 u3b20d u3b5
15996 ultrix UMAXV UnicomPBB UnicomPBD UNICOS UNICOSMK
15997 unix UNIX95 UNIX99 unixpc unos
15998 USE_BSD USE_FILE_OFFSET64 USE_GNU USE_ISOC9X USE_LARGEFILE USE_LARGEFILE64
15999 USE_MISC USE_POSIX USE_POSIX199309 USE_POSIX199506 USE_POSIX2
16000 USE_REENTRANT USE_SVID USE_UNIX98 USE_XOPEN USE_XOPEN_EXTENDED
16001 USGr4 USGr4_2
16002 Utek UTek UTS UWIN uxpm uxps vax venix VMESA vms xenix Xenix286
16003 XOPEN_SOURCE XOPEN_SOURCE_EXTENDED XPG2 XPG2_EXTENDED
16004 XPG3 XPG3_EXTENDED XPG4 XPG4_EXTENDED
16005 z8000
16006 EOSH
16007 # Maybe put other stuff here too.
16008 cat <<EOSH >>Cppsym.know
16009 $osname
16010 EOSH
16011 ./tr '[a-z]' '[A-Z]' < Cppsym.know > Cppsym.a
16012 ./tr '[A-Z]' '[a-z]' < Cppsym.know > Cppsym.b
16013 $cat Cppsym.know > Cppsym.c
16014 $cat Cppsym.a Cppsym.b Cppsym.c | $tr ' ' $trnl | $sort | $uniq > Cppsym.know
16015 $rm -f Cppsym.a Cppsym.b Cppsym.c
16016 cat <<EOSH > Cppsym
16017 $startsh
16018 if $test \$# -gt 0; then
16019     echo \$* | $tr " " "$trnl" | ./Cppsym.try > Cppsym.got
16020     if $test -s Cppsym.got; then
16021         $rm -f Cppsym.got
16022         exit 0
16023     fi
16024     $rm -f Cppsym.got
16025     exit 1
16026 else
16027     $tr " " "$trnl" | ./Cppsym.try
16028     exit 0
16029 fi
16030 EOSH
16031 chmod +x Cppsym
16032 $eunicefix Cppsym
16033 cat <<EOSH > Cppsym.try
16034 $startsh
16035 cat <<'EOCP' > try.c
16036 #include <stdio.h>
16037 int main() {
16038 EOCP
16039 $awk \\
16040 EOSH
16041 cat <<'EOSH' >> Cppsym.try
16042 'length($1) > 0 {
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     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
16045     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
16046     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
16047 }'       >> try.c
16048 echo 'return 0;}' >> try.c
16049 EOSH
16050 cat <<EOSH >> Cppsym.try
16051 ccflags="$ccflags"
16052 case "$osname-$gccversion" in
16053 irix-) ccflags="\$ccflags -woff 1178" ;;
16054 os2-*) ccflags="\$ccflags -Zlinker /PM:VIO" ;;
16055 esac
16056 $cc -o try $optimize \$ccflags $ldflags try.c $libs && $run ./try
16057 EOSH
16058 chmod +x Cppsym.try
16059 $eunicefix Cppsym.try
16060 ./Cppsym < Cppsym.know > Cppsym.true
16061 : now check the C compiler for additional symbols
16062 postprocess_cc_v=''
16063 case "$osname" in
16064 aix) postprocess_cc_v="|$tr , ' '" ;;
16065 esac
16066 $cat >ccsym <<EOS
16067 $startsh
16068 $cat >tmp.c <<EOF
16069 extern int foo;
16070 EOF
16071 for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
16072 do
16073         case "\$i" in
16074         -D*) echo "\$i" | $sed 's/^-D//';;
16075         -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A\(.*\)(\(.*\))/\1=\2/';;
16076         esac
16077 done
16078 $rm -f try.c
16079 EOS
16080 postprocess_cc_v=''
16081 chmod +x ccsym
16082 $eunicefix ccsym
16083 ./ccsym > ccsym1.raw
16084 if $test -s ccsym1.raw; then
16085        $sort ccsym1.raw | $uniq >ccsym.raw
16086 else
16087        mv ccsym1.raw ccsym.raw
16088 fi
16089
16090 $awk '/\=/ { print $0; next }
16091         { print $0"=1" }' ccsym.raw >ccsym.list
16092 $awk '/\=/ { print $0; next }
16093         { print $0"=1" }' Cppsym.true >ccsym.true
16094 $comm -13 ccsym.true ccsym.list >ccsym.own
16095 $comm -12 ccsym.true ccsym.list >ccsym.com
16096 $comm -23 ccsym.true ccsym.list >ccsym.cpp
16097 also=''
16098 if $test -z ccsym.raw; then
16099         echo "Your C compiler doesn't seem to define any symbols!" >&4
16100         echo " "
16101         echo "However, your C preprocessor defines the following symbols:"
16102         $cat Cppsym.true
16103         ccsymbols=''
16104         cppsymbols=`$cat Cppsym.true`
16105         cppsymbols=`echo $cppsymbols`
16106         cppccsymbols="$cppsymbols"
16107 else
16108         if $test -s ccsym.com; then
16109                 echo "Your C compiler and pre-processor define these symbols:"
16110                 $sed -e 's/\(..*\)=.*/\1/' ccsym.com
16111                 also='also '
16112                 symbols='ones'
16113                 cppccsymbols=`$cat ccsym.com`
16114                 cppccsymbols=`echo $cppccsymbols`
16115                 $test "$silent" || sleep 1
16116         fi
16117         if $test -s ccsym.cpp; then
16118                 $test "$also" && echo " "
16119                 echo "Your C pre-processor ${also}defines the following symbols:"
16120                 $sed -e 's/\(..*\)=.*/\1/' ccsym.cpp
16121                 also='further '
16122                 cppsymbols=`$cat ccsym.cpp`
16123                 cppsymbols=`echo $cppsymbols`
16124                 $test "$silent" || sleep 1
16125         fi
16126         if $test -s ccsym.own; then
16127                 $test "$also" && echo " "
16128                 echo "Your C compiler ${also}defines the following cpp symbols:"
16129                 $sed -e 's/\(..*\)=1/\1/' ccsym.own
16130                 $sed -e 's/\(..*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
16131                 ccsymbols=`$cat ccsym.own`
16132                 ccsymbols=`echo $ccsymbols`
16133                 $test "$silent" || sleep 1
16134         fi
16135 fi
16136
16137 : see if this is a termio system
16138 val="$undef"
16139 val2="$undef"
16140 val3="$undef"
16141 if $test `./findhdr termios.h`; then
16142         set tcsetattr i_termios
16143         eval $inlibc
16144         val3="$i_termios"
16145 fi
16146 echo " "
16147 case "$val3" in
16148 "$define") echo "You have POSIX termios.h... good!" >&4;;
16149 *) if ./Cppsym pyr; then
16150                 case "`/bin/universe`" in
16151                 ucb) if $test `./findhdr sgtty.h`; then
16152                                 val2="$define"
16153                                 echo "<sgtty.h> found." >&4
16154                         else
16155                                 echo "System is pyramid with BSD universe."
16156                                 echo "<sgtty.h> not found--you could have problems." >&4
16157                         fi;;
16158                 *) if $test `./findhdr termio.h`; then
16159                                 val="$define"
16160                                 echo "<termio.h> found." >&4
16161                         else
16162                                 echo "System is pyramid with USG universe."
16163                                 echo "<termio.h> not found--you could have problems." >&4
16164                         fi;;
16165                 esac
16166         elif ./usg; then
16167                 if $test `./findhdr termio.h`; then
16168                         echo "<termio.h> found." >&4
16169                         val="$define"
16170                 elif $test `./findhdr sgtty.h`; then
16171                         echo "<sgtty.h> found." >&4
16172                         val2="$define"
16173                 else
16174 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
16175                 fi
16176         else
16177                 if $test `./findhdr sgtty.h`; then
16178                         echo "<sgtty.h> found." >&4
16179                         val2="$define"
16180                 elif $test `./findhdr termio.h`; then
16181                         echo "<termio.h> found." >&4
16182                         val="$define"
16183                 else
16184 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
16185                 fi
16186         fi;;
16187 esac
16188 set i_termio; eval $setvar
16189 val=$val2; set i_sgtty; eval $setvar
16190 val=$val3; set i_termios; eval $setvar
16191
16192 : see if this is a shadow.h system
16193 set shadow.h i_shadow
16194 eval $inhdr
16195
16196 : see if stddef is available
16197 set stddef.h i_stddef
16198 eval $inhdr
16199
16200 : see if this is a sunmath.h system
16201 set sunmath.h i_sunmath
16202 eval $inhdr
16203
16204 : see if sys/access.h is available
16205 set sys/access.h i_sysaccess
16206 eval $inhdr
16207
16208 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
16209 set sys/filio.h i_sysfilio
16210 eval $inhdr
16211 echo " "
16212 if $test `./findhdr sys/ioctl.h`; then
16213         val="$define"
16214         echo '<sys/ioctl.h> found.' >&4
16215 else
16216         val="$undef"
16217         if $test $i_sysfilio = "$define"; then
16218             echo '<sys/ioctl.h> NOT found.' >&4
16219         else
16220                 $test $i_sgtty = "$define" && xxx="sgtty.h"
16221                 $test $i_termio = "$define" && xxx="termio.h"
16222                 $test $i_termios = "$define" && xxx="termios.h"
16223 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
16224         fi
16225 fi
16226 set i_sysioctl
16227 eval $setvar
16228
16229 : see if socket ioctl defs are in sys/sockio.h
16230 echo " "
16231 xxx=`./findhdr sys/sockio.h`
16232 if $test "$xxx"; then
16233         if $contains SIOCATMARK $xxx >/dev/null 2>&1; then
16234                 val="$define"
16235                 echo "You have socket ioctls defined in <sys/sockio.h>." >&4
16236         else
16237                 val="$undef"
16238                 echo "No socket ioctls found in <sys/sockio.h>." >&4
16239         fi
16240 else
16241         val="$undef"
16242         $cat <<EOM
16243 <sys/sockio.h> not found, assuming socket ioctls are in <sys/ioctl.h>.
16244 EOM
16245 fi
16246 set i_syssockio
16247 eval $setvar
16248
16249
16250 : see if this is a syslog.h system
16251 set syslog.h i_syslog
16252 eval $inhdr
16253
16254
16255 : see if this is a sys/mode.h system
16256 set sys/mode.h i_sysmode
16257 eval $inhdr
16258
16259 : see if sys/resource.h has to be included
16260 set sys/resource.h i_sysresrc
16261 eval $inhdr
16262
16263 : see if sys/security.h is available
16264 set sys/security.h i_syssecrt
16265 eval $inhdr
16266
16267 : see if this is a sys/statvfs.h system
16268 set sys/statvfs.h i_sysstatvfs
16269 eval $inhdr
16270
16271 : see if this is a sys/un.h system
16272 set sys/un.h i_sysun
16273 eval $inhdr
16274
16275
16276 : see if this is a sys/utsname.h system
16277 set sys/utsname.h i_sysutsname
16278 eval $inhdr
16279
16280 : see if this is a syswait system
16281 set sys/wait.h i_syswait
16282 eval $inhdr
16283
16284 : see if this is a ustat.h system
16285 set ustat.h i_ustat
16286 eval $inhdr
16287
16288 : see if this is an utime system
16289 set utime.h i_utime
16290 eval $inhdr
16291
16292 : see if this is a values.h system
16293 set values.h i_values
16294 eval $inhdr
16295
16296 : see if this is a vfork system
16297 case "$d_vfork" in
16298 "$define")
16299         set vfork.h i_vfork
16300         eval $inhdr
16301         ;;
16302 *)
16303         i_vfork="$undef"
16304         ;;
16305 esac
16306
16307 : see if gdbm.h is available
16308 set gdbm.h t_gdbm
16309 eval $inhdr
16310 case "$t_gdbm" in
16311 $define)
16312         : see if gdbm_open exists
16313         set gdbm_open d_gdbm_open
16314         eval $inlibc
16315         case "$d_gdbm_open" in
16316         $undef)
16317                 t_gdbm="$undef"
16318                 echo "We won't be including <gdbm.h>"
16319                 ;;
16320         esac
16321         ;;
16322 esac
16323 val="$t_gdbm"
16324 set i_gdbm
16325 eval $setvar
16326
16327 echo " "
16328 echo "Looking for extensions..." >&4
16329 : If we are using the old config.sh, known_extensions may contain
16330 : old or inaccurate or duplicate values.
16331 known_extensions=''
16332 nonxs_extensions=''
16333 : We do not use find because it might not be available.
16334 : We do not just use MANIFEST because the user may have dropped
16335 : some additional extensions into the source tree and expect them
16336 : to be built.
16337
16338 : Function to recursively find available extensions, ignoring DynaLoader
16339 : NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
16340 find_extensions='
16341     for xxx in *; do
16342        case "$xxx" in
16343            DynaLoader|dynaload) ;;
16344            *)
16345            if $test -f $xxx/$xxx.xs; then
16346                known_extensions="$known_extensions $1$xxx";
16347            elif $test -f $xxx/Makefile.PL; then
16348                nonxs_extensions="$nonxs_extensions $1$xxx";
16349            else
16350                if $test -d $xxx -a $# -lt 10; then
16351                    set $1$xxx/ $*;
16352                    cd $xxx;
16353                    eval $find_extensions;
16354                    cd ..;
16355                    shift;
16356                fi;
16357            fi
16358            ;;
16359        esac;
16360     done'
16361 tdir=`pwd`
16362 cd $rsrc/ext
16363 set X
16364 shift
16365 eval $find_extensions
16366 # Special case:  Add in threads/shared since it is not picked up by the
16367 # recursive find above (and adding in general recursive finding breaks
16368 # SDBM_File/sdbm).  A.D.  10/25/2001.
16369 known_extensions="$known_extensions threads/shared"
16370 set X $nonxs_extensions
16371 shift
16372 nonxs_extensions="$*"
16373 set X $known_extensions
16374 shift
16375 known_extensions="$*"
16376 cd $tdir
16377
16378 : Now see which are supported on this system.
16379 avail_ext=''
16380 for xxx in $known_extensions ; do
16381         case "$xxx" in
16382         DB_File|db_file)
16383                 case "$i_db" in
16384                 $define) avail_ext="$avail_ext $xxx" ;;
16385                 esac
16386                 ;;
16387         GDBM_File|gdbm_fil)
16388                 case "$i_gdbm" in 
16389                 $define) avail_ext="$avail_ext $xxx" ;;
16390                 esac
16391                 ;;
16392         I18N/Langinfo|i18n_lan)
16393                 case "$i_langinfo$d_nl_langinfo" in 
16394                 $define$define) avail_ext="$avail_ext $xxx" ;;
16395                 esac
16396                 ;;
16397         NDBM_File|ndbm_fil)
16398                 case "$i_ndbm" in
16399                 $define)
16400                     case "$osname-$use64bitint" in
16401                     cygwin-*|hpux-define)
16402                         case "$libs" in
16403                         *-lndbm*) avail_ext="$avail_ext $xxx" ;;
16404                         esac
16405                         ;;
16406                     *) avail_ext="$avail_ext $xxx" ;;
16407                     esac
16408                     ;;
16409                 esac
16410                 ;;
16411         ODBM_File|odbm_fil) 
16412                 case "${i_dbm}${i_rpcsvcdbm}" in
16413                 *"${define}"*)
16414                     case "$osname-$use64bitint" in
16415                     cygwin-*|hpux-define)
16416                         case "$libs" in
16417                         *-ldbm*) avail_ext="$avail_ext $xxx" ;;
16418                         esac
16419                         ;;
16420                     *) avail_ext="$avail_ext $xxx" ;;
16421                     esac
16422                     ;;
16423                 esac
16424                 ;;
16425         POSIX|posix)
16426                 case "$useposix" in
16427                 true|define|y) avail_ext="$avail_ext $xxx" ;;
16428                 esac
16429                 ;;
16430         Opcode|opcode)
16431                 case "$useopcode" in
16432                 true|define|y) avail_ext="$avail_ext $xxx" ;;
16433                 esac
16434                 ;;
16435         Socket|socket)
16436                 case "$d_socket" in 
16437                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
16438                 esac
16439                 ;;
16440         Sys/Syslog|sys/syslog)
16441                 : XXX syslog requires socket
16442                 case "$d_socket" in 
16443                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
16444                 esac
16445                 ;;
16446         Thread|thread)
16447                 case "$usethreads" in
16448                 true|$define|y)
16449                         case "$useithreads" in
16450                         $undef|false|[nN]*) avail_ext="$avail_ext $xxx" ;;
16451                         esac
16452                 esac
16453                 ;;
16454         threads|threads/shared)
16455                 case "$usethreads" in
16456                 true|$define|y)
16457                         case "$useithreads" in
16458                         $define|true|[yY]*) avail_ext="$avail_ext $xxx" ;;
16459                         esac
16460                 esac
16461                 ;;
16462         IPC/SysV|ipc/sysv)
16463                 : XXX Do we need a useipcsysv variable here
16464                 case "${d_msg}${d_sem}${d_shm}" in 
16465                 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
16466                 esac
16467                 ;;
16468         *)      avail_ext="$avail_ext $xxx"
16469                 ;;
16470         esac
16471 done
16472
16473 set X $avail_ext
16474 shift
16475 avail_ext="$*"
16476
16477 : Now see which nonxs extensions are supported on this system.
16478 : For now assume all are.
16479 nonxs_ext=''
16480 for xxx in $nonxs_extensions ; do
16481         case "$xxx" in
16482         *)      nonxs_ext="$nonxs_ext $xxx"
16483                 ;;
16484         esac
16485 done
16486
16487 set X $nonxs_ext
16488 shift
16489 nonxs_ext="$*"
16490
16491 case $usedl in
16492 $define)
16493         $cat <<EOM
16494 A number of extensions are supplied with $package.  You may choose to
16495 compile these extensions for dynamic loading (the default), compile
16496 them into the $package executable (static loading), or not include
16497 them at all.  Answer "none" to include no extensions.
16498 Note that DynaLoader is always built and need not be mentioned here.
16499
16500 EOM
16501         case "$dynamic_ext" in
16502         '') dflt="$avail_ext" ;;
16503         *)      dflt="$dynamic_ext"
16504                 # Perhaps we are reusing an old out-of-date config.sh.
16505                 case "$hint" in
16506                 previous)
16507                         if test X"$dynamic_ext" != X"$avail_ext"; then
16508                                 $cat <<EOM
16509 NOTICE:  Your previous config.sh list may be incorrect. 
16510 The extensions now available to you are 
16511         ${avail_ext}
16512 but the default list from your previous config.sh is
16513         ${dynamic_ext} 
16514
16515 EOM
16516                         fi
16517                         ;;
16518                 esac
16519                 ;;
16520         esac
16521         case "$dflt" in
16522         '')     dflt=none;;
16523         esac
16524         rp="What extensions do you wish to load dynamically?"
16525         . ./myread
16526         case "$ans" in
16527         none) dynamic_ext=' ' ;;
16528         *) dynamic_ext="$ans" ;;
16529         esac
16530
16531         case "$static_ext" in
16532         '')
16533                 : Exclude those already listed in dynamic linking
16534                 dflt=''
16535                 for xxx in $avail_ext; do
16536                         case " $dynamic_ext " in
16537                         *" $xxx "*) ;;
16538                         *) dflt="$dflt $xxx" ;;
16539                         esac
16540                 done
16541                 set X $dflt
16542                 shift
16543                 dflt="$*"
16544                 ;;
16545         *)  dflt="$static_ext" 
16546                 ;;
16547         esac
16548
16549         case "$dflt" in
16550         '')     dflt=none;;
16551         esac
16552         rp="What extensions do you wish to load statically?"
16553         . ./myread
16554         case "$ans" in
16555         none) static_ext=' ' ;;
16556         *) static_ext="$ans" ;;
16557         esac
16558         ;;
16559 *)
16560         $cat <<EOM
16561 A number of extensions are supplied with $package.  Answer "none" 
16562 to include no extensions. 
16563 Note that DynaLoader is always built and need not be mentioned here.
16564
16565 EOM
16566         case "$static_ext" in
16567         '') dflt="$avail_ext" ;;
16568         *)      dflt="$static_ext"
16569                 # Perhaps we are reusing an old out-of-date config.sh.
16570                 case "$hint" in
16571                 previous)
16572                         if test X"$static_ext" != X"$avail_ext"; then
16573                                 $cat <<EOM
16574 NOTICE:  Your previous config.sh list may be incorrect. 
16575 The extensions now available to you are 
16576         ${avail_ext}
16577 but the default list from your previous config.sh is
16578         ${static_ext} 
16579
16580 EOM
16581                         fi
16582                         ;;
16583                 esac
16584                 ;;
16585         esac
16586         : Exclude those that are not xs extensions
16587         case "$dflt" in
16588         '')     dflt=none;;
16589         esac
16590         rp="What extensions do you wish to include?"
16591         . ./myread
16592         case "$ans" in
16593         none) static_ext=' ' ;;
16594         *) static_ext="$ans" ;;
16595         esac
16596         ;;
16597 esac
16598
16599 set X $dynamic_ext $static_ext $nonxs_ext
16600 shift
16601 extensions="$*"
16602
16603 : Remove libraries needed only for extensions
16604 : The appropriate ext/Foo/Makefile.PL will add them back in, if necessary.
16605 : The exception is SunOS 4.x, which needs them.
16606 case "${osname}X${osvers}" in
16607 sunos*X4*)
16608     perllibs="$libs"
16609     ;;
16610 *) case "$usedl" in
16611     $define|true|[yY]*)
16612             set X `echo " $libs " | sed -e 's@ -lndbm @ @' -e 's@ -lgdbm @ @' -e 's@ -ldbm @ @' -e 's@ -ldb @ @'` 
16613             shift
16614             perllibs="$*"
16615             ;;
16616     *)  perllibs="$libs"
16617             ;;
16618     esac
16619     ;;
16620 esac
16621
16622 : Remove build directory name from cppstdin so it can be used from
16623 : either the present location or the final installed location.
16624 echo " "
16625 : Get out of the UU directory to get correct path name.
16626 cd ..
16627 case "$cppstdin" in
16628 `pwd`/cppstdin)
16629         echo "Stripping down cppstdin path name"
16630         cppstdin=cppstdin
16631         ;;
16632 esac
16633 cd UU
16634
16635 : end of configuration questions
16636 echo " "
16637 echo "End of configuration questions."
16638 echo " "
16639
16640 : back to where it started
16641 if test -d ../UU; then
16642         cd ..
16643 fi
16644
16645 : configuration may be patched via a 'config.arch' file
16646 if $test -f config.arch; then
16647         echo "I see a config.arch file, loading it."
16648         . ./config.arch
16649 fi
16650
16651 : configuration may be patched via a 'config.over' file
16652 if $test -f config.over; then
16653         echo " "
16654         dflt=y
16655         rp='I see a config.over file.  Do you wish to load it?'
16656         . UU/myread
16657         case "$ans" in
16658         n*) echo "OK, I'll ignore it.";;
16659         *)      . ./config.over
16660                 echo "Configuration override changes have been loaded."
16661                 ;;
16662         esac
16663 fi
16664
16665 : in case they want portability, strip down executable paths
16666 case "$d_portable" in
16667 "$define")
16668         echo " "
16669         echo "Stripping down executable paths..." >&4
16670         for file in $loclist $trylist; do
16671                 eval temp=\$$file
16672                 eval $file=`basename $temp`
16673         done
16674         ;;
16675 esac
16676
16677 : create config.sh file
16678 echo " "
16679 echo "Creating config.sh..." >&4
16680 $spitshell <<EOT >config.sh
16681 $startsh
16682 #
16683 # This file was produced by running the Configure script. It holds all the
16684 # definitions figured out by Configure. Should you modify one of these values,
16685 # do not forget to propagate your changes by running "Configure -der". You may
16686 # instead choose to run each of the .SH files by yourself, or "Configure -S".
16687 #
16688
16689 # Package name      : $package
16690 # Source directory  : $src
16691 # Configuration time: $cf_time
16692 # Configured by     : $cf_by
16693 # Target system     : $myuname
16694
16695 Author='$Author'
16696 Date='$Date'
16697 Header='$Header'
16698 Id='$Id'
16699 Locker='$Locker'
16700 Log='$Log'
16701 Mcc='$Mcc'
16702 RCSfile='$RCSfile'
16703 Revision='$Revision'
16704 Source='$Source'
16705 State='$State'
16706 _a='$_a'
16707 _exe='$_exe'
16708 _o='$_o'
16709 afs='$afs'
16710 afsroot='$afsroot'
16711 alignbytes='$alignbytes'
16712 ansi2knr='$ansi2knr'
16713 aphostname='$aphostname'
16714 api_revision='$api_revision'
16715 api_subversion='$api_subversion'
16716 api_version='$api_version'
16717 api_versionstring='$api_versionstring'
16718 ar='$ar'
16719 archlib='$archlib'
16720 archlibexp='$archlibexp'
16721 archname64='$archname64'
16722 archname='$archname'
16723 archobjs='$archobjs'
16724 awk='$awk'
16725 baserev='$baserev'
16726 bash='$bash'
16727 bin='$bin'
16728 bincompat5005='$bincompat5005'
16729 binexp='$binexp'
16730 bison='$bison'
16731 byacc='$byacc'
16732 byteorder='$byteorder'
16733 c='$c'
16734 castflags='$castflags'
16735 cat='$cat'
16736 cc='$cc'
16737 cccdlflags='$cccdlflags'
16738 ccdlflags='$ccdlflags'
16739 ccflags='$ccflags'
16740 ccflags_uselargefiles='$ccflags_uselargefiles'
16741 ccname='$ccname'
16742 ccsymbols='$ccsymbols'
16743 ccversion='$ccversion'
16744 cf_by='$cf_by'
16745 cf_email='$cf_email'
16746 cf_time='$cf_time'
16747 charsize='$charsize'
16748 chgrp='$chgrp'
16749 chmod='$chmod'
16750 chown='$chown'
16751 clocktype='$clocktype'
16752 comm='$comm'
16753 compress='$compress'
16754 contains='$contains'
16755 cp='$cp'
16756 cpio='$cpio'
16757 cpp='$cpp'
16758 cpp_stuff='$cpp_stuff'
16759 cppccsymbols='$cppccsymbols'
16760 cppflags='$cppflags'
16761 cpplast='$cpplast'
16762 cppminus='$cppminus'
16763 cpprun='$cpprun'
16764 cppstdin='$cppstdin'
16765 cppsymbols='$cppsymbols'
16766 cryptlib='$cryptlib'
16767 csh='$csh'
16768 d_Gconvert='$d_Gconvert'
16769 d_PRIEUldbl='$d_PRIEUldbl'
16770 d_PRIFUldbl='$d_PRIFUldbl'
16771 d_PRIGUldbl='$d_PRIGUldbl'
16772 d_PRIXU64='$d_PRIXU64'
16773 d_PRId64='$d_PRId64'
16774 d_PRIeldbl='$d_PRIeldbl'
16775 d_PRIfldbl='$d_PRIfldbl'
16776 d_PRIgldbl='$d_PRIgldbl'
16777 d_PRIi64='$d_PRIi64'
16778 d_PRIo64='$d_PRIo64'
16779 d_PRIu64='$d_PRIu64'
16780 d_PRIx64='$d_PRIx64'
16781 d_SCNfldbl='$d_SCNfldbl'
16782 d__fwalk='$d__fwalk'
16783 d_access='$d_access'
16784 d_accessx='$d_accessx'
16785 d_alarm='$d_alarm'
16786 d_archlib='$d_archlib'
16787 d_atolf='$d_atolf'
16788 d_atoll='$d_atoll'
16789 d_attribut='$d_attribut'
16790 d_bcmp='$d_bcmp'
16791 d_bcopy='$d_bcopy'
16792 d_bincompat5005='$d_bincompat5005'
16793 d_bsd='$d_bsd'
16794 d_bsdgetpgrp='$d_bsdgetpgrp'
16795 d_bsdsetpgrp='$d_bsdsetpgrp'
16796 d_bzero='$d_bzero'
16797 d_casti32='$d_casti32'
16798 d_castneg='$d_castneg'
16799 d_charvspr='$d_charvspr'
16800 d_chown='$d_chown'
16801 d_chroot='$d_chroot'
16802 d_chsize='$d_chsize'
16803 d_class='$d_class'
16804 d_closedir='$d_closedir'
16805 d_cmsghdr_s='$d_cmsghdr_s'
16806 d_const='$d_const'
16807 d_crypt='$d_crypt'
16808 d_csh='$d_csh'
16809 d_cuserid='$d_cuserid'
16810 d_dbl_dig='$d_dbl_dig'
16811 d_dbminitproto='$d_dbminitproto'
16812 d_difftime='$d_difftime'
16813 d_dirnamlen='$d_dirnamlen'
16814 d_dlerror='$d_dlerror'
16815 d_dlopen='$d_dlopen'
16816 d_dlsymun='$d_dlsymun'
16817 d_dosuid='$d_dosuid'
16818 d_drand48proto='$d_drand48proto'
16819 d_dup2='$d_dup2'
16820 d_eaccess='$d_eaccess'
16821 d_endgrent='$d_endgrent'
16822 d_endhent='$d_endhent'
16823 d_endnent='$d_endnent'
16824 d_endpent='$d_endpent'
16825 d_endpwent='$d_endpwent'
16826 d_endsent='$d_endsent'
16827 d_eofnblk='$d_eofnblk'
16828 d_eunice='$d_eunice'
16829 d_fchdir='$d_fchdir'
16830 d_fchmod='$d_fchmod'
16831 d_fchown='$d_fchown'
16832 d_fcntl='$d_fcntl'
16833 d_fcntl_can_lock='$d_fcntl_can_lock'
16834 d_fd_macros='$d_fd_macros'
16835 d_fd_set='$d_fd_set'
16836 d_fds_bits='$d_fds_bits'
16837 d_fgetpos='$d_fgetpos'
16838 d_finite='$d_finite'
16839 d_finitel='$d_finitel'
16840 d_flexfnam='$d_flexfnam'
16841 d_flock='$d_flock'
16842 d_flockproto='$d_flockproto'
16843 d_fork='$d_fork'
16844 d_fp_class='$d_fp_class'
16845 d_fpathconf='$d_fpathconf'
16846 d_fpclass='$d_fpclass'
16847 d_fpclassify='$d_fpclassify'
16848 d_fpclassl='$d_fpclassl'
16849 d_fpos64_t='$d_fpos64_t'
16850 d_frexpl='$d_frexpl'
16851 d_fs_data_s='$d_fs_data_s'
16852 d_fseeko='$d_fseeko'
16853 d_fsetpos='$d_fsetpos'
16854 d_fstatfs='$d_fstatfs'
16855 d_fstatvfs='$d_fstatvfs'
16856 d_fsync='$d_fsync'
16857 d_ftello='$d_ftello'
16858 d_ftime='$d_ftime'
16859 d_getcwd='$d_getcwd'
16860 d_getespwnam='$d_getespwnam'
16861 d_getfsstat='$d_getfsstat'
16862 d_getgrent='$d_getgrent'
16863 d_getgrps='$d_getgrps'
16864 d_gethbyaddr='$d_gethbyaddr'
16865 d_gethbyname='$d_gethbyname'
16866 d_gethent='$d_gethent'
16867 d_gethname='$d_gethname'
16868 d_gethostprotos='$d_gethostprotos'
16869 d_getitimer='$d_getitimer'
16870 d_getlogin='$d_getlogin'
16871 d_getmnt='$d_getmnt'
16872 d_getmntent='$d_getmntent'
16873 d_getnbyaddr='$d_getnbyaddr'
16874 d_getnbyname='$d_getnbyname'
16875 d_getnent='$d_getnent'
16876 d_getnetprotos='$d_getnetprotos'
16877 d_getpagsz='$d_getpagsz'
16878 d_getpbyname='$d_getpbyname'
16879 d_getpbynumber='$d_getpbynumber'
16880 d_getpent='$d_getpent'
16881 d_getpgid='$d_getpgid'
16882 d_getpgrp2='$d_getpgrp2'
16883 d_getpgrp='$d_getpgrp'
16884 d_getppid='$d_getppid'
16885 d_getprior='$d_getprior'
16886 d_getprotoprotos='$d_getprotoprotos'
16887 d_getprpwnam='$d_getprpwnam'
16888 d_getpwent='$d_getpwent'
16889 d_getsbyname='$d_getsbyname'
16890 d_getsbyport='$d_getsbyport'
16891 d_getsent='$d_getsent'
16892 d_getservprotos='$d_getservprotos'
16893 d_getspnam='$d_getspnam'
16894 d_gettimeod='$d_gettimeod'
16895 d_gnulibc='$d_gnulibc'
16896 d_grpasswd='$d_grpasswd'
16897 d_hasmntopt='$d_hasmntopt'
16898 d_htonl='$d_htonl'
16899 d_index='$d_index'
16900 d_inetaton='$d_inetaton'
16901 d_int64_t='$d_int64_t'
16902 d_isascii='$d_isascii'
16903 d_isfinite='$d_isfinite'
16904 d_isinf='$d_isinf'
16905 d_isnan='$d_isnan'
16906 d_isnanl='$d_isnanl'
16907 d_killpg='$d_killpg'
16908 d_lchown='$d_lchown'
16909 d_ldbl_dig='$d_ldbl_dig'
16910 d_link='$d_link'
16911 d_locconv='$d_locconv'
16912 d_lockf='$d_lockf'
16913 d_longdbl='$d_longdbl'
16914 d_longlong='$d_longlong'
16915 d_lseekproto='$d_lseekproto'
16916 d_lstat='$d_lstat'
16917 d_madvise='$d_madvise'
16918 d_mblen='$d_mblen'
16919 d_mbstowcs='$d_mbstowcs'
16920 d_mbtowc='$d_mbtowc'
16921 d_memchr='$d_memchr'
16922 d_memcmp='$d_memcmp'
16923 d_memcpy='$d_memcpy'
16924 d_memmove='$d_memmove'
16925 d_memset='$d_memset'
16926 d_mkdir='$d_mkdir'
16927 d_mkdtemp='$d_mkdtemp'
16928 d_mkfifo='$d_mkfifo'
16929 d_mkstemp='$d_mkstemp'
16930 d_mkstemps='$d_mkstemps'
16931 d_mktime='$d_mktime'
16932 d_mmap='$d_mmap'
16933 d_modfl='$d_modfl'
16934 d_modfl_pow32_bug='$d_modfl_pow32_bug'
16935 d_mprotect='$d_mprotect'
16936 d_msg='$d_msg'
16937 d_msg_ctrunc='$d_msg_ctrunc'
16938 d_msg_dontroute='$d_msg_dontroute'
16939 d_msg_oob='$d_msg_oob'
16940 d_msg_peek='$d_msg_peek'
16941 d_msg_proxy='$d_msg_proxy'
16942 d_msgctl='$d_msgctl'
16943 d_msgget='$d_msgget'
16944 d_msghdr_s='$d_msghdr_s'
16945 d_msgrcv='$d_msgrcv'
16946 d_msgsnd='$d_msgsnd'
16947 d_msync='$d_msync'
16948 d_munmap='$d_munmap'
16949 d_mymalloc='$d_mymalloc'
16950 d_nice='$d_nice'
16951 d_nl_langinfo='$d_nl_langinfo'
16952 d_nv_preserves_uv='$d_nv_preserves_uv'
16953 d_nv_preserves_uv_bits='$d_nv_preserves_uv_bits'
16954 d_off64_t='$d_off64_t'
16955 d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
16956 d_oldpthreads='$d_oldpthreads'
16957 d_oldsock='$d_oldsock'
16958 d_open3='$d_open3'
16959 d_pathconf='$d_pathconf'
16960 d_pause='$d_pause'
16961 d_perl_otherlibdirs='$d_perl_otherlibdirs'
16962 d_phostname='$d_phostname'
16963 d_pipe='$d_pipe'
16964 d_poll='$d_poll'
16965 d_portable='$d_portable'
16966 d_procselfexe='$d_procselfexe'
16967 d_pthread_atfork='$d_pthread_atfork'
16968 d_pthread_yield='$d_pthread_yield'
16969 d_pwage='$d_pwage'
16970 d_pwchange='$d_pwchange'
16971 d_pwclass='$d_pwclass'
16972 d_pwcomment='$d_pwcomment'
16973 d_pwexpire='$d_pwexpire'
16974 d_pwgecos='$d_pwgecos'
16975 d_pwpasswd='$d_pwpasswd'
16976 d_pwquota='$d_pwquota'
16977 d_qgcvt='$d_qgcvt'
16978 d_quad='$d_quad'
16979 d_readdir='$d_readdir'
16980 d_readlink='$d_readlink'
16981 d_readv='$d_readv'
16982 d_recvmsg='$d_recvmsg'
16983 d_rename='$d_rename'
16984 d_rewinddir='$d_rewinddir'
16985 d_rmdir='$d_rmdir'
16986 d_safebcpy='$d_safebcpy'
16987 d_safemcpy='$d_safemcpy'
16988 d_sanemcmp='$d_sanemcmp'
16989 d_sbrkproto='$d_sbrkproto'
16990 d_sched_yield='$d_sched_yield'
16991 d_scm_rights='$d_scm_rights'
16992 d_seekdir='$d_seekdir'
16993 d_select='$d_select'
16994 d_sem='$d_sem'
16995 d_semctl='$d_semctl'
16996 d_semctl_semid_ds='$d_semctl_semid_ds'
16997 d_semctl_semun='$d_semctl_semun'
16998 d_semget='$d_semget'
16999 d_semop='$d_semop'
17000 d_sendmsg='$d_sendmsg'
17001 d_setegid='$d_setegid'
17002 d_seteuid='$d_seteuid'
17003 d_setgrent='$d_setgrent'
17004 d_setgrps='$d_setgrps'
17005 d_sethent='$d_sethent'
17006 d_setitimer='$d_setitimer'
17007 d_setlinebuf='$d_setlinebuf'
17008 d_setlocale='$d_setlocale'
17009 d_setnent='$d_setnent'
17010 d_setpent='$d_setpent'
17011 d_setpgid='$d_setpgid'
17012 d_setpgrp2='$d_setpgrp2'
17013 d_setpgrp='$d_setpgrp'
17014 d_setprior='$d_setprior'
17015 d_setproctitle='$d_setproctitle'
17016 d_setpwent='$d_setpwent'
17017 d_setregid='$d_setregid'
17018 d_setresgid='$d_setresgid'
17019 d_setresuid='$d_setresuid'
17020 d_setreuid='$d_setreuid'
17021 d_setrgid='$d_setrgid'
17022 d_setruid='$d_setruid'
17023 d_setsent='$d_setsent'
17024 d_setsid='$d_setsid'
17025 d_setvbuf='$d_setvbuf'
17026 d_sfio='$d_sfio'
17027 d_shm='$d_shm'
17028 d_shmat='$d_shmat'
17029 d_shmatprototype='$d_shmatprototype'
17030 d_shmctl='$d_shmctl'
17031 d_shmdt='$d_shmdt'
17032 d_shmget='$d_shmget'
17033 d_sigaction='$d_sigaction'
17034 d_sigprocmask='$d_sigprocmask'
17035 d_sigsetjmp='$d_sigsetjmp'
17036 d_sockatmark='$d_sockatmark'
17037 d_sockatmarkproto='$d_sockatmarkproto'
17038 d_socket='$d_socket'
17039 d_socklen_t='$d_socklen_t'
17040 d_sockpair='$d_sockpair'
17041 d_socks5_init='$d_socks5_init'
17042 d_sqrtl='$d_sqrtl'
17043 d_sresgproto='$d_sresgproto'
17044 d_sresuproto='$d_sresuproto'
17045 d_statblks='$d_statblks'
17046 d_statfs_f_flags='$d_statfs_f_flags'
17047 d_statfs_s='$d_statfs_s'
17048 d_statvfs='$d_statvfs'
17049 d_stdio_cnt_lval='$d_stdio_cnt_lval'
17050 d_stdio_ptr_lval='$d_stdio_ptr_lval'
17051 d_stdio_ptr_lval_nochange_cnt='$d_stdio_ptr_lval_nochange_cnt'
17052 d_stdio_ptr_lval_sets_cnt='$d_stdio_ptr_lval_sets_cnt'
17053 d_stdio_stream_array='$d_stdio_stream_array'
17054 d_stdiobase='$d_stdiobase'
17055 d_stdstdio='$d_stdstdio'
17056 d_strchr='$d_strchr'
17057 d_strcoll='$d_strcoll'
17058 d_strctcpy='$d_strctcpy'
17059 d_strerrm='$d_strerrm'
17060 d_strerror='$d_strerror'
17061 d_strftime='$d_strftime'
17062 d_strtod='$d_strtod'
17063 d_strtol='$d_strtol'
17064 d_strtold='$d_strtold'
17065 d_strtoll='$d_strtoll'
17066 d_strtoq='$d_strtoq'
17067 d_strtoul='$d_strtoul'
17068 d_strtoull='$d_strtoull'
17069 d_strtouq='$d_strtouq'
17070 d_strxfrm='$d_strxfrm'
17071 d_suidsafe='$d_suidsafe'
17072 d_symlink='$d_symlink'
17073 d_syscall='$d_syscall'
17074 d_syscallproto='$d_syscallproto'
17075 d_sysconf='$d_sysconf'
17076 d_sysernlst='$d_sysernlst'
17077 d_syserrlst='$d_syserrlst'
17078 d_system='$d_system'
17079 d_tcgetpgrp='$d_tcgetpgrp'
17080 d_tcsetpgrp='$d_tcsetpgrp'
17081 d_telldir='$d_telldir'
17082 d_telldirproto='$d_telldirproto'
17083 d_time='$d_time'
17084 d_times='$d_times'
17085 d_truncate='$d_truncate'
17086 d_tzname='$d_tzname'
17087 d_u32align='$d_u32align'
17088 d_ualarm='$d_ualarm'
17089 d_umask='$d_umask'
17090 d_uname='$d_uname'
17091 d_union_semun='$d_union_semun'
17092 d_unordered='$d_unordered'
17093 d_usleep='$d_usleep'
17094 d_usleepproto='$d_usleepproto'
17095 d_ustat='$d_ustat'
17096 d_vendorarch='$d_vendorarch'
17097 d_vendorbin='$d_vendorbin'
17098 d_vendorlib='$d_vendorlib'
17099 d_vfork='$d_vfork'
17100 d_void_closedir='$d_void_closedir'
17101 d_voidsig='$d_voidsig'
17102 d_voidtty='$d_voidtty'
17103 d_volatile='$d_volatile'
17104 d_vprintf='$d_vprintf'
17105 d_wait4='$d_wait4'
17106 d_waitpid='$d_waitpid'
17107 d_wcstombs='$d_wcstombs'
17108 d_wctomb='$d_wctomb'
17109 d_writev='$d_writev'
17110 d_xenix='$d_xenix'
17111 date='$date'
17112 db_hashtype='$db_hashtype'
17113 db_prefixtype='$db_prefixtype'
17114 db_version_major='$db_version_major'
17115 db_version_minor='$db_version_minor'
17116 db_version_patch='$db_version_patch'
17117 defvoidused='$defvoidused'
17118 direntrytype='$direntrytype'
17119 dlext='$dlext'
17120 dlsrc='$dlsrc'
17121 doublesize='$doublesize'
17122 drand01='$drand01'
17123 dynamic_ext='$dynamic_ext'
17124 eagain='$eagain'
17125 ebcdic='$ebcdic'
17126 echo='$echo'
17127 egrep='$egrep'
17128 emacs='$emacs'
17129 eunicefix='$eunicefix'
17130 exe_ext='$exe_ext'
17131 expr='$expr'
17132 extensions='$extensions'
17133 extras='$extras'
17134 fflushNULL='$fflushNULL'
17135 fflushall='$fflushall'
17136 find='$find'
17137 firstmakefile='$firstmakefile'
17138 flex='$flex'
17139 fpossize='$fpossize'
17140 fpostype='$fpostype'
17141 freetype='$freetype'
17142 from='$from'
17143 full_ar='$full_ar'
17144 full_csh='$full_csh'
17145 full_sed='$full_sed'
17146 gccosandvers='$gccosandvers'
17147 gccversion='$gccversion'
17148 gidformat='$gidformat'
17149 gidsign='$gidsign'
17150 gidsize='$gidsize'
17151 gidtype='$gidtype'
17152 glibpth='$glibpth'
17153 grep='$grep'
17154 groupcat='$groupcat'
17155 groupstype='$groupstype'
17156 gzip='$gzip'
17157 h_fcntl='$h_fcntl'
17158 h_sysfile='$h_sysfile'
17159 hint='$hint'
17160 hostcat='$hostcat'
17161 i16size='$i16size'
17162 i16type='$i16type'
17163 i32size='$i32size'
17164 i32type='$i32type'
17165 i64size='$i64size'
17166 i64type='$i64type'
17167 i8size='$i8size'
17168 i8type='$i8type'
17169 i_arpainet='$i_arpainet'
17170 i_bsdioctl='$i_bsdioctl'
17171 i_db='$i_db'
17172 i_dbm='$i_dbm'
17173 i_dirent='$i_dirent'
17174 i_dld='$i_dld'
17175 i_dlfcn='$i_dlfcn'
17176 i_fcntl='$i_fcntl'
17177 i_float='$i_float'
17178 i_fp='$i_fp'
17179 i_fp_class='$i_fp_class'
17180 i_gdbm='$i_gdbm'
17181 i_grp='$i_grp'
17182 i_ieeefp='$i_ieeefp'
17183 i_inttypes='$i_inttypes'
17184 i_langinfo='$i_langinfo'
17185 i_libutil='$i_libutil'
17186 i_limits='$i_limits'
17187 i_locale='$i_locale'
17188 i_machcthr='$i_machcthr'
17189 i_malloc='$i_malloc'
17190 i_math='$i_math'
17191 i_memory='$i_memory'
17192 i_mntent='$i_mntent'
17193 i_ndbm='$i_ndbm'
17194 i_netdb='$i_netdb'
17195 i_neterrno='$i_neterrno'
17196 i_netinettcp='$i_netinettcp'
17197 i_niin='$i_niin'
17198 i_poll='$i_poll'
17199 i_prot='$i_prot'
17200 i_pthread='$i_pthread'
17201 i_pwd='$i_pwd'
17202 i_rpcsvcdbm='$i_rpcsvcdbm'
17203 i_sfio='$i_sfio'
17204 i_sgtty='$i_sgtty'
17205 i_shadow='$i_shadow'
17206 i_socks='$i_socks'
17207 i_stdarg='$i_stdarg'
17208 i_stddef='$i_stddef'
17209 i_stdlib='$i_stdlib'
17210 i_string='$i_string'
17211 i_sunmath='$i_sunmath'
17212 i_sysaccess='$i_sysaccess'
17213 i_sysdir='$i_sysdir'
17214 i_sysfile='$i_sysfile'
17215 i_sysfilio='$i_sysfilio'
17216 i_sysin='$i_sysin'
17217 i_sysioctl='$i_sysioctl'
17218 i_syslog='$i_syslog'
17219 i_sysmman='$i_sysmman'
17220 i_sysmode='$i_sysmode'
17221 i_sysmount='$i_sysmount'
17222 i_sysndir='$i_sysndir'
17223 i_sysparam='$i_sysparam'
17224 i_sysresrc='$i_sysresrc'
17225 i_syssecrt='$i_syssecrt'
17226 i_sysselct='$i_sysselct'
17227 i_syssockio='$i_syssockio'
17228 i_sysstat='$i_sysstat'
17229 i_sysstatfs='$i_sysstatfs'
17230 i_sysstatvfs='$i_sysstatvfs'
17231 i_systime='$i_systime'
17232 i_systimek='$i_systimek'
17233 i_systimes='$i_systimes'
17234 i_systypes='$i_systypes'
17235 i_sysuio='$i_sysuio'
17236 i_sysun='$i_sysun'
17237 i_sysutsname='$i_sysutsname'
17238 i_sysvfs='$i_sysvfs'
17239 i_syswait='$i_syswait'
17240 i_termio='$i_termio'
17241 i_termios='$i_termios'
17242 i_time='$i_time'
17243 i_unistd='$i_unistd'
17244 i_ustat='$i_ustat'
17245 i_utime='$i_utime'
17246 i_values='$i_values'
17247 i_varargs='$i_varargs'
17248 i_varhdr='$i_varhdr'
17249 i_vfork='$i_vfork'
17250 ignore_versioned_solibs='$ignore_versioned_solibs'
17251 inc_version_list='$inc_version_list'
17252 inc_version_list_init='$inc_version_list_init'
17253 incpath='$incpath'
17254 inews='$inews'
17255 installarchlib='$installarchlib'
17256 installbin='$installbin'
17257 installman1dir='$installman1dir'
17258 installman3dir='$installman3dir'
17259 installprefix='$installprefix'
17260 installprefixexp='$installprefixexp'
17261 installprivlib='$installprivlib'
17262 installscript='$installscript'
17263 installsitearch='$installsitearch'
17264 installsitebin='$installsitebin'
17265 installsitelib='$installsitelib'
17266 installstyle='$installstyle'
17267 installusrbinperl='$installusrbinperl'
17268 installvendorarch='$installvendorarch'
17269 installvendorbin='$installvendorbin'
17270 installvendorlib='$installvendorlib'
17271 intsize='$intsize'
17272 issymlink='$issymlink'
17273 ivdformat='$ivdformat'
17274 ivsize='$ivsize'
17275 ivtype='$ivtype'
17276 known_extensions='$known_extensions'
17277 ksh='$ksh'
17278 ld='$ld'
17279 lddlflags='$lddlflags'
17280 ldflags='$ldflags'
17281 ldflags_uselargefiles='$ldflags_uselargefiles'
17282 ldlibpthname='$ldlibpthname'
17283 less='$less'
17284 lib_ext='$lib_ext'
17285 libc='$libc'
17286 libperl='$libperl'
17287 libpth='$libpth'
17288 libs='$libs'
17289 libsdirs='$libsdirs'
17290 libsfiles='$libsfiles'
17291 libsfound='$libsfound'
17292 libspath='$libspath'
17293 libswanted='$libswanted'
17294 libswanted_uselargefiles='$libswanted_uselargefiles'
17295 line='$line'
17296 lint='$lint'
17297 lkflags='$lkflags'
17298 ln='$ln'
17299 lns='$lns'
17300 locincpth='$locincpth'
17301 loclibpth='$loclibpth'
17302 longdblsize='$longdblsize'
17303 longlongsize='$longlongsize'
17304 longsize='$longsize'
17305 lp='$lp'
17306 lpr='$lpr'
17307 ls='$ls'
17308 lseeksize='$lseeksize'
17309 lseektype='$lseektype'
17310 mail='$mail'
17311 mailx='$mailx'
17312 make='$make'
17313 make_set_make='$make_set_make'
17314 mallocobj='$mallocobj'
17315 mallocsrc='$mallocsrc'
17316 malloctype='$malloctype'
17317 man1dir='$man1dir'
17318 man1direxp='$man1direxp'
17319 man1ext='$man1ext'
17320 man3dir='$man3dir'
17321 man3direxp='$man3direxp'
17322 man3ext='$man3ext'
17323 mips_type='$mips_type'
17324 mkdir='$mkdir'
17325 mmaptype='$mmaptype'
17326 modetype='$modetype'
17327 more='$more'
17328 multiarch='$multiarch'
17329 mv='$mv'
17330 myarchname='$myarchname'
17331 mydomain='$mydomain'
17332 myhostname='$myhostname'
17333 myuname='$myuname'
17334 n='$n'
17335 need_va_copy='$need_va_copy'
17336 netdb_hlen_type='$netdb_hlen_type'
17337 netdb_host_type='$netdb_host_type'
17338 netdb_name_type='$netdb_name_type'
17339 netdb_net_type='$netdb_net_type'
17340 nm='$nm'
17341 nm_opt='$nm_opt'
17342 nm_so_opt='$nm_so_opt'
17343 nonxs_ext='$nonxs_ext'
17344 nroff='$nroff'
17345 nvEUformat='$nvEUformat'
17346 nvFUformat='$nvFUformat'
17347 nvGUformat='$nvGUformat'
17348 nveformat='$nveformat'
17349 nvfformat='$nvfformat'
17350 nvgformat='$nvgformat'
17351 nvsize='$nvsize'
17352 nvtype='$nvtype'
17353 o_nonblock='$o_nonblock'
17354 obj_ext='$obj_ext'
17355 old_pthread_create_joinable='$old_pthread_create_joinable'
17356 optimize='$optimize'
17357 orderlib='$orderlib'
17358 osname='$osname'
17359 osvers='$osvers'
17360 otherlibdirs='$otherlibdirs'
17361 package='$package'
17362 pager='$pager'
17363 passcat='$passcat'
17364 patchlevel='$patchlevel'
17365 path_sep='$path_sep'
17366 perl5='$perl5'
17367 perl='$perl'
17368 perl_patchlevel='$perl_patchlevel'
17369 perladmin='$perladmin'
17370 perllibs='$perllibs'
17371 perlpath='$perlpath'
17372 pg='$pg'
17373 phostname='$phostname'
17374 pidtype='$pidtype'
17375 plibpth='$plibpth'
17376 pm_apiversion='$pm_apiversion'
17377 pmake='$pmake'
17378 pr='$pr'
17379 prefix='$prefix'
17380 prefixexp='$prefixexp'
17381 privlib='$privlib'
17382 privlibexp='$privlibexp'
17383 prototype='$prototype'
17384 ptrsize='$ptrsize'
17385 quadkind='$quadkind'
17386 quadtype='$quadtype'
17387 randbits='$randbits'
17388 randfunc='$randfunc'
17389 randseedtype='$randseedtype'
17390 ranlib='$ranlib'
17391 rd_nodata='$rd_nodata'
17392 revision='$revision'
17393 rm='$rm'
17394 rmail='$rmail'
17395 run='$run'
17396 runnm='$runnm'
17397 sPRIEUldbl='$sPRIEUldbl'
17398 sPRIFUldbl='$sPRIFUldbl'
17399 sPRIGUldbl='$sPRIGUldbl'
17400 sPRIXU64='$sPRIXU64'
17401 sPRId64='$sPRId64'
17402 sPRIeldbl='$sPRIeldbl'
17403 sPRIfldbl='$sPRIfldbl'
17404 sPRIgldbl='$sPRIgldbl'
17405 sPRIi64='$sPRIi64'
17406 sPRIo64='$sPRIo64'
17407 sPRIu64='$sPRIu64'
17408 sPRIx64='$sPRIx64'
17409 sSCNfldbl='$sSCNfldbl'
17410 sched_yield='$sched_yield'
17411 scriptdir='$scriptdir'
17412 scriptdirexp='$scriptdirexp'
17413 sed='$sed'
17414 seedfunc='$seedfunc'
17415 selectminbits='$selectminbits'
17416 selecttype='$selecttype'
17417 sendmail='$sendmail'
17418 sh='$sh'
17419 shar='$shar'
17420 sharpbang='$sharpbang'
17421 shmattype='$shmattype'
17422 shortsize='$shortsize'
17423 shrpenv='$shrpenv'
17424 shsharp='$shsharp'
17425 sig_count='$sig_count'
17426 sig_name='$sig_name'
17427 sig_name_init='$sig_name_init'
17428 sig_num='$sig_num'
17429 sig_num_init='$sig_num_init'
17430 sig_size='$sig_size'
17431 signal_t='$signal_t'
17432 sitearch='$sitearch'
17433 sitearchexp='$sitearchexp'
17434 sitebin='$sitebin'
17435 sitebinexp='$sitebinexp'
17436 sitelib='$sitelib'
17437 sitelib_stem='$sitelib_stem'
17438 sitelibexp='$sitelibexp'
17439 siteprefix='$siteprefix'
17440 siteprefixexp='$siteprefixexp'
17441 sizesize='$sizesize'
17442 sizetype='$sizetype'
17443 sleep='$sleep'
17444 smail='$smail'
17445 so='$so'
17446 sockethdr='$sockethdr'
17447 socketlib='$socketlib'
17448 socksizetype='$socksizetype'
17449 sort='$sort'
17450 spackage='$spackage'
17451 spitshell='$spitshell'
17452 src='$src'
17453 ssizetype='$ssizetype'
17454 startperl='$startperl'
17455 startsh='$startsh'
17456 static_ext='$static_ext'
17457 stdchar='$stdchar'
17458 stdio_base='$stdio_base'
17459 stdio_bufsiz='$stdio_bufsiz'
17460 stdio_cnt='$stdio_cnt'
17461 stdio_filbuf='$stdio_filbuf'
17462 stdio_ptr='$stdio_ptr'
17463 stdio_stream_array='$stdio_stream_array'
17464 strings='$strings'
17465 submit='$submit'
17466 subversion='$subversion'
17467 sysman='$sysman'
17468 tail='$tail'
17469 tar='$tar'
17470 targetarch='$targetarch'
17471 tbl='$tbl'
17472 tee='$tee'
17473 test='$test'
17474 timeincl='$timeincl'
17475 timetype='$timetype'
17476 to='$to'
17477 touch='$touch'
17478 tr='$tr'
17479 trnl='$trnl'
17480 troff='$troff'
17481 u16size='$u16size'
17482 u16type='$u16type'
17483 u32size='$u32size'
17484 u32type='$u32type'
17485 u64size='$u64size'
17486 u64type='$u64type'
17487 u8size='$u8size'
17488 u8type='$u8type'
17489 uidformat='$uidformat'
17490 uidsign='$uidsign'
17491 uidsize='$uidsize'
17492 uidtype='$uidtype'
17493 uname='$uname'
17494 uniq='$uniq'
17495 uquadtype='$uquadtype'
17496 use5005threads='$use5005threads'
17497 use64bitall='$use64bitall'
17498 use64bitint='$use64bitint'
17499 usecrosscompile='$usecrosscompile'
17500 usedl='$usedl'
17501 useithreads='$useithreads'
17502 uselargefiles='$uselargefiles'
17503 uselongdouble='$uselongdouble'
17504 usemorebits='$usemorebits'
17505 usemultiplicity='$usemultiplicity'
17506 usemymalloc='$usemymalloc'
17507 usenm='$usenm'
17508 useopcode='$useopcode'
17509 useperlio='$useperlio'
17510 useposix='$useposix'
17511 usereentrant='$usereentrant'
17512 usesfio='$usesfio'
17513 useshrplib='$useshrplib'
17514 usesocks='$usesocks'
17515 usethreads='$usethreads'
17516 usevendorprefix='$usevendorprefix'
17517 usevfork='$usevfork'
17518 usrinc='$usrinc'
17519 uuname='$uuname'
17520 uvXUformat='$uvXUformat'
17521 uvoformat='$uvoformat'
17522 uvsize='$uvsize'
17523 uvtype='$uvtype'
17524 uvuformat='$uvuformat'
17525 uvxformat='$uvxformat'
17526 vendorarch='$vendorarch'
17527 vendorarchexp='$vendorarchexp'
17528 vendorbin='$vendorbin'
17529 vendorbinexp='$vendorbinexp'
17530 vendorlib='$vendorlib'
17531 vendorlib_stem='$vendorlib_stem'
17532 vendorlibexp='$vendorlibexp'
17533 vendorprefix='$vendorprefix'
17534 vendorprefixexp='$vendorprefixexp'
17535 version='$version'
17536 version_patchlevel_string='$version_patchlevel_string'
17537 versiononly='$versiononly'
17538 vi='$vi'
17539 voidflags='$voidflags'
17540 xlibpth='$xlibpth'
17541 xs_apiversion='$xs_apiversion'
17542 yacc='$yacc'
17543 yaccflags='$yaccflags'
17544 zcat='$zcat'
17545 zip='$zip'
17546 EOT
17547
17548 : Add in command line options if available
17549 $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
17550
17551 : add special variables
17552 $test -f $src/patchlevel.h && \
17553 awk '/^#define[         ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
17554 echo "PERL_PATCHLEVEL=$perl_patchlevel" >>config.sh
17555 echo "PERL_CONFIG_SH=true" >>config.sh
17556
17557 : propagate old symbols
17558 if $test -f UU/config.sh; then
17559         <UU/config.sh $sort | $uniq >UU/oldconfig.sh
17560         sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
17561         $sort | $uniq -u >UU/oldsyms
17562         set X `cat UU/oldsyms`
17563         shift
17564         case $# in
17565         0) ;;
17566         *)
17567                 cat <<EOM
17568 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
17569 EOM
17570                 echo "# Variables propagated from previous config.sh file." >>config.sh
17571                 for sym in `cat UU/oldsyms`; do
17572                         echo "    Propagating $hint variable "'$'"$sym..."
17573                         eval 'tmp="$'"${sym}"'"'
17574                         echo "$tmp" | \
17575                                 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
17576                 done
17577                 ;;
17578         esac
17579 fi
17580
17581 : Finish up by extracting the .SH files
17582 case "$alldone" in
17583 exit)
17584         $rm -rf UU
17585         echo "Extraction done."
17586         exit 0
17587         ;;
17588 cont)
17589         ;;
17590 '')
17591         dflt=''
17592         nostick=true
17593         $cat <<EOM
17594
17595 If you'd like to make any changes to the config.sh file before I begin
17596 to configure things, do it as a shell escape now (e.g. !vi config.sh).
17597
17598 EOM
17599         rp="Press return or use a shell escape to edit config.sh:"
17600         . UU/myread
17601         nostick=''
17602         case "$ans" in
17603         '') ;;
17604         *) : in case they cannot read
17605                 sh 1>&4 -c "$ans";;
17606         esac
17607         ;;
17608 esac
17609
17610 : if this fails, just run all the .SH files by hand
17611 . ./config.sh
17612
17613 echo " "
17614 exec 1>&4
17615 pwd=`pwd`
17616 . ./UU/extract
17617 cd $pwd
17618
17619 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
17620         dflt=y
17621         case "$silent" in
17622         true) ;;
17623         *)
17624                 $cat <<EOM
17625
17626 Now you need to generate make dependencies by running "$make depend".
17627 You might prefer to run it in background: "$make depend > makedepend.out &"
17628 It can take a while, so you might not want to run it right now.
17629
17630 EOM
17631                 ;;
17632         esac
17633         rp="Run $make depend now?"
17634         . UU/myread
17635         case "$ans" in
17636         y*)
17637                 $make depend && echo "Now you must run '$make'."
17638                 ;;
17639         *)
17640                 echo "You must run '$make depend' then '$make'."
17641                 ;;
17642         esac
17643 elif test -f [Mm]akefile; then
17644         echo " "
17645         echo "Now you must run a $make."
17646 else
17647         echo "Configure done."
17648 fi
17649
17650 if $test -f Policy.sh; then
17651     $cat <<EOM
17652
17653 If you compile $package on a different machine or from a different object
17654 directory, copy the Policy.sh file from this object directory to the
17655 new one before you run Configure -- this will help you with most of
17656 the policy defaults.
17657
17658 EOM
17659 fi
17660 if $test -f config.msg; then
17661     echo "Hmm.  I also noted the following information while running:"
17662     echo " "
17663     $cat config.msg >&4
17664     $rm -f config.msg
17665 fi
17666 $rm -f kit*isdone ark*isdone
17667 $rm -rf UU
17668
17669 : End of Configure
17670