Better to have the list of extras in $extras than 'define'.
[p5sagit/p5-mst-13.2.git] / Configure
1 #! /bin/sh
2 #
3 # If these # comments don't work, trim them. Don't worry about any other
4 # shell scripts, Configure will trim # comments from them for you.
5 #
6 # (If you are trying to port this package to a machine without sh,
7 # I would suggest you have a look at the prototypical config_h.SH file
8 # and edit it to reflect your system. Some packages may include samples
9 # of config.h for certain machines, so you might look for one of those.)
10 #
11 # Yes, you may rip this off to use in other distribution packages. This
12 # script belongs to the public domain and cannot be copyrighted.
13 #
14 # (Note: this Configure script was generated automatically. Rather than
15 # working with this copy of Configure, you may wish to get metaconfig.
16 # The dist-3.0 package (which contains metaconfig) was posted in
17 # comp.sources.misc and is available on CPAN under authors/id/RAM so
18 # you may fetch it yourself from your nearest archive site.)
19 #
20
21 # $Id: Head.U,v 3.0.1.9 1997/02/28 15:02:09 ram Exp $
22 #
23 # Generated on Mon Jul 30 05:36:10 EET DST 2001 [metaconfig 3.0 PL70]
24 # (with additional metaconfig patches by perlbug@perl.org)
25
26 cat >c1$$ <<EOF
27 ARGGGHHHH!!!!!
28
29 SCO csh still thinks true is false.  Write to SCO today and tell them that next
30 year Configure ought to "rm /bin/csh" unless they fix their blasted shell. :-)
31
32 (Actually, Configure ought to just patch csh in place.  Hmm.  Hmmmmm.  All
33 we'd have to do is go in and swap the && and || tokens, wherever they are.)
34
35 [End of diatribe. We now return you to your regularly scheduled programming...]
36 EOF
37 cat >c2$$ <<EOF
38
39 OOPS!  You naughty creature!  You didn't run Configure with sh!
40 I will attempt to remedy the situation by running sh for you...
41 EOF
42
43 true || cat c1$$ c2$$
44 true || exec sh $0 $argv:q
45
46 (exit $?0) || cat c2$$
47 (exit $?0) || exec sh $0 $argv:q
48 rm -f c1$$ c2$$
49
50 : compute my invocation name
51 me=$0
52 case "$0" in
53 */*)
54         me=`echo $0 | sed -e 's!.*/\(.*\)!\1!' 2>/dev/null`
55         test "$me" || me=$0
56         ;;
57 esac
58
59 : Proper separator for the PATH environment variable
60 p_=:
61 : On OS/2 this directory should exist if this is not floppy only system :-]
62 if test -d c:/. ; then
63     if test -n "$OS2_SHELL"; then
64                 p_=\;
65                 PATH=`cmd /c "echo %PATH%" | tr '\\\\' / `
66                 OS2_SHELL=`cmd /c "echo %OS2_SHELL%" | tr '\\\\' / | tr '[A-Z]' '[a-z]'`
67         elif test -n "$DJGPP"; then
68                 p_=\;
69         fi
70 fi
71
72 : Proper PATH setting
73 paths='/bin /usr/bin /usr/local/bin /usr/ucb /usr/local /usr/lbin'
74 paths="$paths /opt/bin /opt/local/bin /opt/local /opt/lbin"
75 paths="$paths /usr/5bin /etc /usr/gnu/bin /usr/new /usr/new/bin /usr/nbin"
76 paths="$paths /opt/gnu/bin /opt/new /opt/new/bin /opt/nbin"
77 paths="$paths /sys5.3/bin /sys5.3/usr/bin /bsd4.3/bin /bsd4.3/usr/ucb"
78 paths="$paths /bsd4.3/usr/bin /usr/bsd /bsd43/bin /usr/ccs/bin"
79 paths="$paths /etc /usr/lib /usr/ucblib /lib /usr/ccs/lib"
80 paths="$paths /sbin /usr/sbin /usr/libexec"
81
82 for p in $paths
83 do
84         case "$p_$PATH$p_" in
85         *$p_$p$p_*) ;;
86         *) test -d $p && PATH=$PATH$p_$p ;;
87         esac
88 done
89
90 PATH=.$p_$PATH
91 export PATH
92
93 : shall we be using ksh?
94 inksh=''
95 needksh=''
96 avoidksh=''
97 newsh=/bin/ksh
98 changesh=''
99 if (PATH=.; alias -x) >/dev/null 2>&1; then
100                 inksh=true
101 fi
102 if test -f /hp-ux -a -f /bin/ksh; then
103         needksh='to avoid sh bug in "here document" expansion'
104 fi
105 if test -d /usr/lpp -a -f /usr/bin/bsh -a -f /usr/bin/uname; then
106         if test X`/usr/bin/uname -v` = X4; then
107                 avoidksh="to avoid AIX 4's /bin/sh"
108                 newsh=/usr/bin/bsh
109         fi
110 fi
111 if test -f /osf_boot -a -f /usr/sbin/setld; then
112         if test X`/usr/bin/uname -s` = XOSF1; then
113                 avoidksh="to avoid Digital UNIX' ksh"
114                 newsh=/bin/sh
115                 unset BIN_SH # if this is 'xpg4' sh will start up ksh
116         fi
117 fi
118 case "$inksh/$needksh" in
119 /[a-z]*)
120                 ENV=''
121                 changesh=true
122                 reason="$needksh"
123         ;;
124 esac
125 case "$inksh/$avoidksh" in
126 true/[a-z]*)
127         changesh=true
128         reason="$avoidksh"
129         ;;
130 esac
131 case "$inksh/$needksh-$avoidksh-" in
132 true/--)
133                 cat <<EOM
134 (I see you are using the Korn shell.  Some ksh's blow up on $me,
135 mainly on older exotic systems.  If yours does, try the Bourne shell instead.)
136 EOM
137         ;;
138 esac
139 case "$changesh" in
140 true)
141         echo "(Feeding myself to $newsh $reason.)"
142         case "$0" in
143         Configure|*/Configure) exec $newsh $0 "$@";;
144         *) exec $newsh Configure "$@";;
145         esac
146         ;;
147 esac
148
149 : if needed set CDPATH to a harmless value that is not chatty
150 : avoid bash 2.02 problems with empty CDPATH.
151 case "$CDPATH" in
152 '')     ;;
153 *)      case "$SHELL" in
154         *bash*) CDPATH='.' ;;
155         *)              CDPATH='' ;;
156         esac
157         ;;
158 esac
159 : Configure runs within the UU subdirectory
160 test -d UU || mkdir UU
161 cd UU && rm -f ./*
162
163 ccname=''
164 ccversion=''
165 ccsymbols=''
166 cppccsymbols=''
167 cppsymbols=''
168 from=''
169 run=''
170 targetarch=''
171 to=''
172 usecrosscompile=''
173 perllibs=''
174 dynamic_ext=''
175 extensions=''
176 known_extensions=''
177 nonxs_ext=''
178 static_ext=''
179 useopcode=''
180 useposix=''
181 extras=''
182 d_bsd=''
183 d_eunice=''
184 d_xenix=''
185 eunicefix=''
186 Mcc=''
187 ar=''
188 awk=''
189 bash=''
190 bison=''
191 byacc=''
192 cat=''
193 chgrp=''
194 chmod=''
195 chown=''
196 comm=''
197 compress=''
198 cp=''
199 cpio=''
200 cpp=''
201 csh=''
202 date=''
203 echo=''
204 egrep=''
205 emacs=''
206 expr=''
207 find=''
208 flex=''
209 grep=''
210 gzip=''
211 inews=''
212 ksh=''
213 less=''
214 line=''
215 lint=''
216 ln=''
217 lp=''
218 lpr=''
219 ls=''
220 mail=''
221 mailx=''
222 make=''
223 mkdir=''
224 more=''
225 mv=''
226 nm=''
227 nroff=''
228 perl=''
229 pg=''
230 pmake=''
231 pr=''
232 rm=''
233 rmail=''
234 sed=''
235 sendmail=''
236 shar=''
237 sleep=''
238 smail=''
239 sort=''
240 submit=''
241 tail=''
242 tar=''
243 tbl=''
244 tee=''
245 test=''
246 touch=''
247 tr=''
248 troff=''
249 uname=''
250 uniq=''
251 uuname=''
252 vi=''
253 zcat=''
254 zip=''
255 full_ar=''
256 full_sed=''
257 libswanted=''
258 hint=''
259 myuname=''
260 osname=''
261 osvers=''
262 Author=''
263 Date=''
264 Header=''
265 Id=''
266 Locker=''
267 Log=''
268 RCSfile=''
269 Revision=''
270 Source=''
271 State=''
272 _a=''
273 _exe=''
274 _o=''
275 archobjs=''
276 exe_ext=''
277 firstmakefile=''
278 lib_ext=''
279 obj_ext=''
280 path_sep=''
281 afs=''
282 afsroot=''
283 alignbytes=''
284 ansi2knr=''
285 archlib=''
286 archlibexp=''
287 d_archlib=''
288 installarchlib=''
289 archname=''
290 myarchname=''
291 d_atolf=''
292 d_atoll=''
293 baserev=''
294 bin=''
295 binexp=''
296 installbin=''
297 bincompat5005=''
298 d_bincompat5005=''
299 byteorder=''
300 cc=''
301 ccflags=''
302 cppflags=''
303 ldflags=''
304 lkflags=''
305 locincpth=''
306 optimize=''
307 cf_email=''
308 cf_by=''
309 cf_time=''
310 charsize=''
311 contains=''
312 cpp_stuff=''
313 cpplast=''
314 cppminus=''
315 cpprun=''
316 cppstdin=''
317 d__fwalk=''
318 d_access=''
319 d_accessx=''
320 d_alarm=''
321 d_attribut=''
322 d_bcmp=''
323 d_bcopy=''
324 d_bzero=''
325 d_casti32=''
326 castflags=''
327 d_castneg=''
328 d_chown=''
329 d_chroot=''
330 d_chsize=''
331 d_closedir=''
332 d_void_closedir=''
333 d_cmsghdr_s=''
334 d_const=''
335 cryptlib=''
336 d_crypt=''
337 d_csh=''
338 full_csh=''
339 d_cuserid=''
340 d_dbl_dig=''
341 d_dbminitproto=''
342 d_difftime=''
343 d_dlerror=''
344 d_dlopen=''
345 d_dlsymun=''
346 d_dosuid=''
347 d_suidsafe=''
348 d_drand48proto=''
349 d_dup2=''
350 d_eaccess=''
351 d_endgrent=''
352 d_endhent=''
353 d_endnent=''
354 d_endpent=''
355 d_endpwent=''
356 d_endsent=''
357 d_fchdir=''
358 d_fchmod=''
359 d_fchown=''
360 d_fcntl=''
361 d_fcntl_can_lock=''
362 d_fd_macros=''
363 d_fd_set=''
364 d_fds_bits=''
365 d_fgetpos=''
366 d_flexfnam=''
367 d_flock=''
368 d_flockproto=''
369 d_fork=''
370 d_fpos64_t=''
371 d_frexpl=''
372 d_fs_data_s=''
373 d_fseeko=''
374 d_fsetpos=''
375 d_fstatfs=''
376 d_fsync=''
377 d_ftello=''
378 d_ftime=''
379 d_gettimeod=''
380 d_Gconvert=''
381 d_getcwd=''
382 d_getespwnam=''
383 d_getfsstat=''
384 d_getgrent=''
385 d_getgrps=''
386 d_gethbyaddr=''
387 d_gethbyname=''
388 d_gethent=''
389 aphostname=''
390 d_gethname=''
391 d_phostname=''
392 d_uname=''
393 d_gethostprotos=''
394 d_getitimer=''
395 d_getlogin=''
396 d_getmnt=''
397 d_getmntent=''
398 d_getnbyaddr=''
399 d_getnbyname=''
400 d_getnent=''
401 d_getnetprotos=''
402 d_getpagsz=''
403 d_getpent=''
404 d_getpgid=''
405 d_getpgrp2=''
406 d_bsdgetpgrp=''
407 d_getpgrp=''
408 d_getppid=''
409 d_getprior=''
410 d_getpbyname=''
411 d_getpbynumber=''
412 d_getprotoprotos=''
413 d_getprpwnam=''
414 d_getpwent=''
415 d_getsent=''
416 d_getservprotos=''
417 d_getspnam=''
418 d_getsbyname=''
419 d_getsbyport=''
420 d_gnulibc=''
421 d_hasmntopt=''
422 d_htonl=''
423 d_iconv=''
424 d_inetaton=''
425 d_int64_t=''
426 d_isascii=''
427 d_isnan=''
428 d_isnanl=''
429 d_killpg=''
430 d_lchown=''
431 d_ldbl_dig=''
432 d_link=''
433 d_locconv=''
434 d_lockf=''
435 d_longdbl=''
436 longdblsize=''
437 d_longlong=''
438 longlongsize=''
439 d_lseekproto=''
440 d_lstat=''
441 d_madvise=''
442 d_mblen=''
443 d_mbstowcs=''
444 d_mbtowc=''
445 d_memchr=''
446 d_memcmp=''
447 d_memcpy=''
448 d_memmove=''
449 d_memset=''
450 d_mkdir=''
451 d_mkdtemp=''
452 d_mkfifo=''
453 d_mkstemp=''
454 d_mkstemps=''
455 d_mktime=''
456 d_mmap=''
457 mmaptype=''
458 d_modfl=''
459 d_modfl_pow32_bug=''
460 d_mprotect=''
461 d_msg=''
462 d_msgctl=''
463 d_msgget=''
464 d_msghdr_s=''
465 d_msgrcv=''
466 d_msgsnd=''
467 d_msync=''
468 d_munmap=''
469 d_nice=''
470 d_nl_langinfo=''
471 d_off64_t=''
472 d_open3=''
473 d_fpathconf=''
474 d_pathconf=''
475 d_pause=''
476 d_pipe=''
477 d_poll=''
478 d_portable=''
479 d_old_pthread_create_joinable=''
480 old_pthread_create_joinable=''
481 d_pthread_atfork=''
482 d_pthread_yield=''
483 d_sched_yield=''
484 sched_yield=''
485 d_qgcvt=''
486 d_readdir=''
487 d_rewinddir=''
488 d_seekdir=''
489 d_telldir=''
490 d_readlink=''
491 d_readv=''
492 d_recvmsg=''
493 d_rename=''
494 d_rmdir=''
495 d_safebcpy=''
496 d_safemcpy=''
497 d_sanemcmp=''
498 d_sbrkproto=''
499 d_select=''
500 d_sem=''
501 d_semctl=''
502 d_semget=''
503 d_semop=''
504 d_sendmsg=''
505 d_setegid=''
506 d_seteuid=''
507 d_setgrent=''
508 d_setgrps=''
509 d_sethent=''
510 d_setitimer=''
511 d_setlinebuf=''
512 d_setlocale=''
513 d_setnent=''
514 d_setpent=''
515 d_setpgid=''
516 d_setpgrp2=''
517 d_bsdsetpgrp=''
518 d_setpgrp=''
519 d_setprior=''
520 d_setproctitle=''
521 d_setpwent=''
522 d_setregid=''
523 d_setresgid=''
524 d_setresuid=''
525 d_setreuid=''
526 d_setrgid=''
527 d_setruid=''
528 d_setsent=''
529 d_setsid=''
530 d_setvbuf=''
531 d_sfio=''
532 usesfio=''
533 d_shm=''
534 d_shmat=''
535 d_shmatprototype=''
536 shmattype=''
537 d_shmctl=''
538 d_shmdt=''
539 d_shmget=''
540 d_sigaction=''
541 d_sigprocmask=''
542 d_sigsetjmp=''
543 d_sockatmark=''
544 d_sockatmarkproto=''
545 d_msg_ctrunc=''
546 d_msg_dontroute=''
547 d_msg_oob=''
548 d_msg_peek=''
549 d_msg_proxy=''
550 d_oldsock=''
551 d_scm_rights=''
552 d_socket=''
553 d_sockpair=''
554 sockethdr=''
555 socketlib=''
556 d_socklen_t=''
557 d_socks5_init=''
558 d_sqrtl=''
559 d_sresgproto=''
560 d_sresuproto=''
561 d_statblks=''
562 d_statfs_f_flags=''
563 d_statfs_s=''
564 d_fstatvfs=''
565 d_statvfs=''
566 d_stdio_cnt_lval=''
567 d_stdio_ptr_lval=''
568 d_stdio_ptr_lval_nochange_cnt=''
569 d_stdio_ptr_lval_sets_cnt=''
570 d_stdiobase=''
571 d_stdstdio=''
572 stdio_base=''
573 stdio_bufsiz=''
574 stdio_cnt=''
575 stdio_filbuf=''
576 stdio_ptr=''
577 d_index=''
578 d_strchr=''
579 d_strcoll=''
580 d_strctcpy=''
581 d_strerrm=''
582 d_strerror=''
583 d_sysernlst=''
584 d_syserrlst=''
585 d_strftime=''
586 d_strtod=''
587 d_strtol=''
588 d_strtold=''
589 d_strtoll=''
590 d_strtoq=''
591 d_strtoul=''
592 d_strtoull=''
593 d_strtouq=''
594 d_strxfrm=''
595 d_symlink=''
596 d_syscall=''
597 d_syscallproto=''
598 d_sysconf=''
599 d_system=''
600 d_tcgetpgrp=''
601 d_tcsetpgrp=''
602 d_telldirproto=''
603 d_time=''
604 timetype=''
605 clocktype=''
606 d_times=''
607 d_truncate=''
608 d_tzname=''
609 d_u32align=''
610 d_ualarm=''
611 d_umask=''
612 d_semctl_semid_ds=''
613 d_semctl_semun=''
614 d_union_semun=''
615 d_usleep=''
616 d_usleepproto=''
617 d_ustat=''
618 d_vfork=''
619 usevfork=''
620 d_voidsig=''
621 signal_t=''
622 d_volatile=''
623 d_charvspr=''
624 d_vprintf=''
625 d_wait4=''
626 d_waitpid=''
627 d_wcstombs=''
628 d_wctomb=''
629 d_writev=''
630 dlext=''
631 cccdlflags=''
632 ccdlflags=''
633 dlsrc=''
634 ld=''
635 lddlflags=''
636 usedl=''
637 doublesize=''
638 ebcdic=''
639 fflushNULL=''
640 fflushall=''
641 fpossize=''
642 fpostype=''
643 gccosandvers=''
644 gccversion=''
645 gidformat=''
646 gidsign=''
647 gidsize=''
648 gidtype=''
649 groupstype=''
650 h_fcntl=''
651 h_sysfile=''
652 i_arpainet=''
653 db_hashtype=''
654 db_prefixtype=''
655 db_version_major=''
656 db_version_minor=''
657 db_version_patch=''
658 i_db=''
659 i_dbm=''
660 i_rpcsvcdbm=''
661 d_dirnamlen=''
662 direntrytype=''
663 i_dirent=''
664 i_dld=''
665 i_dlfcn=''
666 i_fcntl=''
667 i_float=''
668 i_gdbm=''
669 d_grpasswd=''
670 i_grp=''
671 i_iconv=''
672 i_ieeefp=''
673 i_inttypes=''
674 i_langinfo=''
675 i_libutil=''
676 i_limits=''
677 i_locale=''
678 i_machcthr=''
679 i_malloc=''
680 i_math=''
681 i_memory=''
682 i_mntent=''
683 i_ndbm=''
684 i_netdb=''
685 i_neterrno=''
686 i_netinettcp=''
687 i_niin=''
688 i_sysin=''
689 i_poll=''
690 i_prot=''
691 i_pthread=''
692 d_pwage=''
693 d_pwchange=''
694 d_pwclass=''
695 d_pwcomment=''
696 d_pwexpire=''
697 d_pwgecos=''
698 d_pwpasswd=''
699 d_pwquota=''
700 i_pwd=''
701 i_sfio=''
702 i_shadow=''
703 i_socks=''
704 i_stddef=''
705 i_stdlib=''
706 i_string=''
707 strings=''
708 i_sunmath=''
709 i_sysaccess=''
710 i_sysdir=''
711 i_sysfile=''
712 d_voidtty=''
713 i_bsdioctl=''
714 i_sysfilio=''
715 i_sysioctl=''
716 i_syssockio=''
717 i_syslog=''
718 i_sysmman=''
719 i_sysmode=''
720 i_sysmount=''
721 i_sysndir=''
722 i_sysparam=''
723 i_sysresrc=''
724 i_syssecrt=''
725 i_sysselct=''
726 i_sysstat=''
727 i_sysstatfs=''
728 i_sysstatvfs=''
729 i_systimes=''
730 i_systypes=''
731 i_sysuio=''
732 i_sysun=''
733 i_sysutsname=''
734 i_sysvfs=''
735 i_syswait=''
736 i_sgtty=''
737 i_termio=''
738 i_termios=''
739 i_systime=''
740 i_systimek=''
741 i_time=''
742 timeincl=''
743 i_unistd=''
744 i_ustat=''
745 i_utime=''
746 i_values=''
747 i_stdarg=''
748 i_varargs=''
749 i_varhdr=''
750 i_vfork=''
751 inc_version_list=''
752 inc_version_list_init=''
753 installprefix=''
754 installprefixexp=''
755 installstyle=''
756 installusrbinperl=''
757 intsize=''
758 longsize=''
759 shortsize=''
760 issymlink=''
761 libc=''
762 ldlibpthname=''
763 libperl=''
764 shrpenv=''
765 useshrplib=''
766 glibpth=''
767 libpth=''
768 loclibpth=''
769 plibpth=''
770 xlibpth=''
771 ignore_versioned_solibs=''
772 libs=''
773 libsdirs=''
774 libsfiles=''
775 libsfound=''
776 libspath=''
777 lns=''
778 d_PRIEUldbl=''
779 d_PRIFUldbl=''
780 d_PRIGUldbl=''
781 d_PRIeldbl=''
782 d_PRIfldbl=''
783 d_PRIgldbl=''
784 d_SCNfldbl=''
785 sPRIEUldbl=''
786 sPRIFUldbl=''
787 sPRIGUldbl=''
788 sPRIeldbl=''
789 sPRIfldbl=''
790 sPRIgldbl=''
791 sSCNfldbl=''
792 lseeksize=''
793 lseektype=''
794 make_set_make=''
795 d_mymalloc=''
796 freetype=''
797 mallocobj=''
798 mallocsrc=''
799 malloctype=''
800 usemymalloc=''
801 installman1dir=''
802 man1dir=''
803 man1direxp=''
804 man1ext=''
805 installman3dir=''
806 man3dir=''
807 man3direxp=''
808 man3ext=''
809 modetype=''
810 multiarch=''
811 mydomain=''
812 myhostname=''
813 phostname=''
814 c=''
815 n=''
816 d_eofnblk=''
817 eagain=''
818 o_nonblock=''
819 rd_nodata=''
820 need_va_copy=''
821 netdb_hlen_type=''
822 netdb_host_type=''
823 netdb_name_type=''
824 netdb_net_type=''
825 groupcat=''
826 hostcat=''
827 passcat=''
828 orderlib=''
829 ranlib=''
830 d_perl_otherlibdirs=''
831 otherlibdirs=''
832 package=''
833 spackage=''
834 pager=''
835 api_revision=''
836 api_subversion=''
837 api_version=''
838 api_versionstring=''
839 patchlevel=''
840 perl_patchlevel=''
841 revision=''
842 subversion=''
843 version=''
844 version_patchlevel_string=''
845 perl5=''
846 perladmin=''
847 perlpath=''
848 d_nv_preserves_uv=''
849 d_nv_preserves_uv_bits=''
850 i16size=''
851 i16type=''
852 i32size=''
853 i32type=''
854 i64size=''
855 i64type=''
856 i8size=''
857 i8type=''
858 ivsize=''
859 ivtype=''
860 nvsize=''
861 nvtype=''
862 u16size=''
863 u16type=''
864 u32size=''
865 u32type=''
866 u64size=''
867 u64type=''
868 u8size=''
869 u8type=''
870 uvsize=''
871 uvtype=''
872 ivdformat=''
873 nvEUformat=''
874 nvFUformat=''
875 nvGUformat=''
876 nveformat=''
877 nvfformat=''
878 nvgformat=''
879 uvXUformat=''
880 uvoformat=''
881 uvuformat=''
882 uvxformat=''
883 pidtype=''
884 prefix=''
885 prefixexp=''
886 installprivlib=''
887 privlib=''
888 privlibexp=''
889 prototype=''
890 ptrsize=''
891 d_PRIXU64=''
892 d_PRId64=''
893 d_PRIi64=''
894 d_PRIo64=''
895 d_PRIu64=''
896 d_PRIx64=''
897 sPRIXU64=''
898 sPRId64=''
899 sPRIi64=''
900 sPRIo64=''
901 sPRIu64=''
902 sPRIx64=''
903 d_quad=''
904 quadkind=''
905 quadtype=''
906 uquadtype=''
907 drand01=''
908 randbits=''
909 randfunc=''
910 randseedtype=''
911 seedfunc=''
912 installscript=''
913 scriptdir=''
914 scriptdirexp=''
915 selectminbits=''
916 selecttype=''
917 sh=''
918 sig_count=''
919 sig_name=''
920 sig_name_init=''
921 sig_num=''
922 sig_num_init=''
923 sig_size=''
924 installsitearch=''
925 sitearch=''
926 sitearchexp=''
927 installsitebin=''
928 sitebin=''
929 sitebinexp=''
930 installsitelib=''
931 sitelib=''
932 sitelib_stem=''
933 sitelibexp=''
934 siteprefix=''
935 siteprefixexp=''
936 sizesize=''
937 sizetype=''
938 so=''
939 socksizetype=''
940 sharpbang=''
941 shsharp=''
942 spitshell=''
943 src=''
944 ssizetype=''
945 startperl=''
946 startsh=''
947 stdchar=''
948 d_stdio_stream_array=''
949 stdio_stream_array=''
950 sysman=''
951 trnl=''
952 uidformat=''
953 uidsign=''
954 uidsize=''
955 uidtype=''
956 archname64=''
957 use64bitall=''
958 use64bitint=''
959 ccflags_uselargefiles=''
960 ldflags_uselargefiles=''
961 libswanted_uselargefiles=''
962 uselargefiles=''
963 uselongdouble=''
964 usemorebits=''
965 usemultiplicity=''
966 nm_opt=''
967 nm_so_opt=''
968 runnm=''
969 usenm=''
970 useperlio=''
971 usesocks=''
972 d_oldpthreads=''
973 use5005threads=''
974 useithreads=''
975 usereentrant=''
976 usethreads=''
977 incpath=''
978 mips_type=''
979 usrinc=''
980 d_vendorarch=''
981 installvendorarch=''
982 vendorarch=''
983 vendorarchexp=''
984 d_vendorbin=''
985 installvendorbin=''
986 vendorbin=''
987 vendorbinexp=''
988 d_vendorlib=''
989 installvendorlib=''
990 vendorlib=''
991 vendorlib_stem=''
992 vendorlibexp=''
993 usevendorprefix=''
994 vendorprefix=''
995 vendorprefixexp=''
996 versiononly=''
997 defvoidused=''
998 voidflags=''
999 pm_apiversion=''
1000 xs_apiversion=''
1001 yacc=''
1002 yaccflags=''
1003 CONFIG=''
1004
1005 define='define'
1006 undef='undef'
1007 smallmach='pdp11 i8086 z8000 i80286 iAPX286'
1008 rmlist=''
1009
1010 : We must find out about Eunice early
1011 eunicefix=':'
1012 if test -f /etc/unixtovms; then
1013         eunicefix=/etc/unixtovms
1014 fi
1015 if test -f /etc/unixtovms.exe; then
1016         eunicefix=/etc/unixtovms.exe
1017 fi
1018
1019 i_whoami=''
1020 ccname=''
1021 ccversion=''
1022 perllibs=''
1023 : set useposix=false in your hint file to disable the POSIX extension.
1024 useposix=true
1025 : set useopcode=false in your hint file to disable the Opcode extension.
1026 useopcode=true
1027 : Trailing extension.  Override this in a hint file, if needed.
1028 _exe=''
1029 : Extra object files, if any, needed on this platform.
1030 archobjs=''
1031 archname=''
1032 : Possible local include directories to search.
1033 : Set locincpth to "" in a hint file to defeat local include searches.
1034 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
1035 locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
1036 :
1037 : no include file wanted by default
1038 inclwanted=''
1039
1040 groupstype=''
1041 libnames=''
1042 : change the next line if compiling for Xenix/286 on Xenix/386
1043 xlibpth='/usr/lib/386 /lib/386'
1044 : Possible local library directories to search.
1045 loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
1046 loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
1047
1048 : general looking path for locating libraries
1049 glibpth="/lib /usr/lib $xlibpth"
1050 glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
1051 test -f /usr/shlib/libc.so && glibpth="/usr/shlib $glibpth"
1052 test -f /shlib/libc.so     && glibpth="/shlib $glibpth"
1053
1054 : Private path used by Configure to find libraries.  Its value
1055 : is prepended to libpth. This variable takes care of special
1056 : machines, like the mips.  Usually, it should be empty.
1057 plibpth=''
1058
1059 : default library list
1060 libswanted=''
1061 : some systems want to use only the non-versioned libso:s
1062 ignore_versioned_solibs=''
1063 archname64=''
1064 ccflags_uselargefiles=''
1065 ldflags_uselargefiles=''
1066 libswanted_uselargefiles=''
1067 : set usemultiplicity on the Configure command line to enable multiplicity.
1068 : set usesocks on the Configure command line to enable socks.
1069 : set usethreads on the Configure command line to enable threads.
1070 usereentrant='undef'
1071 : full support for void wanted by default
1072 defvoidused=15
1073
1074 : List of libraries we want.
1075 : If anyone needs -lnet, put it in a hint file.
1076 libswanted='sfio socket bind inet nsl nm ndbm gdbm dbm db malloc dl'
1077 libswanted="$libswanted dld ld sun m c cposix posix"
1078 libswanted="$libswanted ndir dir crypt sec"
1079 libswanted="$libswanted ucb bsd BSD PW x iconv util"
1080 : We probably want to search /usr/shlib before most other libraries.
1081 : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
1082 glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
1083 glibpth="/usr/shlib $glibpth"
1084 : Do not use vfork unless overridden by a hint file.
1085 usevfork=false
1086
1087 : Find the basic shell for Bourne shell scripts
1088 case "$sh" in
1089 '')
1090         case "$SYSTYPE" in
1091         *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
1092         *) xxx='/bin/sh';;
1093         esac
1094         if test -f "$xxx"; then
1095                 sh="$xxx"
1096         else
1097                 : Build up a list and do a single loop so we can 'break' out.
1098                 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1099                 for xxx in sh bash ksh pdksh ash; do
1100                         for p in $pth; do
1101                                 try="$try ${p}/${xxx}"
1102                         done
1103                 done
1104                 for xxx in $try; do
1105                         if test -f "$xxx"; then
1106                                 sh="$xxx";
1107                                 break
1108                         elif test -f "$xxx.exe"; then
1109                                 sh="$xxx";
1110                                 break
1111                         fi
1112                 done
1113         fi
1114         ;;
1115 esac
1116
1117 case "$sh" in
1118 '')     cat <<EOM >&2
1119 $me:  Fatal Error:  I can't find a Bourne Shell anywhere.  
1120
1121 Usually it's in /bin/sh.  How did you even get this far?
1122 Please contact me (Perl Maintainers) at perlbug@perl.org and 
1123 we'll try to straighten this all out.
1124 EOM
1125         exit 1
1126         ;;
1127 esac
1128
1129 : see if sh knows # comments
1130 if `$sh -c '#' >/dev/null 2>&1`; then
1131         shsharp=true
1132         spitshell=cat
1133         xcat=/bin/cat
1134         test -f $xcat || xcat=/usr/bin/cat
1135         echo "#!$xcat" >sharp
1136         $eunicefix sharp
1137         chmod +x sharp
1138         ./sharp > today
1139         if test -s today; then
1140                 sharpbang='#!'
1141         else
1142                 echo "#! $xcat" > sharp
1143                 $eunicefix sharp
1144                 chmod +x sharp
1145                 ./sharp > today
1146                 if test -s today; then
1147                         sharpbang='#! '
1148                 else
1149                         sharpbang=': use '
1150                 fi
1151         fi
1152 else
1153         echo " "
1154         echo "Your $sh doesn't grok # comments--I will strip them later on."
1155         shsharp=false
1156         cd ..
1157         echo "exec grep -v '^[  ]*#'" >spitshell
1158         chmod +x spitshell
1159         $eunicefix spitshell
1160         spitshell=`pwd`/spitshell
1161         cd UU
1162         echo "I presume that if # doesn't work, #! won't work either!"
1163         sharpbang=': use '
1164 fi
1165 rm -f sharp today
1166
1167 : figure out how to guarantee sh startup
1168 case "$startsh" in
1169 '') startsh=${sharpbang}${sh} ;;
1170 *)
1171 esac
1172 cat >sharp <<EOSS
1173 $startsh
1174 set abc
1175 test "$?abc" != 1
1176 EOSS
1177
1178 chmod +x sharp
1179 $eunicefix sharp
1180 if ./sharp; then
1181         : echo "Yup, it does."
1182 else
1183         echo "Hmm... '$startsh' does not guarantee sh startup..."
1184         echo "You may have to fix up the shell scripts to make sure $sh runs them."
1185 fi
1186 rm -f sharp
1187
1188
1189 : Save command line options in file UU/cmdline.opt for later use in
1190 : generating config.sh.
1191 cat > cmdline.opt <<EOSH
1192 # Configure command line arguments.
1193 config_arg0='$0'
1194 config_args='$*'
1195 config_argc=$#
1196 EOSH
1197 argn=1
1198 args_exp=''
1199 args_sep=''
1200 for arg in "$@"; do
1201         cat >>cmdline.opt <<EOSH
1202 config_arg$argn='$arg'
1203 EOSH
1204         # Extreme backslashitis: replace each ' by '"'"'
1205         cat <<EOC | sed -e "s/'/'"'"'"'"'"'"'/g" > cmdl.opt
1206 $arg
1207 EOC
1208         arg_exp=`cat cmdl.opt`
1209         args_exp="$args_exp$args_sep'$arg_exp'"
1210         argn=`expr $argn + 1`
1211         args_sep=' '
1212 done
1213 # args_exp is good for restarting self: eval "set X $args_exp"; shift; $0 "$@"
1214 # used by ./hints/os2.sh
1215 rm -f cmdl.opt
1216
1217 : produce awk script to parse command line options
1218 cat >options.awk <<'EOF'
1219 BEGIN {
1220         optstr = "A:dD:eEf:hKOrsSU:V";  # getopt-style specification
1221
1222         len = length(optstr);
1223         for (i = 1; i <= len; i++) {
1224                 c = substr(optstr, i, 1);
1225                 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
1226                 if (a == ":") {
1227                         arg[c] = 1;
1228                         i++;
1229                 }
1230                 opt[c] = 1;
1231         }
1232 }
1233 {
1234         expect = 0;
1235         str = $0;
1236         if (substr(str, 1, 1) != "-") {
1237                 printf("'%s'\n", str);
1238                 next;
1239         }
1240         len = length($0);
1241         for (i = 2; i <= len; i++) {
1242                 c = substr(str, i, 1);
1243                 if (!opt[c]) {
1244                         printf("-%s\n", substr(str, i));
1245                         next;
1246                 }
1247                 printf("-%s\n", c);
1248                 if (arg[c]) {
1249                         if (i < len)
1250                                 printf("'%s'\n", substr(str, i + 1));
1251                         else
1252                                 expect = 1;
1253                         next;
1254                 }
1255         }
1256 }
1257 END {
1258         if (expect)
1259                 print "?";
1260 }
1261 EOF
1262
1263 : process the command line options
1264 set X `for arg in "$@"; do echo "X$arg"; done |
1265         sed -e s/X// | awk -f options.awk`
1266 eval "set $*"
1267 shift
1268 rm -f options.awk
1269
1270 : set up default values
1271 fastread=''
1272 reuseval=false
1273 config_sh=''
1274 alldone=''
1275 error=''
1276 silent=''
1277 extractsh=''
1278 override=''
1279 knowitall=''
1280 rm -f optdef.sh posthint.sh
1281 cat >optdef.sh <<EOS
1282 $startsh
1283 EOS
1284
1285
1286 : option parsing
1287 while test $# -gt 0; do
1288         case "$1" in
1289         -d) shift; fastread=yes;;
1290         -e) shift; alldone=cont;;
1291         -f)
1292                 shift
1293                 cd ..
1294                 if test -r "$1"; then
1295                         config_sh="$1"
1296                 else
1297                         echo "$me: cannot read config file $1." >&2
1298                         error=true
1299                 fi
1300                 cd UU
1301                 shift;;
1302         -h) shift; error=true;;
1303         -r) shift; reuseval=true;;
1304         -s) shift; silent=true; realsilent=true;;
1305         -E) shift; alldone=exit;;
1306         -K) shift; knowitall=true;;
1307         -O) shift; override=true;;
1308         -S) shift; silent=true; extractsh=true;;
1309         -D)
1310                 shift
1311                 case "$1" in
1312                 *=)
1313                         echo "$me: use '-U symbol=', not '-D symbol='." >&2
1314                         echo "$me: ignoring -D $1" >&2
1315                         ;;
1316                 *=*) echo "$1" | \
1317                                 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1318                 *) echo "$1='define'" >> optdef.sh;;
1319                 esac
1320                 shift
1321                 ;;
1322         -U)
1323                 shift
1324                 case "$1" in
1325                 *=) echo "$1" >> optdef.sh;;
1326                 *=*)
1327                         echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1328                         echo "$me: ignoring -U $1" >&2
1329                         ;;
1330                 *) echo "$1='undef'" >> optdef.sh;;
1331                 esac
1332                 shift
1333                 ;;
1334         -A)
1335             shift
1336             xxx=''
1337             yyy="$1"
1338             zzz=''
1339             uuu=undef
1340             case "$yyy" in
1341             *=*) zzz=`echo $yyy|sed 's!=.*!!'`
1342                  case "$zzz" in
1343                  *:*) zzz='' ;;
1344                  *)   xxx=append
1345                       zzz=" "`echo $yyy|sed 's!^[^=]*=!!'` 
1346                       yyy=`echo $yyy|sed 's!=.*!!'` ;;
1347                  esac
1348                  ;;
1349             esac
1350             case "$xxx" in
1351             '')  case "$yyy" in
1352                  *:*) xxx=`echo $yyy|sed 's!:.*!!'`
1353                       yyy=`echo $yyy|sed 's!^[^:]*:!!'`
1354                       zzz=`echo $yyy|sed 's!^[^=]*=!!'`
1355                       yyy=`echo $yyy|sed 's!=.*!!'` ;;
1356                  *)   xxx=`echo $yyy|sed 's!:.*!!'`
1357                       yyy=`echo $yyy|sed 's!^[^:]*:!!'` ;;
1358                  esac
1359                  ;;       
1360             esac
1361             case "$xxx" in
1362             append)
1363                 echo "$yyy=\"\${$yyy}$zzz\""    >> posthint.sh ;;
1364             clear)
1365                 echo "$yyy=''"                  >> posthint.sh ;;
1366             define)
1367                 case "$zzz" in
1368                 '') zzz=define ;;
1369                 esac
1370                 echo "$yyy='$zzz'"              >> posthint.sh ;;
1371             eval)
1372                 echo "eval \"$yyy=$zzz\""       >> posthint.sh ;;
1373             prepend)
1374                 echo "$yyy=\"$zzz\${$yyy}\""    >> posthint.sh ;;
1375             undef)
1376                 case "$zzz" in
1377                 '') zzz="$uuu" ;;
1378                 esac
1379                 echo "$yyy=$zzz"                >> posthint.sh ;;
1380             *)  echo "$me: unknown -A command '$xxx', ignoring -A $1" >&2 ;;
1381             esac
1382             shift
1383             ;;
1384         -V) echo "$me generated by metaconfig 3.0 PL70." >&2
1385             exit 0;;
1386         --) break;;
1387         -*) echo "$me: unknown option $1" >&2; shift; error=true;;
1388         *) break;;
1389         esac
1390 done
1391
1392 case "$error" in
1393 true)
1394         cat >&2 <<EOM
1395 Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
1396                  [-U symbol] [-U symbol=] [-A command:symbol...]
1397   -d : use defaults for all answers.
1398   -e : go on without questioning past the production of config.sh.
1399   -f : specify an alternate default configuration file.
1400   -h : print this help message and exit (with an error status).
1401   -r : reuse C symbols value if possible (skips costly nm extraction).
1402   -s : silent mode, only echoes questions and essential information.
1403   -D : define symbol to have some value:
1404          -D symbol         symbol gets the value 'define'
1405          -D symbol=value   symbol gets the value 'value'
1406   -E : stop at the end of questions, after having produced config.sh.
1407   -K : do not use unless you know what you are doing.
1408   -O : let -D and -U override definitions from loaded configuration file.
1409   -S : perform variable substitutions on all .SH files (can mix with -f)
1410   -U : undefine symbol:
1411          -U symbol    symbol gets the value 'undef'
1412          -U symbol=   symbol gets completely empty
1413   -A : manipulate symbol after the platform specific hints have been applied:
1414          -A symbol=value                append " "value to symbol
1415          -A append:symbol=value         append value to symbol
1416          -A define:symbol=value         define symbol to have value
1417          -A clear:symbol                define symbol to be ''
1418          -A define:symbol               define symbol to be 'define'
1419          -A eval:symbol=value           define symbol to be eval of value
1420          -A prepend:symbol=value        prepend value to symbol
1421          -A undef:symbol                define symbol to be 'undef'
1422          -A undef:symbol=               define symbol to be ''
1423   -V : print version number and exit (with a zero status).
1424 EOM
1425         exit 1
1426         ;;
1427 esac
1428
1429 : Sanity checks
1430 case "$fastread$alldone" in
1431 yescont|yesexit) ;;
1432 *)
1433         case "$extractsh" in
1434         true) ;;
1435         *)
1436                 if test ! -t 0; then
1437                         echo "Say 'sh Configure', not 'sh <Configure'"
1438                         exit 1
1439                 fi
1440                 ;;
1441         esac
1442         ;;
1443 esac
1444
1445 exec 4>&1
1446 case "$silent" in
1447 true) exec 1>/dev/null;;
1448 esac
1449
1450 : run the defines and the undefines, if any, but leave the file out there...
1451 touch optdef.sh
1452 . ./optdef.sh
1453 : create the posthint manipulation script and leave the file out there...
1454 touch posthint.sh
1455
1456 : set package name
1457 package=perl5
1458 first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1459 last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1460 case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1461 ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1462 *) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1463 esac
1464
1465 : Some greps do not return status, grrr.
1466 echo "grimblepritz" >grimble
1467 if grep blurfldyick grimble >/dev/null 2>&1 ; then
1468         contains=contains
1469 elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1470         contains=grep
1471 else
1472         contains=contains
1473 fi
1474 rm -f grimble
1475 : the following should work in any shell
1476 case "$contains" in
1477 contains*)
1478         echo " "
1479         echo "AGH!  Grep doesn't return a status.  Attempting remedial action."
1480         cat >contains <<'EOSS'
1481 grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1482 EOSS
1483 chmod +x contains
1484 esac
1485
1486 : Find the path to the source tree
1487 case "$src" in
1488 '') case "$0" in
1489     */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`
1490          case "$src" in
1491          /*)    ;;
1492          .)     ;;
1493          *)     src=`cd ../$src && pwd` ;;
1494          esac
1495          ;;
1496     *)   src='.';;
1497     esac;;
1498 esac
1499 case "$src" in
1500 '')     src=/
1501         rsrc=/
1502         ;;
1503 /*) rsrc="$src";;
1504 *) rsrc="../$src";;
1505 esac
1506 if test -f $rsrc/Configure && \
1507         $contains "^package=$package$" $rsrc/Configure >/dev/null 2>&1
1508 then
1509    : found it, so we are ok.
1510 else
1511         rsrc=''
1512         for src in . .. ../.. ../../.. ../../../..; do
1513                 if test -f ../$src/Configure && \
1514                         $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1515                 then
1516                         rsrc=../$src
1517                         break
1518                 fi
1519         done
1520 fi
1521 case "$rsrc" in
1522 '')
1523         cat <<EOM >&4
1524
1525 Sorry, I can't seem to locate the source dir for $package.  Please start
1526 Configure with an explicit path -- i.e. /some/path/Configure.
1527
1528 EOM
1529         exit 1
1530         ;;
1531 ../.)   rsrc='..';;
1532 *)
1533         echo " "
1534         echo "Sources for $package found in \"$src\"." >&4
1535         ;;
1536 esac
1537
1538 : script used to extract .SH files with variable substitutions
1539 cat >extract <<'EOS'
1540 PERL_CONFIG_SH=true
1541 echo "Doing variable substitutions on .SH files..."
1542 if test -f MANIFEST; then
1543         set x `awk '{print $1}' < MANIFEST | grep '\.SH$'`
1544 else
1545         echo "(Looking for .SH files under the source directory.)"
1546         set x `(cd $src; find . -name "*.SH" -print)`
1547 fi
1548 shift
1549 case $# in
1550 0) set x `(cd $src; echo *.SH)`; shift;;
1551 esac
1552 if test ! -f $src/$1; then
1553         shift
1554 fi
1555 mkdir_p='
1556 name=$1;
1557 create="";
1558 while test $name; do
1559         if test ! -d "$name"; then
1560                 create="$name $create";
1561                 name=`echo $name | sed -e "s|^[^/]*$||"`;
1562                 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
1563         else
1564                 name="";
1565         fi;
1566 done;
1567 for file in $create; do
1568         mkdir $file;
1569 done
1570 '
1571 for file in $*; do
1572         case "$src" in
1573         ".")
1574                 case "$file" in
1575                 */*)
1576                         dir=`expr X$file : 'X\(.*\)/'`
1577                         file=`expr X$file : 'X.*/\(.*\)'`
1578                         (cd $dir && . ./$file)
1579                         ;;
1580                 *)
1581                         . ./$file
1582                         ;;
1583                 esac
1584                 ;;
1585         *)
1586                 case "$file" in
1587                 */*)
1588                         dir=`expr X$file : 'X\(.*\)/'`
1589                         file=`expr X$file : 'X.*/\(.*\)'`
1590                         (set x $dir; shift; eval $mkdir_p)
1591                         sh <$src/$dir/$file
1592                         ;;
1593                 *)
1594                         sh <$src/$file
1595                         ;;
1596                 esac
1597                 ;;
1598         esac
1599 done
1600 if test -f $src/config_h.SH; then
1601         if test ! -f config.h; then
1602         : oops, they left it out of MANIFEST, probably, so do it anyway.
1603         . $src/config_h.SH
1604         fi
1605 fi
1606 EOS
1607
1608 : extract files and exit if asked to do so
1609 case "$extractsh" in
1610 true)
1611         case "$realsilent" in
1612         true) ;;
1613         *) exec 1>&4;;
1614         esac
1615         case "$config_sh" in
1616         '') config_sh='config.sh';;
1617         esac
1618         echo " "
1619         echo "Fetching answers from $config_sh..."
1620         cd ..
1621         . $config_sh
1622         test "$override" && . ./optdef.sh
1623         echo " "
1624         . UU/extract
1625         rm -rf UU
1626         echo "Extraction done."
1627         exit 0
1628         ;;
1629 esac
1630
1631 : Eunice requires " " instead of "", can you believe it
1632 echo " "
1633 : Here we go...
1634 echo "Beginning of configuration questions for $package."
1635
1636 trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1637
1638 : first determine how to suppress newline on echo command
1639 echo " "
1640 echo "Checking echo to see how to suppress newlines..."
1641 (echo "hi there\c" ; echo " ") >.echotmp
1642 if $contains c .echotmp >/dev/null 2>&1 ; then
1643         echo "...using -n."
1644         n='-n'
1645         c=''
1646 else
1647         cat <<'EOM'
1648 ...using \c
1649 EOM
1650         n=''
1651         c='\c'
1652 fi
1653 echo $n "The star should be here-->$c"
1654 echo '*'
1655 rm -f .echotmp
1656
1657 : Now test for existence of everything in MANIFEST
1658 echo " "
1659 if test -f $rsrc/MANIFEST; then
1660         echo "First let's make sure your kit is complete.  Checking..." >&4
1661         awk '$1 !~ /PACK[A-Z]+/ {print $1}' $rsrc/MANIFEST | split -50
1662         rm -f missing
1663         tmppwd=`pwd`
1664         for filelist in x??; do
1665                 (cd $rsrc; ls `cat $tmppwd/$filelist` >/dev/null 2>>$tmppwd/missing)
1666         done
1667         if test -s missing; then
1668                 cat missing >&4
1669                 cat >&4 <<'EOM'
1670
1671 THIS PACKAGE SEEMS TO BE INCOMPLETE.
1672
1673 You have the option of continuing the configuration process, despite the
1674 distinct possibility that your kit is damaged, by typing 'y'es.  If you
1675 do, don't blame me if something goes wrong.  I advise you to type 'n'o
1676 and contact the author (perlbug@perl.org).
1677
1678 EOM
1679                 echo $n "Continue? [n] $c" >&4
1680                 read ans
1681                 case "$ans" in
1682                 y*)
1683                         echo "Continuing..." >&4
1684                         rm -f missing
1685                         ;;
1686                 *)
1687                         echo "ABORTING..." >&4
1688                         kill $$
1689                         ;;
1690                 esac
1691         else
1692                 echo "Looks good..."
1693         fi
1694 else
1695         echo "There is no MANIFEST file.  I hope your kit is complete !"
1696 fi
1697 rm -f missing x??
1698
1699 echo " "
1700 : Find the appropriate value for a newline for tr
1701 if test -n "$DJGPP"; then
1702        trnl='\012'
1703 fi
1704 if test X"$trnl" = X; then
1705         case "`echo foo|tr '\n' x 2>/dev/null`" in
1706         foox) trnl='\n' ;;
1707         esac
1708 fi
1709 if test X"$trnl" = X; then
1710         case "`echo foo|tr '\012' x 2>/dev/null`" in
1711         foox) trnl='\012' ;;
1712         esac
1713 fi
1714 if test X"$trnl" = X; then
1715         cat <<EOM >&2
1716
1717 $me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
1718
1719 EOM
1720         exit 1
1721 fi
1722
1723 : compute the number of columns on the terminal for proper question formatting
1724 case "$COLUMNS" in
1725 '') COLUMNS='80';;
1726 esac
1727
1728 : set up the echo used in my read
1729 myecho="case \"\$xxxm\" in
1730 '') echo $n \"\$rp $c\" >&4;;
1731 *) case \"\$rp\" in
1732         '') echo $n \"[\$xxxm] $c\";;
1733         *)
1734                 if test \`echo \"\$rp [\$xxxm]  \" | wc -c\` -ge $COLUMNS; then
1735                         echo \"\$rp\" >&4
1736                         echo $n \"[\$xxxm] $c\" >&4
1737                 else
1738                         echo $n \"\$rp [\$xxxm] $c\" >&4
1739                 fi
1740                 ;;
1741         esac;;
1742 esac"
1743
1744 : now set up to do reads with possible shell escape and default assignment
1745 cat <<EOSC >myread
1746 $startsh
1747 xxxm=\$dflt
1748 $myecho
1749 ans='!'
1750 case "\$fastread" in
1751 yes) case "\$dflt" in
1752         '') ;;
1753         *) ans='';
1754                 case "\$silent-\$rp" in
1755                 true-) ;;
1756                 *) echo " " >&4;;
1757                 esac;;
1758         esac;;
1759 *) case "\$silent" in
1760         true) case "\$rp" in
1761                 '') ans='';;
1762                 esac;;
1763         esac;;
1764 esac
1765 while expr "X\$ans" : "X!" >/dev/null; do
1766         read answ
1767         set x \$xxxm
1768         shift
1769         aok=''; eval "ans=\\"\$answ\\"" && aok=y
1770         case  "\$answ" in
1771         "!")
1772                 sh 1>&4
1773                 echo " "
1774                 $myecho
1775                 ;;
1776         !*)
1777                 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
1778                 shift
1779                 sh 1>&4 -c "\$*"
1780                 echo " "
1781                 $myecho
1782                 ;;
1783         "\$ans")
1784                 case "\$ans" in
1785                 \\&*)
1786                         set x \`expr "X\$ans" : "X&\(.*\)\$"\`
1787                         shift
1788                         case "\$1" in
1789                         -d)
1790                                 fastread=yes
1791                                 echo "(OK, I'll run with -d after this question.)" >&4
1792                                 ;;
1793                         -*)
1794                                 echo "*** Sorry, \$1 not supported yet." >&4
1795                                 ;;
1796                         esac
1797                         $myecho
1798                         ans=!
1799                         ;;
1800                 esac;;
1801         *)
1802                 case "\$aok" in
1803                 y)
1804                         echo "*** Substitution done -- please confirm."
1805                         xxxm="\$ans"
1806                         ans=\`echo $n "\$ans$c" | tr '$trnl' ' '\`
1807                         xxxm="\$ans"
1808                         ans=!
1809                         ;;
1810                 *)
1811                         echo "*** Error -- try again."
1812                         ans=!
1813                         ;;
1814                 esac
1815                 $myecho
1816                 ;;
1817         esac
1818         case "\$ans\$xxxm\$nostick" in
1819         '')
1820                 ans=!
1821                 $myecho
1822                 ;;
1823         esac
1824 done
1825 case "\$ans" in
1826 '') ans="\$xxxm";;
1827 esac
1828 EOSC
1829
1830 : create .config dir to save info across Configure sessions
1831 test -d ../.config || mkdir ../.config
1832 cat >../.config/README <<EOF
1833 This directory created by Configure to save information that should
1834 persist across sessions for $package.
1835
1836 You may safely delete it if you wish.
1837 EOF
1838
1839 xversion=`awk '/define[         ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
1840 case "$usedevel" in
1841 $define|true|[yY]*) ;;
1842 *) case "$xversion" in
1843    *[13579])
1844         cat >&4 <<EOH
1845 *** WHOA THERE!!! ***
1846
1847     This is an UNSTABLE DEVELOPMENT release.
1848     The version of this $package distribution is $xversion, that is, odd,
1849     (as opposed to even) and that signifies a development release.
1850     If you want a maintenance release, you want an even-numbered version.
1851
1852     Do ***NOT*** install this into production use.
1853     Data corruption and crashes are possible.
1854
1855     It is most seriously suggested that you do not continue any further
1856     unless you want to help in developing and debugging Perl.
1857
1858     If you *still* want to build perl, you can answer 'y' now,
1859     or pass -Dusedevel to Configure.
1860
1861 EOH
1862         rp='Do you really want to continue?'
1863         dflt='n'
1864         . ./myread
1865         case "$ans" in
1866         [yY]) echo >&4 "Okay, continuing."
1867               usedevel="$define" ;;
1868         *) echo >&4 "Okay, bye."
1869            exit 1
1870            ;;
1871         esac
1872         ;;
1873     esac
1874     ;;
1875 esac
1876 case "$usedevel" in
1877 $define|true|[yY]*)
1878         case "$versiononly" in
1879         '') versiononly="$define" ;;
1880         esac
1881         case "$installusrbinperl" in
1882         '') installusrbinperl="$undef" ;;
1883         esac
1884         ;;
1885 esac
1886
1887 : general instructions
1888 needman=true
1889 firsttime=true
1890 user=`(logname) 2>/dev/null`
1891 case "$user" in
1892 '') user=`whoami 2>&1`;;
1893 esac
1894 if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
1895         firsttime=false
1896         echo " "
1897         rp='Would you like to see the instructions?'
1898         dflt=n
1899         . ./myread
1900         case "$ans" in
1901         [yY]*) ;;
1902         *) needman=false;;
1903         esac
1904 fi
1905 if $needman; then
1906         cat <<EOH
1907
1908 This installation shell script will examine your system and ask you questions
1909 to determine how the perl5 package should be installed. If you get
1910 stuck on a question, you may use a ! shell escape to start a subshell or
1911 execute a command.  Many of the questions will have default answers in square
1912 brackets; typing carriage return will give you the default.
1913
1914 On some of the questions which ask for file or directory names you are allowed
1915 to use the ~name construct to specify the login directory belonging to "name",
1916 even if you don't have a shell which knows about that.  Questions where this is
1917 allowed will be marked "(~name ok)".
1918
1919 EOH
1920         rp=''
1921         dflt='Type carriage return to continue'
1922         . ./myread
1923         cat <<'EOH'
1924
1925 The prompter used in this script allows you to use shell variables and
1926 backticks in your answers.  You may use $1, $2, etc...  to refer to the words
1927 in the default answer, as if the default line was a set of arguments given to a
1928 script shell.  This means you may also use $* to repeat the whole default line,
1929 so you do not have to re-type everything to add something to the default.
1930
1931 Everytime there is a substitution, you will have to confirm.  If there is an
1932 error (e.g. an unmatched backtick), the default answer will remain unchanged
1933 and you will be prompted again.
1934
1935 If you are in a hurry, you may run 'Configure -d'.  This will bypass nearly all
1936 the questions and use the computed defaults (or the previous answers if there
1937 was already a config.sh file). Type 'Configure -h' for a list of options.
1938 You may also start interactively and then answer '& -d' at any prompt to turn
1939 on the non-interactive behaviour for the remainder of the execution.
1940
1941 EOH
1942         . ./myread
1943         cat <<EOH
1944
1945 Much effort has been expended to ensure that this shell script will run on any
1946 Unix system.  If despite that it blows up on yours, your best bet is to edit
1947 Configure and run it again.  If you can't run Configure for some reason,
1948 you'll have to generate a config.sh file by hand.  Whatever problems you
1949 have, let me (perlbug@perl.org) know how I blew it.
1950
1951 This installation script affects things in two ways:
1952
1953 1) it may do direct variable substitutions on some of the files included
1954    in this kit.
1955 2) it builds a config.h file for inclusion in C programs.  You may edit
1956    any of these files as the need arises after running this script.
1957
1958 If you make a mistake on a question, there is no easy way to back up to it
1959 currently.  The easiest thing to do is to edit config.sh and rerun all the SH
1960 files.  Configure will offer to let you do this before it runs the SH files.
1961
1962 EOH
1963         dflt='Type carriage return to continue'
1964         . ./myread
1965         case "$firsttime" in
1966         true) echo $user >>../.config/instruct;;
1967         esac
1968 fi
1969
1970 : find out where common programs are
1971 echo " "
1972 echo "Locating common programs..." >&4
1973 cat <<EOSC >loc
1974 $startsh
1975 case \$# in
1976 0) exit 1;;
1977 esac
1978 thing=\$1
1979 shift
1980 dflt=\$1
1981 shift
1982 for dir in \$*; do
1983         case "\$thing" in
1984         .)
1985         if test -d \$dir/\$thing; then
1986                 echo \$dir
1987                 exit 0
1988         fi
1989         ;;
1990         *)
1991         for thisthing in \$dir/\$thing; do
1992                 : just loop through to pick last item
1993         done
1994         if test -f \$thisthing; then
1995                 echo \$thisthing
1996                 exit 0
1997         elif test -f \$dir/\$thing.exe; then
1998                 if test -n "$DJGPP"; then
1999                         echo \$dir/\$thing.exe
2000                 else
2001                         : on Eunice apparently
2002                         echo \$dir/\$thing
2003                 fi
2004                 exit 0
2005         fi
2006         ;;
2007         esac
2008 done
2009 echo \$dflt
2010 exit 1
2011 EOSC
2012 chmod +x loc
2013 $eunicefix loc
2014 loclist="
2015 awk
2016 cat
2017 chmod
2018 comm
2019 cp
2020 echo
2021 expr
2022 grep
2023 ls
2024 make
2025 mkdir
2026 rm
2027 sed
2028 sort
2029 touch
2030 tr
2031 uniq
2032 "
2033 trylist="
2034 Mcc
2035 ar
2036 bison
2037 byacc
2038 cpp
2039 csh
2040 date
2041 egrep
2042 gzip
2043 less
2044 ln
2045 more
2046 nm
2047 nroff
2048 pg
2049 test
2050 uname
2051 zip
2052 "
2053 pth=`echo $PATH | sed -e "s/$p_/ /g"`
2054 pth="$pth /lib /usr/lib"
2055 for file in $loclist; do
2056         eval xxx=\$$file
2057         case "$xxx" in
2058         /*|?:[\\/]*)
2059                 if test -f "$xxx"; then
2060                         : ok
2061                 else
2062                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2063                         xxx=`./loc $file $file $pth`
2064                 fi
2065                 ;;
2066         '') xxx=`./loc $file $file $pth`;;
2067         *) xxx=`./loc $xxx $xxx $pth`;;
2068         esac
2069         eval $file=$xxx
2070         eval _$file=$xxx
2071         case "$xxx" in
2072         /*)
2073                 echo $file is in $xxx.
2074                 ;;
2075         ?:[\\/]*)
2076                 echo $file is in $xxx.
2077                 ;;
2078         *)
2079                 echo "I don't know where '$file' is, and my life depends on it." >&4
2080                 echo "Go find a public domain implementation or fix your PATH setting!" >&4
2081                 exit 1
2082                 ;;
2083         esac
2084 done
2085 echo " "
2086 echo "Don't worry if any of the following aren't found..."
2087 say=offhand
2088 for file in $trylist; do
2089         eval xxx=\$$file
2090         case "$xxx" in
2091         /*|?:[\\/]*)
2092                 if test -f "$xxx"; then
2093                         : ok
2094                 else
2095                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2096                         xxx=`./loc $file $file $pth`
2097                 fi
2098                 ;;
2099         '') xxx=`./loc $file $file $pth`;;
2100         *) xxx=`./loc $xxx $xxx $pth`;;
2101         esac
2102         eval $file=$xxx
2103         eval _$file=$xxx
2104         case "$xxx" in
2105         /*)
2106                 echo $file is in $xxx.
2107                 ;;
2108         ?:[\\/]*)
2109                 echo $file is in $xxx.
2110                 ;;
2111         *)
2112                 echo "I don't see $file out there, $say."
2113                 say=either
2114                 ;;
2115         esac
2116 done
2117 case "$egrep" in
2118 egrep)
2119         echo "Substituting grep for egrep."
2120         egrep=$grep
2121         ;;
2122 esac
2123 case "$ln" in
2124 ln)
2125         echo "Substituting cp for ln."
2126         ln=$cp
2127         ;;
2128 esac
2129 case "$test" in
2130 test)
2131         echo "Hopefully test is built into your sh."
2132         ;;
2133 *)
2134         if `sh -c "PATH= test true" >/dev/null 2>&1`; then
2135                 echo "Using the test built into your sh."
2136                 test=test
2137                 _test=test
2138         fi
2139         ;;
2140 esac
2141 case "$echo" in
2142 echo)
2143         echo "Hopefully echo is built into your sh."
2144         ;;
2145 '') ;;
2146 *)
2147         echo " "
2148 echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
2149         $echo $n "hi there$c" >foo1
2150         echo $n "hi there$c" >foo2
2151         if cmp foo1 foo2 >/dev/null 2>&1; then
2152                 echo "They are compatible.  In fact, they may be identical."
2153         else
2154                 case "$n" in
2155                 '-n') n='' c='\c';;
2156                 *) n='-n' c='';;
2157                 esac
2158                 cat <<FOO
2159 They are not compatible!  You are probably running ksh on a non-USG system.
2160 I'll have to use $echo instead of the builtin, since Bourne shell doesn't
2161 have echo built in and we may have to run some Bourne shell scripts.  That
2162 means I'll have to use '$n$c' to suppress newlines now.  Life is ridiculous.
2163
2164 FOO
2165                 $echo $n "The star should be here-->$c"
2166                 $echo "*"
2167         fi
2168         $rm -f foo1 foo2
2169         ;;
2170 esac
2171
2172 cat <<EOS >checkcc
2173 $startsh
2174 EOS
2175 cat <<'EOSC' >>checkcc
2176 case "$cc" in
2177 '') ;;
2178 *)  $rm -f try try.*
2179     $cat >try.c <<EOM
2180 int main(int argc, char *argv[]) {
2181   return 0;
2182 }
2183 EOM
2184     if $cc -o try $ccflags $ldflags try.c; then
2185        :
2186     else
2187         echo "Uh-oh, the C compiler '$cc' doesn't seem to be working." >&4
2188         despair=yes
2189         trygcc=yes
2190         case "$cc" in
2191         *gcc*) trygcc=no ;;
2192         esac
2193         case "`$cc -v -c try.c 2>&1`" in
2194         *gcc*) trygcc=no ;;
2195         esac
2196         if $test X"$trygcc" = Xyes; then
2197             if gcc -o try -c try.c; then
2198                 echo " "
2199                 echo "You seem to have a working gcc, though." >&4
2200                 rp="Would you like to use it?"
2201                 dflt=y
2202                 if $test -f myread; then
2203                     . ./myread
2204                 else
2205                     if $test -f UU/myread; then
2206                         . ./UU/myread
2207                     else
2208                         echo "Cannot find myread, sorry.  Aborting." >&2
2209                         exit 1
2210                     fi
2211                 fi  
2212                 case "$ans" in
2213                 [yY]*) cc=gcc; ccname=gcc; ccflags=''; despair=no ;;
2214                 esac
2215             fi
2216         fi
2217         if $test X"$despair" = Xyes; then
2218             $cat >&4 <<EOM
2219 You need to find a working C compiler.
2220 Either (purchase and) install the C compiler supplied by your OS vendor,
2221 or for a free C compiler try http://gcc.gnu.org/
2222 I cannot continue any further, aborting.
2223 EOM
2224             exit 1
2225         fi
2226     fi
2227     $rm -f try try.*
2228     ;;
2229 esac
2230 EOSC
2231
2232 : determine whether symbolic links are supported
2233 echo " "
2234 $touch blurfl
2235 if $ln -s blurfl sym > /dev/null 2>&1 ; then
2236         echo "Symbolic links are supported." >&4
2237         lns="$ln -s"
2238 else
2239         echo "Symbolic links are NOT supported." >&4
2240         lns="$ln"
2241 fi
2242 $rm -f blurfl sym
2243
2244 : determine whether symbolic links are supported
2245 echo " "
2246 case "$lns" in
2247 *"ln -s")
2248         echo "Checking how to test for symbolic links..." >&4
2249         $lns blurfl sym
2250         if $test "X$issymlink" = X; then
2251                 sh -c "PATH= test -h sym" >/dev/null 2>&1
2252                 if test $? = 0; then
2253                         issymlink="test -h"
2254                 fi              
2255         fi
2256         if $test "X$issymlink" = X; then
2257                 if  $test -h >/dev/null 2>&1; then
2258                         issymlink="$test -h"
2259                         echo "Your builtin 'test -h' may be broken, I'm using external '$test -h'." >&4
2260                 fi              
2261         fi
2262         if $test "X$issymlink" = X; then
2263                 if $test -L sym 2>/dev/null; then
2264                         issymlink="$test -L"
2265                 fi
2266         fi
2267         if $test "X$issymlink" != X; then
2268                 echo "You can test for symbolic links with '$issymlink'." >&4
2269         else
2270                 echo "I do not know how you can test for symbolic links." >&4
2271         fi
2272         $rm -f blurfl sym
2273         ;;
2274 *)      echo "No symbolic links, so not testing for their testing..." >&4
2275         ;;
2276 esac
2277 echo " "
2278
2279
2280 case "$mksymlinks" in
2281 $define|true|[yY]*)
2282         case "$src" in
2283         ''|'.') echo "Cannot create symlinks in the original directory." >&4
2284                 exit 1
2285                 ;;
2286         *)      case "$lns:$issymlink" in
2287                 *"ln -s:"*"test -"?)
2288                         echo "Creating the symbolic links..." >&4
2289                         echo "(First creating the subdirectories...)" >&4
2290                         cd ..
2291                         awk '{print $1}' $src/MANIFEST | grep / | sed 's:/[^/]*$::' | sort -u | while true; do
2292                                 read directory
2293                                 test -z "$directory" && break
2294                                 mkdir -p $directory
2295                         done
2296                         # Sanity check 1.
2297                         if test ! -d t/base; then
2298                                 echo "Failed to create the subdirectories.  Aborting." >&4
2299                                 exit 1
2300                         fi
2301                         echo "(Then creating the symlinks...)" >&4
2302                         awk '{print $1}' $src/MANIFEST | while true; do
2303                                 read filename
2304                                 test -z "$filename" && break
2305                                 if test -f $filename; then
2306                                         if $issymlink $filename; then
2307                                                 rm -f $filename
2308                                         fi
2309                                 fi
2310                                 if test -f $filename; then
2311                                         echo "$filename already exists, not symlinking."
2312                                 else
2313                                         ln -s $src/$filename $filename
2314                                 fi
2315                         done
2316                         # Sanity check 2.
2317                         if test ! -f t/base/lex.t; then
2318                                 echo "Failed to create the symlinks (t/base/lex.t missing).  Aborting." >&4
2319                                 exit 1
2320                         fi
2321                         cd UU
2322                         ;;
2323                 *)      echo "(I cannot figure out how to do symbolic links, ignoring mksymlinks)." >&4
2324                         ;;
2325                 esac
2326                 ;;
2327         esac
2328         ;;
2329 esac
2330
2331
2332 case "$usecrosscompile" in
2333 $define|true|[yY]*)
2334         $echo "Cross-compiling..."
2335         croak=''
2336         case "$cc" in
2337         *-*-gcc) # A cross-compiling gcc, probably.
2338             targetarch=`$echo $cc|$sed 's/-gcc$//'`
2339             ar=$targetarch-ar
2340             # leave out ld, choosing it is more complex
2341             nm=$targetarch-nm
2342             ranlib=$targetarch-ranlib
2343             $echo 'extern int foo;' > try.c
2344             set X `$cc -v -E try.c 2>&1 | $awk '/^#include </,/^End of search /'|$grep '/include'`
2345             shift
2346             if $test $# -gt 0; then
2347                 incpth="$incpth $*"
2348                 incpth="`$echo $incpth|$sed 's/^ //'`"
2349                 echo "Guessing incpth '$incpth'." >&4
2350                 for i in $*; do
2351                     j="`$echo $i|$sed 's,/include$,/lib,'`"
2352                     if $test -d $j; then
2353                         libpth="$libpth $j"
2354                     fi
2355                 done   
2356                 libpth="`$echo $libpth|$sed 's/^ //'`"
2357                 echo "Guessing libpth '$libpth'." >&4
2358             fi
2359             $rm -f try.c
2360             ;;
2361         esac
2362         case "$targetarch" in
2363         '') echo "Targetarch not defined." >&4; croak=y ;;
2364         *)  echo "Using targetarch $targetarch." >&4 ;;
2365         esac
2366         case "$incpth" in
2367         '') echo "Incpth not defined." >&4; croak=y ;;
2368         *)  echo "Using incpth '$incpth'." >&4 ;;
2369         esac
2370         case "$libpth" in
2371         '') echo "Libpth not defined." >&4; croak=y ;;
2372         *)  echo "Using libpth '$libpth'." >&4 ;;
2373         esac
2374         case "$usrinc" in
2375         '') for i in $incpth; do
2376                 if $test -f $i/errno.h -a -f $i/stdio.h -a -f $i/time.h; then
2377                     usrinc=$i
2378                     echo "Guessing usrinc $usrinc." >&4
2379                     break
2380                 fi
2381             done
2382             case "$usrinc" in
2383             '') echo "Usrinc not defined." >&4; croak=y ;;
2384             esac
2385             ;;
2386         *)  echo "Using usrinc $usrinc." >&4 ;;
2387         esac
2388         case "$targethost" in
2389         '') echo "Targethost not defined." >&4; croak=y ;;
2390         *)  echo "Using targethost $targethost." >&4
2391         esac
2392         locincpth=' '
2393         loclibpth=' '
2394         case "$croak" in
2395         y) echo "Cannot continue, aborting." >&4; exit 1 ;;
2396         esac
2397         case "$src" in
2398         /*) run=$src/Cross/run
2399             targetmkdir=$src/Cross/mkdir
2400             to=$src/Cross/to
2401             from=$src/Cross/from
2402             ;;
2403         *)  pwd=`$test -f ../Configure & cd ..; pwd`
2404             run=$pwd/Cross/run
2405             targetmkdir=$pwd/Cross/mkdir
2406             to=$pwd/Cross/to
2407             from=$pwd/Cross/from
2408             ;;
2409         esac
2410         case "$targetrun" in
2411         '') targetrun=ssh ;;
2412         esac
2413         case "$targetto" in
2414         '') targetto=scp ;;
2415         esac
2416         case "$targetfrom" in
2417         '') targetfrom=scp ;;
2418         esac
2419         run=$run-$targetrun
2420         to=$to-$targetto
2421         from=$from-$targetfrom
2422         case "$targetdir" in
2423         '')  targetdir=/tmp
2424              echo "Guessing targetdir $targetdir." >&4
2425              ;;
2426         esac
2427         case "$targetuser" in
2428         '')  targetuser=root
2429              echo "Guessing targetuser $targetuser." >&4
2430              ;;
2431         esac
2432         case "$targetfrom" in
2433         scp)    q=-q ;;
2434         *)      q='' ;;
2435         esac
2436         case "$targetrun" in
2437         ssh|rsh)
2438             cat >$run <<EOF
2439 #!/bin/sh
2440 case "\$1" in
2441 -cwd)
2442   shift
2443   cwd=\$1
2444   shift
2445   ;;
2446 esac
2447 case "\$cwd" in
2448 '') cwd=$targetdir ;;
2449 esac
2450 exe=\$1
2451 shift
2452 if $test ! -f \$exe.xok; then
2453   $to \$exe
2454   $touch \$exe.xok
2455 fi
2456 $targetrun -l $targetuser $targethost "cd \$cwd && ./\$exe \$@"
2457 EOF
2458             ;;
2459         *)  echo "Unknown targetrun '$targetrun'" >&4
2460             exit 1
2461             ;;
2462         esac
2463         case "$targetmkdir" in
2464         */Cross/mkdir)
2465             cat >$targetmkdir <<EOF
2466 #!/bin/sh
2467 $targetrun -l $targetuser $targethost "mkdir -p \$@"
2468 EOF
2469             $chmod a+rx $targetmkdir
2470             ;;
2471         *)  echo "Unknown targetmkdir '$targetmkdir'" >&4
2472             exit 1
2473             ;;
2474         esac
2475         case "$targetto" in
2476         scp|rcp)
2477             cat >$to <<EOF
2478 #!/bin/sh
2479 for f in \$@
2480 do
2481   case "\$f" in
2482   /*)
2483     $targetmkdir \`dirname \$f\`
2484     $targetto $q \$f $targetuser@$targethost:\$f            || exit 1
2485     ;;
2486   *)
2487     $targetmkdir $targetdir/\`dirname \$f\`
2488     $targetto $q \$f $targetuser@$targethost:$targetdir/\$f || exit 1
2489     ;;
2490   esac
2491 done
2492 exit 0
2493 EOF
2494             ;;
2495         cp) cat >$to <<EOF
2496 #!/bin/sh
2497 for f in \$@
2498 do
2499   case "\$f" in
2500   /*)
2501     $mkdir -p $targetdir/\`dirname \$f\`
2502     $cp \$f $targetdir/\$f || exit 1
2503     ;;
2504   *)
2505     $targetmkdir $targetdir/\`dirname \$f\`
2506     $cp \$f $targetdir/\$f || exit 1
2507     ;;
2508   esac
2509 done
2510 exit 0
2511 EOF
2512             ;;
2513         *)  echo "Unknown targetto '$targetto'" >&4
2514             exit 1
2515             ;;
2516         esac
2517         case "$targetfrom" in
2518         scp|rcp)
2519           cat >$from <<EOF
2520 #!/bin/sh
2521 for f in \$@
2522 do
2523   $rm -f \$f
2524   $targetfrom $q $targetuser@$targethost:$targetdir/\$f . || exit 1
2525 done
2526 exit 0
2527 EOF
2528             ;;
2529         cp) cat >$from <<EOF
2530 #!/bin/sh
2531 for f in \$@
2532 do
2533   $rm -f \$f
2534   cp $targetdir/\$f . || exit 1
2535 done
2536 exit 0
2537 EOF
2538             ;;
2539         *)  echo "Unknown targetfrom '$targetfrom'" >&4
2540             exit 1
2541             ;;
2542         esac
2543         if $test ! -f $run; then
2544             echo "Target 'run' script '$run' not found." >&4
2545         else
2546             $chmod a+rx $run
2547         fi
2548         if $test ! -f $to; then
2549             echo "Target 'to' script '$to' not found." >&4
2550         else
2551             $chmod a+rx $to
2552         fi
2553         if $test ! -f $from; then
2554             echo "Target 'from' script '$from' not found." >&4
2555         else
2556             $chmod a+rx $from
2557         fi
2558         if $test ! -f $run -o ! -f $to -o ! -f $from; then
2559             exit 1
2560         fi
2561         cat >&4 <<EOF
2562 Using '$run' for remote execution,
2563 and '$from' and '$to'
2564 for remote file transfer.
2565 EOF
2566         ;;
2567 *)      run=''
2568         to=:
2569         from=:
2570         usecrosscompile='undef'
2571         targetarch=''
2572         ;;
2573 esac
2574
2575 : see whether [:lower:] and [:upper:] are supported character classes
2576 echo " "
2577 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
2578 ABYZ)
2579         echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
2580         up='[:upper:]'
2581         low='[:lower:]'
2582         ;;
2583 *)      # There is a discontinuity in EBCDIC between 'I' and 'J'
2584         # (0xc9 and 0xd1), therefore that is a nice testing point.
2585         if test "X$up" = X -o "X$low" = X; then
2586             case "`echo IJ | $tr '[I-J]' '[i-j]' 2>/dev/null`" in
2587             ij) up='[A-Z]'
2588                 low='[a-z]'
2589                 ;;
2590             esac
2591         fi
2592         if test "X$up" = X -o "X$low" = X; then
2593             case "`echo IJ | $tr I-J i-j 2>/dev/null`" in
2594             ij) up='A-Z'
2595                 low='a-z'
2596                 ;;
2597             esac
2598         fi
2599         if test "X$up" = X -o "X$low" = X; then
2600             case "`echo IJ | od -x 2>/dev/null`" in
2601             *C9D1*|*c9d1*)
2602                 echo "Hey, this might be EBCDIC." >&4
2603                 if test "X$up" = X -o "X$low" = X; then
2604                     case "`echo IJ | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
2605                     ij) up='[A-IJ-RS-Z]'
2606                         low='[a-ij-rs-z]'
2607                         ;;
2608                     esac
2609                 fi
2610                 if test "X$up" = X -o "X$low" = X; then
2611                     case "`echo IJ | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
2612                     ij) up='A-IJ-RS-Z'
2613                         low='a-ij-rs-z'
2614                         ;;
2615                     esac
2616                 fi
2617                 ;;
2618             esac
2619         fi
2620 esac
2621 case "`echo IJ | $tr \"$up\" \"$low\" 2>/dev/null`" in
2622 ij)
2623     echo "Using $up and $low to convert case." >&4
2624     ;;
2625 *)
2626     echo "I don't know how to translate letters from upper to lower case." >&4
2627     echo "Your tr is not acting any way I know of." >&4
2628     exit 1
2629     ;;
2630 esac
2631 : set up the translation script tr, must be called with ./tr of course
2632 cat >tr <<EOSC
2633 $startsh
2634 case "\$1\$2" in
2635 '[A-Z][a-z]') exec $tr '$up' '$low';;
2636 '[a-z][A-Z]') exec $tr '$low' '$up';;
2637 esac
2638 exec $tr "\$@"
2639 EOSC
2640 chmod +x tr
2641 $eunicefix tr
2642
2643 : Try to determine whether config.sh was made on this system
2644 case "$config_sh" in
2645 '')
2646 myuname=`$uname -a 2>/dev/null`
2647 $test -z "$myuname" && myuname=`hostname 2>/dev/null`
2648 # tr '[A-Z]' '[a-z]' would not work in EBCDIC
2649 # because the A-Z/a-z are not consecutive.
2650 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
2651         ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
2652 newmyuname="$myuname"
2653 dflt=n
2654 case "$knowitall" in
2655 '')
2656         if test -f ../config.sh; then
2657                 if $contains myuname= ../config.sh >/dev/null 2>&1; then
2658                         eval "`grep myuname= ../config.sh`"
2659                 fi
2660                 if test "X$myuname" = "X$newmyuname"; then
2661                         dflt=y
2662                 fi
2663         fi
2664         ;;
2665 *) dflt=y;;
2666 esac
2667
2668 : Get old answers from old config file if Configure was run on the
2669 : same system, otherwise use the hints.
2670 hint=default
2671 cd ..
2672 if test -f config.sh; then
2673         echo " "
2674         rp="I see a config.sh file.  Shall I use it to set the defaults?"
2675         . UU/myread
2676         case "$ans" in
2677         n*|N*) echo "OK, I'll ignore it."
2678                 mv config.sh config.sh.old
2679                 myuname="$newmyuname"
2680                 ;;
2681         *)  echo "Fetching default answers from your old config.sh file..." >&4
2682                 tmp_n="$n"
2683                 tmp_c="$c"
2684                 tmp_sh="$sh"
2685                 . ./config.sh
2686                 cp config.sh UU
2687                 n="$tmp_n"
2688                 c="$tmp_c"
2689                 : Older versions did not always set $sh.  Catch re-use of such
2690                 : an old config.sh.
2691                 case "$sh" in
2692                 '') sh="$tmp_sh" ;;
2693                 esac
2694                 hint=previous
2695                 ;;
2696         esac
2697 fi
2698 . ./UU/checkcc
2699 if test ! -f config.sh; then
2700         $cat <<EOM
2701
2702 First time through, eh?  I have some defaults handy for some systems
2703 that need some extra help getting the Configure answers right:
2704
2705 EOM
2706         (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/   /g' >&4
2707         dflt=''
2708         : Half the following guesses are probably wrong... If you have better
2709         : tests or hints, please send them to perlbug@perl.org
2710         : The metaconfig authors would also appreciate a copy...
2711         $test -f /irix && osname=irix
2712         $test -f /xenix && osname=sco_xenix
2713         $test -f /dynix && osname=dynix
2714         $test -f /dnix && osname=dnix
2715         $test -f /lynx.os && osname=lynxos
2716         $test -f /unicos && osname=unicos && osvers=`$uname -r`
2717         $test -f /unicosmk && osname=unicosmk && osvers=`$uname -r`
2718         $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
2719         $test -f /bin/mips && /bin/mips && osname=mips
2720         $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
2721                 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
2722         $test -d /usr/apollo/bin && osname=apollo
2723         $test -f /etc/saf/_sactab && osname=svr4
2724         $test -d /usr/include/minix && osname=minix
2725         if $test -d /MachTen -o -d /MachTen_Folder; then
2726                 osname=machten
2727                 if $test -x /sbin/version; then
2728                         osvers=`/sbin/version | $awk '{print $2}' |
2729                         $sed -e 's/[A-Za-z]$//'`
2730                 elif $test -x /usr/etc/version; then
2731                         osvers=`/usr/etc/version | $awk '{print $2}' |
2732                         $sed -e 's/[A-Za-z]$//'`
2733                 else
2734                         osvers="$2.$3"
2735                 fi
2736         fi
2737
2738         $test -f /sys/posix.dll &&
2739                 $test -f /usr/bin/what &&
2740                 set X `/usr/bin/what /sys/posix.dll` &&
2741                 $test "$3" = UWIN &&
2742                 osname=uwin &&
2743                 osvers="$5"
2744
2745         if $test -f $uname; then
2746                 set X $myuname
2747                 shift
2748
2749                 case "$5" in
2750                 fps*) osname=fps ;;
2751                 mips*)
2752                         case "$4" in
2753                         umips) osname=umips ;;
2754                         *) osname=mips ;;
2755                         esac;;
2756                 [23]100) osname=mips ;;
2757                 next*) osname=next ;;
2758                 i386*)
2759                         tmp=`/bin/uname -X 2>/dev/null|awk '/3\.2v[45]/{ print $(NF) }'`
2760                         if $test "$tmp" != "" -a "$3" = "3.2" -a -f '/etc/systemid'; then
2761                                 osname='sco'
2762                                 osvers=$tmp
2763                         elif $test -f /etc/kconfig; then
2764                                 osname=isc
2765                                 if test "$lns" = "$ln -s"; then
2766                                         osvers=4
2767                                 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
2768                                         osvers=3
2769                                 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
2770                                         osvers=2
2771                                 fi
2772                         fi
2773                         tmp=''
2774                         ;;
2775                 pc*)
2776                         if test -n "$DJGPP"; then
2777                                 osname=dos
2778                                 osvers=djgpp
2779                         fi
2780                         ;;
2781                 esac
2782
2783                 case "$1" in
2784                 aix) osname=aix
2785                         tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
2786                         case "$tmp" in
2787                         'not found') osvers="$4"."$3" ;;
2788                         '<3240'|'<>3240') osvers=3.2.0 ;;
2789                         '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
2790                         '=3250'|'>3250') osvers=3.2.5 ;;
2791                         *) osvers=$tmp;;
2792                         esac
2793                         ;;
2794                 bsd386) osname=bsd386
2795                         osvers=`$uname -r`
2796                         ;;
2797                 cygwin*) osname=cygwin
2798                         osvers="$3"
2799                         ;;
2800                 *dc.osx) osname=dcosx
2801                         osvers="$3"
2802                         ;;
2803                 dnix) osname=dnix
2804                         osvers="$3"
2805                         ;;
2806                 domainos) osname=apollo
2807                         osvers="$3"
2808                         ;;
2809                 dgux) osname=dgux 
2810                         osvers="$3"
2811                         ;;
2812                 dynixptx*) osname=dynixptx
2813                         osvers=`echo "$4"|sed 's/^v//'`
2814                         ;;
2815                 freebsd) osname=freebsd 
2816                         osvers="$3" ;;
2817                 genix) osname=genix ;;
2818                 hp*) osname=hpux 
2819                         osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
2820                         ;;
2821                 irix*) osname=irix
2822                         case "$3" in
2823                         4*) osvers=4 ;;
2824                         5*) osvers=5 ;;
2825                         *)      osvers="$3" ;;
2826                         esac
2827                         ;;
2828                 linux) osname=linux
2829                         case "$3" in
2830                         *)      osvers="$3" ;;
2831                         esac
2832                         ;;
2833                 MiNT) osname=mint
2834                         ;;
2835                 netbsd*) osname=netbsd
2836                         osvers="$3"
2837                         ;;
2838                 news-os) osvers="$3"
2839                         case "$3" in
2840                         4*) osname=newsos4 ;;
2841                         *) osname=newsos ;;
2842                         esac
2843                         ;;
2844                 next*) osname=next ;;
2845                 nonstop-ux) osname=nonstopux ;;
2846                 POSIX-BC | posix-bc ) osname=posix-bc
2847                         osvers="$3"
2848                         ;;
2849                 powerux | power_ux | powermax_os | powermaxos | \
2850                 powerunix | power_unix) osname=powerux
2851                         osvers="$3"
2852                         ;;
2853                 qnx) osname=qnx
2854                         osvers="$4"
2855                         ;;
2856                 solaris) osname=solaris
2857                         case "$3" in
2858                         5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2859                         *)      osvers="$3" ;;
2860                         esac
2861                         ;;
2862                 sunos) osname=sunos
2863                         case "$3" in
2864                         5*) osname=solaris
2865                                 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2866                         *)      osvers="$3" ;;
2867                         esac
2868                         ;;
2869                 titanos) osname=titanos
2870                         case "$3" in
2871                         1*) osvers=1 ;;
2872                         2*) osvers=2 ;;
2873                         3*) osvers=3 ;;
2874                         4*) osvers=4 ;;
2875                         *)      osvers="$3" ;;
2876                         esac
2877                         ;;
2878                 ultrix) osname=ultrix
2879                         osvers="$3"
2880                         ;;
2881                 osf1|mls+)      case "$5" in
2882                                 alpha)
2883                                         osname=dec_osf
2884                                         osvers=`sizer -v | awk '{print $3}' |  tr '[A-Z]' '[a-z]' | sed 's/^[xvt]//'`
2885                                         case "$osvers" in
2886                                         [1-9].[0-9]*) ;;
2887                                         *) osvers=`echo "$3" | sed 's/^[xvt]//'` ;;
2888                                         esac
2889                                         ;;
2890                         hp*)    osname=hp_osf1  ;;
2891                         mips)   osname=mips_osf1 ;;
2892                         esac
2893                         ;;
2894                 unixware) osname=svr5
2895                         osvers="$4"
2896                         ;;
2897                 uts) osname=uts
2898                         osvers="$3"
2899                         ;;
2900                 $2) case "$osname" in
2901                         *isc*) ;;
2902                         *freebsd*) ;;
2903                         svr*)
2904                                 : svr4.x or possibly later
2905                                 case "svr$3" in 
2906                                 ${osname}*)
2907                                         osname=svr$3
2908                                         osvers=$4
2909                                         ;;
2910                                 esac
2911                                 case "$osname" in
2912                                 svr4.0)
2913                                         : Check for ESIX
2914                                         if test -f /stand/boot ; then
2915                                                 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
2916                                                 if test -n "$INITPROG" -a -f "$INITPROG"; then
2917                         isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
2918                                                         if test -n "$isesix"; then
2919                                                                 osname=esix4
2920                                                         fi
2921                                                 fi
2922                                         fi
2923                                         ;;
2924                                 esac
2925                                 ;;
2926                         *)      if test -f /etc/systemid; then
2927                                         osname=sco
2928                                         set `echo $3 | $sed 's/\./ /g'` $4
2929                                         if $test -f $src/hints/sco_$1_$2_$3.sh; then
2930                                                 osvers=$1.$2.$3
2931                                         elif $test -f $src/hints/sco_$1_$2.sh; then
2932                                                 osvers=$1.$2
2933                                         elif $test -f $src/hints/sco_$1.sh; then
2934                                                 osvers=$1
2935                                         fi
2936                                 else
2937                                         case "$osname" in
2938                                         '') : Still unknown.  Probably a generic Sys V.
2939                                                 osname="sysv"
2940                                                 osvers="$3"
2941                                                 ;;
2942                                         esac
2943                                 fi
2944                                 ;;
2945                         esac
2946                         ;;
2947                 *)      case "$osname" in
2948                         '') : Still unknown.  Probably a generic BSD.
2949                                 osname="$1"
2950                                 osvers="$3"
2951                                 ;;
2952                         esac
2953                         ;;
2954                 esac
2955         else
2956                 if test -f /vmunix -a -f $src/hints/news_os.sh; then
2957                         (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
2958                         if $contains news-os UU/kernel.what >/dev/null 2>&1; then
2959                                 osname=news_os
2960                         fi
2961                         $rm -f UU/kernel.what
2962                 elif test -d c:/.; then
2963                         set X $myuname
2964                         osname=os2
2965                         osvers="$5"
2966                 fi
2967         fi
2968         
2969         case "$targetarch" in
2970         '') ;;
2971         *)  hostarch=$osname
2972             osname=`echo $targetarch|sed 's,^[^-]*-,,'`
2973             osvers=''
2974             ;;
2975         esac
2976
2977         : Now look for a hint file osname_osvers, unless one has been
2978         : specified already.
2979         case "$hintfile" in
2980         ''|' ')
2981                 file=`echo "${osname}_${osvers}" | $sed -e 's%\.%_%g' -e 's%_$%%'`
2982                 : Also try without trailing minor version numbers.
2983                 xfile=`echo $file | $sed -e 's%_[^_]*$%%'`
2984                 xxfile=`echo $xfile | $sed -e 's%_[^_]*$%%'`
2985                 xxxfile=`echo $xxfile | $sed -e 's%_[^_]*$%%'`
2986                 xxxxfile=`echo $xxxfile | $sed -e 's%_[^_]*$%%'`
2987                 case "$file" in
2988                 '') dflt=none ;;
2989                 *)  case "$osvers" in
2990                         '') dflt=$file
2991                                 ;;
2992                         *)  if $test -f $src/hints/$file.sh ; then
2993                                         dflt=$file
2994                                 elif $test -f $src/hints/$xfile.sh ; then
2995                                         dflt=$xfile
2996                                 elif $test -f $src/hints/$xxfile.sh ; then
2997                                         dflt=$xxfile
2998                                 elif $test -f $src/hints/$xxxfile.sh ; then
2999                                         dflt=$xxxfile
3000                                 elif $test -f $src/hints/$xxxxfile.sh ; then
3001                                         dflt=$xxxxfile
3002                                 elif $test -f "$src/hints/${osname}.sh" ; then
3003                                         dflt="${osname}"
3004                                 else
3005                                         dflt=none
3006                                 fi
3007                                 ;;
3008                         esac
3009                         ;;
3010                 esac
3011                 if $test -f Policy.sh ; then
3012                         case "$dflt" in
3013                         *Policy*) ;;
3014                         none) dflt="Policy" ;;
3015                         *) dflt="Policy $dflt" ;;
3016                         esac
3017                 fi
3018                 ;;
3019         *)
3020                 dflt=`echo $hintfile | $sed 's/\.sh$//'`
3021                 ;;
3022         esac
3023
3024         if $test -f Policy.sh ; then
3025                 $cat <<EOM
3026
3027 There's also a Policy hint file available, which should make the
3028 site-specific (policy) questions easier to answer.
3029 EOM
3030
3031         fi
3032
3033         $cat <<EOM
3034
3035 You may give one or more space-separated answers, or "none" if appropriate.
3036 A well-behaved OS will have no hints, so answering "none" or just "Policy"
3037 is a good thing.  DO NOT give a wrong version or a wrong OS.
3038
3039 EOM
3040
3041         rp="Which of these apply, if any?"
3042         . UU/myread
3043         tans=$ans
3044         for file in $tans; do
3045                 if $test X$file = XPolicy -a -f Policy.sh; then
3046                         . Policy.sh
3047                         $cat Policy.sh >> UU/config.sh
3048                 elif $test -f $src/hints/$file.sh; then
3049                         . $src/hints/$file.sh
3050                         $cat $src/hints/$file.sh >> UU/config.sh
3051                 elif $test X"$tans" = X -o X"$tans" = Xnone ; then
3052                         : nothing
3053                 else
3054                         : Give one chance to correct a possible typo.
3055                         echo "$file.sh does not exist"
3056                         dflt=$file
3057                         rp="hint to use instead?"
3058                         . UU/myread
3059                         for file in $ans; do
3060                                 if $test -f "$src/hints/$file.sh"; then
3061                                         . $src/hints/$file.sh
3062                                         $cat $src/hints/$file.sh >> UU/config.sh
3063                                 elif $test X$ans = X -o X$ans = Xnone ; then
3064                                         : nothing
3065                                 else
3066                                         echo "$file.sh does not exist -- ignored."
3067                                 fi
3068                         done
3069                 fi
3070         done
3071
3072         hint=recommended
3073         : Remember our hint file for later.
3074         if $test -f "$src/hints/$file.sh" ; then
3075                 hintfile="$file"
3076         else
3077                 hintfile=''
3078         fi
3079 fi
3080 cd UU
3081 ;;
3082 *)
3083         echo " "
3084         echo "Fetching default answers from $config_sh..." >&4
3085         tmp_n="$n"
3086         tmp_c="$c"
3087         cd ..
3088         cp $config_sh config.sh 2>/dev/null
3089         chmod +w config.sh
3090         . ./config.sh
3091         cd UU
3092         cp ../config.sh .
3093         n="$tmp_n"
3094         c="$tmp_c"
3095         hint=previous
3096         ;;
3097 esac
3098 test "$override" && . ./optdef.sh
3099
3100 : Restore computed paths
3101 for file in $loclist $trylist; do
3102         eval $file="\$_$file"
3103 done
3104
3105 cat << EOM
3106
3107 Configure uses the operating system name and version to set some defaults.
3108 The default value is probably right if the name rings a bell. Otherwise,
3109 since spelling matters for me, either accept the default or answer "none"
3110 to leave it blank.
3111
3112 EOM
3113 case "$osname" in
3114         ''|' ')
3115                 case "$hintfile" in
3116                 ''|' '|none) dflt=none ;;
3117                 *)  dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
3118                 esac
3119                 ;;
3120         *) dflt="$osname" ;;
3121 esac
3122 rp="Operating system name?"
3123 . ./myread
3124 case "$ans" in
3125 none)  osname='' ;;
3126 *) osname=`echo "$ans" | $sed -e 's/[   ][      ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
3127 esac
3128 echo " "
3129 case "$osvers" in
3130         ''|' ')
3131                 case "$hintfile" in
3132                 ''|' '|none) dflt=none ;;
3133                 *)      dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
3134                         dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
3135                         case "$dflt" in
3136                         ''|' ') dflt=none ;;
3137                         esac
3138                         ;;
3139                 esac
3140                 ;;
3141         *) dflt="$osvers" ;;
3142 esac
3143 rp="Operating system version?"
3144 . ./myread
3145 case "$ans" in
3146 none)  osvers='' ;;
3147 *) osvers="$ans" ;;
3148 esac
3149
3150
3151 . ./posthint.sh
3152
3153 : who configured the system
3154 cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
3155 cf_by=`(logname) 2>/dev/null`
3156 case "$cf_by" in
3157 "")
3158         cf_by=`(whoami) 2>/dev/null`
3159         case "$cf_by" in
3160         "") cf_by=unknown ;;
3161         esac ;;
3162 esac
3163
3164 : set up the script used to warn in case of inconsistency
3165 cat <<EOS >whoa
3166 $startsh
3167 EOS
3168 cat <<'EOSC' >>whoa
3169 dflt=y
3170 echo " "
3171 echo "*** WHOA THERE!!! ***" >&4
3172 echo "    The $hint value for \$$var on this machine was \"$was\"!" >&4
3173 rp="    Keep the $hint value?"
3174 . ./myread
3175 case "$ans" in
3176 y) td=$was; tu=$was;;
3177 esac
3178 EOSC
3179
3180 : function used to set $1 to $val
3181 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
3182 case "$val$was" in
3183 $define$undef) . ./whoa; eval "$var=\$td";;
3184 $undef$define) . ./whoa; eval "$var=\$tu";;
3185 *) eval "$var=$val";;
3186 esac'
3187
3188 case "$usethreads" in
3189 $define|true|[yY]*)     dflt='y';;
3190 *) dflt='n';;
3191 esac
3192 cat <<EOM
3193
3194 Perl can be built to take advantage of threads on some systems.
3195 To do so, Configure can be run with -Dusethreads.
3196
3197 Note that threading is a highly experimental feature, and
3198 some known race conditions still remain.  If you choose to try
3199 it, be very sure to not actually deploy it for production
3200 purposes.  README.threads has more details, and is required
3201 reading if you enable threads.
3202
3203 If this doesn't make any sense to you, just accept the default '$dflt'.
3204 EOM
3205 rp='Build a threading Perl?'
3206 . ./myread
3207 case "$ans" in
3208 y|Y)    val="$define" ;;
3209 *)      val="$undef" ;;
3210 esac
3211 set usethreads
3212 eval $setvar
3213
3214 case "$usethreads" in
3215 $define)
3216         $cat <<EOM
3217
3218 As of 5.5.640, Perl has two different internal threading implementations,
3219 the 5.005 version (5005threads) and an interpreter-based version
3220 (ithreads) that has one interpreter per thread.  Both are very 
3221 experimental.  This arrangement exists to help developers work out
3222 which one is better.
3223
3224 If you're a casual user, you probably don't want interpreter-threads
3225 at this time.  There doesn't yet exist a way to create threads from
3226 within Perl in this model, i.e., "use Thread;" will NOT work.
3227 EOM
3228         : Default to ithreads unless overridden on command line or with
3229         : old config.sh
3230         dflt='y'
3231         case "$use5005threads" in
3232                 $define|true|[yY]*) dflt='n';;
3233         esac
3234         case "$useithreads" in
3235                 $undef|false|[nN]*) dflt='n';;
3236         esac
3237         rp='Use interpreter-based ithreads?'
3238         . ./myread
3239         case "$ans" in
3240         y|Y)    val="$define" ;;
3241         *)      val="$undef" ;;
3242         esac
3243         set useithreads
3244         eval $setvar
3245         : Now set use5005threads to the opposite value.
3246         case "$useithreads" in
3247         $define) val="$undef" ;;
3248         *) val="$define" ;;
3249         esac
3250         set use5005threads
3251         eval $setvar
3252         ;;
3253 *)
3254         useithreads="$undef"
3255         use5005threads="$undef"
3256         ;;
3257 esac
3258
3259 case "$useithreads$use5005threads" in
3260 "$define$define")
3261         $cat >&4 <<EOM
3262
3263 You cannot have both the ithreads and the 5.005 threads enabled
3264 at the same time.  Disabling the 5.005 threads since they are
3265 much less stable than the ithreads.
3266
3267 EOM
3268         use5005threads="$undef"
3269         ;;
3270 esac
3271
3272 case "$d_oldpthreads" in
3273 '')     : Configure tests would be welcome here.  For now, assume undef.
3274         val="$undef" ;;
3275 *)      val="$d_oldpthreads" ;;
3276 esac
3277 set d_oldpthreads
3278 eval $setvar
3279
3280
3281 case "$usethreads" in
3282 "$define"|true|[yY]*)
3283 : Look for a hint-file generated 'call-back-unit'.  If the
3284 : user has specified that a threading perl is to be built,
3285 : we may need to set or change some other defaults.
3286         if $test -f usethreads.cbu; then
3287                 echo "Your platform has some specific hints for threaded builds, using them..."
3288                 . ./usethreads.cbu
3289         else
3290                 $cat <<EOM
3291 (Your platform doesn't have any specific hints for threaded builds.
3292  Assuming POSIX threads, then.)
3293 EOM
3294         fi
3295         ;;
3296 esac
3297
3298 cat <<EOM
3299
3300 Perl can be built so that multiple Perl interpreters can coexist
3301 within the same Perl executable.
3302 EOM
3303
3304 case "$useithreads" in
3305 $define)
3306         cat <<EOM
3307 This multiple interpreter support is required for interpreter-based threads.
3308 EOM
3309         val="$define"
3310         ;;
3311 *)      case "$usemultiplicity" in
3312         $define|true|[yY]*)     dflt='y';;
3313         *) dflt='n';;
3314         esac
3315         echo " "
3316         echo "If this doesn't make any sense to you, just accept the default '$dflt'."
3317         rp='Build Perl for multiplicity?'
3318         . ./myread
3319         case "$ans" in
3320         y|Y)    val="$define" ;;
3321         *)      val="$undef" ;;
3322         esac
3323         ;;
3324 esac
3325 set usemultiplicity
3326 eval $setvar
3327
3328
3329 case "$usemorebits" in
3330 "$define"|true|[yY]*)
3331         use64bitint="$define"
3332         uselongdouble="$define"
3333         usemorebits="$define"
3334         ;;
3335 *)      usemorebits="$undef"
3336         ;;
3337 esac
3338
3339 : make some quick guesses about what we are up against
3340 echo " "
3341 $echo $n "Hmm...  $c"
3342 echo exit 1 >bsd
3343 echo exit 1 >usg
3344 echo exit 1 >v7
3345 echo exit 1 >osf1
3346 echo exit 1 >eunice
3347 echo exit 1 >xenix
3348 echo exit 1 >venix
3349 echo exit 1 >os2
3350 d_bsd="$undef"
3351 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
3352 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
3353 then
3354         echo "Looks kind of like an OSF/1 system, but we'll see..."
3355         echo exit 0 >osf1
3356 elif test `echo abc | $tr a-z A-Z` = Abc ; then
3357         xxx=`./loc addbib blurfl $pth`
3358         if $test -f $xxx; then
3359         echo "Looks kind of like a USG system with BSD features, but we'll see..."
3360                 echo exit 0 >bsd
3361                 echo exit 0 >usg
3362         else
3363                 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
3364                         echo "Looks kind of like an extended USG system, but we'll see..."
3365                 else
3366                         echo "Looks kind of like a USG system, but we'll see..."
3367                 fi
3368                 echo exit 0 >usg
3369         fi
3370 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
3371         echo "Looks kind of like a BSD system, but we'll see..."
3372         d_bsd="$define"
3373         echo exit 0 >bsd
3374 else
3375         echo "Looks kind of like a Version 7 system, but we'll see..."
3376         echo exit 0 >v7
3377 fi
3378 case "$eunicefix" in
3379 *unixtovms*)
3380         $cat <<'EOI'
3381 There is, however, a strange, musty smell in the air that reminds me of
3382 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
3383 EOI
3384         echo exit 0 >eunice
3385         d_eunice="$define"
3386 : it so happens the Eunice I know will not run shell scripts in Unix format
3387         ;;
3388 *)
3389         echo " "
3390         echo "Congratulations.  You aren't running Eunice."
3391         d_eunice="$undef"
3392         ;;
3393 esac
3394 : Detect OS2.  The p_ variable is set above in the Head.U unit.
3395 : Note that this also -- wrongly -- detects e.g. dos-djgpp, which also uses
3396 : semicolon as a patch separator
3397 case "$p_" in
3398 :) ;;
3399 *)
3400         $cat <<'EOI'
3401 I have the feeling something is not exactly right, however...don't tell me...
3402 lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
3403 (Or you may be running DOS with DJGPP.)
3404 EOI
3405         echo exit 0 >os2
3406         ;;
3407 esac
3408 if test -f /xenix; then
3409         echo "Actually, this looks more like a XENIX system..."
3410         echo exit 0 >xenix
3411         d_xenix="$define"
3412 else
3413         echo " "
3414         echo "It's not Xenix..."
3415         d_xenix="$undef"
3416 fi
3417 chmod +x xenix
3418 $eunicefix xenix
3419 if test -f /venix; then
3420         echo "Actually, this looks more like a VENIX system..."
3421         echo exit 0 >venix
3422 else
3423         echo " "
3424         if ./xenix; then
3425                 : null
3426         else
3427                 echo "Nor is it Venix..."
3428         fi
3429 fi
3430 chmod +x bsd usg v7 osf1 eunice xenix venix os2
3431 $eunicefix bsd usg v7 osf1 eunice xenix venix os2
3432 $rm -f foo
3433
3434 case "$cc" in
3435 '') dflt=cc;;
3436 *) dflt="$cc";;
3437 esac
3438 rp="Use which C compiler?"
3439 . ./myread
3440 cc="$ans"
3441 : Look for a hint-file generated 'call-back-unit'.  Now that the
3442 : user has specified the compiler, we may need to set or change some
3443 : other defaults.
3444 if $test -f cc.cbu; then
3445     . ./cc.cbu
3446 fi
3447 . ./checkcc
3448
3449 echo " "
3450 echo "Checking for GNU cc in disguise and/or its version number..." >&4
3451 $cat >try.c <<EOM
3452 #include <stdio.h>
3453 int main() {
3454 #ifdef __GNUC__
3455 #ifdef __VERSION__
3456         printf("%s\n", __VERSION__);
3457 #else
3458         printf("%s\n", "1");
3459 #endif
3460 #endif
3461         exit(0);
3462 }
3463 EOM
3464 if $cc -o try $ccflags $ldflags try.c; then
3465         gccversion=`$run ./try`
3466         case "$gccversion" in
3467         '') echo "You are not using GNU cc." ;;
3468         *)  echo "You are using GNU cc $gccversion."
3469             ccname=gcc  
3470             ;;
3471         esac
3472 else
3473         echo " "
3474         echo "*** WHOA THERE!!! ***" >&4
3475         echo "    Your C compiler \"$cc\" doesn't seem to be working!" >&4
3476         case "$knowitall" in
3477         '')
3478         echo "    You'd better start hunting for one and let me know about it." >&4
3479                 exit 1
3480                 ;;
3481         esac
3482 fi
3483 $rm -f try try.*
3484 case "$gccversion" in
3485 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3486 esac
3487 case "$gccversion" in
3488 '') gccosandvers='' ;;
3489 *) gccshortvers=`echo "$gccversion"|sed 's/ .*//'`
3490    gccosandvers=`$cc -v 2>&1|grep '/specs$'|sed "s!.*/[^-/]*-[^-/]*-\([^-/]*\)/$gccshortvers/specs!\1!"`
3491    gccshortvers=''
3492    case "$gccosandvers" in
3493    $osname) gccosandvers='' ;; # linux gccs seem to have no linux osvers, grr
3494    $osname$osvers) ;; # looking good
3495    $osname*) cat <<EOM >&4
3496
3497 *** WHOA THERE!!! ***
3498
3499     Your gcc has not been compiled for the exact release of
3500     your operating system ($gccosandvers versus $osname$osvers).
3501
3502     In general it is a good idea to keep gcc synchronized with
3503     the operating system because otherwise serious problems
3504     may ensue when trying to compile software, like Perl.
3505
3506     I'm trying to be optimistic here, though, and will continue.
3507     If later during the configuration and build icky compilation
3508     problems appear (headerfile conflicts being the most common
3509     manifestation), I suggest reinstalling the gcc to match
3510     your operating system release.
3511
3512 EOM
3513       ;;
3514    *) gccosandvers='' ;; # failed to parse, better be silent
3515    esac
3516    ;;
3517 esac
3518 case "$ccname" in
3519 '') ccname="$cc" ;;
3520 esac
3521
3522 case "$gccversion" in
3523 '') ;;
3524 *)  case "$ccflags" in
3525     *-Wall*) ;;
3526     *) ccflags="$ccflags -Wall" ;;
3527     esac
3528     ;;
3529 esac
3530
3531 : decide how portable to be.  Allow command line overrides.
3532 case "$d_portable" in
3533 "$undef") ;;
3534 *)      d_portable="$define" ;;
3535 esac
3536
3537 : set up shell script to do ~ expansion
3538 cat >filexp <<EOSS
3539 $startsh
3540 : expand filename
3541 case "\$1" in
3542  ~/*|~)
3543         echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
3544         ;;
3545  ~*)
3546         if $test -f /bin/csh; then
3547                 /bin/csh -f -c "glob \$1"
3548                 failed=\$?
3549                 echo ""
3550                 exit \$failed
3551         else
3552                 name=\`$expr x\$1 : '..\([^/]*\)'\`
3553                 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
3554                 if $test ! -d "\$dir"; then
3555                         me=\`basename \$0\`
3556                         echo "\$me: can't locate home directory for: \$name" >&2
3557                         exit 1
3558                 fi
3559                 case "\$1" in
3560                 */*)
3561                         echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
3562                         ;;
3563                 *)
3564                         echo \$dir
3565                         ;;
3566                 esac
3567         fi
3568         ;;
3569 *)
3570         echo \$1
3571         ;;
3572 esac
3573 EOSS
3574 chmod +x filexp
3575 $eunicefix filexp
3576
3577 : now set up to get a file name
3578 cat <<EOS >getfile
3579 $startsh
3580 EOS
3581 cat <<'EOSC' >>getfile
3582 tilde=''
3583 fullpath=''
3584 already=''
3585 skip=''
3586 none_ok=''
3587 exp_file=''
3588 nopath_ok=''
3589 orig_rp="$rp"
3590 orig_dflt="$dflt"
3591 case "$gfpth" in
3592 '') gfpth='.' ;;
3593 esac
3594
3595 case "$fn" in
3596 *\(*)
3597         expr $fn : '.*(\(.*\)).*' | $tr ',' $trnl >getfile.ok
3598         fn=`echo $fn | sed 's/(.*)//'`
3599         ;;
3600 esac
3601
3602 case "$fn" in
3603 *:*)
3604         loc_file=`expr $fn : '.*:\(.*\)'`
3605         fn=`expr $fn : '\(.*\):.*'`
3606         ;;
3607 esac
3608
3609 case "$fn" in
3610 *~*) tilde=true;;
3611 esac
3612 case "$fn" in
3613 */*) fullpath=true;;
3614 esac
3615 case "$fn" in
3616 *+*) skip=true;;
3617 esac
3618 case "$fn" in
3619 *n*) none_ok=true;;
3620 esac
3621 case "$fn" in
3622 *e*) exp_file=true;;
3623 esac
3624 case "$fn" in
3625 *p*) nopath_ok=true;;
3626 esac
3627
3628 case "$fn" in
3629 *f*) type='File';;
3630 *d*) type='Directory';;
3631 *l*) type='Locate';;
3632 esac
3633
3634 what="$type"
3635 case "$what" in
3636 Locate) what='File';;
3637 esac
3638
3639 case "$exp_file" in
3640 '')
3641         case "$d_portable" in
3642         "$define") ;;
3643         *) exp_file=true;;
3644         esac
3645         ;;
3646 esac
3647
3648 cd ..
3649 while test "$type"; do
3650         redo=''
3651         rp="$orig_rp"
3652         dflt="$orig_dflt"
3653         case "$tilde" in
3654         true) rp="$rp (~name ok)";;
3655         esac
3656         . UU/myread
3657         if test -f UU/getfile.ok && \
3658                 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
3659         then
3660                 value="$ans"
3661                 ansexp="$ans"
3662                 break
3663         fi
3664         case "$ans" in
3665         none)
3666                 value=''
3667                 ansexp=''
3668                 case "$none_ok" in
3669                 true) type='';;
3670                 esac
3671                 ;;
3672         *)
3673                 case "$tilde" in
3674                 '') value="$ans"
3675                         ansexp="$ans";;
3676                 *)
3677                         value=`UU/filexp $ans`
3678                         case $? in
3679                         0)
3680                                 if test "$ans" != "$value"; then
3681                                         echo "(That expands to $value on this system.)"
3682                                 fi
3683                                 ;;
3684                         *) value="$ans";;
3685                         esac
3686                         ansexp="$value"
3687                         case "$exp_file" in
3688                         '') value="$ans";;
3689                         esac
3690                         ;;
3691                 esac
3692                 case "$fullpath" in
3693                 true)
3694                         case "$ansexp" in
3695                         /*) value="$ansexp" ;;
3696                         [a-zA-Z]:/*) value="$ansexp" ;;
3697                         *)
3698                                 redo=true
3699                                 case "$already" in
3700                                 true)
3701                                 echo "I shall only accept a full path name, as in /bin/ls." >&4
3702                                 echo "Use a ! shell escape if you wish to check pathnames." >&4
3703                                         ;;
3704                                 *)
3705                                 echo "Please give a full path name, starting with slash." >&4
3706                                         case "$tilde" in
3707                                         true)
3708                                 echo "Note that using ~name is ok provided it expands well." >&4
3709                                                 already=true
3710                                                 ;;
3711                                         esac
3712                                 esac
3713                                 ;;
3714                         esac
3715                         ;;
3716                 esac
3717                 case "$redo" in
3718                 '')
3719                         case "$type" in
3720                         File)
3721                                 for fp in $gfpth; do
3722                                         if test "X$fp" = X.; then
3723                                             pf="$ansexp"
3724                                         else    
3725                                             pf="$fp/$ansexp"
3726                                         fi
3727                                         if test -f "$pf"; then
3728                                                 type=''
3729                                         elif test -r "$pf" || (test -h "$pf") >/dev/null 2>&1
3730                                         then
3731                                                 echo "($value is not a plain file, but that's ok.)"
3732                                                 type=''
3733                                         fi
3734                                         if test X"$type" = X; then
3735                                             value="$pf"
3736                                             break
3737                                         fi
3738                                 done
3739                                 ;;
3740                         Directory)
3741                                 for fp in $gfpth; do
3742                                         if test "X$fp" = X.; then
3743                                             dir="$ans"
3744                                             direxp="$ansexp"
3745                                         else    
3746                                             dir="$fp/$ansexp"
3747                                             direxp="$fp/$ansexp"
3748                                         fi
3749                                         if test -d "$direxp"; then
3750                                                 type=''
3751                                                 value="$dir"
3752                                                 break
3753                                         fi
3754                                 done
3755                                 ;;
3756                         Locate)
3757                                 if test -d "$ansexp"; then
3758                                         echo "(Looking for $loc_file in directory $value.)"
3759                                         value="$value/$loc_file"
3760                                         ansexp="$ansexp/$loc_file"
3761                                 fi
3762                                 if test -f "$ansexp"; then
3763                                         type=''
3764                                 fi
3765                                 case "$nopath_ok" in
3766                                 true)   case "$value" in
3767                                         */*) ;;
3768                                         *)      echo "Assuming $value will be in people's path."
3769                                                 type=''
3770                                                 ;;
3771                                         esac
3772                                         ;;
3773                                 esac
3774                                 ;;
3775                         esac
3776
3777                         case "$skip" in
3778                         true) type='';
3779                         esac
3780
3781                         case "$type" in
3782                         '') ;;
3783                         *)
3784                                 if test "$fastread" = yes; then
3785                                         dflt=y
3786                                 else
3787                                         dflt=n
3788                                 fi
3789                                 rp="$what $value doesn't exist.  Use that name anyway?"
3790                                 . UU/myread
3791                                 dflt=''
3792                                 case "$ans" in
3793                                 y*) type='';;
3794                                 *) echo " ";;
3795                                 esac
3796                                 ;;
3797                         esac
3798                         ;;
3799                 esac
3800                 ;;
3801         esac
3802 done
3803 cd UU
3804 ans="$value"
3805 rp="$orig_rp"
3806 dflt="$orig_dflt"
3807 rm -f getfile.ok
3808 test "X$gfpthkeep" != Xy && gfpth=""
3809 EOSC
3810
3811 : What should the include directory be ?
3812 echo " "
3813 $echo $n "Hmm...  $c"
3814 dflt='/usr/include'
3815 incpath=''
3816 mips_type=''
3817 if $test -f /bin/mips && /bin/mips; then
3818         echo "Looks like a MIPS system..."
3819         $cat >usr.c <<'EOCP'
3820 #ifdef SYSTYPE_BSD43
3821 /bsd43
3822 #endif
3823 EOCP
3824         if cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
3825                 dflt='/bsd43/usr/include'
3826                 incpath='/bsd43'
3827                 mips_type='BSD 4.3'
3828         else
3829                 mips_type='System V'
3830         fi
3831         $rm -f usr.c usr.out
3832         echo "and you're compiling with the $mips_type compiler and libraries."
3833         xxx_prompt=y
3834         echo "exit 0" >mips
3835 else
3836         echo "Doesn't look like a MIPS system."
3837         xxx_prompt=n
3838         echo "exit 1" >mips
3839 fi
3840 chmod +x mips
3841 $eunicefix mips
3842 case "$usrinc" in
3843 '') ;;
3844 *) dflt="$usrinc";;
3845 esac
3846 case "$xxx_prompt" in
3847 y)      fn=d/
3848         echo " "
3849         rp='Where are the include files you want to use?'
3850         . ./getfile
3851         usrinc="$ans"
3852         ;;
3853 *)      usrinc="$dflt"
3854         ;;
3855 esac
3856
3857 : see how we invoke the C preprocessor
3858 echo " "
3859 echo "Now, how can we feed standard input to your C preprocessor..." >&4
3860 cat <<'EOT' >testcpp.c
3861 #define ABC abc
3862 #define XYZ xyz
3863 ABC.XYZ
3864 EOT
3865 cd ..
3866 if test ! -f cppstdin; then
3867         if test "X$osname" = "Xaix" -a "X$gccversion" = X; then
3868                 # AIX cc -E doesn't show the absolute headerfile
3869                 # locations but we'll cheat by using the -M flag.
3870                 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
3871         else
3872                 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
3873         fi
3874 else
3875         echo "Keeping your $hint cppstdin wrapper."
3876 fi
3877 chmod 755 cppstdin
3878 wrapper=`pwd`/cppstdin
3879 ok='false'
3880 cd UU
3881
3882 if $test "X$cppstdin" != "X" && \
3883         $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
3884         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3885 then
3886         echo "You used to use $cppstdin $cppminus so we'll use that again."
3887         case "$cpprun" in
3888         '') echo "But let's see if we can live without a wrapper..." ;;
3889         *)
3890                 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
3891                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3892                 then
3893                         echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
3894                         ok='true'
3895                 else
3896                         echo "(However, $cpprun $cpplast does not work, let's see...)"
3897                 fi
3898                 ;;
3899         esac
3900 else
3901         case "$cppstdin" in
3902         '') ;;
3903         *)
3904                 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
3905                 ;;
3906         esac
3907 fi
3908
3909 if $ok; then
3910         : nothing
3911 elif echo 'Maybe "'"$cc"' -E" will work...'; \
3912         $cc -E <testcpp.c >testcpp.out 2>&1; \
3913         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3914         echo "Yup, it does."
3915         x_cpp="$cc -E"
3916         x_minus='';
3917 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
3918         $cc -E - <testcpp.c >testcpp.out 2>&1; \
3919         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3920         echo "Yup, it does."
3921         x_cpp="$cc -E"
3922         x_minus='-';
3923 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
3924         $cc -P <testcpp.c >testcpp.out 2>&1; \
3925         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3926         echo "Yipee, that works!"
3927         x_cpp="$cc -P"
3928         x_minus='';
3929 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
3930         $cc -P - <testcpp.c >testcpp.out 2>&1; \
3931         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3932         echo "At long last!"
3933         x_cpp="$cc -P"
3934         x_minus='-';
3935 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
3936         $cpp <testcpp.c >testcpp.out 2>&1; \
3937         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3938         echo "It works!"
3939         x_cpp="$cpp"
3940         x_minus='';
3941 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
3942         $cpp - <testcpp.c >testcpp.out 2>&1; \
3943         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3944         echo "Hooray, it works!  I was beginning to wonder."
3945         x_cpp="$cpp"
3946         x_minus='-';
3947 elif echo 'Uh-uh.  Time to get fancy.  Trying a wrapper...'; \
3948         $wrapper <testcpp.c >testcpp.out 2>&1; \
3949         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3950         x_cpp="$wrapper"
3951         x_minus=''
3952         echo "Eureka!"
3953 else
3954         dflt=''
3955         rp="No dice.  I can't find a C preprocessor.  Name one:"
3956         . ./myread
3957         x_cpp="$ans"
3958         x_minus=''
3959         $x_cpp <testcpp.c >testcpp.out 2>&1
3960         if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3961                 echo "OK, that will do." >&4
3962         else
3963 echo "Sorry, I can't get that to work.  Go find one and rerun Configure." >&4
3964                 exit 1
3965         fi
3966 fi
3967
3968 case "$ok" in
3969 false)
3970         cppstdin="$x_cpp"
3971         cppminus="$x_minus"
3972         cpprun="$x_cpp"
3973         cpplast="$x_minus"
3974         set X $x_cpp
3975         shift
3976         case "$1" in
3977         "$cpp")
3978                 echo "Perhaps can we force $cc -E using a wrapper..."
3979                 if $wrapper <testcpp.c >testcpp.out 2>&1; \
3980                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3981                 then
3982                         echo "Yup, we can."
3983                         cppstdin="$wrapper"
3984                         cppminus='';
3985                 else
3986                         echo "Nope, we'll have to live without it..."
3987                 fi
3988                 ;;
3989         esac
3990         case "$cpprun" in
3991         "$wrapper")
3992                 cpprun=''
3993                 cpplast=''
3994                 ;;
3995         esac
3996         ;;
3997 esac
3998
3999 case "$cppstdin" in
4000 "$wrapper"|'cppstdin') ;;
4001 *) $rm -f $wrapper;;
4002 esac
4003 $rm -f testcpp.c testcpp.out
4004
4005 : Set private lib path
4006 case "$plibpth" in
4007 '') if ./mips; then
4008                 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
4009         fi;;
4010 esac
4011 case "$libpth" in
4012 ' ') dlist='';;
4013 '') dlist="$loclibpth $plibpth $glibpth";;
4014 *) dlist="$libpth";;
4015 esac
4016
4017 : Now check and see which directories actually exist, avoiding duplicates
4018 libpth=''
4019 for xxx in $dlist
4020 do
4021     if $test -d $xxx; then
4022                 case " $libpth " in
4023                 *" $xxx "*) ;;
4024                 *) libpth="$libpth $xxx";;
4025                 esac
4026     fi
4027 done
4028 $cat <<'EOM'
4029
4030 Some systems have incompatible or broken versions of libraries.  Among
4031 the directories listed in the question below, please remove any you
4032 know not to be holding relevant libraries, and add any that are needed.
4033 Say "none" for none.
4034
4035 EOM
4036 case "$libpth" in
4037 '') dflt='none';;
4038 *)
4039         set X $libpth
4040         shift
4041         dflt=${1+"$@"}
4042         ;;
4043 esac
4044 rp="Directories to use for library searches?"
4045 . ./myread
4046 case "$ans" in
4047 none) libpth=' ';;
4048 *) libpth="$ans";;
4049 esac
4050
4051 : compute shared library extension
4052 case "$so" in
4053 '')
4054         if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
4055                 dflt='sl'
4056         else
4057                 dflt='so'
4058         fi
4059         ;;
4060 *) dflt="$so";;
4061 esac
4062 $cat <<EOM
4063
4064 On some systems, shared libraries may be available.  Answer 'none' if
4065 you want to suppress searching of shared libraries for the remainder
4066 of this configuration.
4067
4068 EOM
4069 rp='What is the file extension used for shared libraries?'
4070 . ./myread
4071 so="$ans"
4072
4073 : Define several unixisms.
4074 : Hints files or command line option can be used to override them.
4075 : The convoluted testing is in case hints files set either the old
4076 : or the new name.
4077 case "$_exe" in
4078 '')     case "$exe_ext" in
4079     '') ;;
4080         *)      _exe="$exe_ext" ;;
4081         esac
4082         ;;
4083 esac
4084 case "$_a" in
4085 '')     case "$lib_ext" in
4086     '') _a='.a';;
4087         *)      _a="$lib_ext" ;;
4088         esac
4089         ;;
4090 esac
4091 case "$_o" in
4092 '') case "$obj_ext" in
4093         '')     _o='.o';;
4094         *)      _o="$obj_ext";;
4095         esac
4096         ;;
4097 esac
4098 case "$p_" in
4099 '') case "$path_sep" in
4100         '')     p_=':';;
4101         *)      p_="$path_sep";;
4102         esac
4103         ;;
4104 esac
4105 exe_ext=$_exe
4106 lib_ext=$_a
4107 obj_ext=$_o
4108 path_sep=$p_
4109
4110 : Which makefile gets called first.  This is used by make depend.
4111 case "$firstmakefile" in
4112 '') firstmakefile='makefile';;
4113 esac
4114
4115 case "$usesocks" in
4116 $define|true|[yY]*)     dflt='y';;
4117 *) dflt='n';;
4118 esac
4119 cat <<EOM
4120
4121 Perl can be built to use the SOCKS proxy protocol library.  To do so,
4122 Configure must be run with -Dusesocks.  If you use SOCKS you also need
4123 to use the PerlIO abstraction layer, this will be implicitly selected.
4124
4125 If this doesn't make any sense to you, just accept the default '$dflt'.
4126 EOM
4127 rp='Build Perl for SOCKS?'
4128 . ./myread
4129 case "$ans" in
4130 y|Y)    val="$define" ;;     
4131 *)      val="$undef" ;;
4132 esac
4133 set usesocks
4134 eval $setvar
4135
4136 case "$usesocks" in
4137 $define|true|[yY]*) useperlio="$define";;
4138 esac
4139
4140 : Looking for optional libraries
4141 echo " "
4142 echo "Checking for optional libraries..." >&4
4143 case "$libs" in
4144 ' '|'') dflt='';;
4145 *) dflt="$libs";;
4146 esac
4147 case "$libswanted" in
4148 '') libswanted='c_s';;
4149 esac
4150 case "$usesocks" in
4151 "$define") libswanted="$libswanted socks5 socks5_sh" ;;
4152 esac
4153 libsfound=''
4154 libsfiles=''
4155 libsdirs=''
4156 libspath=''
4157 for thisdir in $libpth $xlibpth; do
4158   test -d $thisdir && libspath="$libspath $thisdir"
4159 done
4160 for thislib in $libswanted; do
4161         for thisdir in $libspath; do
4162             xxx=''
4163             if $test ! -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
4164                 xxx=`ls $thisdir/lib$thislib.$so.[0-9] 2>/dev/null|tail -1`
4165                 $test -f "$xxx" && eval $libscheck
4166                 $test -f "$xxx" && libstyle=shared
4167             fi
4168             if test ! -f "$xxx"; then
4169                 xxx=$thisdir/lib$thislib.$so
4170                 $test -f "$xxx" && eval $libscheck
4171                 $test -f "$xxx" && libstyle=shared
4172             fi  
4173             if test ! -f "$xxx"; then
4174                 xxx=$thisdir/lib$thislib$_a
4175                 $test -f "$xxx" && eval $libscheck
4176                 $test -f "$xxx" && libstyle=static
4177             fi
4178             if test ! -f "$xxx"; then
4179                 xxx=$thisdir/$thislib$_a
4180                 $test -f "$xxx" && eval $libscheck
4181                 $test -f "$xxx" && libstyle=static
4182             fi
4183             if test ! -f "$xxx"; then
4184                 xxx=$thisdir/lib${thislib}_s$_a
4185                 $test -f "$xxx" && eval $libscheck
4186                 $test -f "$xxx" && libstyle=static
4187                 $test -f "$xxx" && thislib=${thislib}_s
4188             fi
4189             if test ! -f "$xxx"; then
4190                 xxx=$thisdir/Slib$thislib$_a
4191                 $test -f "$xxx" && eval $libscheck
4192                 $test -f "$xxx" && libstyle=static
4193             fi
4194             if $test -f "$xxx"; then
4195                 case "$libstyle" in
4196                 shared) echo "Found -l$thislib (shared)." ;;
4197                 static) echo "Found -l$thislib." ;;
4198                 *)      echo "Found -l$thislib ($libstyle)." ;;
4199                 esac
4200                 case " $dflt " in
4201                 *"-l$thislib "*);;
4202                 *) dflt="$dflt -l$thislib"
4203                    libsfound="$libsfound $xxx"
4204                    yyy=`basename $xxx`
4205                    libsfiles="$libsfiles $yyy"
4206                    yyy=`echo $xxx|$sed -e "s%/$yyy\\$%%"`
4207                    case " $libsdirs " in
4208                    *" $yyy "*) ;;
4209                    *) libsdirs="$libsdirs $yyy" ;;
4210                    esac
4211                    ;;
4212                 esac
4213                 break
4214             fi  
4215         done
4216         if $test ! -f "$xxx"; then
4217             echo "No -l$thislib."
4218         fi
4219 done
4220 set X $dflt
4221 shift
4222 dflt="$*"
4223 case "$libs" in
4224 '') dflt="$dflt";;
4225 *) dflt="$libs";;
4226 esac
4227 case "$dflt" in
4228 ' '|'') dflt='none';;
4229 esac
4230
4231 $cat <<EOM
4232
4233 In order to compile $package on your machine, a number of libraries
4234 are usually needed.  Include any other special libraries here as well.
4235 Say "none" for none.  The default list is almost always right.
4236 EOM
4237
4238 echo " "
4239 rp="What libraries to use?"
4240 . ./myread
4241 case "$ans" in
4242 none) libs=' ';;
4243 *) libs="$ans";;
4244 esac
4245
4246 : determine optimization, if desired, or use for debug flag also
4247 case "$optimize" in
4248 ' '|$undef) dflt='none';;
4249 '') dflt='-O';;
4250 *) dflt="$optimize";;
4251 esac
4252 $cat <<EOH
4253
4254 By default, $package compiles with the -O flag to use the optimizer.
4255 Alternately, you might want to use the symbolic debugger, which uses
4256 the -g flag (on traditional Unix systems).  Either flag can be
4257 specified here.  To use neither flag, specify the word "none".
4258
4259 EOH
4260 rp="What optimizer/debugger flag should be used?"
4261 . ./myread
4262 optimize="$ans"
4263 case "$optimize" in
4264 'none') optimize=" ";;
4265 esac
4266
4267 dflt=''
4268 : We will not override a previous value, but we might want to
4269 : augment a hint file
4270 case "$hint" in
4271 default|recommended)
4272         case "$gccversion" in
4273         1*) dflt='-fpcc-struct-return' ;;
4274         esac
4275         case "$optimize" in
4276         *-g*) dflt="$dflt -DDEBUGGING";;
4277         esac
4278         case "$gccversion" in
4279         2*) if test -d /etc/conf/kconfig.d &&
4280                         $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
4281                 then
4282                         dflt="$dflt -posix"
4283                 fi
4284                 ;;
4285         esac
4286         case "$gccversion" in
4287         1*) ;;
4288         2.[0-8]*) ;;
4289         ?*)     echo " "
4290                 echo "Checking if your compiler accepts -fno-strict-aliasing" 2>&1
4291                 echo 'int main(void) { return 0; }' > gcctest.c
4292                 if $cc -O2 -fno-strict-aliasing -o gcctest gcctest.c; then
4293                         echo "Yes, it does." 2>&1
4294                         case "$ccflags" in
4295                         *strict-aliasing*) 
4296                                 echo "Leaving current flags $ccflags alone." 2>&1
4297                                 ;;
4298                         *) dflt="$dflt -fno-strict-aliasing" ;;
4299                         esac
4300                 else
4301                         echo "Nope, it doesn't, but that's ok." 2>&1
4302                 fi
4303                 ;;
4304         esac
4305         ;;
4306 esac
4307
4308 case "$mips_type" in
4309 *BSD*|'') inclwanted="$locincpth $usrinc";;
4310 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
4311 esac
4312 for thisincl in $inclwanted; do
4313         if $test -d $thisincl; then
4314                 if $test x$thisincl != x$usrinc; then
4315                         case "$dflt" in
4316                         *" -I$thisincl "*);;
4317                         *) dflt="$dflt -I$thisincl ";;
4318                         esac
4319                 fi
4320         fi
4321 done
4322
4323 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
4324         xxx=true;
4325 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
4326         xxx=true;
4327 else
4328         xxx=false;
4329 fi;
4330 if $xxx; then
4331         case "$dflt" in
4332         *$2*);;
4333         *) dflt="$dflt -D$2";;
4334         esac;
4335 fi'
4336
4337 set signal.h LANGUAGE_C; eval $inctest
4338
4339 case "$usesocks" in
4340 $define)
4341         ccflags="$ccflags -DSOCKS"
4342         ;;
4343 esac
4344
4345 case "$hint" in
4346 default|recommended) dflt="$ccflags $dflt" ;;
4347 *) dflt="$ccflags";;
4348 esac
4349
4350 case "$dflt" in
4351 ''|' ') dflt=none;;
4352 esac
4353
4354 $cat <<EOH
4355
4356 Your C compiler may want other flags.  For this question you should include
4357 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
4358 but you should NOT include libraries or ld flags like -lwhatever.  If you
4359 want $package to honor its debug switch, you should include -DDEBUGGING here.
4360 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
4361
4362 To use no flags, specify the word "none".
4363
4364 EOH
4365 set X $dflt
4366 shift
4367 dflt=${1+"$@"}
4368 rp="Any additional cc flags?"
4369 . ./myread
4370 case "$ans" in
4371 none) ccflags='';;
4372 *) ccflags="$ans";;
4373 esac
4374
4375 : the following weeds options from ccflags that are of no interest to cpp
4376 case "$cppflags" in
4377 '') cppflags="$ccflags" ;;
4378 *)  cppflags="$cppflags $ccflags" ;;
4379 esac
4380 case "$gccversion" in
4381 1*) cppflags="$cppflags -D__GNUC__"
4382 esac
4383 case "$mips_type" in
4384 '');;
4385 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
4386 esac
4387 case "$cppflags" in
4388 '');;
4389 *)
4390         echo " "
4391         echo "Let me guess what the preprocessor flags are..." >&4
4392         set X $cppflags
4393         shift
4394         cppflags=''
4395         $cat >cpp.c <<'EOM'
4396 #define BLURFL foo
4397
4398 BLURFL xx LFRULB
4399 EOM
4400         previous=''
4401         for flag in $*
4402         do
4403                 case "$flag" in
4404                 -*) ftry="$flag";;
4405                 *) ftry="$previous $flag";;
4406                 esac
4407                 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
4408                         >cpp1.out 2>/dev/null && \
4409                         $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
4410                         >cpp2.out 2>/dev/null && \
4411                         $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
4412                         $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
4413                 then
4414                         cppflags="$cppflags $ftry"
4415                         previous=''
4416                 else
4417                         previous="$flag"
4418                 fi
4419         done
4420         set X $cppflags
4421         shift
4422         cppflags=${1+"$@"}
4423         case "$cppflags" in
4424         *-*)  echo "They appear to be: $cppflags";;
4425         esac
4426         $rm -f cpp.c cpp?.out
4427         ;;
4428 esac
4429
4430 : flags used in final linking phase
4431 case "$ldflags" in
4432 '') if ./venix; then
4433                 dflt='-i -z'
4434         else
4435                 dflt=''
4436         fi
4437         case "$ccflags" in
4438         *-posix*) dflt="$dflt -posix" ;;
4439         esac
4440         ;;
4441 *) dflt="$ldflags";;
4442 esac
4443
4444 : Try to guess additional flags to pick up local libraries.
4445 for thislibdir in $libpth; do
4446         case " $loclibpth " in
4447         *" $thislibdir "*)
4448                 case "$dflt " in 
4449                 *"-L$thislibdir "*) ;;
4450                 *)  dflt="$dflt -L$thislibdir" ;;
4451                 esac
4452                 ;;
4453         esac
4454 done
4455
4456 case "$dflt" in
4457 '') dflt='none' ;;
4458 esac
4459
4460 $cat <<EOH
4461
4462 Your C linker may need flags.  For this question you should
4463 include -L/whatever and any other flags used by the C linker, but you
4464 should NOT include libraries like -lwhatever.
4465
4466 Make sure you include the appropriate -L/path flags if your C linker
4467 does not normally search all of the directories you specified above,
4468 namely
4469         $libpth
4470 To use no flags, specify the word "none".
4471
4472 EOH
4473
4474 rp="Any additional ld flags (NOT including libraries)?"
4475 . ./myread
4476 case "$ans" in
4477 none) ldflags='';;
4478 *) ldflags="$ans";;
4479 esac
4480 rmlist="$rmlist pdp11"
4481
4482 : coherency check
4483 echo " "
4484 echo "Checking your choice of C compiler and flags for coherency..." >&4
4485 $cat > try.c <<'EOF'
4486 #include <stdio.h>
4487 int main() { printf("Ok\n"); exit(0); }
4488 EOF
4489 set X $cc -o try $optimize $ccflags $ldflags try.c $libs
4490 shift
4491 $cat >try.msg <<'EOM'
4492 I've tried to compile and run the following simple program:
4493
4494 EOM
4495 $cat try.c >> try.msg
4496
4497 $cat >> try.msg <<EOM
4498
4499 I used the command:
4500
4501         $*
4502         $run ./try
4503
4504 and I got the following output:
4505
4506 EOM
4507 dflt=y
4508 if $sh -c "$cc -o try $optimize $ccflags $ldflags try.c $libs" >>try.msg 2>&1; then
4509         if $sh -c "$run ./try" >>try.msg 2>&1; then
4510                 xxx=`$run ./try`
4511                 case "$xxx" in
4512                 "Ok") dflt=n ;;
4513                 *)      echo 'The program compiled OK, but produced no output.' >> try.msg
4514                         case " $libs " in
4515                         *" -lsfio "*)
4516                                 cat >> try.msg <<'EOQS'
4517 If $libs contains -lsfio, and sfio is mis-configured, then it
4518 sometimes (apparently) runs and exits with a 0 status, but with no
4519 output!  It may have to do with sfio's use of _exit vs. exit.
4520
4521 EOQS
4522                                 rp="You have a big problem.  Shall I abort Configure"
4523                                 dflt=y
4524                                 ;;
4525                         esac
4526                         ;;
4527                 esac
4528         else
4529                 echo "The program compiled OK, but exited with status $?." >>try.msg
4530                 rp="You have a problem.  Shall I abort Configure"
4531                 dflt=y
4532         fi
4533 else
4534         echo "I can't compile the test program." >>try.msg
4535         rp="You have a BIG problem.  Shall I abort Configure"
4536         dflt=y
4537 fi
4538 case "$dflt" in
4539 y)
4540         $cat try.msg >&4
4541         case "$knowitall" in
4542         '')
4543                 echo "(The supplied flags or libraries might be incorrect.)"
4544                 ;;
4545         *) dflt=n;;
4546         esac
4547         echo " "
4548         . ./myread
4549         case "$ans" in
4550         n*|N*) ;;
4551         *)      echo "Ok.  Stopping Configure." >&4
4552                 exit 1
4553                 ;;
4554         esac
4555         ;;
4556 n) echo "OK, that should do.";;
4557 esac
4558 $rm -f try try.* core
4559
4560 : define a shorthand compile call
4561 compile='
4562 mc_file=$1;
4563 shift;
4564 $cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs > /dev/null 2>&1;'
4565 : define a shorthand compile call for compilations that should be ok.
4566 compile_ok='
4567 mc_file=$1;
4568 shift;
4569 $cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs;'
4570
4571 : check for lengths of integral types
4572 echo " "
4573 case "$intsize" in
4574 '')
4575         echo "Checking to see how big your integers are..." >&4
4576         $cat >try.c <<'EOCP'
4577 #include <stdio.h>
4578 int main()
4579 {
4580         printf("intsize=%d;\n", (int)sizeof(int));
4581         printf("longsize=%d;\n", (int)sizeof(long));
4582         printf("shortsize=%d;\n", (int)sizeof(short));
4583         exit(0);
4584 }
4585 EOCP
4586         set try
4587         if eval $compile_ok && $run ./try > /dev/null; then
4588                 eval `$run ./try`
4589                 echo "Your integers are $intsize bytes long."
4590                 echo "Your long integers are $longsize bytes long."
4591                 echo "Your short integers are $shortsize bytes long."
4592         else
4593                 $cat >&4 <<EOM
4594 !
4595 Help! I can't compile and run the intsize test program: please enlighten me!
4596 (This is probably a misconfiguration in your system or libraries, and
4597 you really ought to fix it.  Still, I'll try anyway.)
4598 !
4599 EOM
4600                 dflt=4
4601                 rp="What is the size of an integer (in bytes)?"
4602                 . ./myread
4603                 intsize="$ans"
4604                 dflt=$intsize
4605                 rp="What is the size of a long integer (in bytes)?"
4606                 . ./myread
4607                 longsize="$ans"
4608                 dflt=2
4609                 rp="What is the size of a short integer (in bytes)?"
4610                 . ./myread
4611                 shortsize="$ans"
4612         fi
4613         ;;
4614 esac
4615 $rm -f try try.*
4616
4617 : check for void type
4618 echo " "
4619 echo "Checking to see how well your C compiler groks the void type..." >&4
4620 case "$voidflags" in
4621 '')
4622         $cat >try.c <<'EOCP'
4623 #if TRY & 1
4624 void sub() {
4625 #else
4626 sub() {
4627 #endif
4628         extern void moo();      /* function returning void */
4629         void (*goo)();          /* ptr to func returning void */
4630 #if TRY & 8
4631         void *hue;              /* generic ptr */
4632 #endif
4633 #if TRY & 2
4634         void (*foo[10])();
4635 #endif
4636
4637 #if TRY & 4
4638         if(goo == moo) {
4639                 exit(0);
4640         }
4641 #endif
4642         exit(0);
4643 }
4644 int main() { sub(); }
4645 EOCP
4646         if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
4647                 voidflags=$defvoidused
4648         echo "Good.  It appears to support void to the level $package wants.">&4
4649                 if $contains warning .out >/dev/null 2>&1; then
4650                         echo "However, you might get some warnings that look like this:"
4651                         $cat .out
4652                 fi
4653         else
4654 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
4655                 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
4656                         echo "It supports 1..."
4657                         if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
4658                                 echo "It also supports 2..."
4659                                 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
4660                                         voidflags=7
4661                                         echo "And it supports 4 but not 8 definitely."
4662                                 else
4663                                         echo "It doesn't support 4..."
4664                                         if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
4665                                                 voidflags=11
4666                                                 echo "But it supports 8."
4667                                         else
4668                                                 voidflags=3
4669                                                 echo "Neither does it support 8."
4670                                         fi
4671                                 fi
4672                         else
4673                                 echo "It does not support 2..."
4674                                 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
4675                                         voidflags=13
4676                                         echo "But it supports 4 and 8."
4677                                 else
4678                                         if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
4679                                                 voidflags=5
4680                                                 echo "And it supports 4 but has not heard about 8."
4681                                         else
4682                                                 echo "However it supports 8 but not 4."
4683                                         fi
4684                                 fi
4685                         fi
4686                 else
4687                         echo "There is no support at all for void."
4688                         voidflags=0
4689                 fi
4690         fi
4691 esac
4692 case "$voidflags" in
4693 "$defvoidused") ;;
4694 *)      $cat >&4 <<'EOM'
4695   Support flag bits are:
4696     1: basic void declarations.
4697     2: arrays of pointers to functions returning void.
4698     4: operations between pointers to and addresses of void functions.
4699     8: generic void pointers.
4700 EOM
4701         dflt="$voidflags";
4702         rp="Your void support flags add up to what?"
4703         . ./myread
4704         voidflags="$ans"
4705         ;;
4706 esac
4707 $rm -f try.* .out
4708
4709 : check for length of pointer
4710 echo " "
4711 case "$ptrsize" in
4712 '')
4713         echo "Checking to see how big your pointers are..." >&4
4714         if test "$voidflags" -gt 7; then
4715                 echo '#define VOID_PTR char *' > try.c
4716         else
4717                 echo '#define VOID_PTR void *' > try.c
4718         fi
4719         $cat >>try.c <<'EOCP'
4720 #include <stdio.h>
4721 int main()
4722 {
4723     printf("%d\n", (int)sizeof(VOID_PTR));
4724     exit(0);
4725 }
4726 EOCP
4727         set try
4728         if eval $compile_ok; then
4729                 ptrsize=`$run ./try`
4730                 echo "Your pointers are $ptrsize bytes long."
4731         else
4732                 dflt='4'
4733                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
4734                 rp="What is the size of a pointer (in bytes)?"
4735                 . ./myread
4736                 ptrsize="$ans"
4737         fi
4738         ;;
4739 esac
4740 $rm -f try.c try
4741
4742 : check for long long
4743 echo " "
4744 echo "Checking to see if you have long long..." >&4
4745 echo 'int main() { long long x = 7; return 0; }' > try.c
4746 set try
4747 if eval $compile; then
4748         val="$define"
4749         echo "You have long long."
4750 else
4751         val="$undef"
4752         echo "You do not have long long."
4753 fi
4754 $rm try.*
4755 set d_longlong
4756 eval $setvar
4757
4758 : check for length of long long
4759 case "${d_longlong}${longlongsize}" in
4760 $define)
4761         echo " "
4762         echo "Checking to see how big your long longs are..." >&4
4763         $cat >try.c <<'EOCP'
4764 #include <stdio.h>
4765 int main()
4766 {
4767     printf("%d\n", (int)sizeof(long long));
4768     return(0);
4769 }
4770 EOCP
4771         set try
4772         if eval $compile_ok; then
4773                 longlongsize=`$run ./try`
4774                 echo "Your long longs are $longlongsize bytes long."
4775         else
4776                 dflt='8'
4777                 echo " "
4778                 echo "(I can't seem to compile the test program.  Guessing...)"
4779                 rp="What is the size of a long long (in bytes)?"
4780                 . ./myread
4781                 longlongsize="$ans"
4782         fi
4783         if $test "X$longsize" = "X$longlongsize"; then
4784                 echo "(That isn't any different from an ordinary long.)"
4785         fi      
4786         ;;
4787 esac
4788 $rm -f try.* try
4789
4790 : determine filename position in cpp output
4791 echo " "
4792 echo "Computing filename position in cpp output for #include directives..." >&4
4793 echo '#include <stdio.h>' > foo.c
4794 $cat >fieldn <<EOF
4795 $startsh
4796 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
4797 $grep '^[       ]*#.*stdio\.h' | \
4798 while read cline; do
4799         pos=1
4800         set \$cline
4801         while $test \$# -gt 0; do
4802                 if $test -r \`echo \$1 | $tr -d '"'\`; then
4803                         echo "\$pos"
4804                         exit 0
4805                 fi
4806                 shift
4807                 pos=\`expr \$pos + 1\`
4808         done
4809 done
4810 EOF
4811 chmod +x fieldn
4812 fieldn=`./fieldn`
4813 $rm -f foo.c fieldn
4814 case $fieldn in
4815 '') pos='???';;
4816 1) pos=first;;
4817 2) pos=second;;
4818 3) pos=third;;
4819 *) pos="${fieldn}th";;
4820 esac
4821 echo "Your cpp writes the filename in the $pos field of the line."
4822
4823 : locate header file
4824 $cat >findhdr <<EOF
4825 $startsh
4826 wanted=\$1
4827 name=''
4828 for usrincdir in $usrinc
4829 do
4830         if test -f \$usrincdir/\$wanted; then
4831                 echo "\$usrincdir/\$wanted"
4832                 exit 0
4833         fi
4834 done
4835 awkprg='{ print \$$fieldn }'
4836 echo "#include <\$wanted>" > foo\$\$.c
4837 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
4838 $grep "^[       ]*#.*\$wanted" | \
4839 while read cline; do
4840         name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
4841         case "\$name" in
4842         *[/\\\\]\$wanted) echo "\$name"; exit 1;;
4843         *[\\\\/]\$wanted) echo "\$name"; exit 1;;
4844         *) exit 2;;
4845         esac;
4846 done;
4847 #
4848 # status = 0: grep returned 0 lines, case statement not executed
4849 # status = 1: headerfile found
4850 # status = 2: while loop executed, no headerfile found
4851 #
4852 status=\$?
4853 $rm -f foo\$\$.c;
4854 if test \$status -eq 1; then
4855         exit 0;
4856 fi
4857 exit 1
4858 EOF
4859 chmod +x findhdr
4860
4861 : define an alternate in-header-list? function
4862 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
4863 cont=true; xxf="echo \"<\$1> found.\" >&4";
4864 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
4865 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
4866 esac;
4867 case $# in 4) instead=instead;; *) instead="at last";; esac;
4868 while $test "$cont"; do
4869         xxx=`./findhdr $1`
4870         var=$2; eval "was=\$$2";
4871         if $test "$xxx" && $test -r "$xxx";
4872         then eval $xxf;
4873         eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
4874                 cont="";
4875         else eval $xxnf;
4876         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
4877         set $yyy; shift; shift; yyy=$@;
4878         case $# in 0) cont="";;
4879         2) xxf="echo \"but I found <\$1> $instead.\" >&4";
4880                 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
4881         *) xxf="echo \"but I found <\$1\> instead.\" >&4";
4882                 xxnf="echo \"there is no <\$1>, ...\" >&4";;
4883         esac;
4884 done;
4885 while $test "$yyy";
4886 do set $yyy; var=$2; eval "was=\$$2";
4887         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
4888         set $yyy; shift; shift; yyy=$@;
4889 done'
4890
4891 : see if inttypes.h is available
4892 : we want a real compile instead of Inhdr because some systems
4893 : have an inttypes.h which includes non-existent headers
4894 echo " "
4895 $cat >try.c <<EOCP
4896 #include <inttypes.h>
4897 int main() {
4898         static int32_t foo32 = 0x12345678;
4899 }
4900 EOCP
4901 set try
4902 if eval $compile; then
4903         echo "<inttypes.h> found." >&4
4904         val="$define"
4905 else
4906         echo "<inttypes.h> NOT found." >&4
4907         val="$undef"
4908 fi
4909 $rm -f try.c try
4910 set i_inttypes
4911 eval $setvar
4912
4913 : check for int64_t
4914 echo " "
4915 echo "Checking to see if you have int64_t..." >&4
4916 $cat >try.c <<EOCP
4917 #include <sys/types.h>
4918 #$i_inttypes I_INTTYPES
4919 #ifdef I_INTTYPES
4920 #include <inttypes.h>
4921 #endif
4922 int main() { int64_t x = 7; }
4923 EOCP
4924 set try
4925 if eval $compile; then
4926         val="$define"
4927         echo "You have int64_t."
4928 else
4929         val="$undef"
4930         echo "You do not have int64_t."
4931 fi
4932 $rm -f try try.*
4933 set d_int64_t
4934 eval $setvar
4935
4936
4937 echo " "
4938 echo "Checking which 64-bit integer type we could use..." >&4
4939
4940 case "$intsize" in
4941 8) val=int
4942    set quadtype
4943    eval $setvar
4944    val='"unsigned int"'
4945    set uquadtype
4946    eval $setvar
4947    quadkind=1
4948    ;;
4949 *) case "$longsize" in
4950    8) val=long
4951       set quadtype
4952       eval $setvar
4953       val='"unsigned long"'
4954       set uquadtype
4955       eval $setvar
4956       quadkind=2
4957       ;;
4958    *) case "$d_longlong:$longlongsize" in
4959       define:8)
4960         val='"long long"'
4961         set quadtype
4962         eval $setvar
4963         val='"unsigned long long"'
4964         set uquadtype
4965         eval $setvar
4966         quadkind=3
4967         ;;
4968       *) case "$d_int64_t" in
4969          define)
4970            val=int64_t
4971            set quadtype
4972            eval $setvar
4973            val=uint64_t
4974            set uquadtype
4975            eval $setvar
4976            quadkind=4
4977            ;;
4978          esac
4979          ;;
4980       esac
4981       ;;
4982    esac
4983    ;;
4984 esac
4985
4986 case "$quadtype" in
4987 '')     echo "Alas, no 64-bit integer types in sight." >&4
4988         d_quad="$undef"
4989         ;;
4990 *)      echo "We could use '$quadtype' for 64-bit integers." >&4
4991         d_quad="$define"
4992         ;;
4993 esac
4994
4995
4996 case "$uselonglong" in
4997 "$define"|true|[yY]*)
4998         cat <<EOM >&4
4999
5000 *** Configure -Duselonglong is deprecated, using -Duse64bitint instead.
5001 EOM
5002         use64bitint="$define"
5003         ;;
5004 esac                          
5005 case "$use64bits" in
5006 "$define"|true|[yY]*)
5007         cat <<EOM >&4
5008
5009 *** Configure -Duse64bits is deprecated, using -Duse64bitint instead.
5010 EOM
5011         use64bitint="$define"
5012         ;;
5013 esac                          
5014 case "$use64bitints" in
5015 "$define"|true|[yY]*)
5016         cat <<EOM >&4
5017
5018 *** There is no Configure -Duse64bitints, using -Duse64bitint instead.
5019 EOM
5020         use64bitint="$define"
5021         ;;
5022 esac                          
5023 case "$use64bitsint" in
5024 "$define"|true|[yY]*)
5025         cat <<EOM >&4
5026
5027 *** There is no Configure -Duse64bitsint, using -Duse64bitint instead.
5028 EOM
5029         use64bitint="$define"
5030         ;;
5031 esac                          
5032 case "$uselonglongs" in
5033 "$define"|true|[yY]*)
5034         cat <<EOM >&4
5035
5036 *** There is no Configure -Duselonglongs, using -Duse64bitint instead.
5037 EOM
5038         use64bitint="$define"
5039         ;;
5040 esac                          
5041 case "$use64bitsall" in
5042 "$define"|true|[yY]*)
5043         cat <<EOM >&4
5044
5045 *** There is no Configure -Duse64bitsall, using -Duse64bitall instead.
5046 EOM
5047         use64bitall="$define"
5048         ;;
5049 esac                          
5050
5051 case "$ccflags" in
5052 *-DUSE_LONG_LONG*|*-DUSE_64_BIT_INT*|*-DUSE_64_BIT_ALL*) use64bitint="$define";;
5053 esac
5054 case "$use64bitall" in
5055 "$define"|true|[yY]*) use64bitint="$define" ;;
5056 esac
5057
5058 case "$longsize" in
5059 8) cat <<EOM
5060
5061 You have natively 64-bit long integers.
5062 EOM
5063    val="$define"
5064    ;;
5065 *) case "$use64bitint" in
5066    "$define"|true|[yY]*) dflt='y';;
5067    *) dflt='n';;
5068    esac
5069    case "$d_quad" in
5070    "$define") ;;
5071    *) dflt='n' ;;
5072    esac
5073    cat <<EOM
5074
5075 Perl can be built to take advantage of 64-bit integer types
5076 on some systems.  To do so, Configure can be run with -Duse64bitint.
5077 Choosing this option will most probably introduce binary incompatibilities.
5078
5079 If this doesn't make any sense to you, just accept the default '$dflt'.
5080 (The default has been chosen based on your configuration.)
5081 EOM
5082    rp='Try to use 64-bit integers, if available?'
5083    . ./myread
5084    case "$ans" in
5085    [yY]*) val="$define" ;;
5086    *)     val="$undef"  ;;
5087    esac
5088    ;;
5089 esac
5090 set use64bitint
5091 eval $setvar
5092
5093 case "$use64bitall" in
5094 "$define"|true|[yY]*) dflt='y' ;;
5095 *) case "$longsize" in
5096    8) dflt='y' ;;
5097    *) dflt='n' ;;
5098    esac
5099    ;;
5100 esac    
5101 cat <<EOM
5102
5103 You may also choose to try maximal 64-bitness.  It means using as much
5104 64-bitness as possible on the platform.  This in turn means even more
5105 binary incompatibilities.  On the other hand, your platform may not
5106 have any more 64-bitness available than what you already have chosen.
5107
5108 If this doesn't make any sense to you, just accept the default '$dflt'.
5109 (The default has been chosen based on your configuration.)
5110 EOM
5111 rp='Try to use maximal 64-bit support, if available?'
5112 . ./myread
5113 case "$ans" in
5114 [yY]*) val="$define" ;;
5115 *)     val="$undef"  ;;
5116 esac
5117 set use64bitall
5118 eval $setvar
5119 case "$use64bitall" in
5120 "$define")
5121         case "$use64bitint" in
5122         "$undef")
5123                 cat <<EOM
5124
5125 Since you have chosen a maximally 64-bit build, I'm also turning on
5126 the use of 64-bit integers.
5127 EOM
5128                 use64bitint="$define" ;;
5129         esac
5130         ;;
5131 esac
5132
5133 case "$use64bitall" in
5134 "$define"|true|[yY]*)
5135         case "$ptrsize" in
5136         4)      cat <<EOM >&4
5137
5138 *** You have chosen a maximally 64-bit build, but your pointers
5139 *** are only 4 bytes wide, disabling maximal 64-bitness.
5140
5141 EOM
5142                 use64bitall="$undef"
5143                 case "$use64bitint" in
5144                 "$define"|true|[yY]*) ;;
5145                 *)      cat <<EOM >&4
5146
5147 *** Downgrading from maximal 64-bitness to using 64-bit integers.
5148
5149 EOM
5150                         use64bitint="$define"
5151                         ;;
5152                 esac
5153                 ;;
5154         esac
5155         ;;
5156 esac
5157
5158 case "$use64bitint" in
5159 "$define"|true|[yY]*)
5160 : Look for a hint-file generated 'call-back-unit'.  If the
5161 : user has specified that a 64-bit perl is to be built,
5162 : we may need to set or change some other defaults.
5163         if $test -f use64bitint.cbu; then
5164                 echo "Your platform has some specific hints for 64-bit integers, using them..."
5165                 . ./use64bitint.cbu
5166         fi
5167         case "$longsize" in
5168         4) case "$archname64" in
5169            '') archname64=64int ;;
5170            esac
5171            ;;
5172         esac
5173         ;;
5174 esac
5175
5176 case "$use64bitall" in
5177 "$define"|true|[yY]*)
5178 : Look for a hint-file generated 'call-back-unit'.  If the
5179 : user has specified that a maximally 64-bit perl is to be built,
5180 : we may need to set or change some other defaults.
5181         if $test -f use64bitall.cbu; then
5182                 echo "Your platform has some specific hints for 64-bit builds, using them..."
5183                 . ./use64bitall.cbu
5184         fi
5185         case "$longsize" in
5186         4) case "$archname64" in
5187            ''|64int) archname64=64all ;;
5188            esac
5189            ;;
5190         esac
5191         ;;
5192 esac
5193
5194 echo " "
5195 echo "Checking for GNU C Library..." >&4
5196 cat >try.c <<EOM
5197 #include <stdio.h>
5198 int main()
5199 {
5200 #ifdef __GLIBC__
5201     exit(0);
5202 #else
5203     exit(1);
5204 #endif
5205 }
5206 EOM
5207 set try
5208 if eval $compile_ok && $run ./try; then
5209         val="$define"
5210         echo "You are using the GNU C Library"
5211 else
5212         val="$undef"
5213         echo "You are not using the GNU C Library"
5214 fi
5215 $rm -f try try.*
5216 set d_gnulibc
5217 eval $setvar
5218
5219 : see if nm is to be used to determine whether a symbol is defined or not
5220 case "$usenm" in
5221 '')
5222         dflt=''
5223         case "$d_gnulibc" in
5224         "$define")
5225                 echo " "
5226                 echo "nm probably won't work on the GNU C Library." >&4
5227                 dflt=n
5228                 ;;
5229         esac
5230         case "$dflt" in
5231         '') 
5232                 if $test "$osname" = aix -a ! -f /lib/syscalls.exp; then
5233                         echo " "
5234                         echo "Whoops!  This is an AIX system without /lib/syscalls.exp!" >&4
5235                         echo "'nm' won't be sufficient on this sytem." >&4
5236                         dflt=n
5237                 fi
5238                 ;;
5239         esac
5240         case "$dflt" in
5241         '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
5242                 if $test $dflt -gt 20; then
5243                         dflt=y
5244                 else
5245                         dflt=n
5246                 fi
5247                 ;;
5248         esac
5249         ;;
5250 *)
5251         case "$usenm" in
5252         true|$define) dflt=y;;
5253         *) dflt=n;;
5254         esac
5255         ;;
5256 esac
5257 $cat <<EOM
5258
5259 I can use $nm to extract the symbols from your C libraries. This
5260 is a time consuming task which may generate huge output on the disk (up
5261 to 3 megabytes) but that should make the symbols extraction faster. The
5262 alternative is to skip the 'nm' extraction part and to compile a small
5263 test program instead to determine whether each symbol is present. If
5264 you have a fast C compiler and/or if your 'nm' output cannot be parsed,
5265 this may be the best solution.
5266
5267 You probably shouldn't let me use 'nm' if you are using the GNU C Library.
5268
5269 EOM
5270 rp="Shall I use $nm to extract C symbols from the libraries?"
5271 . ./myread
5272 case "$ans" in
5273 [Nn]*) usenm=false;;
5274 *) usenm=true;;
5275 esac
5276
5277 runnm=$usenm
5278 case "$reuseval" in
5279 true) runnm=false;;
5280 esac
5281
5282 : nm options which may be necessary
5283 case "$nm_opt" in
5284 '') if $test -f /mach_boot; then
5285                 nm_opt=''       # Mach
5286         elif $test -d /usr/ccs/lib; then
5287                 nm_opt='-p'     # Solaris (and SunOS?)
5288         elif $test -f /dgux; then
5289                 nm_opt='-p'     # DG-UX
5290         elif $test -f /lib64/rld; then
5291                 nm_opt='-p'     # 64-bit Irix
5292         else
5293                 nm_opt=''
5294         fi;;
5295 esac
5296
5297 : nm options which may be necessary for shared libraries but illegal
5298 : for archive libraries.  Thank you, Linux.
5299 case "$nm_so_opt" in
5300 '')     case "$myuname" in
5301         *linux*)
5302                 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
5303                         nm_so_opt='--dynamic'
5304                 fi
5305                 ;;
5306         esac
5307         ;;
5308 esac
5309
5310 case "$runnm" in
5311 true)
5312 : get list of predefined functions in a handy place
5313 echo " "
5314 case "$libc" in
5315 '') libc=unknown
5316         case "$libs" in
5317         *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
5318         esac
5319         ;;
5320 esac
5321 case "$libs" in
5322 '') ;;
5323 *)  for thislib in $libs; do
5324         case "$thislib" in
5325         -lc|-lc_s)
5326                 : Handle C library specially below.
5327                 ;;
5328         -l*)
5329                 thislib=`echo $thislib | $sed -e 's/^-l//'`
5330                 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
5331                         :
5332                 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
5333                         :
5334                 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
5335                         :
5336                 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
5337                         :
5338                 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
5339                         :
5340                 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
5341                         :
5342                 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
5343                         :
5344                 else
5345                         try=''
5346                 fi
5347                 libnames="$libnames $try"
5348                 ;;
5349         *) libnames="$libnames $thislib" ;;
5350         esac
5351         done
5352         ;;
5353 esac
5354 xxx=normal
5355 case "$libc" in
5356 unknown)
5357         set /lib/libc.$so
5358         for xxx in $libpth; do
5359                 $test -r $1 || set $xxx/libc.$so
5360                 : The messy sed command sorts on library version numbers.
5361                 $test -r $1 || \
5362                         set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
5363                         tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
5364                                 h
5365                                 s/[0-9][0-9]*/0000&/g
5366                                 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
5367                                 G
5368                                 s/\n/ /' | \
5369                          $sort | $sed -e 's/^.* //'`
5370                 eval set \$$#
5371         done
5372         $test -r $1 || set /usr/ccs/lib/libc.$so
5373         $test -r $1 || set /lib/libsys_s$_a
5374         ;;
5375 *)
5376         set blurfl
5377         ;;
5378 esac
5379 if $test -r "$1"; then
5380         echo "Your (shared) C library seems to be in $1."
5381         libc="$1"
5382 elif $test -r /lib/libc && $test -r /lib/clib; then
5383         echo "Your C library seems to be in both /lib/clib and /lib/libc."
5384         xxx=apollo
5385         libc='/lib/clib /lib/libc'
5386         if $test -r /lib/syslib; then
5387                 echo "(Your math library is in /lib/syslib.)"
5388                 libc="$libc /lib/syslib"
5389         fi
5390 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
5391         echo "Your C library seems to be in $libc, as you said before."
5392 elif $test -r $incpath/usr/lib/libc$_a; then
5393         libc=$incpath/usr/lib/libc$_a;
5394         echo "Your C library seems to be in $libc.  That's fine."
5395 elif $test -r /lib/libc$_a; then
5396         libc=/lib/libc$_a;
5397         echo "Your C library seems to be in $libc.  You're normal."
5398 else
5399         if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
5400                 :
5401         elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
5402                 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
5403         elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
5404                 :
5405         elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
5406                 :
5407         elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
5408                 :
5409         else
5410                 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
5411         fi
5412         if $test -r "$tans"; then
5413                 echo "Your C library seems to be in $tans, of all places."
5414                 libc=$tans
5415         else
5416                 libc='blurfl'
5417         fi
5418 fi
5419 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
5420         dflt="$libc"
5421         cat <<EOM
5422
5423 If the guess above is wrong (which it might be if you're using a strange
5424 compiler, or your machine supports multiple models), you can override it here.
5425
5426 EOM
5427 else
5428         dflt=''
5429         echo $libpth | $tr ' ' $trnl | $sort | $uniq > libpath
5430         cat >&4 <<EOM
5431 I can't seem to find your C library.  I've looked in the following places:
5432
5433 EOM
5434         $sed 's/^/      /' libpath
5435         cat <<EOM
5436
5437 None of these seems to contain your C library. I need to get its name...
5438
5439 EOM
5440 fi
5441 fn=f
5442 rp='Where is your C library?'
5443 . ./getfile
5444 libc="$ans"
5445
5446 echo " "
5447 echo $libc $libnames | $tr ' ' $trnl | $sort | $uniq > libnames
5448 set X `cat libnames`
5449 shift
5450 xxx=files
5451 case $# in 1) xxx=file; esac
5452 echo "Extracting names from the following $xxx for later perusal:" >&4
5453 echo " "
5454 $sed 's/^/      /' libnames >&4
5455 echo " "
5456 $echo $n "This may take a while...$c" >&4
5457
5458 for file in $*; do
5459         case $file in
5460         *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
5461         *) $nm $nm_opt $file 2>/dev/null;;
5462         esac
5463 done >libc.tmp
5464
5465 $echo $n ".$c"
5466 $grep fprintf libc.tmp > libc.ptf
5467 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
5468 xrun='eval "<libc.tmp $com >libc.list"; echo "done" >&4'
5469 xxx='[ADTSIW]'
5470 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx  *_[_.]*//p' -e 's/^.* $xxx  *//p'";\
5471         eval $xscan;\
5472         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5473                 eval $xrun
5474 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
5475         eval $xscan;\
5476         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5477                 eval $xrun
5478 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
5479         eval $xscan;\
5480         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5481                 eval $xrun
5482 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
5483         eval $xscan;\
5484         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5485                 eval $xrun
5486 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
5487         eval $xscan;\
5488         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5489                 eval $xrun
5490 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
5491         eval $xscan;\
5492         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5493                 eval $xrun
5494 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
5495                                 -e '/ file/d' -e 's/^\([^       ]*\).*/\1/p'";\
5496         eval $xscan;\
5497         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5498                 eval $xrun
5499 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
5500         eval $xscan;\
5501         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5502                 eval $xrun
5503 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
5504         eval $xscan;\
5505         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5506                 eval $xrun
5507 elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
5508         eval $xscan;\
5509         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5510                 eval $xrun
5511 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
5512         eval $xscan;\
5513         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5514                 eval $xrun
5515 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
5516         eval $xscan;\
5517         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5518                 eval $xrun
5519 elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
5520         eval $xscan;\
5521         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5522                 eval $xrun
5523 elif com="sed -n -e 's/^__.*//' -e 's/[       ]*D[    ]*[0-9]*.*//p'";\
5524         eval $xscan;\
5525         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5526                 eval $xrun
5527 else
5528         $nm -p $* 2>/dev/null >libc.tmp
5529         $grep fprintf libc.tmp > libc.ptf
5530         if com="$sed -n -e 's/^.* [ADTSIW]  *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
5531                 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
5532         then
5533                 nm_opt='-p'
5534                 eval $xrun
5535         else
5536                 echo " "
5537                 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
5538                 com=''
5539                 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
5540                         for thisname in $libnames $libc; do
5541                                 $ar t $thisname >>libc.tmp
5542                         done
5543                         $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
5544                         echo "Ok." >&4
5545                 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
5546                         # Repeat libc to extract forwarders to DLL entries too
5547                         for thisname in $libnames $libc; do
5548                                 $ar tv $thisname >>libc.tmp
5549                                 # Revision 50 of EMX has bug in $ar.
5550                                 # it will not extract forwarders to DLL entries
5551                                 # Use emximp which will extract exactly them.
5552                                 emximp -o tmp.imp $thisname \
5553                                     2>/dev/null && \
5554                                     $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
5555                                     < tmp.imp >>libc.tmp
5556                                 $rm tmp.imp
5557                         done
5558                         $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
5559                         echo "Ok." >&4
5560                 else
5561                         echo "$ar didn't seem to work right." >&4
5562                         echo "Maybe this is a Cray...trying bld instead..." >&4
5563                         if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
5564                         then
5565                                 for thisname in $libnames; do
5566                                         bld t $libnames | \
5567                                         $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
5568                                         $ar t $thisname >>libc.tmp
5569                                 done
5570                                 echo "Ok." >&4
5571                         else
5572                                 echo "That didn't work either.  Giving up." >&4
5573                                 exit 1
5574                         fi
5575                 fi
5576         fi
5577 fi
5578 nm_extract="$com"
5579 if $test -f /lib/syscalls.exp; then
5580         echo " "
5581         echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
5582         $sed -n 's/^\([^        ]*\)[   ]*syscall[0-9]*[        ]*$/\1/p' /lib/syscalls.exp >>libc.list
5583 fi
5584 ;;
5585 esac
5586 $rm -f libnames libpath
5587
5588 : is a C symbol defined?
5589 csym='tlook=$1;
5590 case "$3" in
5591 -v) tf=libc.tmp; tc=""; tdc="";;
5592 -a) tf=libc.tmp; tc="[0]"; tdc="[]";;
5593 *) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";;
5594 esac;
5595 tx=yes;
5596 case "$reuseval-$4" in
5597 true-) ;;
5598 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
5599 esac;
5600 case "$tx" in
5601 yes)
5602         case "$runnm" in
5603         true)
5604                 if $contains $tlook $tf >/dev/null 2>&1;
5605                 then tval=true;
5606                 else tval=false;
5607                 fi;;
5608         *)
5609                 echo "int main() { extern short $1$tdc; printf(\"%hd\", $1$tc); }" > t.c;
5610                 if $cc -o t $optimize $ccflags $ldflags t.c $libs >/dev/null 2>&1;
5611                 then tval=true;
5612                 else tval=false;
5613                 fi;
5614                 $rm -f t t.c;;
5615         esac;;
5616 *)
5617         case "$tval" in
5618         $define) tval=true;;
5619         *) tval=false;;
5620         esac;;
5621 esac;
5622 eval "$2=$tval"'
5623
5624 : define an is-in-libc? function
5625 inlibc='echo " "; td=$define; tu=$undef;
5626 sym=$1; var=$2; eval "was=\$$2";
5627 tx=yes;
5628 case "$reuseval$was" in
5629 true) ;;
5630 true*) tx=no;;
5631 esac;
5632 case "$tx" in
5633 yes)
5634         set $sym tres -f;
5635         eval $csym;
5636         case "$tres" in
5637         true)
5638                 echo "$sym() found." >&4;
5639                 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
5640         *)
5641                 echo "$sym() NOT found." >&4;
5642                 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
5643         esac;;
5644 *)
5645         case "$was" in
5646         $define) echo "$sym() found." >&4;;
5647         *) echo "$sym() NOT found." >&4;;
5648         esac;;
5649 esac'
5650
5651 : see if sqrtl exists
5652 set sqrtl d_sqrtl
5653 eval $inlibc
5654
5655 case "$ccflags" in
5656 *-DUSE_LONG_DOUBLE*|*-DUSE_MORE_BITS*) uselongdouble="$define" ;;
5657 esac
5658
5659 case "$uselongdouble" in
5660 $define|true|[yY]*)     dflt='y';;
5661 *) dflt='n';;
5662 esac
5663 cat <<EOM
5664
5665 Perl can be built to take advantage of long doubles which
5666 (if available) may give more accuracy and range for floating point numbers.
5667
5668 If this doesn't make any sense to you, just accept the default '$dflt'.
5669 EOM
5670 rp='Try to use long doubles if available?'
5671 . ./myread
5672 case "$ans" in
5673 y|Y)    val="$define"   ;;
5674 *)      val="$undef"    ;;
5675 esac
5676 set uselongdouble
5677 eval $setvar
5678
5679 case "$uselongdouble" in
5680 true|[yY]*) uselongdouble="$define" ;;
5681 esac
5682
5683 case "$uselongdouble" in
5684 $define)
5685 : Look for a hint-file generated 'call-back-unit'.  If the
5686 : user has specified that long doubles should be used,
5687 : we may need to set or change some other defaults.
5688         if $test -f uselongdouble.cbu; then
5689                 echo "Your platform has some specific hints for long doubles, using them..."
5690                 . ./uselongdouble.cbu
5691         else
5692                 $cat <<EOM
5693 (Your platform doesn't have any specific hints for long doubles.)
5694 EOM
5695         fi
5696         ;;
5697 esac
5698
5699 case "$uselongdouble:$d_sqrtl" in
5700 $define:$undef)
5701                 $cat <<EOM >&4
5702
5703 *** You requested the use of long doubles but you do not seem to have
5704 *** the mathematic functions for long doubles.  I'm disabling the use
5705 *** of long doubles.
5706
5707 EOM
5708         uselongdouble=$undef
5709         ;;
5710 esac
5711
5712 : check for length of double
5713 echo " "
5714 case "$doublesize" in
5715 '')
5716         echo "Checking to see how big your double precision numbers are..." >&4
5717         $cat >try.c <<'EOCP'
5718 #include <stdio.h>
5719 int main()
5720 {
5721     printf("%d\n", (int)sizeof(double));
5722     exit(0);
5723 }
5724 EOCP
5725         set try
5726         if eval $compile_ok; then
5727                 doublesize=`$run ./try`
5728                 echo "Your double is $doublesize bytes long."
5729         else
5730                 dflt='8'
5731                 echo "(I can't seem to compile the test program.  Guessing...)"
5732                 rp="What is the size of a double precision number (in bytes)?"
5733                 . ./myread
5734                 doublesize="$ans"
5735         fi
5736         ;;
5737 esac
5738 $rm -f try.c try
5739
5740 : check for long doubles
5741 echo " "
5742 echo "Checking to see if you have long double..." >&4
5743 echo 'int main() { long double x = 7.0; }' > try.c
5744 set try
5745 if eval $compile; then
5746         val="$define"
5747         echo "You have long double."
5748 else
5749         val="$undef"
5750         echo "You do not have long double."
5751 fi
5752 $rm try.*
5753 set d_longdbl
5754 eval $setvar
5755
5756 : check for length of long double
5757 case "${d_longdbl}${longdblsize}" in
5758 $define)
5759         echo " "
5760         echo "Checking to see how big your long doubles are..." >&4
5761         $cat >try.c <<'EOCP'
5762 #include <stdio.h>
5763 int main()
5764 {
5765         printf("%d\n", sizeof(long double));
5766 }
5767 EOCP
5768         set try
5769         set try
5770         if eval $compile; then
5771                 longdblsize=`$run ./try`
5772                 echo "Your long doubles are $longdblsize bytes long."
5773         else
5774                 dflt='8'
5775                 echo " "
5776                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
5777                 rp="What is the size of a long double (in bytes)?"
5778                 . ./myread
5779                 longdblsize="$ans"
5780         fi
5781         if $test "X$doublesize" = "X$longdblsize"; then
5782                 echo "(That isn't any different from an ordinary double.)"
5783         fi      
5784         ;;
5785 esac
5786 $rm -f try.* try
5787
5788 case "$useperlio" in
5789 $define|true|[yY]*|'')  dflt='y';;
5790 *) dflt='n';;
5791 esac
5792 cat <<EOM
5793
5794 Previous version of $package used the standard IO mechanisms as
5795 defined in <stdio.h>.  Versions 5.003_02 and later of $package allow
5796 alternate IO mechanisms via the PerlIO abstraction layer, but the
5797 stdio mechanism is still available if needed.  The abstraction layer
5798 can use AT&T's sfio (if you already have sfio installed) or regular stdio.
5799 Using PerlIO with sfio may cause problems with some extension modules.
5800
5801 If this doesn't make any sense to you, just accept the default '$dflt'.
5802 EOM
5803 rp='Use the PerlIO abstraction layer?'
5804 . ./myread
5805 case "$ans" in
5806 y|Y) 
5807         val="$define"
5808         ;;
5809 *)      
5810         echo "Ok, doing things the stdio way."
5811         val="$undef"
5812         ;;
5813 esac
5814 set useperlio
5815 eval $setvar 
5816
5817 case "$usesocks" in
5818 $define|true|[yY]*)
5819         case "$useperlio" in
5820         $define|true|[yY]*) ;;
5821         *)      cat >&4 <<EOM
5822
5823 You are using the SOCKS proxy protocol library which means that you
5824 should also use the PerlIO layer.  You may be headed for trouble.
5825
5826 EOM
5827                 ;;
5828         esac
5829         ;;
5830 esac
5831
5832         
5833 : determine the architecture name
5834 echo " "
5835 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
5836         tarch=`arch`"-$osname"
5837 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
5838         if uname -m > tmparch 2>&1 ; then
5839                 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
5840                         -e 's/$/'"-$osname/" tmparch`
5841         else
5842                 tarch="$osname"
5843         fi
5844         $rm -f tmparch
5845 else
5846         tarch="$osname"
5847 fi
5848 case "$myarchname" in
5849 ''|"$tarch") ;;
5850 *)
5851         echo "(Your architecture name used to be $myarchname.)"
5852         archname=''
5853         ;;
5854 esac
5855 case "$targetarch" in
5856 '') ;;
5857 *)  archname=`echo $targetarch|sed 's,^[^-]*-,,'` ;;
5858 esac
5859 myarchname="$tarch"
5860 case "$archname" in
5861 '') dflt="$tarch";;
5862 *) dflt="$archname";;
5863 esac
5864 rp='What is your architecture name'
5865 . ./myread
5866 archname="$ans"
5867 case "$usethreads" in
5868 $define)
5869         echo "Threads selected." >&4
5870         case "$archname" in
5871         *-thread*) echo "...and architecture name already has -thread." >&4
5872                 ;;
5873         *)      archname="$archname-thread"
5874                 echo "...setting architecture name to $archname." >&4
5875                 ;;
5876         esac
5877         ;;
5878 esac
5879 case "$usemultiplicity" in
5880 $define)
5881         echo "Multiplicity selected." >&4
5882         case "$archname" in
5883         *-multi*) echo "...and architecture name already has -multi." >&4
5884                 ;;
5885         *)      archname="$archname-multi"
5886                 echo "...setting architecture name to $archname." >&4
5887                 ;;
5888         esac
5889         ;;
5890 esac
5891 case "$use64bitint$use64bitall" in
5892 *"$define"*)
5893         case "$archname64" in
5894         '')
5895                 echo "This architecture is naturally 64-bit, not changing architecture name." >&4
5896                 ;;
5897         *)
5898                 case "$use64bitint" in
5899                 "$define") echo "64 bit integers selected." >&4 ;;
5900                 esac
5901                 case "$use64bitall" in
5902                 "$define") echo "Maximal 64 bitness selected." >&4 ;;
5903                 esac
5904                 case "$archname" in
5905                 *-$archname64*) echo "...and architecture name already has $archname64." >&4
5906                         ;;
5907                 *)      archname="$archname-$archname64"
5908                         echo "...setting architecture name to $archname." >&4
5909                         ;;
5910                 esac
5911                 ;;
5912         esac
5913 esac
5914 case "$uselongdouble" in
5915 $define)
5916         echo "Long doubles selected." >&4
5917         case "$longdblsize" in
5918         $doublesize)
5919                 "...but long doubles are equal to doubles, not changing architecture name." >&4
5920                 ;;
5921         *)
5922                 case "$archname" in
5923                 *-ld*) echo "...and architecture name already has -ld." >&4
5924                         ;;
5925                 *)      archname="$archname-ld"
5926                         echo "...setting architecture name to $archname." >&4
5927                         ;;
5928                 esac
5929                 ;;
5930         esac
5931         ;;
5932 esac
5933 case "$useperlio" in
5934 $define)
5935         echo "Perlio selected." >&4
5936         ;;
5937 *)
5938         echo "Perlio not selected, using stdio." >&4
5939         case "$archname" in
5940         *-stdio*) echo "...and architecture name already has -stdio." >&4
5941                 ;;
5942         *)      archname="$archname-stdio"
5943                 echo "...setting architecture name to $archname." >&4
5944                 ;;
5945         esac
5946         ;;
5947 esac
5948
5949 : determine root of directory hierarchy where package will be installed.
5950 case "$prefix" in
5951 '')
5952         dflt=`./loc . /usr/local /usr/local /local /opt /usr`
5953         ;;
5954 *)
5955         dflt="$prefix"
5956         ;;
5957 esac
5958 $cat <<EOM
5959
5960 By default, $package will be installed in $dflt/bin, manual pages
5961 under $dflt/man, etc..., i.e. with $dflt as prefix for all
5962 installation directories. Typically this is something like /usr/local.
5963 If you wish to have binaries under /usr/bin but other parts of the
5964 installation under /usr/local, that's ok: you will be prompted
5965 separately for each of the installation directories, the prefix being
5966 only used to set the defaults.
5967
5968 EOM
5969 fn=d~
5970 rp='Installation prefix to use?'
5971 . ./getfile
5972 oldprefix=''
5973 case "$prefix" in
5974 '') ;;
5975 *)
5976         case "$ans" in
5977         "$prefix") ;;
5978         *) oldprefix="$prefix";;
5979         esac
5980         ;;
5981 esac
5982 prefix="$ans"
5983 prefixexp="$ansexp"
5984
5985 case "$afsroot" in
5986 '')     afsroot=/afs ;;
5987 *)      afsroot=$afsroot ;;
5988 esac
5989
5990 : is AFS running?
5991 echo " "
5992 case "$afs" in
5993 $define|true)   afs=true ;;
5994 $undef|false)   afs=false ;;
5995 *)      if test -d $afsroot; then
5996                 afs=true
5997         else
5998                 afs=false
5999         fi
6000         ;;
6001 esac
6002 if $afs; then
6003         echo "AFS may be running... I'll be extra cautious then..." >&4
6004 else
6005         echo "AFS does not seem to be running..." >&4
6006 fi
6007
6008 : determine installation prefix for where package is to be installed.
6009 if $afs; then 
6010 $cat <<EOM
6011
6012 Since you are running AFS, I need to distinguish the directory in which
6013 files will reside from the directory in which they are installed (and from
6014 which they are presumably copied to the former directory by occult means).
6015
6016 EOM
6017         case "$installprefix" in
6018         '') dflt=`echo $prefix | sed 's#^/afs/#/afs/.#'`;;
6019         *) dflt="$installprefix";;
6020         esac
6021 else
6022 $cat <<EOM
6023
6024 In some special cases, particularly when building $package for distribution,
6025 it is convenient to distinguish between the directory in which files should 
6026 be installed from the directory ($prefix) in which they 
6027 will eventually reside.  For most users, these two directories are the same.
6028
6029 EOM
6030         case "$installprefix" in
6031         '') dflt=$prefix ;;
6032         *) dflt=$installprefix;;
6033         esac
6034 fi
6035 fn=d~
6036 rp='What installation prefix should I use for installing files?'
6037 . ./getfile
6038 installprefix="$ans"
6039 installprefixexp="$ansexp"
6040
6041 : set the prefixit variable, to compute a suitable default value
6042 prefixit='case "$3" in
6043 ""|none)
6044         case "$oldprefix" in
6045         "") eval "$1=\"\$$2\"";;
6046         *)
6047                 case "$3" in
6048                 "") eval "$1=";;
6049                 none)
6050                         eval "tp=\"\$$2\"";
6051                         case "$tp" in
6052                         ""|" ") eval "$1=\"\$$2\"";;
6053                         *) eval "$1=";;
6054                         esac;;
6055                 esac;;
6056         esac;;
6057 *)
6058         eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
6059         case "$tp" in
6060         --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
6061         /*-$oldprefix/*|\~*-$oldprefix/*)
6062                 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
6063         *) eval "$1=\"\$$2\"";;
6064         esac;;
6065 esac'
6066
6067 : get the patchlevel
6068 echo " "
6069 echo "Getting the current patchlevel..." >&4
6070 if $test -r $rsrc/patchlevel.h;then
6071         revision=`awk '/define[         ]+PERL_REVISION/ {print $3}' $rsrc/patchlevel.h`
6072         patchlevel=`awk '/define[       ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
6073         subversion=`awk '/define[       ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
6074         api_revision=`awk '/define[     ]+PERL_API_REVISION/ {print $3}' $rsrc/patchlevel.h`
6075         api_version=`awk '/define[      ]+PERL_API_VERSION/ {print $3}' $rsrc/patchlevel.h`
6076         api_subversion=`awk '/define[   ]+PERL_API_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
6077        perl_patchlevel=`grep ',"DEVEL[0-9][0-9]*"' $rsrc/patchlevel.h|sed 's/[^0-9]//g'`
6078 else
6079         revision=0
6080         patchlevel=0
6081         subversion=0
6082         api_revision=0
6083         api_version=0
6084         api_subversion=0
6085         perl_patchlevel=0
6086         $echo "(You do not have patchlevel.h.  Eek.)"
6087 fi
6088 if $test -r $rsrc/.patch ; then  
6089         if $test "`cat $rsrc/.patch`" -gt "$perl_patchlevel" ; then
6090                 perl_patchlevel=`cat $rsrc/.patch`
6091         fi
6092 fi
6093 : Define a handy string here to avoid duplication in myconfig.SH and configpm.
6094 version_patchlevel_string="version $patchlevel subversion $subversion"
6095 case "$perl_patchlevel" in
6096 0|'') ;;
6097 *) version_patchlevel_string="$version_patchlevel_string patch $perl_patchlevel" ;;
6098 esac
6099
6100 $echo "(You have $package $version_patchlevel_string.)"
6101
6102 case "$osname" in
6103 dos|vms)
6104         : XXX Should be a Configure test for double-dots in filenames.
6105         version=`echo $revision $patchlevel $subversion | \
6106                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
6107         api_versionstring=`echo $api_revision $api_version $api_subversion | \
6108                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
6109         ;;
6110 *)
6111         version=`echo $revision $patchlevel $subversion | \
6112                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
6113         api_versionstring=`echo $api_revision $api_version $api_subversion | \
6114                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
6115         ;;
6116 esac
6117 : Special case the 5.005_xx maintenance series, which used 5.005
6118 : without any subversion label as a subdirectory in $sitelib
6119 if test "${api_revision}${api_version}${api_subversion}" = "550"; then
6120         api_versionstring='5.005'
6121 fi
6122
6123 : determine installation style
6124 : For now, try to deduce it from prefix unless it is already set.
6125 : Reproduce behavior of 5.005 and earlier, maybe drop that in 5.7.
6126 case "$installstyle" in
6127 '')     case "$prefix" in
6128                 *perl*) dflt='lib';;
6129                 *) dflt='lib/perl5' ;;
6130         esac
6131         ;;
6132 *)      dflt="$installstyle" ;;
6133 esac
6134 : Probably not worth prompting for this since we prompt for all
6135 : the directories individually, and the prompt would be too long and
6136 : confusing anyway.
6137 installstyle=$dflt
6138
6139 : determine where private library files go
6140 : Usual default is /usr/local/lib/perl5/$version.
6141 : Also allow things like /opt/perl/lib/$version, since 
6142 : /opt/perl/lib/perl5... would be redundant.
6143 : The default "style" setting is made in installstyle.U
6144 case "$installstyle" in
6145 *lib/perl5*) set dflt privlib lib/$package/$version ;;
6146 *)       set dflt privlib lib/$version ;;
6147 esac
6148 eval $prefixit
6149 $cat <<EOM
6150
6151 There are some auxiliary files for $package that need to be put into a
6152 private library directory that is accessible by everyone.
6153
6154 EOM
6155 fn=d~+
6156 rp='Pathname where the private library files will reside?'
6157 . ./getfile
6158 privlib="$ans"
6159 privlibexp="$ansexp"
6160 : Change installation prefix, if necessary.
6161 if $test X"$prefix" != X"$installprefix"; then
6162         installprivlib=`echo $privlibexp | sed "s#^$prefix#$installprefix#"`
6163 else
6164         installprivlib="$privlibexp"
6165 fi
6166
6167 : set the prefixup variable, to restore leading tilda escape
6168 prefixup='case "$prefixexp" in
6169 "$prefix") ;;
6170 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
6171 esac'
6172
6173 : determine where public architecture dependent libraries go
6174 set archlib archlib
6175 eval $prefixit
6176 : privlib default is /usr/local/lib/$package/$version
6177 : archlib default is /usr/local/lib/$package/$version/$archname
6178 : privlib may have an optional trailing /share.
6179 tdflt=`echo $privlib | $sed 's,/share$,,'`
6180 tdflt=$tdflt/$archname
6181 case "$archlib" in
6182 '')     dflt=$tdflt
6183         ;;
6184 *)      dflt="$archlib"
6185     ;;
6186 esac
6187 $cat <<EOM
6188
6189 $spackage contains architecture-dependent library files.  If you are
6190 sharing libraries in a heterogeneous environment, you might store
6191 these files in a separate location.  Otherwise, you can just include
6192 them with the rest of the public library files.
6193
6194 EOM
6195 fn=d+~
6196 rp='Where do you want to put the public architecture-dependent libraries?'
6197 . ./getfile
6198 archlib="$ans"
6199 archlibexp="$ansexp"
6200 if $test X"$archlib" = X"$privlib"; then
6201         d_archlib="$undef"
6202 else
6203         d_archlib="$define"
6204 fi
6205 : Change installation prefix, if necessary.
6206 if $test X"$prefix" != X"$installprefix"; then
6207         installarchlib=`echo $archlibexp | sed "s#^$prefix#$installprefix#"`
6208 else
6209         installarchlib="$archlibexp"
6210 fi
6211
6212
6213 : Binary compatibility with 5.005 is not possible for builds
6214 : with advanced features
6215 case "$usethreads$usemultiplicity" in
6216 *define*)
6217         bincompat5005="$undef"
6218         d_bincompat5005="$undef"
6219         ;;
6220 *)      $cat <<EOM
6221
6222 This version of Perl can be compiled for binary compatibility with 5.005.
6223 If you decide to do so, you will be able to continue using most of the
6224 extensions that were compiled for Perl 5.005.
6225
6226 EOM
6227         case "$bincompat5005$d_bincompat5005" in
6228         *"$undef"*) dflt=n ;;
6229         *) dflt=y ;;
6230         esac
6231         rp='Binary compatibility with Perl 5.005?'
6232         . ./myread
6233         case "$ans" in
6234         y*) val="$define" ;;
6235         *)  val="$undef" ;;
6236         esac
6237         set d_bincompat5005
6238         eval $setvar
6239         case "$d_bincompat5005" in
6240         "$define")
6241                 bincompat5005="$define"
6242                 ;;
6243         *)      bincompat5005="$undef"
6244                 d_bincompat5005="$undef"
6245                 ;;
6246         esac
6247         ;;
6248 esac
6249
6250
6251 : see if setuid scripts can be secure
6252 $cat <<EOM
6253
6254 Some kernels have a bug that prevents setuid #! scripts from being
6255 secure.  Some sites have disabled setuid #! scripts because of this.
6256
6257 First let's decide if your kernel supports secure setuid #! scripts.
6258 (If setuid #! scripts would be secure but have been disabled anyway,
6259 don't say that they are secure if asked.)
6260
6261 EOM
6262
6263 val="$undef"
6264 if $test -d /dev/fd; then
6265         echo "#!$ls" >reflect
6266         chmod +x,u+s reflect
6267         ./reflect >flect 2>&1
6268         if $contains "/dev/fd" flect >/dev/null; then
6269                 echo "Congratulations, your kernel has secure setuid scripts!" >&4
6270                 val="$define"
6271         else
6272                 $cat <<EOM
6273 If you are not sure if they are secure, I can check but I'll need a
6274 username and password different from the one you are using right now.
6275 If you don't have such a username or don't want me to test, simply
6276 enter 'none'.
6277
6278 EOM
6279                 rp='Other username to test security of setuid scripts with?'
6280                 dflt='none'
6281                 . ./myread
6282                 case "$ans" in
6283                 n|none)
6284                         case "$d_suidsafe" in
6285                         '')     echo "I'll assume setuid scripts are *not* secure." >&4
6286                                 dflt=n;;
6287                         "$undef")
6288                                 echo "Well, the $hint value is *not* secure." >&4
6289                                 dflt=n;;
6290                         *)      echo "Well, the $hint value *is* secure." >&4
6291                                 dflt=y;;
6292                         esac
6293                         ;;
6294                 *)
6295                         $rm -f reflect flect
6296                         echo "#!$ls" >reflect
6297                         chmod +x,u+s reflect
6298                         echo >flect
6299                         chmod a+w flect
6300                         echo '"su" will (probably) prompt you for '"$ans's password."
6301                         su $ans -c './reflect >flect'
6302                         if $contains "/dev/fd" flect >/dev/null; then
6303                                 echo "Okay, it looks like setuid scripts are secure." >&4
6304                                 dflt=y
6305                         else
6306                                 echo "I don't think setuid scripts are secure." >&4
6307                                 dflt=n
6308                         fi
6309                         ;;
6310                 esac
6311                 rp='Does your kernel have *secure* setuid scripts?'
6312                 . ./myread
6313                 case "$ans" in
6314                 [yY]*)  val="$define";;
6315                 *)      val="$undef";;
6316                 esac
6317         fi
6318 else
6319         echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
6320         echo "(That's for file descriptors, not floppy disks.)"
6321         val="$undef"
6322 fi
6323 set d_suidsafe
6324 eval $setvar
6325
6326 $rm -f reflect flect
6327
6328 : now see if they want to do setuid emulation
6329 echo " "
6330 val="$undef"
6331 case "$d_suidsafe" in
6332 "$define")
6333         val="$undef"
6334         echo "No need to emulate SUID scripts since they are secure here." >& 4
6335         ;;
6336 *)
6337         $cat <<EOM
6338 Some systems have disabled setuid scripts, especially systems where
6339 setuid scripts cannot be secure.  On systems where setuid scripts have
6340 been disabled, the setuid/setgid bits on scripts are currently
6341 useless.  It is possible for $package to detect those bits and emulate
6342 setuid/setgid in a secure fashion.  This emulation will only work if
6343 setuid scripts have been disabled in your kernel.
6344
6345 EOM
6346         case "$d_dosuid" in
6347         "$define") dflt=y ;;
6348         *) dflt=n ;;
6349         esac
6350         rp="Do you want to do setuid/setgid emulation?"
6351         . ./myread
6352         case "$ans" in
6353         [yY]*)  val="$define";;
6354         *)      val="$undef";;
6355         esac
6356         ;;
6357 esac
6358 set d_dosuid
6359 eval $setvar
6360
6361 : see if this is a malloc.h system
6362 set malloc.h i_malloc
6363 eval $inhdr
6364
6365 : see if stdlib is available
6366 set stdlib.h i_stdlib
6367 eval $inhdr
6368
6369 : determine which malloc to compile in
6370 echo " "
6371 case "$usemymalloc" in
6372 [yY]*|true|$define)     dflt='y' ;;
6373 [nN]*|false|$undef)     dflt='n' ;;
6374 *)      case "$ptrsize" in
6375         4) dflt='y' ;;
6376         *) dflt='n' ;;
6377         esac
6378         ;;
6379 esac
6380 rp="Do you wish to attempt to use the malloc that comes with $package?"
6381 . ./myread
6382 usemymalloc="$ans"
6383 case "$ans" in
6384 y*|true)
6385         usemymalloc='y'
6386         mallocsrc='malloc.c'
6387         mallocobj="malloc$_o"
6388         d_mymalloc="$define"
6389         case "$libs" in
6390         *-lmalloc*)
6391                 : Remove malloc from list of libraries to use
6392                 echo "Removing unneeded -lmalloc from library list" >&4
6393                 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
6394                 shift
6395                 libs="$*"
6396                 echo "libs = $libs" >&4
6397                 ;;
6398         esac
6399         ;;
6400 *)
6401         usemymalloc='n'
6402         mallocsrc=''
6403         mallocobj=''
6404         d_mymalloc="$undef"
6405         ;;
6406 esac
6407
6408 : compute the return types of malloc and free
6409 echo " "
6410 $cat >malloc.c <<END
6411 #$i_malloc I_MALLOC
6412 #$i_stdlib I_STDLIB
6413 #include <stdio.h>
6414 #include <sys/types.h>
6415 #ifdef I_MALLOC
6416 #include <malloc.h>
6417 #endif
6418 #ifdef I_STDLIB
6419 #include <stdlib.h>
6420 #endif
6421 #ifdef TRY_MALLOC
6422 void *malloc();
6423 #endif
6424 #ifdef TRY_FREE
6425 void free();
6426 #endif
6427 END
6428 case "$malloctype" in
6429 '')
6430         if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
6431                 malloctype='void *'
6432         else
6433                 malloctype='char *'
6434         fi
6435         ;;
6436 esac
6437 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
6438
6439 case "$freetype" in
6440 '')
6441         if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
6442                 freetype='void'
6443         else
6444                 freetype='int'
6445         fi
6446         ;;
6447 esac
6448 echo "Your system uses $freetype free(), it would seem." >&4
6449 $rm -f malloc.[co]
6450 $cat <<EOM
6451
6452 After $package is installed, you may wish to install various
6453 add-on modules and utilities.  Typically, these add-ons will
6454 be installed under $prefix with the rest
6455 of this package.  However, you may wish to install such add-ons
6456 elsewhere under a different prefix.
6457
6458 If you do not wish to put everything under a single prefix, that's
6459 ok.  You will be prompted for the individual locations; this siteprefix
6460 is only used to suggest the defaults.
6461
6462 The default should be fine for most people.
6463
6464 EOM
6465 fn=d~+
6466 rp='Installation prefix to use for add-on modules and utilities?'
6467 : XXX Here might be another good place for an installstyle setting.
6468 case "$siteprefix" in
6469 '') dflt=$prefix ;;
6470 *)  dflt=$siteprefix ;;
6471 esac
6472 . ./getfile
6473 : XXX Prefixit unit does not yet support siteprefix and vendorprefix
6474 oldsiteprefix=''
6475 case "$siteprefix" in
6476 '') ;;
6477 *)      case "$ans" in
6478         "$prefix") ;;
6479         *) oldsiteprefix="$prefix";;
6480         esac
6481         ;;
6482 esac
6483 siteprefix="$ans"
6484 siteprefixexp="$ansexp"
6485
6486 : determine where site specific libraries go.
6487 : Usual default is /usr/local/lib/perl5/site_perl/$version
6488 : The default "style" setting is made in installstyle.U
6489 : XXX No longer works with Prefixit stuff.
6490 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6491 case "$sitelib" in
6492 '') case "$installstyle" in
6493         *lib/perl5*) dflt=$siteprefix/lib/$package/site_$prog/$version ;;
6494         *)       dflt=$siteprefix/lib/site_$prog/$version ;;
6495         esac
6496         ;;
6497 *)      dflt="$sitelib"
6498         ;;
6499 esac
6500 $cat <<EOM
6501
6502 The installation process will create a directory for
6503 site-specific extensions and modules.  Most users find it convenient
6504 to place all site-specific files in this directory rather than in the
6505 main distribution directory.
6506
6507 EOM
6508 fn=d~+
6509 rp='Pathname for the site-specific library files?'
6510 . ./getfile
6511 sitelib="$ans"
6512 sitelibexp="$ansexp"
6513 sitelib_stem=`echo "$sitelibexp" | sed "s,/$version$,,"`
6514 : Change installation prefix, if necessary.
6515 if $test X"$prefix" != X"$installprefix"; then
6516         installsitelib=`echo $sitelibexp | $sed "s#^$prefix#$installprefix#"`
6517 else
6518         installsitelib="$sitelibexp"
6519 fi
6520
6521 : determine where site specific architecture-dependent libraries go.
6522 : sitelib  default is /usr/local/lib/perl5/site_perl/$version
6523 : sitearch default is /usr/local/lib/perl5/site_perl/$version/$archname
6524 : sitelib may have an optional trailing /share.
6525 case "$sitearch" in
6526 '')     dflt=`echo $sitelib | $sed 's,/share$,,'`
6527         dflt="$dflt/$archname"
6528         ;;
6529 *)      dflt="$sitearch"
6530         ;;
6531 esac
6532 set sitearch sitearch none
6533 eval $prefixit
6534 $cat <<EOM
6535
6536 The installation process will also create a directory for
6537 architecture-dependent site-specific extensions and modules.
6538
6539 EOM
6540 fn=d~+
6541 rp='Pathname for the site-specific architecture-dependent library files?'
6542 . ./getfile
6543 sitearch="$ans"
6544 sitearchexp="$ansexp"
6545 : Change installation prefix, if necessary.
6546 if $test X"$prefix" != X"$installprefix"; then
6547         installsitearch=`echo $sitearchexp | sed "s#^$prefix#$installprefix#"`
6548 else
6549         installsitearch="$sitearchexp"
6550 fi
6551
6552 $cat <<EOM
6553
6554 The installation process will also create a directory for
6555 vendor-supplied add-ons.  Vendors who supply perl with their system
6556 may find it convenient to place all vendor-supplied files in this
6557 directory rather than in the main distribution directory.  This will
6558 ease upgrades between binary-compatible maintenance versions of perl.
6559
6560 Of course you may also use these directories in whatever way you see
6561 fit.  For example, you might use them to access modules shared over a
6562 company-wide network.
6563
6564 The default answer should be fine for most people.
6565 This causes further questions about vendor add-ons to be skipped
6566 and no vendor-specific directories will be configured for perl.
6567
6568 EOM
6569 rp='Do you want to configure vendor-specific add-on directories?'
6570 case "$usevendorprefix" in
6571 define|true|[yY]*) dflt=y ;;
6572 *)      : User may have set vendorprefix directly on Configure command line.
6573         case "$vendorprefix" in
6574         ''|' ') dflt=n ;;
6575         *)      dflt=y ;;
6576         esac
6577         ;;
6578 esac
6579 . ./myread
6580 case "$ans" in
6581 [yY]*)  fn=d~+
6582         rp='Installation prefix to use for vendor-supplied add-ons?'
6583         case "$vendorprefix" in
6584         '') dflt='' ;;
6585         *)  dflt=$vendorprefix ;;
6586         esac
6587         . ./getfile
6588         : XXX Prefixit unit does not yet support siteprefix and vendorprefix
6589         oldvendorprefix=''
6590         case "$vendorprefix" in
6591         '') ;;
6592         *)      case "$ans" in
6593                 "$prefix") ;;
6594                 *) oldvendorprefix="$prefix";;
6595                 esac
6596                 ;;
6597         esac
6598         usevendorprefix="$define"
6599         vendorprefix="$ans"
6600         vendorprefixexp="$ansexp"
6601         ;;
6602 *)      usevendorprefix="$undef"
6603         vendorprefix=''
6604         vendorprefixexp=''
6605         ;;
6606 esac
6607
6608 case "$vendorprefix" in
6609 '')     d_vendorlib="$undef"
6610         vendorlib=''
6611         vendorlibexp=''
6612         ;;
6613 *)      d_vendorlib="$define"
6614         : determine where vendor-supplied modules go.
6615         : Usual default is /usr/local/lib/perl5/vendor_perl/$version
6616         case "$vendorlib" in
6617         '')
6618                 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6619                 case "$installstyle" in
6620                 *lib/perl5*) dflt=$vendorprefix/lib/$package/vendor_$prog/$version ;;
6621                 *)           dflt=$vendorprefix/lib/vendor_$prog/$version ;;
6622                 esac
6623                 ;;
6624         *)      dflt="$vendorlib"
6625                 ;;
6626         esac
6627         fn=d~+
6628         rp='Pathname for the vendor-supplied library files?'
6629         . ./getfile
6630         vendorlib="$ans"
6631         vendorlibexp="$ansexp"
6632         ;;
6633 esac
6634 vendorlib_stem=`echo "$vendorlibexp" | sed "s,/$version$,,"`
6635 : Change installation prefix, if necessary.
6636 if $test X"$prefix" != X"$installprefix"; then
6637         installvendorlib=`echo $vendorlibexp | $sed "s#^$prefix#$installprefix#"`
6638 else
6639         installvendorlib="$vendorlibexp"
6640 fi
6641
6642 case "$vendorprefix" in
6643 '')     d_vendorarch="$undef"
6644         vendorarch=''
6645         vendorarchexp=''
6646         ;;
6647 *)      d_vendorarch="$define"
6648         : determine where vendor-supplied architecture-dependent libraries go.
6649         : vendorlib  default is /usr/local/lib/perl5/vendor_perl/$version
6650         : vendorarch default is /usr/local/lib/perl5/vendor_perl/$version/$archname
6651         : vendorlib may have an optional trailing /share.
6652         case "$vendorarch" in
6653         '')     dflt=`echo $vendorlib | $sed 's,/share$,,'`
6654                 dflt="$dflt/$archname"
6655                 ;;
6656         *)      dflt="$vendorarch" ;;
6657         esac
6658         fn=d~+
6659         rp='Pathname for vendor-supplied architecture-dependent files?'
6660         . ./getfile
6661         vendorarch="$ans"
6662         vendorarchexp="$ansexp"
6663         ;;
6664 esac
6665 : Change installation prefix, if necessary.
6666 if $test X"$prefix" != X"$installprefix"; then
6667         installvendorarch=`echo $vendorarchexp | sed "s#^$prefix#$installprefix#"`
6668 else
6669         installvendorarch="$vendorarchexp"
6670 fi
6671
6672 : Final catch-all directories to search
6673 $cat <<EOM
6674
6675 Lastly, you can have perl look in other directories for extensions and
6676 modules in addition to those already specified.
6677 These directories will be searched after 
6678         $sitearch 
6679         $sitelib 
6680 EOM
6681 test X"$vendorlib" != "X" && echo '     ' $vendorlib
6682 test X"$vendorarch" != "X" && echo '    ' $vendorarch
6683 echo ' '
6684 case "$otherlibdirs" in
6685 ''|' ') dflt='none' ;;
6686 *)      dflt="$otherlibdirs" ;;
6687 esac
6688 $cat <<EOM
6689 Enter a colon-separated set of extra paths to include in perl's @INC
6690 search path, or enter 'none' for no extra paths.
6691
6692 EOM
6693
6694 rp='Colon-separated list of additional directories for perl to search?'
6695 . ./myread
6696 case "$ans" in
6697 ' '|''|none)    otherlibdirs=' ' ;;     
6698 *)      otherlibdirs="$ans" ;;
6699 esac
6700 case "$otherlibdirs" in
6701 ' ') val=$undef ;;
6702 *)      val=$define ;;
6703 esac
6704 set d_perl_otherlibdirs
6705 eval $setvar
6706
6707 : Cruising for prototypes
6708 echo " "
6709 echo "Checking out function prototypes..." >&4
6710 $cat >prototype.c <<'EOCP'
6711 int main(int argc, char *argv[]) {
6712         exit(0);}
6713 EOCP
6714 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
6715         echo "Your C compiler appears to support function prototypes."
6716         val="$define"
6717 else
6718         echo "Your C compiler doesn't seem to understand function prototypes."
6719         val="$undef"
6720 fi
6721 set prototype
6722 eval $setvar
6723 $rm -f prototype*
6724
6725 case "$prototype" in
6726 "$define") ;;
6727 *)      ansi2knr='ansi2knr'
6728         echo " "
6729         cat <<EOM >&4
6730
6731 $me:  FATAL ERROR:
6732 This version of $package can only be compiled by a compiler that 
6733 understands function prototypes.  Unfortunately, your C compiler 
6734         $cc $ccflags
6735 doesn't seem to understand them.  Sorry about that.
6736
6737 If GNU cc is available for your system, perhaps you could try that instead.  
6738
6739 Eventually, we hope to support building Perl with pre-ANSI compilers.
6740 If you would like to help in that effort, please contact <perlbug@perl.org>.
6741
6742 Aborting Configure now.
6743 EOM
6744         exit 2
6745         ;;
6746 esac
6747
6748 : determine where public executables go
6749 echo " "
6750 set dflt bin bin
6751 eval $prefixit
6752 fn=d~
6753 rp='Pathname where the public executables will reside?'
6754 . ./getfile
6755 if $test "X$ansexp" != "X$binexp"; then
6756         installbin=''
6757 fi
6758 bin="$ans"
6759 binexp="$ansexp"
6760 : Change installation prefix, if necessary.
6761 : XXX Bug? -- ignores Configure -Dinstallprefix setting.
6762 if $test X"$prefix" != X"$installprefix"; then
6763         installbin=`echo $binexp | sed "s#^$prefix#$installprefix#"`
6764 else
6765         installbin="$binexp"
6766 fi
6767
6768 echo " "
6769 echo "Any extra modules..." >&4
6770 case "$extras" in
6771 '') dflt='y';;
6772 *) dflt='n';;
6773 esac
6774 cat <<EOM
6775 Perl can be built with extra modules or bundles of modules which
6776 will be fetched from the CPAN and installed alongside Perl.
6777
6778 Notice that you will need access to the CPAN; either via the Internet,
6779 or a local copy, for example a CD-ROM or a local CPAN mirror.  (You will
6780 be asked later to configure the CPAN.pm module which will in turn do
6781 the installation of the rest of the extra modules or bundles.)
6782
6783 Notice also that if the modules require any external software such as
6784 libraries (the libz library for the Compress::Zlib module, for example)
6785 you *NEED* to have any such external software already installed, this
6786 configuration process will not install such things for you.
6787
6788 If this doesn't make any sense to you, just accept the default '$dflt'.
6789 EOM
6790 rp='Install any extra modules (y or n) ?'
6791 . ./myread
6792 case "$ans" in
6793 y|Y)
6794         cat <<EOM
6795
6796 Please list any extra modules or bundles to be installed from CPAN,
6797 with spaces between the names.  The names can be in any format the
6798 'install' command of CPAN.pm will understand.  (Answer 'none' the
6799 quotes, to install no extra modules or bundles.)
6800 EOM
6801         rp='Extras?'
6802         dflt="$extras"
6803         . ./myread
6804         extras="$ans"
6805 esac
6806 case "$extras" in
6807 ''|'none')
6808         val=''
6809         $rm -f ../extras.lst
6810         ;;
6811 *)      echo "(Saving the list of extras for later...)"
6812         echo $extras > ../extras.lst
6813         val="$extras"
6814         ;;
6815 esac
6816 set extras
6817 eval $setvar
6818 echo " "
6819
6820 : Find perl5.005 or later.
6821 echo "Looking for a previously installed perl5.005 or later... "
6822 case "$perl5" in
6823 '')     for tdir in `echo "$binexp$path_sep$PATH" | $sed "s/$path_sep/ /g"`; do
6824                 : Check if this perl is recent and can load a simple module
6825                 if $test -x $tdir/perl$exe_ext && $tdir/perl -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6826                         perl5=$tdir/perl
6827                         break;
6828                 elif $test -x $tdir/perl5$exe_ext && $tdir/perl5 -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6829                         perl5=$tdir/perl5
6830                         break;
6831                 fi
6832         done
6833         ;;
6834 *)      perl5="$perl5"
6835         ;;
6836 esac
6837 case "$perl5" in
6838 '')     echo "None found.  That's ok.";;
6839 *)      echo "Using $perl5." ;;
6840 esac
6841
6842 : Determine list of previous versions to include in @INC
6843 $cat > getverlist <<EOPL
6844 #!$perl5 -w
6845 use File::Basename;
6846 \$api_versionstring = "$api_versionstring";
6847 \$version = "$version";
6848 \$stem = "$sitelib_stem";
6849 \$archname = "$archname";
6850 EOPL
6851         $cat >> getverlist <<'EOPL'
6852 # Can't have leading @ because metaconfig interprets it as a command!
6853 ;@inc_version_list=();
6854 # XXX Redo to do opendir/readdir? 
6855 if (-d $stem) {
6856     chdir($stem);
6857     ;@candidates = glob("5.*");
6858 }
6859 else {
6860     ;@candidates = ();
6861 }
6862
6863 # XXX ToDo:  These comparisons must be reworked when two-digit
6864 # subversions come along, so that 5.7.10 compares as greater than
6865 # 5.7.3!  By that time, hope that 5.6.x is sufficiently
6866 # widespread that we can use the built-in version vectors rather
6867 # than reinventing them here.  For 5.6.0, however, we must
6868 # assume this script will likely be run by 5.005_0x.  --AD 1/2000.
6869 foreach $d (@candidates) {
6870     if ($d lt $version) {
6871         if ($d ge $api_versionstring) {
6872             unshift(@inc_version_list, grep { -d } "$d/$archname", $d);
6873         }
6874         elsif ($d ge "5.005") {
6875             unshift(@inc_version_list, grep { -d } $d);
6876         }
6877     }
6878     else {
6879         # Skip newer version.  I.e. don't look in
6880         # 5.7.0 if we're installing 5.6.1.
6881     }
6882 }
6883
6884 if (@inc_version_list) {
6885     print join(' ', @inc_version_list);
6886 }
6887 else {
6888     # Blank space to preserve value for next Configure run.
6889     print " ";
6890 }
6891 EOPL
6892 chmod +x getverlist
6893 case "$inc_version_list" in
6894 '')     if test -x "$perl5$exe_ext"; then
6895                 dflt=`$perl5 getverlist`
6896         else
6897                 dflt='none'
6898         fi
6899         ;;
6900 $undef) dflt='none' ;;
6901 *)  eval dflt=\"$inc_version_list\" ;;
6902 esac
6903 case "$dflt" in
6904 ''|' ') dflt=none ;;
6905 esac
6906 case "$dflt" in
6907 5.005) case "$bincompat5005" in
6908        $define|true|[yY]*) ;;
6909        *) dflt=none ;;
6910        esac
6911        ;;
6912 esac
6913 $cat <<'EOM'
6914
6915 In order to ease the process of upgrading, this version of perl 
6916 can be configured to use modules built and installed with earlier 
6917 versions of perl that were installed under $prefix.  Specify here
6918 the list of earlier versions that this version of perl should check.
6919 If Configure detected no earlier versions of perl installed under
6920 $prefix, then the list will be empty.  Answer 'none' to tell perl
6921 to not search earlier versions.
6922
6923 The default should almost always be sensible, so if you're not sure,
6924 just accept the default.
6925 EOM
6926
6927 rp='List of earlier versions to include in @INC?'
6928 . ./myread
6929 case "$ans" in
6930 [Nn]one|''|' ') inc_version_list=' ' ;;
6931 *) inc_version_list="$ans" ;;
6932 esac
6933 case "$inc_version_list" in
6934 ''|' ') 
6935         inc_version_list_init='0';;
6936 *)      inc_version_list_init=`echo $inc_version_list |
6937                 $sed -e 's/^/"/' -e 's/ /","/g' -e 's/$/",0/'`
6938         ;;
6939 esac
6940 $rm -f getverlist
6941
6942 : determine whether to install perl also as /usr/bin/perl
6943
6944 echo " "
6945 if $test -d /usr/bin -a "X$installbin" != X/usr/bin; then
6946         $cat <<EOM
6947 Many scripts expect perl to be installed as /usr/bin/perl.
6948 I can install the perl you are about to compile also as /usr/bin/perl
6949 (in addition to $installbin/perl).
6950 EOM
6951         case "$installusrbinperl" in
6952         "$undef"|[nN]*) dflt='n';;
6953         *)              dflt='y';;
6954         esac
6955         rp="Do you want to install perl as /usr/bin/perl?"
6956         . ./myread
6957         case "$ans" in
6958         [yY]*)  val="$define";;
6959         *)      val="$undef" ;;
6960         esac
6961 else
6962         val="$undef"
6963 fi
6964 set installusrbinperl
6965 eval $setvar
6966
6967 : see if dld is available
6968 set dld.h i_dld
6969 eval $inhdr
6970
6971 : see if dlopen exists
6972 xxx_runnm="$runnm"
6973 runnm=false
6974 set dlopen d_dlopen
6975 eval $inlibc
6976 runnm="$xxx_runnm"
6977
6978 : determine which dynamic loading, if any, to compile in
6979 echo " "
6980 dldir="ext/DynaLoader"
6981 case "$usedl" in
6982 $define|y|true)
6983         dflt='y'
6984         usedl="$define"
6985         ;;
6986 $undef|n|false)
6987         dflt='n'
6988         usedl="$undef"
6989         ;;
6990 *) 
6991         dflt='n'
6992         case "$d_dlopen" in
6993             $define) dflt='y' ;;
6994         esac
6995         case "$i_dld" in
6996             $define) dflt='y' ;;
6997         esac
6998         : Does a dl_xxx.xs file exist for this operating system
6999         $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
7000         ;;
7001 esac
7002 rp="Do you wish to use dynamic loading?"
7003 . ./myread
7004 usedl="$ans"
7005 case "$ans" in
7006 y*) usedl="$define"
7007         case "$dlsrc" in
7008         '')
7009                 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
7010                         dflt="$dldir/dl_${osname}.xs"
7011                 elif $test "$d_dlopen" = "$define" ; then
7012                         dflt="$dldir/dl_dlopen.xs"
7013                 elif $test "$i_dld" = "$define" ; then
7014                         dflt="$dldir/dl_dld.xs"
7015                 else
7016                         dflt=''
7017                 fi
7018                 ;;
7019         *)      dflt="$dldir/$dlsrc"
7020                 ;;
7021         esac
7022     echo "The following dynamic loading files are available:"
7023         : Can not go over to $dldir because getfile has path hard-coded in.
7024         tdir=`pwd`; cd $rsrc; $ls -C $dldir/dl*.xs; cd $tdir
7025         rp="Source file to use for dynamic loading"
7026         fn="fne"
7027         gfpth="$src"
7028         . ./getfile
7029         usedl="$define"
7030         : emulate basename
7031         dlsrc=`echo $ans | $sed -e 's%.*/\([^/]*\)$%\1%'`
7032
7033         $cat << EOM
7034
7035 Some systems may require passing special flags to $cc -c to
7036 compile modules that will be used to create a shared library.
7037 To use no flags, say "none".
7038
7039 EOM
7040     case "$cccdlflags" in
7041     '') case "$gccversion" in
7042                 '') case "$osname" in
7043                         hpux)   dflt='+z' ;;
7044                         next)   dflt='none' ;;
7045                         irix*)  dflt='-KPIC' ;;
7046                         svr4*|esix*|solaris|nonstopux) dflt='-KPIC' ;;
7047                         sunos)  dflt='-pic' ;;
7048                         *)      dflt='none' ;;
7049                     esac
7050                         ;;
7051                 *)  case "$osname" in
7052                         darwin) dflt='none' ;;
7053                         svr4*|esix*|solaris|nonstopux) dflt='-fPIC' ;;
7054                         *)      dflt='-fpic' ;;
7055                     esac ;;
7056             esac ;;
7057         ' ') dflt='none' ;;
7058     *)  dflt="$cccdlflags" ;;
7059     esac
7060     rp="Any special flags to pass to $cc -c to compile shared library modules?"
7061     . ./myread
7062     case "$ans" in
7063     none) cccdlflags=' ' ;;
7064     *) cccdlflags="$ans" ;;
7065     esac
7066
7067     cat << EOM
7068
7069 Some systems use ld to create libraries that can be dynamically loaded,
7070 while other systems (such as those using ELF) use $cc.
7071
7072 EOM
7073         case "$ld" in
7074         '')     $cat >try.c <<'EOM'
7075 /* Test for whether ELF binaries are produced */
7076 #include <fcntl.h>
7077 #include <stdlib.h>
7078 int main() {
7079         char b[4];
7080         int i = open("a.out",O_RDONLY);
7081         if(i == -1) 
7082                 exit(1); /* fail */
7083         if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
7084                 exit(0); /* succeed (yes, it's ELF) */
7085         else
7086                 exit(1); /* fail */
7087 }
7088 EOM
7089                 if $cc $ccflags $ldflags try.c >/dev/null 2>&1 && $run ./a.out; then
7090                         cat <<EOM
7091 You appear to have ELF support.  I'll use $cc to build dynamic libraries.
7092 EOM
7093                         dflt="$cc"
7094                 else
7095                         echo "I'll use ld to build dynamic libraries."
7096                         dflt='ld'
7097                 fi
7098                 rm -f try.c a.out
7099                 ;;
7100         *)      dflt="$ld"
7101                 ;;
7102         esac
7103
7104     rp="What command should be used to create dynamic libraries?"
7105     . ./myread
7106         ld="$ans"
7107
7108     cat << EOM
7109
7110 Some systems may require passing special flags to $ld to create a
7111 library that can be dynamically loaded.  If your ld flags include
7112 -L/other/path options to locate libraries outside your loader's normal
7113 search path, you may need to specify those -L options here as well.  To
7114 use no flags, say "none".
7115
7116 EOM
7117     case "$lddlflags" in
7118     '') case "$osname" in
7119                         beos) dflt='-nostart' ;;
7120                         hpux) dflt='-b';
7121                               case "$gccversion" in
7122                               '') dflt="$dflt +vnocompatwarnings" ;;
7123                               esac
7124                               ;;        
7125                         linux|irix*)    dflt='-shared' ;;
7126                         next)  dflt='none' ;;
7127                         solaris) dflt='-G' ;;
7128                         sunos) dflt='-assert nodefinitions' ;;
7129                         svr4*|esix*|nonstopux) dflt="-G $ldflags" ;;
7130                 *)     dflt='none' ;;
7131                         esac
7132                         ;;
7133     *) dflt="$lddlflags" ;;
7134     esac
7135
7136         : Try to guess additional flags to pick up local libraries.
7137         : Be careful not to append to a plain 'none'
7138         case "$dflt" in
7139         none) dflt='' ;;
7140         esac
7141         for thisflag in $ldflags; do
7142                 case "$thisflag" in
7143                 -L*|-R*)
7144                         case " $dflt " in
7145                         *" $thisflag "*) ;;
7146                         *) dflt="$dflt $thisflag" ;;
7147                         esac
7148                         ;;
7149                 esac
7150         done
7151
7152         case "$dflt" in
7153         ''|' ') dflt='none' ;;
7154         esac
7155
7156     rp="Any special flags to pass to $ld to create a dynamically loaded library?"
7157     . ./myread
7158     case "$ans" in
7159     none) lddlflags=' ' ;;
7160     *) lddlflags="$ans" ;;
7161     esac
7162
7163         cat <<EOM
7164
7165 Some systems may require passing special flags to $cc to indicate that
7166 the resulting executable will use dynamic linking.  To use no flags,
7167 say "none".
7168
7169 EOM
7170     case "$ccdlflags" in
7171     '') case "$osname" in
7172                 hpux)   dflt='-Wl,-E' ;;
7173                 linux)  dflt='-rdynamic' ;;
7174                 next)   dflt='none' ;;
7175                 sunos)  dflt='none' ;;
7176                 *)      dflt='none' ;;
7177             esac ;;
7178     ' ')  dflt='none' ;;
7179     *)  dflt="$ccdlflags" ;;
7180     esac
7181     rp="Any special flags to pass to $cc to use dynamic linking?"
7182     . ./myread
7183     case "$ans" in
7184     none) ccdlflags=' ' ;;
7185     *) ccdlflags="$ans" ;;
7186     esac
7187     ;;
7188 *)  usedl="$undef"
7189         ld='ld'
7190     dlsrc='dl_none.xs'
7191     lddlflags=''
7192     ccdlflags=''
7193     ;;
7194 esac
7195
7196 also=''
7197 case "$usedl" in
7198 $undef)
7199         # No dynamic loading being used, so don't bother even to prompt.
7200         useshrplib='false'
7201         ;;
7202 *)      case "$useshrplib" in
7203         '')     case "$osname" in
7204                 svr4*|nonstopux|dgux|dynixptx|esix|powerux|beos|cygwin*)
7205                         dflt=y
7206                         also='Building a shared libperl is required for dynamic loading to work on your system.'
7207                         ;;
7208                 next*)
7209                         case "$osvers" in
7210                         4*)     dflt=y
7211                                 also='Building a shared libperl is needed for MAB support.'
7212                                 ;;
7213                         *)      dflt=n
7214                                 ;;
7215                         esac
7216                         ;;
7217                 *)      dflt=n
7218                         ;;
7219                 esac
7220                 ;;
7221         $define|true|[Yy]*)
7222                 dflt=y
7223                 ;;
7224         *)      dflt=n
7225                 ;;
7226         esac
7227         $cat << EOM
7228
7229 The perl executable is normally obtained by linking perlmain.c with
7230 libperl${_a}, any static extensions (usually just DynaLoader), and
7231 any other libraries needed on this system (such as -lm, etc.).  Since
7232 your system supports dynamic loading, it is probably possible to build
7233 a shared libperl.$so.  If you will have more than one executable linked
7234 to libperl.$so, this will significantly reduce the size of each
7235 executable, but it may have a noticeable affect on performance.  The
7236 default is probably sensible for your system.
7237 $also
7238
7239 EOM
7240         rp="Build a shared libperl.$so (y/n)"
7241         . ./myread
7242         case "$ans" in
7243         true|$define|[Yy]*)
7244                 useshrplib='true'  ;;
7245         *)      useshrplib='false' ;;
7246         esac
7247         ;;
7248 esac
7249
7250 case "$useshrplib" in
7251 true)
7252         case "$libperl" in
7253         '')
7254                 # Figure out a good name for libperl.so.  Since it gets stored in
7255                 # a version-specific architecture-dependent library, the version
7256                 # number isn't really that important, except for making cc/ld happy.
7257                 #
7258                 # A name such as libperl.so.3.1
7259                 majmin="libperl.$so.$patchlevel.$subversion"
7260                 # A name such as libperl.so.301
7261                 majonly=`echo $patchlevel $subversion |
7262                         $awk '{printf "%d%02d", $1, $2}'`
7263                 majonly=libperl.$so.$majonly
7264                 # I'd prefer to keep the os-specific stuff here to a minimum, and
7265                 # rely on figuring it out from the naming of libc.
7266                 case "${osname}${osvers}" in
7267                 next4*)
7268                         dflt=libperl.5.$so
7269                         # XXX How handle the --version stuff for MAB?
7270                         ;;
7271                 linux*)  # ld won't link with a bare -lperl otherwise.
7272                         dflt=libperl.$so
7273                         ;;
7274                 cygwin*) # include version
7275                         dflt=`echo libperl$version | sed -e 's/\./_/g'`$lib_ext
7276                         ;;
7277                 *)      # Try to guess based on whether libc has major.minor.
7278                         case "$libc" in
7279                         *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
7280                         *libc.$so.[0-9]*) dflt=$majonly ;;
7281                         *)      dflt=libperl.$so ;;
7282                         esac
7283                         ;;
7284                 esac
7285                 ;;
7286         *)      dflt=$libperl
7287                 ;;
7288         esac
7289         cat << EOM
7290
7291 I need to select a good name for the shared libperl.  If your system uses
7292 library names with major and minor numbers, then you might want something
7293 like $majmin.  Alternatively, if your system uses a single version
7294 number for shared libraries, then you might want to use $majonly.
7295 Or, your system might be quite happy with a simple libperl.$so.
7296
7297 Since the shared libperl will get installed into a version-specific
7298 architecture-dependent directory, the version number of the shared perl
7299 library probably isn't important, so the default should be o.k.
7300
7301 EOM
7302         rp='What name do you want to give to the shared libperl?'
7303         . ./myread
7304         libperl=$ans
7305         echo "Ok, I'll use $libperl"
7306         ;;
7307 *)
7308         libperl="libperl${_a}"
7309         ;;
7310 esac
7311
7312 # Detect old use of shrpdir via undocumented Configure -Dshrpdir
7313 case "$shrpdir" in
7314 '') ;;
7315 *)      $cat >&4 <<EOM
7316 WARNING:  Use of the shrpdir variable for the installation location of
7317 the shared $libperl is not supported.  It was never documented and
7318 will not work in this version.  Let me (perlbug@perl.org)
7319 know of any problems this may cause.
7320
7321 EOM
7322         case "$shrpdir" in
7323         "$archlibexp/CORE")
7324                 $cat >&4 <<EOM
7325 But your current setting of $shrpdir is
7326 the default anyway, so it's harmless.
7327 EOM
7328                 ;;
7329         *)
7330                 $cat >&4 <<EOM
7331 Further, your current attempted setting of $shrpdir
7332 conflicts with the value of $archlibexp/CORE
7333 that installperl will use.
7334 EOM
7335                 ;;
7336         esac
7337         ;;
7338 esac
7339
7340 # How will the perl executable find the installed shared $libperl?
7341 # Add $xxx to ccdlflags.
7342 # If we can't figure out a command-line option, use $shrpenv to
7343 # set env LD_RUN_PATH.  The main perl makefile uses this.
7344 shrpdir=$archlibexp/CORE
7345 xxx=''
7346 tmp_shrpenv=''
7347 if "$useshrplib"; then
7348     case "$osname" in 
7349         aix)
7350                 # We'll set it in Makefile.SH...
7351                 ;;
7352         solaris|netbsd)
7353                 xxx="-R $shrpdir"
7354                 ;;
7355         freebsd)
7356                 xxx="-Wl,-R$shrpdir"
7357                 ;;
7358         linux|irix*|dec_osf)
7359                 xxx="-Wl,-rpath,$shrpdir"
7360                 ;;
7361         next)
7362                 # next doesn't like the default...
7363                 ;;
7364         beos)
7365                 # beos doesn't like the default, either.
7366                 ;;
7367         hpux*)
7368                 # hpux doesn't like the default, either.
7369                 tmp_shrpenv="env LDOPTS=\"+s +b${shrpdir}\""
7370                 ;;
7371         *)
7372                 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
7373                 ;;
7374         esac
7375         case "$xxx" in
7376         '') ;;
7377         *)      
7378                 # Only add $xxx if it isn't already in ccdlflags.
7379                 case " $ccdlflags " in
7380                 *" $xxx "*)     ;;
7381                 *)      ccdlflags="$ccdlflags $xxx"
7382                         cat <<EOM >&4
7383
7384 Adding $xxx to the flags
7385 passed to $ld so that the perl executable will find the 
7386 installed shared $libperl.
7387
7388 EOM
7389                         ;;
7390                 esac
7391                 ;;
7392         esac
7393 fi
7394 # Fix ccdlflags in AIX for building external extensions.
7395 # (For building Perl itself bare -bE:perl.exp is needed,
7396 #  Makefile.SH takes care of this.)
7397 case "$osname" in
7398 aix) ccdlflags="$ccdlflags -bE:$installarchlib/CORE/perl.exp" ;;
7399 esac
7400 # Respect a hint or command-line value.
7401 case "$shrpenv" in
7402 '') shrpenv="$tmp_shrpenv" ;;
7403 esac
7404 case "$ldlibpthname" in
7405 '')     ldlibpthname=LD_LIBRARY_PATH ;;
7406 none)   ldlibpthname='' ;;
7407 esac
7408
7409 : determine where manual pages are on this system
7410 echo " "
7411 case "$sysman" in
7412 '') 
7413         syspath='/usr/man/man1 /usr/man/mann /usr/man/manl /usr/man/local/man1'
7414         syspath="$syspath /usr/man/u_man/man1 /usr/share/man/man1"
7415         syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
7416         syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
7417         syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
7418         sysman=`./loc . /usr/man/man1 $syspath`
7419         ;;
7420 esac
7421 if $test -d "$sysman"; then
7422         echo "System manual is in $sysman." >&4
7423 else
7424         echo "Could not find manual pages in source form." >&4
7425 fi
7426
7427 : determine where manual pages go
7428 set man1dir man1dir none
7429 eval $prefixit
7430 $cat <<EOM
7431
7432 $spackage has manual pages available in source form.
7433 EOM
7434 case "$nroff" in
7435 nroff)
7436         echo "However, you don't have nroff, so they're probably useless to you."
7437         case "$man1dir" in
7438         '') man1dir="none";;
7439         esac;;
7440 esac
7441 echo "If you don't want the manual sources installed, answer 'none'."
7442 case "$man1dir" in
7443 ' ') dflt=none
7444         ;;
7445 '')
7446         lookpath="$prefixexp/man/man1 $prefixexp/man/l_man/man1"
7447         lookpath="$lookpath $prefixexp/man/p_man/man1"
7448         lookpath="$lookpath $prefixexp/man/u_man/man1"
7449         lookpath="$lookpath $prefixexp/man/man.1"
7450         case "$sysman" in
7451         */?_man*)       dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
7452         *)      dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
7453         esac
7454         set dflt
7455         eval $prefixup
7456         ;;
7457 *)  dflt="$man1dir"
7458         ;;
7459 esac
7460 echo " "
7461 fn=dn+~
7462 rp="Where do the main $spackage manual pages (source) go?"
7463 . ./getfile
7464 if $test "X$man1direxp" != "X$ansexp"; then
7465         installman1dir=''
7466 fi
7467 man1dir="$ans"
7468 man1direxp="$ansexp"
7469 case "$man1dir" in
7470 '')     man1dir=' '
7471         installman1dir='';;
7472 esac
7473
7474 : Change installation prefix, if necessary.
7475 if $test X"$prefix" != X"$installprefix"; then
7476         installman1dir=`echo $man1direxp | $sed "s#^$prefix#$installprefix#"`
7477 else
7478         installman1dir="$man1direxp"
7479 fi
7480
7481 : What suffix to use on installed man pages
7482
7483 case "$man1dir" in
7484 ' ')
7485         man1ext='0'
7486         ;;
7487 *)
7488         rp="What suffix should be used for the main $spackage man pages?"
7489         case "$man1ext" in
7490         '')     case "$man1dir" in
7491                 *1)  dflt=1 ;;
7492                 *1p) dflt=1p ;;
7493                 *1pm) dflt=1pm ;;
7494                 *l) dflt=l;;
7495                 *n) dflt=n;;
7496                 *o) dflt=o;;
7497                 *p) dflt=p;;
7498                 *C) dflt=C;;
7499                 *L) dflt=L;;
7500                 *L1) dflt=L1;;
7501                 *) dflt=1;;
7502                 esac
7503                 ;;
7504         *)      dflt="$man1ext";;
7505         esac
7506         . ./myread
7507         man1ext="$ans"
7508         ;;
7509 esac
7510
7511 : see if we can have long filenames
7512 echo " "
7513 first=123456789abcdef
7514 $rm -f $first
7515 if (echo hi >$first) 2>/dev/null; then
7516         if $test -f 123456789abcde; then
7517                 echo 'You cannot have filenames longer than 14 characters.  Sigh.' >&4
7518                 val="$undef"
7519         else
7520                 echo 'You can have filenames longer than 14 characters.'>&4
7521                 val="$define"
7522         fi
7523 else
7524         $cat <<'EOM'
7525 You can't have filenames longer than 14 chars.
7526 You can't even think about them!
7527 EOM
7528         val="$undef"
7529 fi 
7530 set d_flexfnam
7531 eval $setvar
7532 $rm -rf 123456789abcde*
7533
7534 : determine where library module manual pages go
7535 set man3dir man3dir none
7536 eval $prefixit
7537 $cat <<EOM
7538
7539 $spackage has manual pages for many of the library modules.
7540 EOM
7541
7542 case "$nroff" in
7543 nroff)
7544         $cat <<'EOM'
7545 However, you don't have nroff, so they're probably useless to you.
7546 EOM
7547         case "$man3dir" in
7548         '') man3dir="none";;
7549         esac;;
7550 esac
7551
7552 case "$d_flexfnam" in
7553 undef)
7554         $cat <<'EOM'
7555 However, your system can't handle the long file names like File::Basename.3. 
7556 EOM
7557         case "$man3dir" in
7558         '') man3dir="none";;
7559         esac;;
7560 esac
7561
7562 echo "If you don't want the manual sources installed, answer 'none'."
7563 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
7564 case "$man3dir" in
7565 '')     dflt=`echo "$man1dir" | $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'`
7566         if $test -d "$privlib/man/man3"; then
7567                 cat <<EOM >&4
7568
7569 WARNING:  Previous versions of perl installed man3 pages into
7570 $privlib/man/man3.  This version will suggest a 
7571 new default of $dflt.  
7572 EOM
7573                 tdflt=$dflt
7574                 dflt='n'
7575                 rp='Do you wish to preserve the old behavior?(y/n)'
7576                 . ./myread
7577                 case "$ans" in
7578                 y*) dflt="$privlib/man/man3" ;;
7579                 *)  dflt=$tdflt ;;
7580                 esac
7581     fi
7582         ;;
7583 *)      dflt="$man3dir" ;;
7584 esac
7585 case "$dflt" in
7586 ' ') dflt=none ;;
7587 esac
7588 echo " "
7589 fn=dn+~
7590 rp="Where do the $package library man pages (source) go?"
7591 . ./getfile
7592 man3dir="$ans"
7593 man3direxp="$ansexp"
7594 case "$man3dir" in
7595 '')     man3dir=' '
7596         installman3dir='';;
7597 esac
7598
7599 : Change installation prefix, if necessary.
7600 if $test X"$prefix" != X"$installprefix"; then
7601         installman3dir=`echo $man3direxp | $sed "s#^$prefix#$installprefix#"`
7602 else
7603         installman3dir="$man3direxp"
7604 fi
7605
7606 : What suffix to use on installed man pages
7607 case "$man3dir" in
7608 ' ')
7609         man3ext='0'
7610         ;;
7611 *)
7612         rp="What suffix should be used for the $package library man pages?"
7613         case "$man3ext" in
7614         '')     case "$man3dir" in
7615                 *3)  dflt=3 ;;
7616                 *3p) dflt=3p ;;
7617                 *3pm) dflt=3pm ;;
7618                 *l) dflt=l;;
7619                 *n) dflt=n;;
7620                 *o) dflt=o;;
7621                 *p) dflt=p;;
7622                 *C) dflt=C;;
7623                 *L) dflt=L;;
7624                 *L3) dflt=L3;;
7625                 *) dflt=3;;
7626                 esac
7627                 ;;
7628         *)      dflt="$man3ext";;
7629         esac
7630         . ./myread
7631         man3ext="$ans"
7632         ;;
7633 esac
7634
7635 : see if we have to deal with yellow pages, now NIS.
7636 if $test -d /usr/etc/yp || $test -d /etc/yp; then
7637         if $test -f /usr/etc/nibindd; then
7638                 echo " "
7639                 echo "I'm fairly confident you're on a NeXT."
7640                 echo " "
7641                 rp='Do you get the hosts file via NetInfo?'
7642                 dflt=y
7643                 case "$hostcat" in
7644                 nidump*) ;;
7645                 '') ;;
7646                 *) dflt=n;;
7647                 esac
7648                 . ./myread
7649                 case "$ans" in
7650                 y*) hostcat='nidump hosts .';;
7651                 *)      case "$hostcat" in
7652                         nidump*) hostcat='';;
7653                         esac
7654                         ;;
7655                 esac
7656         fi
7657         case "$hostcat" in
7658         nidump*) ;;
7659         *)
7660                 case "$hostcat" in
7661                 *ypcat*) dflt=y;;
7662                 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
7663                                 dflt=y
7664                         else
7665                                 dflt=n
7666                         fi;;
7667                 *) dflt=n;;
7668                 esac
7669                 echo " "
7670                 rp='Are you getting the hosts file via yellow pages?'
7671                 . ./myread
7672                 case "$ans" in
7673                 y*) hostcat='ypcat hosts';;
7674                 *) hostcat='cat /etc/hosts';;
7675                 esac
7676                 ;;
7677         esac
7678 fi
7679 case "$hostcat" in
7680 '') test -f /etc/hosts && hostcat='cat /etc/hosts';;
7681 esac
7682 case "$groupcat" in
7683 '') test -f /etc/group && groupcat='cat /etc/group';;
7684 esac
7685 case "$passcat" in
7686 '') test -f /etc/passwd && passcat='cat /etc/passwd';;
7687 esac
7688
7689 : now get the host name
7690 echo " "
7691 echo "Figuring out host name..." >&4
7692 case "$myhostname" in
7693 '') cont=true
7694         echo 'Maybe "hostname" will work...'
7695         if tans=`sh -c hostname 2>&1` ; then
7696                 myhostname=$tans
7697                 phostname=hostname
7698                 cont=''
7699         fi
7700         ;;
7701 *) cont='';;
7702 esac
7703 if $test "$cont"; then
7704         if ./xenix; then
7705                 echo 'Oh, dear.  Maybe "/etc/systemid" is the key...'
7706                 if tans=`cat /etc/systemid 2>&1` ; then
7707                         myhostname=$tans
7708                         phostname='cat /etc/systemid'
7709                         echo "Whadyaknow.  Xenix always was a bit strange..."
7710                         cont=''
7711                 fi
7712         elif $test -r /etc/systemid; then
7713                 echo "(What is a non-Xenix system doing with /etc/systemid?)"
7714         fi
7715 fi
7716 if $test "$cont"; then
7717         echo 'No, maybe "uuname -l" will work...'
7718         if tans=`sh -c 'uuname -l' 2>&1` ; then
7719                 myhostname=$tans
7720                 phostname='uuname -l'
7721         else
7722                 echo 'Strange.  Maybe "uname -n" will work...'
7723                 if tans=`sh -c 'uname -n' 2>&1` ; then
7724                         myhostname=$tans
7725                         phostname='uname -n'
7726                 else
7727                         echo 'Oh well, maybe I can mine it out of whoami.h...'
7728                         if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
7729                                 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
7730                                 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
7731                         else
7732                                 case "$myhostname" in
7733                                 '') echo "Does this machine have an identity crisis or something?"
7734                                         phostname='';;
7735                                 *)
7736                                         echo "Well, you said $myhostname before..."
7737                                         phostname='echo $myhostname';;
7738                                 esac
7739                         fi
7740                 fi
7741         fi
7742 fi
7743 : you do not want to know about this
7744 set $myhostname
7745 myhostname=$1
7746
7747 : verify guess
7748 if $test "$myhostname" ; then
7749         dflt=y
7750         rp='Your host name appears to be "'$myhostname'".'" Right?"
7751         . ./myread
7752         case "$ans" in
7753         y*) ;;
7754         *) myhostname='';;
7755         esac
7756 fi
7757
7758 : bad guess or no guess
7759 while $test "X$myhostname" = X ; do
7760         dflt=''
7761         rp="Please type the (one word) name of your host:"
7762         . ./myread
7763         myhostname="$ans"
7764 done
7765
7766 : translate upper to lower if necessary
7767 case "$myhostname" in
7768 *[A-Z]*)
7769         echo "(Normalizing case in your host name)"
7770         myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
7771         ;;
7772 esac
7773
7774 case "$myhostname" in
7775 *.*)
7776         dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
7777         myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
7778         echo "(Trimming domain name from host name--host name is now $myhostname)"
7779         ;;
7780 *) case "$mydomain" in
7781         '')
7782                 {
7783                         test "X$hostcat" = "Xypcat hosts" &&
7784                         ypmatch "$myhostname" hosts 2>/dev/null |\
7785                                 $sed -e 's/[     ]*#.*//; s/$/ /' > hosts && \
7786                         $test -s hosts
7787                 } || {
7788                         test "X$hostcat" != "X" &&
7789                         $hostcat | $sed -n -e "s/[       ]*#.*//; s/\$/ /
7790                                         /[       ]$myhostname[  . ]/p" > hosts
7791                 }
7792                 tmp_re="[       . ]"
7793                 if $test -f hosts; then
7794                         $test x`$awk "/[0-9].*[  ]$myhostname$tmp_re/ { sum++ }
7795                              END { print sum }" hosts` = x1 || tmp_re="[         ]"
7796                         dflt=.`$awk "/[0-9].*[   ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
7797                                 hosts | $sort | $uniq | \
7798                                 $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
7799                         case `$echo X$dflt` in
7800                         X*\ *)  echo "(Several hosts in the database matched hostname)"
7801                                 dflt=.
7802                                 ;;
7803                         X.) echo "(You do not have fully-qualified names in the hosts database)"
7804                                 ;;
7805                         esac
7806                 else
7807                         echo "(I cannot locate a hosts database anywhere)"
7808                         dflt=.
7809                 fi
7810                 case "$dflt" in
7811                 .)
7812                         tans=`./loc resolv.conf X /etc /usr/etc`
7813                         if $test -f "$tans"; then
7814                                 echo "(Attempting domain name extraction from $tans)"
7815                                 dflt=.`$sed -n -e 's/   / /g' \
7816                                   -e 's/^search  *\([^ ]*\).*/\1/p' $tans \
7817                                   | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
7818                                 case "$dflt" in
7819                                 .) dflt=.`$sed -n -e 's/        / /g' \
7820                                      -e 's/^domain  *\([^ ]*\).*/\1/p' $tans \
7821                                      | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
7822                                         ;;
7823                                 esac
7824                         fi
7825                         ;;
7826                 esac
7827                 case "$dflt" in
7828                 .) echo "(No help from resolv.conf either -- attempting clever guess)"
7829                         dflt=.`sh -c domainname 2>/dev/null`
7830                         case "$dflt" in
7831                         '') dflt='.';;
7832                         .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
7833                         esac
7834                         ;;
7835                 esac
7836                 case "$dflt$osname" in
7837                 .os390) echo "(Attempting domain name extraction from //'SYS1.TCPPARMS(TCPDATA)')"
7838                         dflt=.`awk '/^DOMAINORIGIN/ {print $2}' "//'SYS1.TCPPARMS(TCPDATA)'" 2>/dev/null`
7839                         ;;
7840                 esac
7841                 case "$dflt" in
7842                 .) echo "(Lost all hope -- silly guess then)"
7843                         dflt='.uucp'
7844                         ;;
7845                 esac
7846                 $rm -f hosts
7847                 ;;
7848         *) dflt="$mydomain";;
7849         esac;;
7850 esac
7851 echo " "
7852 rp="What is your domain name?"
7853 . ./myread
7854 tans="$ans"
7855 case "$ans" in
7856 '') ;;
7857 .*) ;;
7858 *) tans=".$tans";;
7859 esac
7860 mydomain="$tans"
7861
7862 : translate upper to lower if necessary
7863 case "$mydomain" in
7864 *[A-Z]*)
7865         echo "(Normalizing case in your domain name)"
7866         mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
7867         ;;
7868 esac
7869
7870 : a little sanity check here
7871 case "$phostname" in
7872 '') ;;
7873 *)
7874         case `$phostname | ./tr '[A-Z]' '[a-z]'` in
7875         $myhostname$mydomain|$myhostname) ;;
7876         *)
7877                 case "$phostname" in
7878                 sed*)
7879                         echo "(That doesn't agree with your whoami.h file, by the way.)"
7880                         ;;
7881                 *)
7882                         echo "(That doesn't agree with your $phostname command, by the way.)"
7883                         ;;
7884                 esac
7885         ;;
7886         esac
7887         ;;
7888 esac
7889
7890 $cat <<EOM
7891
7892 I need to get your e-mail address in Internet format if possible, i.e.
7893 something like user@host.domain. Please answer accurately since I have
7894 no easy means to double check it. The default value provided below
7895 is most probably close to reality but may not be valid from outside
7896 your organization...
7897
7898 EOM
7899 cont=x
7900 while test "$cont"; do
7901         case "$cf_email" in
7902         '') dflt="$cf_by@$myhostname$mydomain";;
7903         *) dflt="$cf_email";;
7904         esac
7905         rp='What is your e-mail address?'
7906         . ./myread
7907         cf_email="$ans"
7908         case "$cf_email" in
7909         *@*.*) cont='' ;;
7910         *)
7911                 rp='Address does not look like an Internet one.  Use it anyway?'
7912                 case "$fastread" in
7913                 yes) dflt=y ;;
7914                 *) dflt=n ;;
7915                 esac
7916                 . ./myread
7917                 case "$ans" in
7918                 y*) cont='' ;;
7919                 *) echo " " ;;
7920                 esac
7921                 ;;
7922         esac
7923 done
7924
7925 $cat <<EOM
7926
7927 If you or somebody else will be maintaining perl at your site, please
7928 fill in the correct e-mail address here so that they may be contacted
7929 if necessary. Currently, the "perlbug" program included with perl
7930 will send mail to this address in addition to perlbug@perl.org. You may
7931 enter "none" for no administrator.
7932
7933 EOM
7934 case "$perladmin" in
7935 '') dflt="$cf_email";;
7936 *) dflt="$perladmin";;
7937 esac
7938 rp='Perl administrator e-mail address'
7939 . ./myread
7940 perladmin="$ans"
7941
7942 : determine whether to only install version-specific parts.
7943 echo " "
7944 $cat <<EOM
7945 Do you want to install only the version-specific parts of the perl
7946 distribution?  Usually you do *not* want to do this.
7947 EOM
7948 case "$versiononly" in
7949 "$define"|[Yy]*|true) dflt='y' ;;
7950 *) dflt='n';
7951 esac
7952 rp="Do you want to install only the version-specific parts of perl?"
7953 . ./myread
7954 case "$ans" in
7955 [yY]*)  val="$define";;
7956 *)      val="$undef" ;;
7957 esac
7958 set versiononly
7959 eval $setvar
7960
7961 : figure out how to guarantee perl startup
7962 case "$startperl" in
7963 '')
7964         case "$sharpbang" in
7965         *!)
7966                 $cat <<EOH
7967
7968 I can use the #! construct to start perl on your system. This will
7969 make startup of perl scripts faster, but may cause problems if you
7970 want to share those scripts and perl is not in a standard place
7971 ($binexp/perl) on all your platforms. The alternative is to force
7972 a shell by starting the script with a single ':' character.
7973
7974 EOH
7975                 case "$versiononly" in
7976                 "$define")      dflt="$binexp/perl$version";;  
7977                 *)              dflt="$binexp/perl";;
7978                 esac
7979                 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
7980                 . ./myread
7981                 case "$ans" in
7982                 none)   startperl=": # use perl";;
7983                 *)      startperl="#!$ans"
7984                         if $test 30 -lt `echo "$ans" | wc -c`; then
7985                                 $cat >&4 <<EOM
7986
7987 WARNING:  Some systems limit the #! command to 32 characters.
7988 If you experience difficulty running Perl scripts with #!, try
7989 installing Perl in a directory with a shorter pathname.
7990
7991 EOM
7992                         fi ;;
7993                 esac
7994                 ;;
7995         *) startperl=": # use perl"
7996                 ;;
7997         esac
7998         ;;
7999 esac
8000 echo "I'll use $startperl to start perl scripts."
8001
8002 : figure best path for perl in scripts
8003 case "$perlpath" in
8004 '')
8005         perlpath="$binexp/perl"
8006         case "$startperl" in
8007         *!*) ;;
8008         *)
8009                 $cat <<EOH
8010
8011 I will use the "eval 'exec'" idiom to start Perl on your system.
8012 I can use the full path of your Perl binary for this purpose, but
8013 doing so may cause problems if you want to share those scripts and
8014 Perl is not always in a standard place ($binexp/perl).
8015
8016 EOH
8017                 dflt="$binexp/perl"
8018                 rp="What path shall I use in \"eval 'exec'\"?"
8019                 . ./myread
8020                 perlpath="$ans"
8021                 ;;
8022         esac
8023         ;;
8024 esac
8025 case "$startperl" in
8026 *!*)    ;;
8027 *)      echo "I'll use $perlpath in \"eval 'exec'\"" ;;
8028 esac
8029
8030 : determine where public executable scripts go
8031 set scriptdir scriptdir
8032 eval $prefixit
8033 case "$scriptdir" in
8034 '')
8035         dflt="$bin"
8036         : guess some guesses
8037         $test -d /usr/share/scripts && dflt=/usr/share/scripts
8038         $test -d /usr/share/bin     && dflt=/usr/share/bin
8039         $test -d /usr/local/script  && dflt=/usr/local/script
8040         $test -d /usr/local/scripts && dflt=/usr/local/scripts
8041         $test -d $prefixexp/script  && dflt=$prefixexp/script
8042         set dflt
8043         eval $prefixup
8044         ;;
8045 *)  dflt="$scriptdir"
8046         ;;
8047 esac
8048 $cat <<EOM
8049  
8050 Some installations have a separate directory just for executable scripts so
8051 that they can mount it across multiple architectures but keep the scripts in
8052 one spot.  You might, for example, have a subdirectory of /usr/share for this.
8053 Or you might just lump your scripts in with all your other executables.
8054  
8055 EOM
8056 fn=d~
8057 rp='Where do you keep publicly executable scripts?'
8058 . ./getfile
8059 if $test "X$ansexp" != "X$scriptdirexp"; then
8060         installscript=''
8061 fi
8062 scriptdir="$ans"
8063 scriptdirexp="$ansexp"
8064 : Change installation prefix, if necessary.
8065 if $test X"$prefix" != X"$installprefix"; then
8066         installscript=`echo $scriptdirexp | sed "s#^$prefix#$installprefix#"`
8067 else
8068         installscript="$scriptdirexp"
8069 fi
8070
8071 : determine where add-on public executables go
8072 case "$sitebin" in
8073 '')     dflt=$siteprefix/bin ;;
8074 *)      dflt=$sitebin ;;
8075 esac
8076 fn=d~
8077 rp='Pathname where the add-on public executables should be installed?'
8078 . ./getfile
8079 sitebin="$ans"
8080 sitebinexp="$ansexp"
8081 : Change installation prefix, if necessary.
8082 if $test X"$prefix" != X"$installprefix"; then
8083         installsitebin=`echo $sitebinexp | sed "s#^$prefix#$installprefix#"`
8084 else
8085         installsitebin="$sitebinexp"
8086 fi
8087
8088 : define an is-a-typedef? function
8089 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
8090 case "$inclist" in
8091 "") inclist="sys/types.h";;
8092 esac;
8093 eval "varval=\$$var";
8094 case "$varval" in
8095 "")
8096         $rm -f temp.c;
8097         for inc in $inclist; do
8098                 echo "#include <$inc>" >>temp.c;
8099         done;
8100         echo "#ifdef $type" >> temp.c;
8101         echo "printf(\"We have $type\");" >> temp.c;
8102         echo "#endif" >> temp.c;
8103         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
8104         if $contains $type temp.E >/dev/null 2>&1; then
8105                 eval "$var=\$type";
8106         else
8107                 eval "$var=\$def";
8108         fi;
8109         $rm -f temp.?;;
8110 *) eval "$var=\$varval";;
8111 esac'
8112
8113 : define an is-a-typedef? function that prompts if the type is not available.
8114 typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
8115 case "$inclist" in
8116 "") inclist="sys/types.h";;
8117 esac;
8118 eval "varval=\$$var";
8119 case "$varval" in
8120 "")
8121         $rm -f temp.c;
8122         for inc in $inclist; do
8123                 echo "#include <$inc>" >>temp.c;
8124         done;
8125         echo "#ifdef $type" >> temp.c;
8126         echo "printf(\"We have $type\");" >> temp.c;
8127         echo "#endif" >> temp.c;
8128         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
8129         echo " " ;
8130         echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
8131         if $contains $type temp.E >/dev/null 2>&1; then
8132                 echo "$type found." >&4;
8133                 eval "$var=\$type";
8134         else
8135                 echo "$type NOT found." >&4;
8136                 dflt="$def";
8137                 . ./myread ;
8138                 eval "$var=\$ans";
8139         fi;
8140         $rm -f temp.?;;
8141 *) eval "$var=\$varval";;
8142 esac'
8143
8144 : see what type lseek is declared as in the kernel
8145 rp="What is the type used for lseek's offset on this system?"
8146 set off_t lseektype long stdio.h sys/types.h
8147 eval $typedef_ask
8148
8149 echo " "
8150 echo "Checking to see how big your file offsets are..." >&4
8151 $cat >try.c <<EOCP
8152 #include <sys/types.h>
8153 #include <stdio.h>
8154 int main()
8155 {
8156     printf("%d\n", (int)sizeof($lseektype));
8157     return(0); 
8158 }
8159 EOCP
8160 set try
8161 if eval $compile_ok; then
8162         lseeksize=`$run ./try`
8163         echo "Your file offsets are $lseeksize bytes long."
8164 else
8165         dflt=$longsize
8166         echo " "
8167         echo "(I can't seem to compile the test program.  Guessing...)"
8168         rp="What is the size of your file offsets (in bytes)?"
8169         . ./myread
8170         lseeksize="$ans"
8171 fi
8172 $rm -f try.c try
8173
8174 : see what type file positions are declared as in the library
8175 rp="What is the type for file position used by fsetpos()?"
8176 set fpos_t fpostype long stdio.h sys/types.h
8177 eval $typedef_ask
8178
8179 echo " "
8180 case "$fpostype" in
8181 *_t) zzz="$fpostype"    ;;
8182 *)   zzz="fpos_t"       ;;
8183 esac
8184 echo "Checking the size of $zzz..." >&4 
8185 cat > try.c <<EOCP
8186 #include <sys/types.h>
8187 #include <stdio.h>
8188 int main() {
8189     printf("%d\n", (int)sizeof($fpostype));
8190     exit(0);
8191 }
8192 EOCP
8193 set try
8194 if eval $compile_ok; then
8195         yyy=`$run ./try`
8196         case "$yyy" in
8197         '')     fpossize=4
8198                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
8199                 ;;
8200         *)      fpossize=$yyy
8201                 echo "Your $zzz is $fpossize bytes long."
8202                 ;;
8203         esac
8204 else
8205         dflt="$longsize"
8206         echo " " >&4
8207         echo "(I can't compile the test program.  Guessing...)" >&4
8208         rp="What is the size of your file positions (in bytes)?"
8209         . ./myread
8210         fpossize="$ans"
8211 fi
8212
8213
8214
8215 # Backward compatibility (uselfs is deprecated).
8216 case "$uselfs" in
8217 "$define"|true|[yY]*)
8218         cat <<EOM >&4
8219
8220 *** Configure -Duselfs is deprecated, using -Duselargefiles instead.
8221 EOM
8222         uselargefiles="$define"
8223         ;;
8224 esac                          
8225
8226 case "$lseeksize:$fpossize" in
8227 8:8) cat <<EOM
8228
8229 You can have files larger than 2 gigabytes.
8230 EOM
8231    val="$define" ;;
8232 *)    case "$uselargefiles" in
8233    "$undef"|false|[nN]*) dflt='n' ;;
8234    *)   dflt='y' ;;
8235    esac
8236    cat <<EOM
8237
8238 Perl can be built to understand large files (files larger than 2 gigabytes)
8239 on some systems.  To do so, Configure can be run with -Duselargefiles.
8240
8241 If this doesn't make any sense to you, just accept the default '$dflt'.
8242 EOM
8243    rp='Try to understand large files, if available?'
8244    . ./myread
8245    case "$ans" in
8246    y|Y)         val="$define" ;;
8247    *)           val="$undef"  ;;
8248    esac
8249    ;;
8250 esac
8251 set uselargefiles
8252 eval $setvar
8253 case "$uselargefiles" in
8254 "$define")
8255 : Look for a hint-file generated 'call-back-unit'.  If the
8256 : user has specified that a large files perl is to be built,
8257 : we may need to set or change some other defaults.
8258         if $test -f uselargefiles.cbu; then
8259                 echo "Your platform has some specific hints for large file builds, using them..."
8260                 . ./uselargefiles.cbu
8261                 echo " "
8262                 echo "Rechecking to see how big your file offsets are..." >&4
8263                 $cat >try.c <<EOCP
8264 #include <sys/types.h>
8265 #include <stdio.h>
8266 int main()
8267 {
8268     printf("%d\n", (int)sizeof($lseektype));
8269     return(0); 
8270 }
8271 EOCP
8272                 set try
8273                 if eval $compile_ok; then
8274                         lseeksize=`$run ./try`
8275                         $echo "Your file offsets are now $lseeksize bytes long."
8276                 else
8277                         dflt="$lseeksize"
8278                         echo " "
8279                         echo "(I can't seem to compile the test program.  Guessing...)"
8280                         rp="What is the size of your file offsets (in bytes)?"
8281                         . ./myread
8282                         lseeksize="$ans"
8283                 fi
8284                 case "$fpostype" in
8285                 *_t) zzz="$fpostype"    ;;
8286                 *)   zzz="fpos_t"       ;;
8287                 esac
8288                 $echo $n "Rechecking the size of $zzz...$c" >&4 
8289                 $cat > try.c <<EOCP
8290 #include <sys/types.h>
8291 #include <stdio.h>
8292 int main() {
8293     printf("%d\n", (int)sizeof($fpostype));
8294     exit(0);
8295 }
8296 EOCP
8297                 set try
8298                 if eval $compile_ok; then
8299                         yyy=`$run ./try`
8300                         dflt="$lseeksize"
8301                         case "$yyy" in
8302                         '')     echo " "
8303                                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
8304                                 ;;
8305                         *)      fpossize=$yyy
8306                                 echo " $fpossize bytes." >&4
8307                                 ;;
8308                         esac
8309                 else
8310                         dflt="$fpossize"
8311                         echo " "
8312                         echo "(I can't compile the test program.  Guessing...)" >&4
8313                         rp="What is the size of your file positions (in bytes)?"
8314                         . ./myread
8315                         fpossize="$ans"
8316                 fi
8317                 $rm -f try.c try
8318         fi
8319         ;;
8320 esac
8321
8322 case "$vendorprefix" in
8323 '')     d_vendorbin="$undef"
8324         vendorbin=''
8325         vendorbinexp=''
8326         ;;
8327 *)      d_vendorbin="$define"
8328         : determine where vendor-supplied executables go.
8329         case "$vendorbin" in
8330         '') dflt=$vendorprefix/bin ;;
8331         *)      dflt="$vendorbin" ;;
8332         esac
8333         fn=d~+
8334         rp='Pathname for the vendor-supplied executables directory?'
8335         . ./getfile
8336         vendorbin="$ans"
8337         vendorbinexp="$ansexp"
8338         ;;
8339 esac
8340 : Change installation prefix, if necessary.
8341 if $test X"$prefix" != X"$installprefix"; then
8342         installvendorbin=`echo $vendorbinexp | $sed "s#^$prefix#$installprefix#"`
8343 else
8344         installvendorbin="$vendorbinexp"
8345 fi
8346
8347 : see if qgcvt exists
8348 set qgcvt d_qgcvt
8349 eval $inlibc
8350
8351 echo " "
8352
8353 if $test X"$d_longdbl" = X"$define"; then
8354
8355 echo "Checking how to print long doubles..." >&4
8356
8357 if $test X"$sPRIfldbl" = X -a X"$doublesize" = X"$longdblsize"; then
8358         $cat >try.c <<'EOCP'
8359 #include <sys/types.h>
8360 #include <stdio.h>
8361 int main() {
8362   double d = 123.456;
8363   printf("%.3f\n", d);
8364 }
8365 EOCP
8366         set try
8367         if eval $compile; then
8368                 yyy=`$run ./try`
8369                 case "$yyy" in
8370                 123.456)
8371                         sPRIfldbl='"f"'; sPRIgldbl='"g"'; sPRIeldbl='"e"';
8372                         sPRIFUldbl='"F"'; sPRIGUldbl='"G"'; sPRIEUldbl='"E"';
8373                         echo "We will use %f."
8374                         ;;
8375                 esac
8376         fi
8377 fi
8378
8379 if $test X"$sPRIfldbl" = X; then
8380         $cat >try.c <<'EOCP'
8381 #include <sys/types.h>
8382 #include <stdio.h>
8383 int main() {
8384   long double d = 123.456;
8385   printf("%.3Lf\n", d);
8386 }
8387 EOCP
8388         set try
8389         if eval $compile; then
8390                 yyy=`$run ./try`
8391                 case "$yyy" in
8392                 123.456)
8393                         sPRIfldbl='"Lf"'; sPRIgldbl='"Lg"'; sPRIeldbl='"Le"';
8394                         sPRIFUldbl='"LF"'; sPRIGUldbl='"LG"'; sPRIEUldbl='"LE"';
8395                         echo "We will use %Lf."
8396                         ;;
8397                 esac
8398         fi
8399 fi
8400
8401 if $test X"$sPRIfldbl" = X; then
8402         $cat >try.c <<'EOCP'
8403 #include <sys/types.h>
8404 #include <stdio.h>
8405 int main() {
8406   long double d = 123.456;
8407   printf("%.3llf\n", d);
8408 }
8409 EOCP
8410         set try
8411         if eval $compile; then
8412                 yyy=`$run ./try`
8413                 case "$yyy" in
8414                 123.456)
8415                         sPRIfldbl='"llf"'; sPRIgldbl='"llg"'; sPRIeldbl='"lle"';
8416                         sPRIFUldbl='"llF"'; sPRIGUldbl='"llG"'; sPRIEUldbl='"llE"';
8417                         echo "We will use %llf."
8418                         ;;
8419                 esac
8420         fi
8421 fi
8422
8423 if $test X"$sPRIfldbl" = X; then
8424         $cat >try.c <<'EOCP'
8425 #include <sys/types.h>
8426 #include <stdio.h>
8427 int main() {
8428   long double d = 123.456;
8429   printf("%.3lf\n", d);
8430 }
8431 EOCP
8432         set try
8433         if eval $compile; then
8434                 yyy=`$run ./try`
8435                 case "$yyy" in
8436                 123.456)
8437                         sPRIfldbl='"lf"'; sPRIgldbl='"lg"'; sPRIeldbl='"le"';
8438                         sPRIFUldbl='"lF"'; sPRIGUldbl='"lG"'; sPRIEUldbl='"lE"';
8439                         echo "We will use %lf."
8440                         ;;
8441                 esac
8442         fi
8443 fi
8444
8445 if $test X"$sPRIfldbl" = X; then
8446         echo "Cannot figure out how to print long doubles." >&4
8447 else
8448         sSCNfldbl=$sPRIfldbl    # expect consistency
8449 fi
8450
8451 $rm -f try try.*
8452
8453 fi # d_longdbl
8454
8455 case "$sPRIfldbl" in
8456 '')     d_PRIfldbl="$undef"; d_PRIgldbl="$undef"; d_PRIeldbl="$undef"; 
8457         d_PRIFUldbl="$undef"; d_PRIGUldbl="$undef"; d_PRIEUldbl="$undef"; 
8458         d_SCNfldbl="$undef";
8459         ;;
8460 *)      d_PRIfldbl="$define"; d_PRIgldbl="$define"; d_PRIeldbl="$define"; 
8461         d_PRIFUldbl="$define"; d_PRIGUldbl="$define"; d_PRIEUldbl="$define"; 
8462         d_SCNfldbl="$define";
8463         ;;
8464 esac
8465
8466 : Check how to convert floats to strings.
8467 echo " "
8468 echo "Checking for an efficient way to convert floats to strings."
8469 echo " " > try.c
8470 case "$uselongdouble" in
8471 "$define") echo "#define USE_LONG_DOUBLE" >>try.c ;;
8472 esac
8473 case "$d_longdbl" in
8474 "$define") echo "#define HAS_LONG_DOUBLE" >>try.c ;;
8475 esac
8476 case "$d_PRIgldbl" in
8477 "$define") echo "#define HAS_PRIgldbl"    >>try.c ;;
8478 esac
8479 $cat >>try.c <<EOP
8480 #ifdef TRY_gconvert
8481 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
8482 char *myname = "gconvert";
8483 #endif
8484 #ifdef TRY_gcvt
8485 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
8486 char *myname = "gcvt";
8487 #endif
8488 #ifdef TRY_qgcvt
8489 #define Gconvert(x,n,t,b) qgcvt((x),(n),(b))
8490 char *myname = "qgcvt";
8491 #define DOUBLETYPE long double
8492 #endif
8493 #ifdef TRY_sprintf
8494 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE) && defined(HAS_PRIgldbl)
8495 #define Gconvert(x,n,t,b) sprintf((b),"%.*"$sPRIgldbl,(n),(x))
8496 #else
8497 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
8498 #endif
8499 char *myname = "sprintf";
8500 #endif
8501
8502 #ifndef DOUBLETYPE
8503 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
8504 #define DOUBLETYPE long double
8505 #else
8506 #define DOUBLETYPE double
8507 #endif
8508 #endif
8509
8510 #include <stdio.h>
8511
8512 #define I_STDLIB $i_stdlib
8513 #ifdef I_STDLIB
8514 #include <stdlib.h>
8515 #endif
8516
8517 int
8518 checkit(expect, got)
8519 char *expect;
8520 char *got;
8521 {
8522     if (strcmp(expect, got)) {
8523                 printf("%s oddity:  Expected %s, got %s\n",
8524                         myname, expect, got);
8525                 exit(1);
8526         }
8527 }
8528
8529 int main()
8530
8531         char buf[64]; 
8532         buf[63] = '\0';
8533
8534         /* This must be 1st test on (which?) platform */
8535         /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
8536         Gconvert((DOUBLETYPE)0.1, 8, 0, buf);
8537         checkit("0.1", buf);
8538
8539         Gconvert((DOUBLETYPE)1.0, 8, 0, buf); 
8540         checkit("1", buf);
8541
8542         Gconvert((DOUBLETYPE)1.1, 8, 0, buf); 
8543         checkit("1.1", buf);
8544
8545         Gconvert((DOUBLETYPE)1.01, 8, 0, buf); 
8546         checkit("1.01", buf);
8547
8548         Gconvert((DOUBLETYPE)1.001, 8, 0, buf); 
8549         checkit("1.001", buf);
8550
8551         Gconvert((DOUBLETYPE)1.0001, 8, 0, buf); 
8552         checkit("1.0001", buf);
8553
8554         Gconvert((DOUBLETYPE)1.00001, 8, 0, buf); 
8555         checkit("1.00001", buf);
8556
8557         Gconvert((DOUBLETYPE)1.000001, 8, 0, buf); 
8558         checkit("1.000001", buf);
8559
8560         Gconvert((DOUBLETYPE)0.0, 8, 0, buf); 
8561         checkit("0", buf);
8562
8563         Gconvert((DOUBLETYPE)-1.0, 8, 0, buf); 
8564         checkit("-1", buf);
8565
8566         /* Some Linux gcvt's give 1.e+5 here. */
8567         Gconvert((DOUBLETYPE)100000.0, 8, 0, buf); 
8568         checkit("100000", buf);
8569         
8570         /* Some Linux gcvt's give -1.e+5 here. */
8571         Gconvert((DOUBLETYPE)-100000.0, 8, 0, buf); 
8572         checkit("-100000", buf);
8573
8574         Gconvert((DOUBLETYPE)123.456, 8, 0, buf); 
8575         checkit("123.456", buf);
8576
8577         /* Testing of 1e+129 in bigintpm.t must not get extra '.' here. */
8578         Gconvert((DOUBLETYPE)1e30, 8, 0, buf);
8579         if (strlen(buf) > 5)
8580             checkit("1e+030", buf); /* for Microsoft */
8581         else
8582             checkit("1e+30", buf);
8583
8584         exit(0);
8585 }
8586 EOP
8587 case "$d_Gconvert" in
8588 gconvert*) xxx_list='gconvert gcvt sprintf' ;;
8589 gcvt*) xxx_list='gcvt gconvert sprintf' ;;
8590 sprintf*) xxx_list='sprintf gconvert gcvt' ;;
8591 *) xxx_list='gconvert gcvt sprintf' ;;
8592 esac
8593
8594 case "$d_longdbl$uselongdouble$d_PRIgldbl" in
8595 "$define$define$define")
8596     # for long doubles prefer first qgcvt, then sprintf
8597     xxx_list="`echo $xxx_list|sed s/sprintf//`" 
8598     xxx_list="sprintf $xxx_list"
8599     case "$d_qgcvt" in
8600     "$define") xxx_list="qgcvt $xxx_list" ;;
8601     esac
8602     ;;
8603 esac
8604
8605 for xxx_convert in $xxx_list; do
8606         echo "Trying $xxx_convert..."
8607         $rm -f try try$_o
8608         set try -DTRY_$xxx_convert
8609         if eval $compile; then
8610                 echo "$xxx_convert() found." >&4
8611                 if $run ./try; then
8612                         echo "I'll use $xxx_convert to convert floats into a string." >&4
8613                         break;
8614                 else
8615                         echo "...But $xxx_convert didn't work as I expected."
8616                 fi
8617         else
8618                 echo "$xxx_convert NOT found." >&4
8619         fi
8620 done
8621         
8622 case "$xxx_convert" in
8623 gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
8624 gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
8625 qgcvt) d_Gconvert='qgcvt((x),(n),(b))' ;;
8626 *) case "$uselongdouble$d_longdbl$d_PRIgldbl" in
8627    "$define$define$define")
8628       d_Gconvert="sprintf((b),\"%.*\"$sPRIgldbl,(n),(x))" ;;
8629    *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
8630    esac
8631    ;;  
8632 esac
8633
8634 : see if _fwalk exists
8635 set fwalk d__fwalk
8636 eval $inlibc
8637
8638 : Initialize h_fcntl
8639 h_fcntl=false
8640
8641 : Initialize h_sysfile
8642 h_sysfile=false
8643
8644 : access call always available on UNIX
8645 set access d_access
8646 eval $inlibc
8647
8648 : locate the flags for 'access()'
8649 case "$d_access" in
8650 "$define")
8651         echo " "
8652         $cat >access.c <<'EOCP'
8653 #include <sys/types.h>
8654 #ifdef I_FCNTL
8655 #include <fcntl.h>
8656 #endif
8657 #ifdef I_SYS_FILE
8658 #include <sys/file.h>
8659 #endif
8660 #ifdef I_UNISTD
8661 #include <unistd.h>
8662 #endif
8663 int main() {
8664         exit(R_OK);
8665 }
8666 EOCP
8667         : check sys/file.h first, no particular reason here
8668         if $test `./findhdr sys/file.h` && \
8669                 $cc -o access $cppflags -DI_SYS_FILE access.c >/dev/null 2>&1 ; then
8670                 h_sysfile=true;
8671                 echo "<sys/file.h> defines the *_OK access constants." >&4
8672         elif $test `./findhdr fcntl.h` && \
8673                 $cc -o access $cppflags -DI_FCNTL access.c >/dev/null 2>&1 ; then
8674                 h_fcntl=true;
8675                 echo "<fcntl.h> defines the *_OK access constants." >&4
8676         elif $test `./findhdr unistd.h` && \
8677                 $cc -o access $cppflags -DI_UNISTD access.c >/dev/null 2>&1 ; then
8678                 echo "<unistd.h> defines the *_OK access constants." >&4
8679         else
8680                 echo "I can't find the four *_OK access constants--I'll use mine." >&4
8681         fi
8682         ;;
8683 esac
8684 $rm -f access*
8685
8686 : see if accessx exists
8687 set accessx d_accessx
8688 eval $inlibc
8689
8690 : see if alarm exists
8691 set alarm d_alarm
8692 eval $inlibc
8693
8694 : see if atolf exists
8695 set atolf d_atolf
8696 eval $inlibc
8697
8698 : see if atoll exists
8699 set atoll d_atoll
8700 eval $inlibc
8701
8702 : Look for GNU-cc style attribute checking
8703 echo " "
8704 echo "Checking whether your compiler can handle __attribute__ ..." >&4
8705 $cat >attrib.c <<'EOCP'
8706 #include <stdio.h>
8707 void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn));
8708 EOCP
8709 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
8710         if $contains 'warning' attrib.out >/dev/null 2>&1; then
8711                 echo "Your C compiler doesn't fully support __attribute__."
8712                 val="$undef"
8713         else
8714                 echo "Your C compiler supports __attribute__."
8715                 val="$define"
8716         fi
8717 else
8718         echo "Your C compiler doesn't seem to understand __attribute__ at all."
8719         val="$undef"
8720 fi
8721 set d_attribut
8722 eval $setvar
8723 $rm -f attrib*
8724
8725 : see if bcmp exists
8726 set bcmp d_bcmp
8727 eval $inlibc
8728
8729 : see if bcopy exists
8730 set bcopy d_bcopy
8731 eval $inlibc
8732
8733 : see if this is a unistd.h system
8734 set unistd.h i_unistd
8735 eval $inhdr
8736
8737 : see if getpgrp exists
8738 set getpgrp d_getpgrp
8739 eval $inlibc
8740
8741 case "$d_getpgrp" in
8742 "$define")
8743         echo " "
8744         echo "Checking to see which flavor of getpgrp is in use..."
8745         $cat >try.c <<EOP
8746 #$i_unistd I_UNISTD
8747 #include <sys/types.h>
8748 #ifdef I_UNISTD
8749 #  include <unistd.h>
8750 #endif
8751 int main()
8752 {
8753         if (getuid() == 0) {
8754                 printf("(I see you are running Configure as super-user...)\n");
8755                 setuid(1);
8756         }
8757 #ifdef TRY_BSD_PGRP
8758         if (getpgrp(1) == 0)
8759                 exit(0);
8760 #else
8761         if (getpgrp() > 0)
8762                 exit(0);
8763 #endif
8764         exit(1);
8765 }
8766 EOP
8767         if $cc -o try -DTRY_BSD_PGRP $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
8768                 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
8769                 val="$define"
8770         elif $cc -o try $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
8771                 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
8772                 val="$undef"
8773         else
8774                 echo "I can't seem to compile and run the test program."
8775                 if ./usg; then
8776                         xxx="a USG one, i.e. you use getpgrp()."
8777                 else
8778                         # SVR4 systems can appear rather BSD-ish.
8779                         case "$i_unistd" in
8780                         $undef)
8781                                 xxx="a BSD one, i.e. you use getpgrp(pid)."
8782                                 val="$define"
8783                                 ;;
8784                         $define)
8785                                 xxx="probably a USG one, i.e. you use getpgrp()."
8786                                 val="$undef"
8787                                 ;;
8788                         esac
8789                 fi
8790                 echo "Assuming your getpgrp is $xxx" >&4
8791         fi
8792         ;;
8793 *) val="$undef";;
8794 esac
8795 set d_bsdgetpgrp
8796 eval $setvar
8797 $rm -f try try.*
8798
8799 : see if setpgrp exists
8800 set setpgrp d_setpgrp
8801 eval $inlibc
8802
8803 case "$d_setpgrp" in
8804 "$define")
8805         echo " "
8806         echo "Checking to see which flavor of setpgrp is in use..."
8807         $cat >try.c <<EOP
8808 #$i_unistd I_UNISTD
8809 #include <sys/types.h>
8810 #ifdef I_UNISTD
8811 #  include <unistd.h>
8812 #endif
8813 int main()
8814 {
8815         if (getuid() == 0) {
8816                 printf("(I see you are running Configure as super-user...)\n");
8817                 setuid(1);
8818         }
8819 #ifdef TRY_BSD_PGRP
8820         if (-1 == setpgrp(1, 1))
8821                 exit(0);
8822 #else
8823         if (setpgrp() != -1)
8824                 exit(0);
8825 #endif
8826         exit(1);
8827 }
8828 EOP
8829         if $cc -o try -DTRY_BSD_PGRP $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
8830                 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
8831                 val="$define"
8832         elif $cc -o try $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
8833                 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
8834                 val="$undef"
8835         else
8836                 echo "(I can't seem to compile and run the test program.)"
8837                 if ./usg; then
8838                         xxx="a USG one, i.e. you use setpgrp()."
8839                 else
8840                         # SVR4 systems can appear rather BSD-ish.
8841                         case "$i_unistd" in
8842                         $undef)
8843                                 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
8844                                 val="$define"
8845                                 ;;
8846                         $define)
8847                                 xxx="probably a USG one, i.e. you use setpgrp()."
8848                                 val="$undef"
8849                                 ;;
8850                         esac
8851                 fi
8852                 echo "Assuming your setpgrp is $xxx" >&4
8853         fi
8854         ;;
8855 *) val="$undef";;
8856 esac
8857 set d_bsdsetpgrp
8858 eval $setvar
8859 $rm -f try try.*
8860 : see if bzero exists
8861 set bzero d_bzero
8862 eval $inlibc
8863
8864 : see if signal is declared as pointer to function returning int or void
8865 echo " "
8866 xxx=`./findhdr signal.h`
8867 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
8868 if $contains 'int.*\*[  ]*signal' $$.tmp >/dev/null 2>&1 ; then
8869         echo "You have int (*signal())() instead of void." >&4
8870         val="$undef"
8871 elif $contains 'void.*\*[       ]*signal' $$.tmp >/dev/null 2>&1 ; then
8872         echo "You have void (*signal())()." >&4
8873         val="$define"
8874 elif $contains 'extern[         ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
8875         echo "You have int (*signal())() instead of void." >&4
8876         val="$undef"
8877 elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
8878         echo "You have void (*signal())()." >&4
8879         val="$define"
8880 else
8881         case "$d_voidsig" in
8882         '')
8883         echo "I can't determine whether signal handler returns void or int..." >&4
8884                 dflt=void
8885                 rp="What type does your signal handler return?"
8886                 . ./myread
8887                 case "$ans" in
8888                 v*) val="$define";;
8889                 *) val="$undef";;
8890                 esac;;
8891         "$define")
8892                 echo "As you already told me, signal handler returns void." >&4
8893                 val="$define"
8894                 ;;
8895         *)      echo "As you already told me, signal handler returns int." >&4
8896                 val="$undef"
8897                 ;;
8898         esac
8899 fi
8900 set d_voidsig
8901 eval $setvar
8902 case "$d_voidsig" in
8903 "$define") signal_t="void";;
8904 *) signal_t="int";;
8905 esac
8906 $rm -f $$.tmp
8907
8908 : check for ability to cast large floats to 32-bit ints.
8909 echo " "
8910 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
8911 if $test "$intsize" -ge 4; then
8912         xxx=int
8913 else
8914         xxx=long
8915 fi
8916 $cat >try.c <<EOCP
8917 #include <stdio.h>
8918 #include <sys/types.h>
8919 #include <signal.h>
8920 $signal_t blech(s) int s; { exit(3); }
8921 int main()
8922 {
8923         $xxx i32;
8924         double f, g;
8925         int result = 0;
8926         char str[16];
8927         signal(SIGFPE, blech);
8928
8929         /* Don't let compiler optimize the test away.  Store the number 
8930            in a writable string for gcc to pass to sscanf under HP/UX.
8931         */
8932         sprintf(str, "2147483647");
8933         sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
8934         g = 10 * f;
8935         i32  = ($xxx) g;
8936
8937         /* x86 processors will probably give 0x8000 0000, which is a
8938        sign change.  We don't want that.  We want to mimic SPARC
8939            behavior here, which is to preserve the sign and give
8940            back 0x7fff ffff.
8941         */
8942         if (i32 != ($xxx) f)
8943                 result |= 1;
8944         exit(result);
8945 }
8946 EOCP
8947 set try
8948 if eval $compile_ok; then
8949         $run ./try
8950         yyy=$?
8951 else
8952         echo "(I can't seem to compile the test program--assuming it can't)"
8953         yyy=1
8954 fi
8955 case "$yyy" in
8956 0)      val="$define"
8957         echo "Yup, it can."
8958         ;;
8959 *)      val="$undef"
8960         echo "Nope, it can't."
8961         ;;
8962 esac
8963 set d_casti32
8964 eval $setvar
8965 $rm -f try try.*
8966
8967 : check for ability to cast negative floats to unsigned
8968 echo " "
8969 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
8970 $cat >try.c <<EOCP
8971 #include <stdio.h>
8972 #include <sys/types.h>
8973 #include <signal.h>
8974 $signal_t blech(s) int s; { exit(7); }
8975 $signal_t blech_in_list(s) int s; { exit(4); }
8976 unsigned long dummy_long(p) unsigned long p; { return p; }
8977 unsigned int dummy_int(p) unsigned int p; { return p; }
8978 unsigned short dummy_short(p) unsigned short p; { return p; }
8979 int main()
8980 {
8981         double f;
8982         unsigned long along;
8983         unsigned int aint;
8984         unsigned short ashort;
8985         int result = 0;
8986         char str[16];
8987         
8988         /* Frustrate gcc-2.7.2's optimizer which failed this test with
8989            a direct f = -123. assignment.  gcc-2.8.0 reportedly
8990            optimized the whole file away
8991         */
8992         /* Store the number in a writable string for gcc to pass to 
8993            sscanf under HP/UX.
8994         */
8995         sprintf(str, "-123");
8996         sscanf(str, "%lf", &f);  /* f = -123.; */
8997
8998         signal(SIGFPE, blech);
8999         along = (unsigned long)f;
9000         aint = (unsigned int)f;
9001         ashort = (unsigned short)f;
9002         if (along != (unsigned long)-123)
9003                 result |= 1;
9004         if (aint != (unsigned int)-123)
9005                 result |= 1;
9006         if (ashort != (unsigned short)-123)
9007                 result |= 1;
9008         sprintf(str, "1073741824.");
9009         sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
9010         f = f + f;
9011         along = 0;
9012         along = (unsigned long)f;
9013         if (along != 0x80000000)
9014                 result |= 2;
9015         f -= 1.;
9016         along = 0;
9017         along = (unsigned long)f;
9018         if (along != 0x7fffffff)
9019                 result |= 1;
9020         f += 2.;
9021         along = 0;
9022         along = (unsigned long)f;
9023         if (along != 0x80000001)
9024                 result |= 2;
9025         if (result)
9026                 exit(result);
9027         signal(SIGFPE, blech_in_list);
9028         sprintf(str, "123.");
9029         sscanf(str, "%lf", &f);  /* f = 123.; */
9030         along = dummy_long((unsigned long)f);
9031         aint = dummy_int((unsigned int)f);
9032         ashort = dummy_short((unsigned short)f);
9033         if (along != (unsigned long)123)
9034                 result |= 4;
9035         if (aint != (unsigned int)123)
9036                 result |= 4;
9037         if (ashort != (unsigned short)123)
9038                 result |= 4;
9039         exit(result);
9040
9041 }
9042 EOCP
9043 set try
9044 if eval $compile_ok; then
9045         $run ./try
9046         castflags=$?
9047 else
9048         echo "(I can't seem to compile the test program--assuming it can't)"
9049         castflags=7
9050 fi
9051 case "$castflags" in
9052 0)      val="$define"
9053         echo "Yup, it can."
9054         ;;
9055 *)      val="$undef"
9056         echo "Nope, it can't."
9057         ;;
9058 esac
9059 set d_castneg
9060 eval $setvar
9061 $rm -f try.*
9062
9063 : see if vprintf exists
9064 echo " "
9065 if set vprintf val -f d_vprintf; eval $csym; $val; then
9066         echo 'vprintf() found.' >&4
9067         val="$define"
9068         $cat >try.c <<'EOF'
9069 #include <varargs.h>
9070
9071 int main() { xxx("foo"); }
9072
9073 xxx(va_alist)
9074 va_dcl
9075 {
9076         va_list args;
9077         char buf[10];
9078
9079         va_start(args);
9080         exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
9081 }
9082 EOF
9083         set try
9084         if eval $compile && $run ./try; then
9085                 echo "Your vsprintf() returns (int)." >&4
9086                 val2="$undef"
9087         else
9088                 echo "Your vsprintf() returns (char*)." >&4
9089                 val2="$define"
9090         fi
9091 else
9092         echo 'vprintf() NOT found.' >&4
9093                 val="$undef"
9094                 val2="$undef"
9095 fi
9096 $rm -f try try.*
9097 set d_vprintf
9098 eval $setvar
9099 val=$val2
9100 set d_charvspr
9101 eval $setvar
9102
9103 : see if chown exists
9104 set chown d_chown
9105 eval $inlibc
9106
9107 : see if chroot exists
9108 set chroot d_chroot
9109 eval $inlibc
9110
9111 : see if chsize exists
9112 set chsize d_chsize
9113 eval $inlibc
9114
9115 hasstruct='varname=$1; struct=$2; shift; shift;
9116 while $test $# -ge 2; do
9117         case "$1" in
9118         $define) echo "#include <$2>";;
9119         esac ;
9120     shift 2;
9121 done > try.c;
9122 echo "int main () { struct $struct foo; }" >> try.c;
9123 set try;
9124 if eval $compile; then
9125         val="$define";
9126 else
9127         val="$undef";
9128 fi;
9129 set $varname;
9130 eval $setvar;
9131 $rm -f try.c try.o'
9132
9133 : see if sys/types.h has to be included
9134 set sys/types.h i_systypes
9135 eval $inhdr
9136
9137 hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
9138 while $test $# -ge 2; do
9139         case "$1" in
9140         $define) echo "#include <$2>";;
9141         esac ;
9142     shift 2;
9143 done > try.c;
9144 echo "int main () { struct $struct foo; char* bar; bar = (char*)foo.$field; }" >> try.c;
9145 set try;
9146 if eval $compile; then
9147         val="$define";
9148 else
9149         val="$undef";
9150 fi;
9151 set $varname;
9152 eval $setvar;
9153 $rm -f try.c try.o'
9154
9155 socketlib=''
9156 sockethdr=''
9157 : see whether socket exists
9158 echo " "
9159 $echo $n "Hmm... $c" >&4
9160 if set socket val -f d_socket; eval $csym; $val; then
9161         echo "Looks like you have Berkeley networking support." >&4
9162         d_socket="$define"
9163         if set setsockopt val -f; eval $csym; $val; then
9164                 d_oldsock="$undef"
9165         else
9166                 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
9167                 d_oldsock="$define"
9168         fi
9169 else
9170         if $contains socklib libc.list >/dev/null 2>&1; then
9171                 echo "Looks like you have Berkeley networking support." >&4
9172                 d_socket="$define"
9173                 : we will have to assume that it supports the 4.2 BSD interface
9174                 d_oldsock="$undef"
9175         else
9176                 echo "You don't have Berkeley networking in libc$_a..." >&4
9177                 if test "X$d_socket" = "X$define"; then
9178                    echo "...but you seem to believe that you have sockets." >&4
9179                 else
9180                         for net in net socket
9181                         do
9182                                 if test -f /usr/lib/lib$net$_a; then
9183                                         ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) ||  \
9184                                         $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
9185                                         if $contains socket libc.list >/dev/null 2>&1; then
9186                                                 d_socket="$define"
9187                                                 socketlib="-l$net"
9188                                                 case "$net" in
9189                                                 net)
9190                                                         echo "...but the Wollongong group seems to have hacked it in." >&4
9191                                                         sockethdr="-I/usr/netinclude"
9192                                                         ;;
9193                                                 esac
9194                                                 echo "Found Berkeley sockets interface in lib$net." >& 4 
9195                                                 if $contains setsockopt libc.list >/dev/null 2>&1; then
9196                                                         d_oldsock="$undef"
9197                                                 else
9198                                                         echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
9199                                                         d_oldsock="$define"
9200                                                 fi
9201                                                 break
9202                                         fi
9203                                 fi
9204                         done
9205                         if test "X$d_socket" != "X$define"; then
9206                            echo "or anywhere else I see." >&4
9207                            d_socket="$undef"
9208                            d_oldsock="$undef"
9209                         fi
9210                 fi
9211         fi
9212 fi
9213
9214 : see if socketpair exists
9215 set socketpair d_sockpair
9216 eval $inlibc
9217
9218
9219 echo " "
9220 echo "Checking the availability of certain socket constants..." >& 4
9221 for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
9222         enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
9223         $cat >try.c <<EOF
9224 #include <sys/types.h>
9225 #include <sys/socket.h>
9226 int main() {
9227     int i = $ENUM;
9228 }
9229 EOF
9230         val="$undef"
9231         set try; if eval $compile; then
9232                 val="$define"
9233         fi
9234         set d_${enum}; eval $setvar
9235         $rm -f try.c try
9236 done
9237
9238 : see if this is a sys/uio.h system
9239 set sys/uio.h i_sysuio
9240 eval $inhdr
9241
9242
9243 echo " "
9244 echo "Checking to see if your system supports struct cmsghdr..." >&4
9245 set d_cmsghdr_s cmsghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
9246 eval $hasstruct
9247 case "$d_cmsghdr_s" in
9248 "$define")      echo "Yes, it does."   ;;
9249 *)              echo "No, it doesn't." ;;
9250 esac
9251
9252
9253 : check for const keyword
9254 echo " "
9255 echo 'Checking to see if your C compiler knows about "const"...' >&4
9256 $cat >const.c <<'EOCP'
9257 typedef struct spug { int drokk; } spug;
9258 int main()
9259 {
9260         const char *foo;
9261         const spug y;
9262 }
9263 EOCP
9264 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
9265         val="$define"
9266         echo "Yup, it does."
9267 else
9268         val="$undef"
9269         echo "Nope, it doesn't."
9270 fi
9271 set d_const
9272 eval $setvar
9273
9274 : see if crypt exists
9275 echo " "
9276 if set crypt val -f d_crypt; eval $csym; $val; then
9277         echo 'crypt() found.' >&4
9278         val="$define"
9279         cryptlib=''
9280 else
9281         cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
9282         if $test -z "$cryptlib"; then
9283                 cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
9284         else
9285                 cryptlib=-lcrypt
9286         fi
9287         if $test -z "$cryptlib"; then
9288                 cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
9289         else
9290                 cryptlib=-lcrypt
9291         fi
9292         if $test -z "$cryptlib"; then
9293                 cryptlib=`./loc libcrypt$_a "" $libpth`
9294         else
9295                 cryptlib=-lcrypt
9296         fi
9297         if $test -z "$cryptlib"; then
9298                 echo 'crypt() NOT found.' >&4
9299                 val="$undef"
9300         else
9301                 val="$define"
9302         fi
9303 fi
9304 set d_crypt
9305 eval $setvar
9306
9307 : get csh whereabouts
9308 case "$csh" in
9309 'csh') val="$undef" ;;
9310 *) val="$define" ;;
9311 esac
9312 set d_csh
9313 eval $setvar
9314 : Respect a hint or command line value for full_csh.
9315 case "$full_csh" in
9316 '') full_csh=$csh ;;
9317 esac
9318
9319 : see if cuserid exists
9320 set cuserid d_cuserid
9321 eval $inlibc
9322
9323 : see if this is a limits.h system
9324 set limits.h i_limits
9325 eval $inhdr
9326
9327 : see if this is a float.h system
9328 set float.h i_float
9329 eval $inhdr
9330
9331 : See if number of significant digits in a double precision number is known
9332 echo " "
9333 $cat >dbl_dig.c <<EOM
9334 #$i_limits I_LIMITS
9335 #$i_float I_FLOAT
9336 #ifdef I_LIMITS
9337 #include <limits.h>
9338 #endif
9339 #ifdef I_FLOAT
9340 #include <float.h>
9341 #endif
9342 #ifdef DBL_DIG
9343 printf("Contains DBL_DIG");
9344 #endif
9345 EOM
9346 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
9347 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
9348         echo "DBL_DIG found." >&4
9349         val="$define"
9350 else
9351         echo "DBL_DIG NOT found." >&4
9352         val="$undef"
9353 fi
9354 $rm -f dbl_dig.?
9355 set d_dbl_dig
9356 eval $setvar
9357
9358 hasproto='varname=$1; func=$2; shift; shift;
9359 while $test $# -ge 2; do
9360         case "$1" in
9361         $define) echo "#include <$2>";;
9362         esac ;
9363     shift 2;
9364 done > try.c;
9365 $cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
9366 if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
9367         echo "$func() prototype found.";
9368         val="$define";
9369 else
9370         echo "$func() prototype NOT found.";
9371         val="$undef";
9372 fi;
9373 set $varname;
9374 eval $setvar;
9375 $rm -f try.c tryout.c'
9376
9377 : see if dbm.h is available
9378 : see if dbmclose exists
9379 set dbmclose d_dbmclose
9380 eval $inlibc
9381
9382 case "$d_dbmclose" in
9383 $define)
9384         set dbm.h i_dbm
9385         eval $inhdr
9386         case "$i_dbm" in
9387         $define)
9388                 val="$undef"
9389                 set i_rpcsvcdbm
9390                 eval $setvar
9391                 ;;
9392         *)      set rpcsvc/dbm.h i_rpcsvcdbm
9393                 eval $inhdr
9394                 ;;
9395         esac
9396         ;;
9397 *)      echo "We won't be including <dbm.h>"
9398         val="$undef"
9399         set i_dbm
9400         eval $setvar
9401         val="$undef"
9402         set i_rpcsvcdbm
9403         eval $setvar
9404         ;;
9405 esac
9406
9407 : see if prototype for dbminit is available
9408 echo " "
9409 set d_dbminitproto dbminit $i_dbm dbm.h
9410 eval $hasproto
9411
9412 : see if difftime exists
9413 set difftime d_difftime
9414 eval $inlibc
9415
9416 : see if this is a dirent system
9417 echo " "
9418 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
9419         val="$define"
9420         echo "<dirent.h> found." >&4
9421 else
9422         val="$undef"
9423         if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
9424                 echo "<sys/dir.h> found." >&4
9425                 echo " "
9426         else
9427                 xinc=`./findhdr sys/ndir.h`
9428         fi
9429         echo "<dirent.h> NOT found." >&4
9430 fi
9431 set i_dirent
9432 eval $setvar
9433
9434 : Look for type of directory structure.
9435 echo " "
9436 $cppstdin $cppflags $cppminus < "$xinc" > try.c
9437
9438 case "$direntrytype" in
9439 ''|' ')
9440         case "$i_dirent" in
9441         $define) guess1='struct dirent' ;;
9442         *) guess1='struct direct'  ;;
9443         esac
9444         ;;
9445 *)      guess1="$direntrytype"
9446         ;;
9447 esac
9448
9449 case "$guess1" in
9450 'struct dirent') guess2='struct direct' ;;
9451 *) guess2='struct dirent' ;;
9452 esac
9453                 
9454 if $contains "$guess1" try.c >/dev/null 2>&1; then
9455         direntrytype="$guess1"
9456         echo "Your directory entries are $direntrytype." >&4
9457 elif $contains "$guess2" try.c >/dev/null 2>&1; then
9458         direntrytype="$guess2"
9459         echo "Your directory entries seem to be $direntrytype." >&4
9460 else
9461         echo "I don't recognize your system's directory entries." >&4
9462         rp="What type is used for directory entries on this system?"
9463         dflt="$guess1"
9464         . ./myread
9465         direntrytype="$ans"
9466 fi
9467 $rm -f try.c
9468
9469
9470 : see if the directory entry stores field length
9471 echo " "
9472 $cppstdin $cppflags $cppminus < "$xinc" > try.c
9473 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
9474         echo "Good, your directory entry keeps length information in d_namlen." >&4
9475         val="$define"
9476 else
9477         echo "Your directory entry does not know about the d_namlen field." >&4
9478         val="$undef"
9479 fi
9480 set d_dirnamlen
9481 eval $setvar
9482 $rm -f try.c
9483
9484 : see if dlerror exists
9485 xxx_runnm="$runnm"
9486 runnm=false
9487 set dlerror d_dlerror
9488 eval $inlibc
9489 runnm="$xxx_runnm"
9490
9491 : see if dlfcn is available
9492 set dlfcn.h i_dlfcn
9493 eval $inhdr
9494
9495 case "$usedl" in
9496 $define|y|true)
9497         $cat << EOM
9498
9499 On a few systems, the dynamically loaded modules that perl generates and uses
9500 will need a different extension than shared libs. The default will probably
9501 be appropriate.
9502
9503 EOM
9504         case "$dlext" in
9505         '')     dflt="$so" ;;
9506         *)      dflt="$dlext" ;;
9507         esac
9508         rp='What is the extension of dynamically loaded modules'
9509         . ./myread
9510         dlext="$ans"
9511         ;;
9512 *)
9513         dlext="none"
9514         ;;
9515 esac
9516
9517 : Check if dlsym need a leading underscore
9518 echo " "
9519 val="$undef"
9520
9521 case "$dlsrc" in
9522 dl_dlopen.xs)
9523         echo "Checking whether your dlsym() needs a leading underscore ..." >&4
9524         $cat >dyna.c <<'EOM'
9525 fred () { }
9526 EOM
9527
9528 $cat >fred.c<<EOM
9529
9530 #include <stdio.h>
9531 #$i_dlfcn I_DLFCN
9532 #ifdef I_DLFCN
9533 #include <dlfcn.h>      /* the dynamic linker include file for SunOS/Solaris */
9534 #else
9535 #include <sys/types.h>
9536 #include <nlist.h>
9537 #include <link.h>
9538 #endif
9539
9540 extern int fred() ;
9541
9542 int main()
9543 {
9544     void * handle ;
9545     void * symbol ;
9546 #ifndef RTLD_LAZY
9547     int mode = 1 ;
9548 #else
9549     int mode = RTLD_LAZY ;
9550 #endif
9551     handle = dlopen("./dyna.$dlext", mode) ;
9552     if (handle == NULL) {
9553         printf ("1\n") ;
9554         fflush (stdout) ;
9555         exit(0);
9556     }
9557     symbol = dlsym(handle, "fred") ;
9558     if (symbol == NULL) {
9559         /* try putting a leading underscore */
9560         symbol = dlsym(handle, "_fred") ;
9561         if (symbol == NULL) {
9562             printf ("2\n") ;
9563             fflush (stdout) ;
9564             exit(0);
9565         }
9566         printf ("3\n") ;
9567     }
9568     else
9569         printf ("4\n") ;
9570     fflush (stdout) ;
9571     exit(0);
9572 }
9573 EOM
9574         : Call the object file tmp-dyna.o in case dlext=o.
9575         if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 && 
9576                 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 && 
9577                 $ld -o dyna.$dlext $ldflags $lddlflags tmp-dyna${_o} > /dev/null 2>&1 && 
9578                 $cc -o fred $ccflags $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1 && $to dyna.$dlext; then
9579                 xxx=`$run ./fred`
9580                 case $xxx in
9581                 1)      echo "Test program failed using dlopen." >&4
9582                         echo "Perhaps you should not use dynamic loading." >&4;;
9583                 2)      echo "Test program failed using dlsym." >&4
9584                         echo "Perhaps you should not use dynamic loading." >&4;;
9585                 3)      echo "dlsym needs a leading underscore" >&4
9586                         val="$define" ;;
9587                 4)      echo "dlsym doesn't need a leading underscore." >&4;;
9588                 esac
9589         else
9590                 echo "I can't compile and run the test program." >&4
9591                 echo "I'm guessing that dlsym doesn't need a leading underscore." >&4
9592         fi
9593         ;;
9594 esac
9595                 
9596 $rm -f fred fred.? dyna.$dlext dyna.? tmp-dyna.?
9597
9598 set d_dlsymun
9599 eval $setvar
9600
9601 : see if prototype for drand48 is available
9602 echo " "
9603 set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
9604 eval $hasproto
9605
9606 : see if dup2 exists
9607 set dup2 d_dup2
9608 eval $inlibc
9609
9610 : see if eaccess exists
9611 set eaccess d_eaccess
9612 eval $inlibc
9613
9614 : see if endgrent exists
9615 set endgrent d_endgrent
9616 eval $inlibc
9617
9618 : see if endhostent exists
9619 set endhostent d_endhent
9620 eval $inlibc
9621
9622 : see if endnetent exists
9623 set endnetent d_endnent
9624 eval $inlibc
9625
9626 : see if endprotoent exists
9627 set endprotoent d_endpent
9628 eval $inlibc
9629
9630 : see if endpwent exists
9631 set endpwent d_endpwent
9632 eval $inlibc
9633
9634 : see if endservent exists
9635 set endservent d_endsent
9636 eval $inlibc
9637
9638 : Locate the flags for 'open()'
9639 echo " "
9640 $cat >try.c <<'EOCP'
9641 #include <sys/types.h>
9642 #ifdef I_FCNTL
9643 #include <fcntl.h>
9644 #endif
9645 #ifdef I_SYS_FILE
9646 #include <sys/file.h>
9647 #endif
9648 int main() {
9649         if(O_RDONLY);
9650 #ifdef O_TRUNC
9651         exit(0);
9652 #else
9653         exit(1);
9654 #endif
9655 }
9656 EOCP
9657 : check sys/file.h first to get FREAD on Sun
9658 if $test `./findhdr sys/file.h` && \
9659                 set try -DI_SYS_FILE && eval $compile; then
9660         h_sysfile=true;
9661         echo "<sys/file.h> defines the O_* constants..." >&4
9662         if $run ./try; then
9663                 echo "and you have the 3 argument form of open()." >&4
9664                 val="$define"
9665         else
9666                 echo "but not the 3 argument form of open().  Oh, well." >&4
9667                 val="$undef"
9668         fi
9669 elif $test `./findhdr fcntl.h` && \
9670                 set try -DI_FCNTL && eval $compile; then
9671         h_fcntl=true;
9672         echo "<fcntl.h> defines the O_* constants..." >&4
9673         if $run ./try; then
9674                 echo "and you have the 3 argument form of open()." >&4
9675                 val="$define"
9676         else
9677                 echo "but not the 3 argument form of open().  Oh, well." >&4
9678                 val="$undef"
9679         fi
9680 else
9681         val="$undef"
9682         echo "I can't find the O_* constant definitions!  You got problems." >&4
9683 fi
9684 set d_open3
9685 eval $setvar
9686 $rm -f try try.*
9687
9688 : see which of string.h or strings.h is needed
9689 echo " "
9690 strings=`./findhdr string.h`
9691 if $test "$strings" && $test -r "$strings"; then
9692         echo "Using <string.h> instead of <strings.h>." >&4
9693         val="$define"
9694 else
9695         val="$undef"
9696         strings=`./findhdr strings.h`
9697         if $test "$strings" && $test -r "$strings"; then
9698                 echo "Using <strings.h> instead of <string.h>." >&4
9699         else
9700                 echo "No string header found -- You'll surely have problems." >&4
9701         fi
9702 fi
9703 set i_string
9704 eval $setvar
9705 case "$i_string" in
9706 "$undef") strings=`./findhdr strings.h`;;
9707 *)        strings=`./findhdr string.h`;;
9708 esac
9709
9710 : check for non-blocking I/O stuff
9711 case "$h_sysfile" in
9712 true) echo "#include <sys/file.h>" > head.c;;
9713 *)
9714        case "$h_fcntl" in
9715        true) echo "#include <fcntl.h>" > head.c;;
9716        *) echo "#include <sys/fcntl.h>" > head.c;;
9717        esac
9718        ;;
9719 esac
9720 echo " "
9721 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
9722 case "$o_nonblock" in
9723 '')
9724         $cat head.c > try.c
9725         $cat >>try.c <<'EOCP'
9726 #include <stdio.h>
9727 #include <stdlib.h>
9728 int main() {
9729 #ifdef O_NONBLOCK
9730         printf("O_NONBLOCK\n");
9731         exit(0);
9732 #endif
9733 #ifdef O_NDELAY
9734         printf("O_NDELAY\n");
9735         exit(0);
9736 #endif
9737 #ifdef FNDELAY
9738         printf("FNDELAY\n");
9739         exit(0);
9740 #endif
9741         exit(0);
9742 }
9743 EOCP
9744         set try
9745         if eval $compile_ok; then
9746                 o_nonblock=`$run ./try`
9747                 case "$o_nonblock" in
9748                 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
9749                 *) echo "Seems like we can use $o_nonblock.";;
9750                 esac
9751         else
9752                 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
9753         fi
9754         ;;
9755 *) echo "Using $hint value $o_nonblock.";;
9756 esac
9757 $rm -f try try.* .out core
9758
9759 echo " "
9760 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
9761 case "$eagain" in
9762 '')
9763         $cat head.c > try.c
9764         $cat >>try.c <<EOCP
9765 #include <errno.h>
9766 #include <sys/types.h>
9767 #include <signal.h>
9768 #include <stdio.h> 
9769 #include <stdlib.h> 
9770 #define MY_O_NONBLOCK $o_nonblock
9771 #ifndef errno  /* XXX need better Configure test */
9772 extern int errno;
9773 #endif
9774 #$i_unistd I_UNISTD
9775 #ifdef I_UNISTD
9776 #include <unistd.h>
9777 #endif
9778 #$i_string I_STRING
9779 #ifdef I_STRING
9780 #include <string.h>
9781 #else
9782 #include <strings.h>
9783 #endif
9784 $signal_t blech(x) int x; { exit(3); }
9785 EOCP
9786         $cat >> try.c <<'EOCP'
9787 int main()
9788 {
9789         int pd[2];
9790         int pu[2];
9791         char buf[1];
9792         char string[100];
9793
9794         pipe(pd);       /* Down: child -> parent */
9795         pipe(pu);       /* Up: parent -> child */
9796         if (0 != fork()) {
9797                 int ret;
9798                 close(pd[1]);   /* Parent reads from pd[0] */
9799                 close(pu[0]);   /* Parent writes (blocking) to pu[1] */
9800 #ifdef F_SETFL
9801                 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
9802                         exit(1);
9803 #else
9804                 exit(4);
9805 #endif
9806                 signal(SIGALRM, blech);
9807                 alarm(5);
9808                 if ((ret = read(pd[0], buf, 1)) > 0)    /* Nothing to read! */
9809                         exit(2);
9810                 sprintf(string, "%d\n", ret);
9811                 write(2, string, strlen(string));
9812                 alarm(0);
9813 #ifdef EAGAIN
9814                 if (errno == EAGAIN) {
9815                         printf("EAGAIN\n");
9816                         goto ok;
9817                 }
9818 #endif
9819 #ifdef EWOULDBLOCK
9820                 if (errno == EWOULDBLOCK)
9821                         printf("EWOULDBLOCK\n");
9822 #endif
9823         ok:
9824                 write(pu[1], buf, 1);   /* Unblocks child, tell it to close our pipe */
9825                 sleep(2);                               /* Give it time to close our pipe */
9826                 alarm(5);
9827                 ret = read(pd[0], buf, 1);      /* Should read EOF */
9828                 alarm(0);
9829                 sprintf(string, "%d\n", ret);
9830                 write(3, string, strlen(string));
9831                 exit(0);
9832         }
9833
9834         close(pd[0]);                   /* We write to pd[1] */
9835         close(pu[1]);                   /* We read from pu[0] */
9836         read(pu[0], buf, 1);    /* Wait for parent to signal us we may continue */
9837         close(pd[1]);                   /* Pipe pd is now fully closed! */
9838         exit(0);                                /* Bye bye, thank you for playing! */
9839 }
9840 EOCP
9841         set try
9842         if eval $compile_ok; then
9843                 echo "$startsh" >mtry
9844                 echo "$run ./try >try.out 2>try.ret 3>try.err || exit 4" >>mtry
9845                 chmod +x mtry
9846                 ./mtry >/dev/null 2>&1
9847                 case $? in
9848                 0) eagain=`$cat try.out`;;
9849                 1) echo "Could not perform non-blocking setting!";;
9850                 2) echo "I did a successful read() for something that was not there!";;
9851                 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
9852                 4) echo "Could not find F_SETFL!";;
9853                 *) echo "Something terribly wrong happened during testing.";;
9854                 esac
9855                 rd_nodata=`$cat try.ret`
9856                 echo "A read() system call with no data present returns $rd_nodata."
9857                 case "$rd_nodata" in
9858                 0|-1) ;;
9859                 *)
9860                         echo "(That's peculiar, fixing that to be -1.)"
9861                         rd_nodata=-1
9862                         ;;
9863                 esac
9864                 case "$eagain" in
9865                 '')
9866                         echo "Forcing errno EAGAIN on read() with no data available."
9867                         eagain=EAGAIN
9868                         ;;
9869                 *)
9870                         echo "Your read() sets errno to $eagain when no data is available."
9871                         ;;
9872                 esac
9873                 status=`$cat try.err`
9874                 case "$status" in
9875                 0) echo "And it correctly returns 0 to signal EOF.";;
9876                 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
9877                 *) echo "However, your read() returns '$status' on EOF??";;
9878                 esac
9879                 val="$define"
9880                 if test "$status" = "$rd_nodata"; then
9881                         echo "WARNING: you can't distinguish between EOF and no data!"
9882                         val="$undef"
9883                 fi
9884         else
9885                 echo "I can't compile the test program--assuming errno EAGAIN will do."
9886                 eagain=EAGAIN
9887         fi
9888         set d_eofnblk
9889         eval $setvar
9890         ;;
9891 *)
9892         echo "Using $hint value $eagain."
9893         echo "Your read() returns $rd_nodata when no data is present."
9894         case "$d_eofnblk" in
9895         "$define") echo "And you can see EOF because read() returns 0.";;
9896         "$undef") echo "But you can't see EOF status from read() returned value.";;
9897         *)
9898                 echo "(Assuming you can't see EOF status from read anyway.)"
9899                 d_eofnblk=$undef
9900                 ;;
9901         esac
9902         ;;
9903 esac
9904 $rm -f try try.* .out core head.c mtry
9905
9906 : see if fchdir exists
9907 set fchdir d_fchdir
9908 eval $inlibc
9909
9910 : see if fchmod exists
9911 set fchmod d_fchmod
9912 eval $inlibc
9913
9914 : see if fchown exists
9915 set fchown d_fchown
9916 eval $inlibc
9917
9918 : see if this is an fcntl system
9919 set fcntl d_fcntl
9920 eval $inlibc
9921
9922 echo " "
9923 : See if fcntl-based locking works.
9924 $cat >try.c <<EOCP
9925 #include <stdlib.h>
9926 #include <unistd.h>
9927 #include <fcntl.h>
9928 #include <signal.h>
9929 $signal_t blech(x) int x; { exit(3); }
9930 int main() {
9931 #if defined(F_SETLK) && defined(F_SETLKW)
9932      struct flock flock;
9933      int retval, fd;
9934      fd = open("try.c", O_RDONLY);
9935      flock.l_type = F_RDLCK;
9936      flock.l_whence = SEEK_SET;
9937      flock.l_start = flock.l_len = 0;
9938      signal(SIGALRM, blech);
9939      alarm(10);
9940      retval = fcntl(fd, F_SETLK, &flock);
9941      close(fd);
9942      (retval < 0 ? exit(2) : exit(0));
9943 #else
9944      exit(2);
9945 #endif
9946 }
9947 EOCP
9948 echo "Checking if fcntl-based file locking works... "
9949 case "$d_fcntl" in
9950 "$define")
9951         set try
9952         if eval $compile_ok; then
9953                 if $run ./try; then
9954                         echo "Yes, it seems to work."
9955                         val="$define"
9956                 else
9957                         echo "Nope, it didn't work."
9958                         val="$undef"
9959                         case "$?" in
9960                         3) $cat >&4 <<EOM
9961 ***
9962 *** I had to forcibly timeout from fcntl(..., F_SETLK, ...).
9963 *** This is (almost) impossible.
9964 *** If your NFS lock daemons are not feeling well, something like
9965 *** this may happen, please investigate.  Cannot continue, aborting.
9966 ***
9967 EOM
9968                                 exit 1
9969                                 ;;
9970                         esac
9971                 fi
9972         else
9973                 echo "I'm unable to compile the test program, so I'll assume not."
9974                 val="$undef"
9975         fi
9976         ;;
9977 *) val="$undef";
9978         echo "Nope, since you don't even have fcntl()."
9979         ;;
9980 esac
9981 set d_fcntl_can_lock
9982 eval $setvar
9983 $rm -f try*
9984
9985
9986 : see if sys/select.h has to be included
9987 set sys/select.h i_sysselct
9988 eval $inhdr
9989
9990 : see if we should include time.h, sys/time.h, or both
9991 echo " "
9992 if test "X$timeincl" = X; then
9993         echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
9994         $echo $n "I'm now running the test program...$c"
9995         $cat >try.c <<'EOCP'
9996 #include <sys/types.h>
9997 #ifdef I_TIME
9998 #include <time.h>
9999 #endif
10000 #ifdef I_SYSTIME
10001 #ifdef SYSTIMEKERNEL
10002 #define KERNEL
10003 #endif
10004 #include <sys/time.h>
10005 #endif
10006 #ifdef I_SYSSELECT
10007 #include <sys/select.h>
10008 #endif
10009 int main()
10010 {
10011         struct tm foo;
10012 #ifdef S_TIMEVAL
10013         struct timeval bar;
10014 #endif
10015 #ifdef S_TIMEZONE
10016         struct timezone tzp;
10017 #endif
10018         if (foo.tm_sec == foo.tm_sec)
10019                 exit(0);
10020 #ifdef S_TIMEVAL
10021         if (bar.tv_sec == bar.tv_sec)
10022                 exit(0);
10023 #endif
10024         exit(1);
10025 }
10026 EOCP
10027         flags=''
10028         for s_timezone in '-DS_TIMEZONE' ''; do
10029         sysselect=''
10030         for s_timeval in '-DS_TIMEVAL' ''; do
10031         for i_systimek in '' '-DSYSTIMEKERNEL'; do
10032         for i_time in '' '-DI_TIME'; do
10033         for i_systime in '-DI_SYSTIME' ''; do
10034                 case "$flags" in
10035                 '') $echo $n ".$c"
10036                         set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
10037                         if eval $compile; then
10038                                 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
10039                                 shift
10040                                 flags="$*"
10041                                 echo " "
10042                                 $echo $n "Succeeded with $flags$c"
10043                         fi
10044                         ;;
10045                 esac
10046         done
10047         done
10048         done
10049         done
10050         done
10051         timeincl=''
10052         echo " "
10053         case "$flags" in
10054         *SYSTIMEKERNEL*) i_systimek="$define"
10055                 timeincl=`./findhdr sys/time.h`
10056                 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
10057         *) i_systimek="$undef";;
10058         esac
10059         case "$flags" in
10060         *I_TIME*) i_time="$define"
10061                 timeincl=`./findhdr time.h`" $timeincl"
10062                 echo "We'll include <time.h>." >&4;;
10063         *) i_time="$undef";;
10064         esac
10065         case "$flags" in
10066         *I_SYSTIME*) i_systime="$define"
10067                 timeincl=`./findhdr sys/time.h`" $timeincl"
10068                 echo "We'll include <sys/time.h>." >&4;;
10069         *) i_systime="$undef";;
10070         esac
10071         $rm -f try.c try
10072 fi
10073
10074 : check for fd_set items
10075 $cat <<EOM
10076
10077 Checking to see how well your C compiler handles fd_set and friends ...
10078 EOM
10079 $cat >try.c <<EOCP
10080 #$i_systime I_SYS_TIME
10081 #$i_sysselct I_SYS_SELECT
10082 #$d_socket HAS_SOCKET
10083 #include <sys/types.h>
10084 #ifdef HAS_SOCKET
10085 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
10086 #endif
10087 #ifdef I_SYS_TIME
10088 #include <sys/time.h>
10089 #endif
10090 #ifdef I_SYS_SELECT
10091 #include <sys/select.h>
10092 #endif
10093 int main() {
10094         fd_set fds;
10095
10096 #ifdef TRYBITS
10097         if(fds.fds_bits);
10098 #endif
10099
10100 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
10101         exit(0);
10102 #else
10103         exit(1);
10104 #endif
10105 }
10106 EOCP
10107 set try -DTRYBITS
10108 if eval $compile; then
10109         d_fds_bits="$define"
10110         d_fd_set="$define"
10111         echo "Well, your system knows about the normal fd_set typedef..." >&4
10112         if $run ./try; then
10113                 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
10114                 d_fd_macros="$define"
10115         else
10116                 $cat >&4 <<'EOM'
10117 but not the normal fd_set macros!  Gaaack!  I'll have to cover for you.
10118 EOM
10119                 d_fd_macros="$undef"
10120         fi
10121 else
10122         $cat <<'EOM'
10123 Hmm, your compiler has some difficulty with fd_set.  Checking further...
10124 EOM
10125         set try
10126         if eval $compile; then
10127                 d_fds_bits="$undef"
10128                 d_fd_set="$define"
10129                 echo "Well, your system has some sort of fd_set available..." >&4
10130                 if $run ./try; then
10131                         echo "and you have the normal fd_set macros." >&4
10132                         d_fd_macros="$define"
10133                 else
10134                         $cat <<'EOM'
10135 but not the normal fd_set macros!  Gross!  More work for me...
10136 EOM
10137                         d_fd_macros="$undef"
10138                 fi
10139         else
10140         echo "Well, you got zip.  That's OK, I can roll my own fd_set stuff." >&4
10141                 d_fd_set="$undef"
10142                 d_fds_bits="$undef"
10143                 d_fd_macros="$undef"
10144         fi
10145 fi
10146 $rm -f try try.*
10147
10148 : see if fgetpos exists
10149 set fgetpos d_fgetpos
10150 eval $inlibc
10151
10152 : see if flock exists
10153 set flock d_flock
10154 eval $inlibc
10155
10156 : see if this is a sys/file.h system
10157 val=''
10158 set sys/file.h val
10159 eval $inhdr
10160
10161 : do we need to include sys/file.h ?
10162 case "$val" in
10163 "$define")
10164         echo " "
10165         if $h_sysfile; then
10166                 val="$define"
10167                 echo "We'll be including <sys/file.h>." >&4
10168         else
10169                 val="$undef"
10170                 echo "We won't be including <sys/file.h>." >&4
10171         fi
10172         ;;
10173 *)
10174         h_sysfile=false
10175         ;;
10176 esac
10177 set i_sysfile
10178 eval $setvar
10179
10180 : see if prototype for flock is available
10181 echo " "
10182 set d_flockproto flock $i_sysfile sys/file.h
10183 eval $hasproto
10184
10185 : see if fork exists
10186 set fork d_fork
10187 eval $inlibc
10188
10189 : see if pathconf exists
10190 set pathconf d_pathconf
10191 eval $inlibc
10192
10193 : see if fpathconf exists
10194 set fpathconf d_fpathconf
10195 eval $inlibc
10196
10197
10198 : check for fpos64_t
10199 echo " "
10200 echo "Checking to see if you have fpos64_t..." >&4
10201 $cat >try.c <<EOCP
10202 #include <stdio.h>
10203 int main() { fpos64_t x = 7; }
10204 EOCP
10205 set try
10206 if eval $compile; then
10207         val="$define"
10208         echo "You have fpos64_t."
10209 else
10210         val="$undef"
10211         echo "You do not have fpos64_t."
10212         case "$fpossize" in
10213         8) echo "(Your fpos_t is 64 bits, so you could use that.)" ;;
10214         esac
10215 fi
10216 $rm -f try.* try
10217 set d_fpos64_t
10218 eval $setvar
10219
10220 : see if frexpl exists
10221 set frexpl d_frexpl
10222 eval $inlibc
10223
10224 : see if this is a sys/param system
10225 set sys/param.h i_sysparam
10226 eval $inhdr
10227
10228 : see if this is a sys/mount.h system
10229 set sys/mount.h i_sysmount
10230 eval $inhdr
10231
10232
10233 echo " "
10234 echo "Checking to see if your system supports struct fs_data..." >&4
10235 set d_fs_data_s fs_data $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h
10236 eval $hasstruct
10237 case "$d_fs_data_s" in
10238 "$define")      echo "Yes, it does."   ;;
10239 *)              echo "No, it doesn't." ;;
10240 esac
10241
10242 : see if fseeko exists
10243 set fseeko d_fseeko
10244 eval $inlibc
10245 case "$longsize" in
10246 8) echo "(Your long is 64 bits, so you could use fseek.)" ;;
10247 esac
10248
10249 : see if fsetpos exists
10250 set fsetpos d_fsetpos
10251 eval $inlibc
10252
10253
10254 : see if fstatfs exists
10255 set fstatfs d_fstatfs
10256 eval $inlibc
10257
10258
10259 : see if statvfs exists
10260 set statvfs d_statvfs
10261 eval $inlibc
10262
10263 : see if fstatvfs exists
10264 set fstatvfs d_fstatvfs
10265 eval $inlibc
10266
10267
10268 : see if fsync exists
10269 set fsync d_fsync
10270 eval $inlibc
10271
10272 : see if ftello exists
10273 set ftello d_ftello
10274 eval $inlibc
10275 case "$longsize" in
10276 8) echo "(Your long is 64 bits, so you could use ftell.)" ;;
10277 esac
10278
10279 : see if getcwd exists
10280 set getcwd d_getcwd
10281 eval $inlibc
10282
10283 : see if getespwnam exists
10284 set getespwnam d_getespwnam
10285 eval $inlibc
10286
10287
10288 : see if getfsstat exists
10289 set getfsstat d_getfsstat
10290 eval $inlibc
10291
10292 : see if getgrent exists
10293 set getgrent d_getgrent
10294 eval $inlibc
10295
10296 : see if gethostbyaddr exists
10297 set gethostbyaddr d_gethbyaddr
10298 eval $inlibc
10299
10300 : see if gethostbyname exists
10301 set gethostbyname d_gethbyname
10302 eval $inlibc
10303
10304 : see if gethostent exists
10305 set gethostent d_gethent
10306 eval $inlibc
10307
10308 : see how we will look up host name
10309 echo " "
10310 call=''
10311 if set gethostname val -f d_gethname; eval $csym; $val; then
10312         echo 'gethostname() found.' >&4
10313         d_gethname="$define"
10314         call=gethostname
10315 fi
10316 if set uname val -f d_uname; eval $csym; $val; then
10317         if ./xenix; then
10318                 $cat <<'EOM'
10319 uname() was found, but you're running xenix, and older versions of xenix
10320 have a broken uname(). If you don't really know whether your xenix is old
10321 enough to have a broken system call, use the default answer.
10322
10323 EOM
10324                 dflt=y
10325                 case "$d_uname" in
10326                 "$define") dflt=n;;
10327                 esac
10328                 rp='Is your uname() broken?'
10329                 . ./myread
10330                 case "$ans" in
10331                 n*) d_uname="$define"; call=uname;;
10332                 esac
10333         else
10334                 echo 'uname() found.' >&4
10335                 d_uname="$define"
10336                 case "$call" in
10337                 '') call=uname ;;
10338                 esac
10339         fi
10340 fi
10341 case "$d_gethname" in
10342 '') d_gethname="$undef";;
10343 esac
10344 case "$d_uname" in
10345 '') d_uname="$undef";;
10346 esac
10347 case "$d_uname$d_gethname" in
10348 *define*)
10349         dflt=n
10350         cat <<EOM
10351  
10352 Every now and then someone has a $call() that lies about the hostname
10353 but can't be fixed for political or economic reasons.  If you wish, I can
10354 pretend $call() isn't there and maybe compute hostname at run-time
10355 thanks to the '$phostname' command.
10356
10357 EOM
10358         rp="Shall I ignore $call() from now on?"
10359         . ./myread
10360         case "$ans" in
10361         y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
10362         esac;;
10363 esac
10364 case "$phostname" in
10365 '') aphostname='';;
10366 *) case "$aphostname" in
10367         /*) ;;
10368         *) set X $phostname
10369                 shift
10370                 file=$1
10371                 shift
10372                 file=`./loc $file $file $pth`
10373                 aphostname=`echo $file $*`
10374                 ;;
10375         esac
10376         ;;
10377 esac
10378 case "$d_uname$d_gethname" in
10379 *define*) ;;
10380 *)
10381         case "$phostname" in
10382         '')
10383                 echo "There will be no way for $package to get your hostname." >&4;;
10384         *)
10385         echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
10386                 ;;
10387         esac;;
10388 esac
10389 case "$d_phostname" in
10390 '') d_phostname="$undef";;
10391 esac
10392
10393 : see if this is a netdb.h system
10394 set netdb.h i_netdb
10395 eval $inhdr
10396
10397 : see if prototypes for various gethostxxx netdb.h functions are available
10398 echo " "
10399 set d_gethostprotos gethostent $i_netdb netdb.h
10400 eval $hasproto
10401
10402 : see if getitimer exists
10403 set getitimer d_getitimer
10404 eval $inlibc
10405
10406 : see if getlogin exists
10407 set getlogin d_getlogin
10408 eval $inlibc
10409
10410 : see if getmnt exists
10411 set getmnt d_getmnt
10412 eval $inlibc
10413
10414 : see if getmntent exists
10415 set getmntent d_getmntent
10416 eval $inlibc
10417
10418 : see if getnetbyaddr exists
10419 set getnetbyaddr d_getnbyaddr
10420 eval $inlibc
10421
10422 : see if getnetbyname exists
10423 set getnetbyname d_getnbyname
10424 eval $inlibc
10425
10426 : see if getnetent exists
10427 set getnetent d_getnent
10428 eval $inlibc
10429
10430 : see if prototypes for various getnetxxx netdb.h functions are available
10431 echo " "
10432 set d_getnetprotos getnetent $i_netdb netdb.h
10433 eval $hasproto
10434
10435 : see if getpagesize exists
10436 set getpagesize d_getpagsz
10437 eval $inlibc
10438
10439
10440 : see if getprotobyname exists
10441 set getprotobyname d_getpbyname
10442 eval $inlibc
10443
10444 : see if getprotobynumber exists
10445 set getprotobynumber d_getpbynumber
10446 eval $inlibc
10447
10448 : see if getprotoent exists
10449 set getprotoent d_getpent
10450 eval $inlibc
10451
10452 : see if getpgid exists
10453 set getpgid d_getpgid
10454 eval $inlibc
10455
10456 : see if getpgrp2 exists
10457 set getpgrp2 d_getpgrp2
10458 eval $inlibc
10459
10460 : see if getppid exists
10461 set getppid d_getppid
10462 eval $inlibc
10463
10464 : see if getpriority exists
10465 set getpriority d_getprior
10466 eval $inlibc
10467
10468 : see if prototypes for various getprotoxxx netdb.h functions are available
10469 echo " "
10470 set d_getprotoprotos getprotoent $i_netdb netdb.h
10471 eval $hasproto
10472
10473 : see if getprpwnam exists
10474 set getprpwnam d_getprpwnam
10475 eval $inlibc
10476
10477 : see if getpwent exists
10478 set getpwent d_getpwent
10479 eval $inlibc
10480
10481
10482 : see if getservbyname exists
10483 set getservbyname d_getsbyname
10484 eval $inlibc
10485
10486 : see if getservbyport exists
10487 set getservbyport d_getsbyport
10488 eval $inlibc
10489
10490 : see if getservent exists
10491 set getservent d_getsent
10492 eval $inlibc
10493
10494 : see if prototypes for various getservxxx netdb.h functions are available
10495 echo " "
10496 set d_getservprotos getservent $i_netdb netdb.h
10497 eval $hasproto
10498
10499 : see if getspnam exists
10500 set getspnam d_getspnam
10501 eval $inlibc
10502
10503 : see if gettimeofday or ftime exists
10504 set gettimeofday d_gettimeod
10505 eval $inlibc
10506 case "$d_gettimeod" in
10507 "$undef")
10508         set ftime d_ftime 
10509         eval $inlibc
10510         ;;
10511 *)
10512         val="$undef"; set d_ftime; eval $setvar
10513         ;;
10514 esac
10515 case "$d_gettimeod$d_ftime" in
10516 "$undef$undef")
10517         echo " "
10518         echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
10519         ;;
10520 esac
10521
10522 : see if this is an grp system
10523 set grp.h i_grp
10524 eval $inhdr
10525
10526 case "$i_grp" in
10527 $define)
10528         xxx=`./findhdr grp.h`
10529         $cppstdin $cppflags $cppminus < $xxx >$$.h
10530
10531         if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
10532                 val="$define"
10533         else
10534                 val="$undef"
10535         fi
10536         set d_grpasswd
10537         eval $setvar
10538
10539         $rm -f $$.h
10540         ;;
10541 *)
10542         val="$undef";
10543         set d_grpasswd; eval $setvar
10544         ;;
10545 esac
10546
10547 : see if hasmntopt exists
10548 set hasmntopt d_hasmntopt
10549 eval $inlibc
10550
10551 : see if this is a netinet/in.h or sys/in.h system
10552 set netinet/in.h i_niin sys/in.h i_sysin
10553 eval $inhdr
10554
10555 : see if arpa/inet.h has to be included
10556 set arpa/inet.h i_arpainet
10557 eval $inhdr
10558
10559 : see if htonl --and friends-- exists
10560 val=''
10561 set htonl val
10562 eval $inlibc
10563
10564 : Maybe they are macros.
10565 case "$val" in
10566 $undef)
10567         $cat >htonl.c <<EOM
10568 #include <stdio.h>
10569 #include <sys/types.h>
10570 #$i_niin I_NETINET_IN
10571 #$i_sysin I_SYS_IN
10572 #$i_arpainet I_ARPA_INET
10573 #ifdef I_NETINET_IN
10574 #include <netinet/in.h>
10575 #endif
10576 #ifdef I_SYS_IN
10577 #include <sys/in.h>
10578 #endif
10579 #ifdef I_ARPA_INET
10580 #include <arpa/inet.h>
10581 #endif
10582 #ifdef htonl
10583 printf("Defined as a macro.");
10584 #endif
10585 EOM
10586         $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
10587         if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
10588                 val="$define"
10589                 echo "But it seems to be defined as a macro." >&4
10590         fi
10591         $rm -f htonl.?
10592         ;;
10593 esac
10594 set d_htonl
10595 eval $setvar
10596
10597 : see if iconv exists
10598 set iconv d_iconv
10599 eval $inlibc
10600
10601 : index or strchr
10602 echo " "
10603 if set index val -f; eval $csym; $val; then
10604         if set strchr val -f d_strchr; eval $csym; $val; then
10605                 if $contains strchr "$strings" >/dev/null 2>&1 ; then
10606                         val="$define"
10607                         vali="$undef"
10608                         echo "strchr() found." >&4
10609                 else
10610                         val="$undef"
10611                         vali="$define"
10612                         echo "index() found." >&4
10613                 fi
10614         else
10615                 val="$undef"
10616                 vali="$define"
10617                 echo "index() found." >&4
10618         fi
10619 else
10620         if set strchr val -f d_strchr; eval $csym; $val; then
10621                 val="$define"
10622                 vali="$undef"
10623                 echo "strchr() found." >&4
10624         else
10625                 echo "No index() or strchr() found!" >&4
10626                 val="$undef"
10627                 vali="$undef"
10628         fi
10629 fi
10630 set d_strchr; eval $setvar
10631 val="$vali"
10632 set d_index; eval $setvar
10633
10634 : check whether inet_aton exists
10635 set inet_aton d_inetaton
10636 eval $inlibc
10637
10638 : Look for isascii
10639 echo " "
10640 $cat >isascii.c <<'EOCP'
10641 #include <stdio.h>
10642 #include <ctype.h>
10643 int main() {
10644         int c = 'A';
10645         if (isascii(c))
10646                 exit(0);
10647         else
10648                 exit(1);
10649 }
10650 EOCP
10651 set isascii
10652 if eval $compile; then
10653         echo "isascii() found." >&4
10654         val="$define"
10655 else
10656         echo "isascii() NOT found." >&4
10657         val="$undef"
10658 fi
10659 set d_isascii
10660 eval $setvar
10661 $rm -f isascii*
10662
10663 : see if isnan exists
10664 set isnan d_isnan
10665 eval $inlibc
10666
10667 : see if isnanl exists
10668 set isnanl d_isnanl
10669 eval $inlibc
10670
10671 : see if killpg exists
10672 set killpg d_killpg
10673 eval $inlibc
10674
10675 : see if lchown exists
10676 echo " "
10677 $cat > try.c <<'EOCP'
10678 /* System header to define __stub macros and hopefully few prototypes,
10679     which can conflict with char lchown(); below.  */
10680 #include <assert.h>
10681 /* Override any gcc2 internal prototype to avoid an error.  */
10682 /* We use char because int might match the return type of a gcc2
10683    builtin and then its argument prototype would still apply.  */
10684 char lchown();
10685 int main() {
10686     /*  The GNU C library defines this for functions which it implements
10687         to always fail with ENOSYS.  Some functions are actually named
10688         something starting with __ and the normal name is an alias.  */
10689 #if defined (__stub_lchown) || defined (__stub___lchown)
10690 choke me
10691 #else
10692 lchown();
10693 #endif
10694 ; return 0; }
10695 EOCP
10696 set try
10697 if eval $compile; then
10698     $echo "lchown() found." >&4
10699     val="$define"
10700 else
10701     $echo "lchown() NOT found." >&4
10702     val="$undef"
10703 fi
10704 set d_lchown
10705 eval $setvar
10706
10707 : See if number of significant digits in a double precision number is known
10708 echo " "
10709 $cat >ldbl_dig.c <<EOM
10710 #$i_limits I_LIMITS
10711 #$i_float I_FLOAT
10712 #ifdef I_LIMITS
10713 #include <limits.h>
10714 #endif
10715 #ifdef I_FLOAT
10716 #include <float.h>
10717 #endif
10718 #ifdef LDBL_DIG
10719 printf("Contains LDBL_DIG");
10720 #endif
10721 EOM
10722 $cppstdin $cppflags $cppminus < ldbl_dig.c >ldbl_dig.E 2>/dev/null
10723 if $contains 'LDBL_DIG' ldbl_dig.E >/dev/null 2>&1; then
10724         echo "LDBL_DIG found." >&4
10725         val="$define"
10726 else
10727         echo "LDBL_DIG NOT found." >&4
10728         val="$undef"
10729 fi
10730 $rm -f ldbl_dig.?
10731 set d_ldbl_dig
10732 eval $setvar
10733
10734 : see if link exists
10735 set link d_link
10736 eval $inlibc
10737
10738 : see if localeconv exists
10739 set localeconv d_locconv
10740 eval $inlibc
10741
10742 : see if lockf exists
10743 set lockf d_lockf
10744 eval $inlibc
10745
10746 : see if prototype for lseek is available
10747 echo " "
10748 set d_lseekproto lseek $i_systypes sys/types.h $i_unistd unistd.h
10749 eval $hasproto
10750
10751 : see if lstat exists
10752 set lstat d_lstat
10753 eval $inlibc
10754
10755 : see if madvise exists
10756 set madvise d_madvise
10757 eval $inlibc
10758
10759 : see if mblen exists
10760 set mblen d_mblen
10761 eval $inlibc
10762
10763 : see if mbstowcs exists
10764 set mbstowcs d_mbstowcs
10765 eval $inlibc
10766
10767 : see if mbtowc exists
10768 set mbtowc d_mbtowc
10769 eval $inlibc
10770
10771 : see if memchr exists
10772 set memchr d_memchr
10773 eval $inlibc
10774
10775 : see if memcmp exists
10776 set memcmp d_memcmp
10777 eval $inlibc
10778
10779 : see if memcpy exists
10780 set memcpy d_memcpy
10781 eval $inlibc
10782
10783 : see if memmove exists
10784 set memmove d_memmove
10785 eval $inlibc
10786
10787 : see if memset exists
10788 set memset d_memset
10789 eval $inlibc
10790
10791 : see if mkdir exists
10792 set mkdir d_mkdir
10793 eval $inlibc
10794
10795 : see if mkdtemp exists
10796 set mkdtemp d_mkdtemp
10797 eval $inlibc
10798
10799 : see if mkfifo exists
10800 set mkfifo d_mkfifo
10801 eval $inlibc
10802
10803 : see if mkstemp exists
10804 set mkstemp d_mkstemp
10805 eval $inlibc
10806
10807 : see if mkstemps exists
10808 set mkstemps d_mkstemps
10809 eval $inlibc
10810
10811 : see if mktime exists
10812 set mktime d_mktime
10813 eval $inlibc
10814
10815 : see if this is a sys/mman.h system
10816 set sys/mman.h i_sysmman
10817 eval $inhdr
10818
10819 : see if mmap exists
10820 set mmap d_mmap
10821 eval $inlibc
10822 : see what shmat returns
10823 : default to something harmless
10824 mmaptype='void *'
10825 case "$i_sysmman$d_mmap" in
10826 "$define$define")
10827         $cat >mmap.c <<'END'
10828 #include <sys/mman.h>
10829 void *mmap();
10830 END
10831         if $cc $ccflags -c mmap.c >/dev/null 2>&1; then
10832                 mmaptype='void *'
10833         else
10834                 mmaptype='caddr_t'
10835         fi
10836         echo "and it returns ($mmaptype)." >&4
10837         ;;
10838 esac
10839
10840
10841
10842 : see if modfl exists
10843 set modfl d_modfl
10844 eval $inlibc
10845
10846 d_modfl_pow32_bug="$undef"
10847
10848 case "$d_longdbl$d_modfl" in
10849 $define$define)
10850         $cat <<EOM
10851 Checking to see whether your modfl() is okay for large values...
10852 EOM
10853 $cat >try.c <<EOCP
10854 #include <math.h> 
10855 #include <stdio.h>
10856 int main() {
10857     long double nv = 4294967303.15;
10858     long double v, w;
10859     v = modfl(nv, &w);         
10860 #ifdef __GLIBC__
10861     printf("glibc");
10862 #endif
10863     printf(" %"$sPRIfldbl" %"$sPRIfldbl" %"$sPRIfldbl"\n", nv, v, w);
10864     return 0;
10865 }
10866 EOCP
10867         case "$osname:$gccversion" in
10868         aix:)   saveccflags="$ccflags"
10869                 ccflags="$ccflags -qlongdouble" ;; # to avoid core dump
10870         esac
10871         set try
10872         if eval $compile; then
10873                 foo=`$run ./try`
10874                 case "$foo" in
10875                 *" 4294967303.150000 1.150000 4294967302.000000")
10876                         echo >&4 "Your modfl() is broken for large values."
10877                         d_modfl_pow32_bug="$define"
10878                         case "$foo" in
10879                         glibc)  echo >&4 "You should upgrade your glibc to at least 2.2.2 to get a fixed modfl()."
10880                         ;;
10881                         esac
10882                         ;;
10883                 *" 4294967303.150000 0.150000 4294967303.000000")
10884                         echo >&4 "Your modfl() seems okay for large values."
10885                         ;;
10886                 *)      echo >&4 "I don't understand your modfl() at all."
10887                         d_modfl="$undef"
10888                         ;;
10889                 esac
10890                 $rm -f try.* try core core.try.*
10891         else
10892                 echo "I cannot figure out whether your modfl() is okay, assuming it isn't."
10893                 d_modfl="$undef"
10894         fi
10895         case "$osname:$gccversion" in
10896         aix:)   ccflags="$saveccflags" ;; # restore
10897         esac
10898         ;;
10899 esac
10900
10901 : see if mprotect exists
10902 set mprotect d_mprotect
10903 eval $inlibc
10904
10905 : see if msgctl exists
10906 set msgctl d_msgctl
10907 eval $inlibc
10908
10909 : see if msgget exists
10910 set msgget d_msgget
10911 eval $inlibc
10912
10913 : see if msgsnd exists
10914 set msgsnd d_msgsnd
10915 eval $inlibc
10916
10917 : see if msgrcv exists
10918 set msgrcv d_msgrcv
10919 eval $inlibc
10920
10921 : see how much of the 'msg*(2)' library is present.
10922 h_msg=true
10923 echo " "
10924 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
10925 *"$undef"*) h_msg=false;;
10926 esac
10927 case "$osname" in
10928 freebsd)
10929     case "`ipcs 2>&1`" in
10930     "SVID messages"*"not configured"*)
10931         echo "Your $osname does not have the msg*(2) configured." >&4
10932         h_msg=false
10933         val="$undef"
10934         set msgctl d_msgctl
10935         eval $setvar
10936         set msgget d_msgget
10937         eval $setvar
10938         set msgsnd d_msgsnd
10939         eval $setvar
10940         set msgrcv d_msgrcv
10941         eval $setvar
10942         ;;
10943     esac
10944     ;;
10945 esac
10946 : we could also check for sys/ipc.h ...
10947 if $h_msg && $test `./findhdr sys/msg.h`; then
10948         echo "You have the full msg*(2) library." >&4
10949         val="$define"
10950 else
10951         echo "You don't have the full msg*(2) library." >&4
10952         val="$undef"
10953 fi
10954 set d_msg
10955 eval $setvar
10956
10957
10958 echo " "
10959 echo "Checking to see if your system supports struct msghdr..." >&4
10960 set d_msghdr_s msghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
10961 eval $hasstruct
10962 case "$d_msghdr_s" in
10963 "$define")      echo "Yes, it does."   ;;
10964 *)              echo "No, it doesn't." ;;
10965 esac
10966
10967
10968 : see if msync exists
10969 set msync d_msync
10970 eval $inlibc
10971
10972 : see if munmap exists
10973 set munmap d_munmap
10974 eval $inlibc
10975
10976 : see if nice exists
10977 set nice d_nice
10978 eval $inlibc
10979
10980 : see if this is a langinfo.h system
10981 set langinfo.h i_langinfo
10982 eval $inhdr
10983
10984 : see if nl_langinfo exists
10985 set nl_langinfo d_nl_langinfo
10986 eval $inlibc
10987
10988 : check for length of character
10989 echo " "
10990 case "$charsize" in
10991 '')
10992         echo "Checking to see how big your characters are (hey, you never know)..." >&4
10993         $cat >try.c <<'EOCP'
10994 #include <stdio.h>
10995 int main()
10996 {
10997     printf("%d\n", (int)sizeof(char));
10998     exit(0);
10999 }
11000 EOCP
11001         set try
11002         if eval $compile_ok; then
11003                 dflt=`$run ./try`
11004         else
11005                 dflt='1'
11006                 echo "(I can't seem to compile the test program.  Guessing...)"
11007         fi
11008         ;;
11009 *)
11010         dflt="$charsize"
11011         ;;
11012 esac
11013 rp="What is the size of a character (in bytes)?"
11014 . ./myread
11015 charsize="$ans"
11016 $rm -f try.c try
11017
11018 : check for volatile keyword
11019 echo " "
11020 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
11021 $cat >try.c <<'EOCP'
11022 int main()
11023 {
11024         typedef struct _goo_struct goo_struct;
11025         goo_struct * volatile goo = ((goo_struct *)0);
11026         struct _goo_struct {
11027                 long long_int;
11028                 int reg_int;
11029                 char char_var;
11030         };
11031         typedef unsigned short foo_t;
11032         char *volatile foo;
11033         volatile int bar;
11034         volatile foo_t blech;
11035         foo = foo;
11036 }
11037 EOCP
11038 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
11039         val="$define"
11040         echo "Yup, it does."
11041 else
11042         val="$undef"
11043         echo "Nope, it doesn't."
11044 fi
11045 set d_volatile
11046 eval $setvar
11047 $rm -f try.*
11048
11049
11050 echo " "
11051 $echo "Choosing the C types to be used for Perl's internal types..." >&4
11052
11053 case "$use64bitint:$d_quad:$quadtype" in
11054 define:define:?*)
11055         ivtype="$quadtype"
11056         uvtype="$uquadtype"
11057         ivsize=8
11058         uvsize=8
11059         ;;
11060 *)      ivtype="long"
11061         uvtype="unsigned long"
11062         ivsize=$longsize
11063         uvsize=$longsize
11064         ;;
11065 esac
11066
11067 case "$uselongdouble:$d_longdbl" in
11068 define:define)
11069         nvtype="long double"
11070         nvsize=$longdblsize
11071         ;;
11072 *)      nvtype=double
11073         nvsize=$doublesize
11074         ;;
11075 esac
11076
11077 $echo "(IV will be "$ivtype", $ivsize bytes)"
11078 $echo "(UV will be "$uvtype", $uvsize bytes)"
11079 $echo "(NV will be "$nvtype", $nvsize bytes)"
11080
11081 $cat >try.c <<EOCP
11082 #$i_inttypes I_INTTYPES
11083 #ifdef I_INTTYPES
11084 #include <inttypes.h>
11085 #endif
11086 #include <stdio.h>
11087 int main() {
11088 #ifdef INT8
11089    int8_t i =  INT8_MAX;
11090   uint8_t u = UINT8_MAX;
11091   printf("int8_t\n");
11092 #endif
11093 #ifdef INT16
11094    int16_t i =  INT16_MAX;
11095   uint16_t i = UINT16_MAX;
11096   printf("int16_t\n");
11097 #endif
11098 #ifdef INT32
11099    int32_t i =  INT32_MAX;
11100   uint32_t u = UINT32_MAX;
11101   printf("int32_t\n");
11102 #endif
11103 }
11104 EOCP
11105
11106 case "$i8type" in
11107 '')     case "$charsize" in
11108         1)      i8type=char
11109                 u8type="unsigned char"
11110                 i8size=$charsize
11111                 u8size=$charsize
11112                 ;;
11113         esac
11114         ;;
11115 esac
11116 case "$i8type" in
11117 '')     set try -DINT8
11118         if eval $compile; then
11119                 case "`$run ./try`" in
11120                 int8_t) i8type=int8_t
11121                         u8type=uint8_t
11122                         i8size=1
11123                         u8size=1
11124                         ;;
11125                 esac
11126         fi
11127         ;;
11128 esac
11129 case "$i8type" in
11130 '')     if $test $charsize -ge 1; then
11131                 i8type=char
11132                 u8type="unsigned char"
11133                 i8size=$charsize
11134                 u8size=$charsize
11135         fi
11136         ;;
11137 esac
11138
11139 case "$i16type" in
11140 '')     case "$shortsize" in
11141         2)      i16type=short
11142                 u16type="unsigned short"
11143                 i16size=$shortsize
11144                 u16size=$shortsize
11145                 ;;
11146         esac
11147         ;;
11148 esac
11149 case "$i16type" in
11150 '')     set try -DINT16
11151         if eval $compile; then
11152                 case "`$run ./try`" in
11153                 int16_t)
11154                         i16type=int16_t
11155                         u16type=uint16_t
11156                         i16size=2
11157                         u16size=2
11158                         ;;
11159                 esac
11160         fi
11161         ;;
11162 esac
11163 case "$i16type" in
11164 '')     if $test $shortsize -ge 2; then
11165                 i16type=short
11166                 u16type="unsigned short"
11167                 i16size=$shortsize
11168                 u16size=$shortsize
11169         fi
11170         ;;
11171 esac
11172
11173 case "$i32type" in
11174 '')     case "$longsize" in
11175         4)      i32type=long
11176                 u32type="unsigned long"
11177                 i32size=$longsize
11178                 u32size=$longsize
11179                 ;;
11180         *)      case "$intsize" in
11181                 4)      i32type=int
11182                         u32type="unsigned int"
11183                         i32size=$intsize
11184                         u32size=$intsize
11185                         ;;
11186                 esac
11187                 ;;
11188         esac
11189         ;;
11190 esac
11191 case "$i32type" in
11192 '')     set try -DINT32
11193         if eval $compile; then
11194                 case "`$run ./try`" in
11195                 int32_t)
11196                         i32type=int32_t
11197                         u32type=uint32_t
11198                         i32size=4
11199                         u32size=4
11200                         ;;
11201                 esac
11202         fi
11203         ;;
11204 esac
11205 case "$i32type" in
11206 '')     if $test $intsize -ge 4; then
11207                 i32type=int
11208                 u32type="unsigned int"
11209                 i32size=$intsize
11210                 u32size=$intsize
11211         fi
11212         ;;
11213 esac
11214
11215 case "$i64type" in
11216 '')     case "$d_quad:$quadtype" in
11217         define:?*)
11218                 i64type="$quadtype"
11219                 u64type="$uquadtype"
11220                 i64size=8
11221                 u64size=8
11222                 ;;
11223         esac
11224         ;;
11225 esac
11226
11227 $echo "Checking how many bits of your UVs your NVs can preserve..." >&4
11228 : volatile so that the compiler has to store it out to memory.
11229 if test X"$d_volatile" = X"$define"; then
11230         volatile=volatile
11231 fi
11232 $cat <<EOP >try.c
11233 #include <stdio.h>
11234 #include <sys/types.h>
11235 #include <signal.h>
11236 #ifdef SIGFPE
11237 $volatile int bletched = 0;
11238 $signal_t blech(s) int s; { bletched = 1; }
11239 #endif
11240 int main() {
11241     $uvtype u = 0;
11242     $nvtype d;
11243     int     n = 8 * $uvsize;
11244     int     i;
11245 #ifdef SIGFPE
11246     signal(SIGFPE, blech);
11247 #endif
11248
11249     for (i = 0; i < n; i++) {
11250       u = u << 1 | ($uvtype)1;
11251       d = ($nvtype)u;
11252       if (($uvtype)d != u)
11253         break;
11254       if (d <= 0)
11255         break;
11256       d = ($nvtype)(u - 1);
11257       if (($uvtype)d != (u - 1))
11258         break;
11259 #ifdef SIGFPE
11260       if (bletched) {
11261         break;
11262 #endif
11263       } 
11264     }
11265     printf("%d\n", ((i == n) ? -n : i));
11266     exit(0);
11267 }
11268 EOP
11269 set try
11270
11271 d_nv_preserves_uv="$undef"
11272 if eval $compile; then
11273         d_nv_preserves_uv_bits="`$run ./try`"
11274 fi
11275 case "$d_nv_preserves_uv_bits" in
11276 \-[1-9]*)       
11277         d_nv_preserves_uv_bits=`expr 0 - $d_nv_preserves_uv_bits`
11278         $echo "Your NVs can preserve all $d_nv_preserves_uv_bits bits of your UVs."  2>&1
11279         d_nv_preserves_uv="$define"
11280         ;;
11281 [1-9]*) $echo "Your NVs can preserve only $d_nv_preserves_uv_bits bits of your UVs."  2>&1
11282         d_nv_preserves_uv="$undef" ;;
11283 *)      $echo "Can't figure out how many bits your NVs preserve." 2>&1
11284         d_nv_preserves_uv_bits="$undef" ;;
11285 esac
11286
11287 $rm -f try.* try
11288
11289
11290 : check for off64_t
11291 echo " "
11292 echo "Checking to see if you have off64_t..." >&4
11293 $cat >try.c <<EOCP
11294 #include <sys/types.h>
11295 #include <unistd.h>
11296 int main() { off64_t x = 7; }
11297 EOCP
11298 set try
11299 if eval $compile; then
11300         val="$define"
11301         echo "You have off64_t."
11302 else
11303         val="$undef"
11304         echo "You do not have off64_t."
11305         case "$lseeksize" in
11306         8) echo "(Your off_t is 64 bits, so you could use that.)" ;;
11307         esac
11308 fi
11309 $rm -f try.* try
11310 set d_off64_t
11311 eval $setvar
11312
11313 : see if POSIX threads are available
11314 set pthread.h i_pthread
11315 eval $inhdr
11316
11317
11318
11319
11320 : how to create joinable pthreads
11321 if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
11322         echo " "
11323         echo "Checking what constant to use for creating joinable pthreads..." >&4 
11324         $cat >try.c <<'EOCP'
11325 #include <pthread.h>
11326 int main() {
11327     int detachstate = JOINABLE;
11328 }
11329 EOCP
11330         set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
11331         if eval $compile; then
11332                 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
11333                 val="$undef" # Yes, undef.
11334                 set d_old_pthread_create_joinable
11335                 eval $setvar
11336                 val=""
11337                 set old_pthread_create_joinable
11338                 eval $setvar
11339         else
11340                 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
11341                 if eval $compile; then
11342                         echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
11343                         val="$define"
11344                         set d_old_pthread_create_joinable
11345                         eval $setvar
11346                         val=PTHREAD_CREATE_UNDETACHED
11347                         set old_pthread_create_joinable
11348                         eval $setvar
11349                 else            
11350                         set try -DJOINABLE=__UNDETACHED
11351                         if eval $compile; then
11352                                 echo "You seem to use __UNDETACHED." >&4
11353                                 val="$define"
11354                                 set d_old_pthread_create_joinable
11355                                 eval $setvar
11356                                 val=__UNDETACHED
11357                                 set old_pthread_create_joinable
11358                                 eval $setvar
11359                         else
11360                                 echo "Egads, nothing obvious found.  Guessing that you use 0." >&4
11361                                 val="$define"
11362                                 set d_old_pthread_create_joinable
11363                                 eval $setvar
11364                                 val=0
11365                                 set old_pthread_create_joinable
11366                                 eval $setvar
11367                         fi
11368                 fi
11369         fi
11370         $rm -f try try.*
11371 else
11372     d_old_pthread_create_joinable="$undef"
11373     old_pthread_create_joinable=""
11374 fi
11375
11376 : see if pause exists
11377 set pause d_pause
11378 eval $inlibc
11379
11380 : see if pipe exists
11381 set pipe d_pipe
11382 eval $inlibc
11383
11384 : see if poll exists
11385 set poll d_poll
11386 eval $inlibc
11387
11388 : see if pthread_atfork exists
11389 set pthread_atfork d_pthread_atfork
11390 eval $inlibc
11391
11392
11393 : see whether the various POSIXish _yields exist
11394 $cat >try.c <<EOP
11395 #include <pthread.h>
11396 #include <stdio.h>
11397 int main() {
11398 #ifdef SCHED_YIELD
11399         sched_yield();
11400 #else
11401 #ifdef PTHREAD_YIELD
11402         pthread_yield();
11403 #else
11404 #ifdef PTHREAD_YIELD_NULL
11405         pthread_yield(NULL);
11406 #endif
11407 #endif
11408 #endif
11409 }
11410 EOP
11411 : see if sched_yield exists
11412 set try -DSCHED_YIELD
11413 if eval $compile; then
11414     val="$define"
11415     sched_yield='sched_yield()'
11416 else
11417     val="$undef"
11418 fi
11419 case "$usethreads" in
11420 $define)
11421         case "$val" in
11422         $define) echo 'sched_yield() found.' >&4        ;;
11423         *)       echo 'sched_yield() NOT found.' >&4    ;;
11424         esac
11425 esac
11426 set d_sched_yield
11427 eval $setvar
11428
11429 : see if pthread_yield exists
11430 set try -DPTHREAD_YIELD
11431 if eval $compile; then
11432     val="$define"
11433     case "$sched_yield" in
11434     '') sched_yield='pthread_yield()' ;;
11435     esac
11436 else
11437     set try -DPTHREAD_YIELD_NULL
11438     if eval $compile; then
11439         val="$define"
11440         case "$sched_yield" in
11441         '') sched_yield='pthread_yield(NULL)' ;;
11442         esac
11443     else
11444         val="$undef"
11445     fi
11446 fi
11447 case "$usethreads" in
11448 $define)
11449         case "$val" in
11450         $define) echo 'pthread_yield() found.' >&4      ;;
11451         *)       echo 'pthread_yield() NOT found.' >&4  ;;
11452         esac
11453         ;;
11454 esac
11455 set d_pthread_yield
11456 eval $setvar
11457
11458 case "$sched_yield" in
11459 '') sched_yield=undef ;;
11460 esac
11461
11462 $rm -f try try.*
11463
11464 : see if this is a pwd.h system
11465 set pwd.h i_pwd
11466 eval $inhdr
11467
11468 case "$i_pwd" in
11469 $define)
11470         xxx=`./findhdr pwd.h`
11471         $cppstdin $cppflags $cppminus < $xxx >$$.h
11472
11473         if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
11474                 val="$define"
11475         else
11476                 val="$undef"
11477         fi
11478         set d_pwquota
11479         eval $setvar
11480
11481         if $contains 'pw_age' $$.h >/dev/null 2>&1; then
11482                 val="$define"
11483         else
11484                 val="$undef"
11485         fi
11486         set d_pwage
11487         eval $setvar
11488
11489         if $contains 'pw_change' $$.h >/dev/null 2>&1; then
11490                 val="$define"
11491         else
11492                 val="$undef"
11493         fi
11494         set d_pwchange
11495         eval $setvar
11496
11497         if $contains 'pw_class' $$.h >/dev/null 2>&1; then
11498                 val="$define"
11499         else
11500                 val="$undef"
11501         fi
11502         set d_pwclass
11503         eval $setvar
11504
11505         if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
11506                 val="$define"
11507         else
11508                 val="$undef"
11509         fi
11510         set d_pwexpire
11511         eval $setvar
11512
11513         if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
11514                 val="$define"
11515         else
11516                 val="$undef"
11517         fi
11518         set d_pwcomment
11519         eval $setvar
11520
11521         if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
11522                 val="$define"
11523         else
11524                 val="$undef"
11525         fi
11526         set d_pwgecos
11527         eval $setvar
11528
11529         if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
11530                 val="$define"
11531         else
11532                 val="$undef"
11533         fi
11534         set d_pwpasswd
11535         eval $setvar
11536
11537         $rm -f $$.h
11538         ;;
11539 *)
11540         val="$undef"; 
11541         set d_pwquota; eval $setvar
11542         set d_pwage; eval $setvar
11543         set d_pwchange; eval $setvar
11544         set d_pwclass; eval $setvar
11545         set d_pwexpire; eval $setvar
11546         set d_pwcomment; eval $setvar
11547         set d_pwgecos; eval $setvar
11548         set d_pwpasswd; eval $setvar
11549         ;;
11550 esac
11551
11552 : see if readdir and friends exist
11553 set readdir d_readdir
11554 eval $inlibc
11555 set seekdir d_seekdir
11556 eval $inlibc
11557 set telldir d_telldir
11558 eval $inlibc
11559 set rewinddir d_rewinddir
11560 eval $inlibc
11561
11562 : see if readlink exists
11563 set readlink d_readlink
11564 eval $inlibc
11565
11566 : see if readv exists
11567 set readv d_readv
11568 eval $inlibc
11569
11570 : see if recvmsg exists
11571 set recvmsg d_recvmsg
11572 eval $inlibc
11573
11574 : see if rename exists
11575 set rename d_rename
11576 eval $inlibc
11577
11578 : see if rmdir exists
11579 set rmdir d_rmdir
11580 eval $inlibc
11581
11582 : see if memory.h is available.
11583 val=''
11584 set memory.h val
11585 eval $inhdr
11586
11587 : See if it conflicts with string.h
11588 case "$val" in
11589 $define)
11590         case "$strings" in
11591         '') ;;
11592         *)
11593                 $cppstdin $cppflags $cppminus < $strings > mem.h
11594                 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
11595                         echo " "
11596                         echo "We won't be including <memory.h>."
11597                         val="$undef"
11598                 fi
11599                 $rm -f mem.h
11600                 ;;
11601         esac
11602 esac
11603 set i_memory
11604 eval $setvar
11605
11606 : can bcopy handle overlapping blocks?
11607 echo " "
11608 val="$undef"
11609 case "$d_memmove" in
11610 "$define") echo "I'll use memmove() instead of bcopy() for overlapping copies." ;;
11611 *)      case "$d_bcopy" in
11612         "$define")
11613                 echo "Checking to see if bcopy() can do overlapping copies..." >&4
11614                 $cat >try.c <<EOCP
11615 #$i_memory I_MEMORY
11616 #$i_stdlib I_STDLIB
11617 #$i_string I_STRING
11618 #$i_unistd I_UNISTD
11619 EOCP
11620         $cat >>try.c <<'EOCP'
11621 #include <stdio.h>
11622 #ifdef I_MEMORY
11623 #  include <memory.h>
11624 #endif
11625 #ifdef I_STDLIB
11626 #  include <stdlib.h>
11627 #endif
11628 #ifdef I_STRING
11629 #  include <string.h>
11630 #else
11631 #  include <strings.h>
11632 #endif
11633 #ifdef I_UNISTD
11634 #  include <unistd.h>  /* Needed for NetBSD */
11635 #endif
11636 int main()
11637 {
11638 char buf[128], abc[128];
11639 char *b;
11640 int len;
11641 int off;
11642 int align;
11643
11644 /* Copy "abcde..." string to char abc[] so that gcc doesn't
11645    try to store the string in read-only memory. */
11646 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
11647
11648 for (align = 7; align >= 0; align--) {
11649         for (len = 36; len; len--) {
11650                 b = buf+align;
11651                 bcopy(abc, b, len);
11652                 for (off = 1; off <= len; off++) {
11653                         bcopy(b, b+off, len);
11654                         bcopy(b+off, b, len);
11655                         if (bcmp(b, abc, len))
11656                                 exit(1);
11657                 }
11658         }
11659 }
11660 exit(0);
11661 }
11662 EOCP
11663                 set try
11664                 if eval $compile_ok; then
11665                         if ./try 2>/dev/null; then
11666                                 echo "Yes, it can."
11667                                 val="$define"
11668                         else
11669                                 echo "It can't, sorry."
11670                         fi
11671                 else
11672                         echo "(I can't compile the test program, so we'll assume not...)"
11673                 fi
11674                 ;;
11675         esac
11676         $rm -f try.* try core
11677         ;;
11678 esac
11679 set d_safebcpy
11680 eval $setvar
11681
11682 : can memcpy handle overlapping blocks?
11683 echo " "
11684 val="$undef"
11685 case "$d_memmove" in
11686 "$define") echo "I'll use memmove() instead of memcpy() for overlapping copies." ;;
11687 *)      case "$d_memcpy" in
11688         "$define")
11689                 echo "Checking to see if memcpy() can do overlapping copies..." >&4
11690                 $cat >try.c <<EOCP
11691 #$i_memory I_MEMORY
11692 #$i_stdlib I_STDLIB
11693 #$i_string I_STRING
11694 #$i_unistd I_UNISTD
11695 EOCP
11696         $cat >>try.c <<'EOCP'
11697 #include <stdio.h>
11698 #ifdef I_MEMORY
11699 #  include <memory.h>
11700 #endif
11701 #ifdef I_STDLIB
11702 #  include <stdlib.h>
11703 #endif
11704 #ifdef I_STRING
11705 #  include <string.h>
11706 #else
11707 #  include <strings.h>
11708 #endif
11709 #ifdef I_UNISTD
11710 #  include <unistd.h>  /* Needed for NetBSD */
11711 #endif
11712 int main()
11713 {
11714 char buf[128], abc[128];
11715 char *b;
11716 int len;
11717 int off;
11718 int align;
11719
11720 /* Copy "abcde..." string to char abc[] so that gcc doesn't
11721    try to store the string in read-only memory. */
11722 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
11723
11724 for (align = 7; align >= 0; align--) {
11725         for (len = 36; len; len--) {
11726                 b = buf+align;
11727                 memcpy(b, abc, len);
11728                 for (off = 1; off <= len; off++) {
11729                         memcpy(b+off, b, len);
11730                         memcpy(b, b+off, len);
11731                         if (memcmp(b, abc, len))
11732                                 exit(1);
11733                 }
11734         }
11735 }
11736 exit(0);
11737 }
11738 EOCP
11739                 set try
11740                 if eval $compile_ok; then
11741                         if ./try 2>/dev/null; then
11742                                 echo "Yes, it can."
11743                                 val="$define"
11744                         else
11745                                 echo "It can't, sorry."
11746                         fi
11747                 else
11748                         echo "(I can't compile the test program, so we'll assume not...)"
11749                 fi
11750                 ;;
11751         esac
11752         $rm -f try.* try core
11753         ;;
11754 esac
11755 set d_safemcpy
11756 eval $setvar
11757
11758 : can memcmp be trusted to compare relative magnitude?
11759 val="$undef"
11760 case "$d_memcmp" in
11761 "$define")
11762         echo " "
11763         echo "Checking if your memcmp() can compare relative magnitude..." >&4
11764         $cat >try.c <<EOCP
11765 #$i_memory I_MEMORY
11766 #$i_stdlib I_STDLIB
11767 #$i_string I_STRING
11768 #$i_unistd I_UNISTD
11769 EOCP
11770         $cat >>try.c <<'EOCP'
11771 #include <stdio.h>
11772 #ifdef I_MEMORY
11773 #  include <memory.h>
11774 #endif
11775 #ifdef I_STDLIB
11776 #  include <stdlib.h>
11777 #endif
11778 #ifdef I_STRING
11779 #  include <string.h>
11780 #else
11781 #  include <strings.h>
11782 #endif
11783 #ifdef I_UNISTD
11784 #  include <unistd.h>  /* Needed for NetBSD */
11785 #endif
11786 int main()
11787 {
11788 char a = -1;
11789 char b = 0;
11790 if ((a < b) && memcmp(&a, &b, 1) < 0)
11791         exit(1);
11792 exit(0);
11793 }
11794 EOCP
11795         set try
11796         if eval $compile_ok; then
11797                 if $run ./try 2>/dev/null; then
11798                         echo "Yes, it can."
11799                         val="$define"
11800                 else
11801                         echo "No, it can't (it uses signed chars)."
11802                 fi
11803         else
11804                 echo "(I can't compile the test program, so we'll assume not...)"
11805         fi
11806         ;;
11807 esac
11808 $rm -f try.* try core
11809 set d_sanemcmp
11810 eval $setvar
11811
11812 : see if prototype for sbrk is available
11813 echo " "
11814 set d_sbrkproto sbrk $i_unistd unistd.h
11815 eval $hasproto
11816
11817 : see if select exists
11818 set select d_select
11819 eval $inlibc
11820
11821 : see if semctl exists
11822 set semctl d_semctl
11823 eval $inlibc
11824
11825 : see if semget exists
11826 set semget d_semget
11827 eval $inlibc
11828
11829 : see if semop exists
11830 set semop d_semop
11831 eval $inlibc
11832
11833 : see how much of the 'sem*(2)' library is present.
11834 h_sem=true
11835 echo " "
11836 case "$d_semctl$d_semget$d_semop" in
11837 *"$undef"*) h_sem=false;;
11838 esac
11839 case "$osname" in
11840 freebsd)
11841     case "`ipcs 2>&1`" in
11842     "SVID messages"*"not configured"*)
11843         echo "Your $osname does not have the sem*(2) configured." >&4
11844         h_sem=false
11845         val="$undef"
11846         set semctl d_semctl
11847         eval $setvar
11848         set semget d_semget
11849         eval $setvar
11850         set semop d_semop
11851         eval $setvar
11852         ;;
11853     esac
11854     ;;
11855 esac
11856 : we could also check for sys/ipc.h ...
11857 if $h_sem && $test `./findhdr sys/sem.h`; then
11858         echo "You have the full sem*(2) library." >&4
11859         val="$define"
11860 else
11861         echo "You don't have the full sem*(2) library." >&4
11862         val="$undef"
11863 fi
11864 set d_sem
11865 eval $setvar
11866
11867 : see whether sys/sem.h defines union semun
11868 echo " "
11869 $cat > try.c <<'END'
11870 #include <sys/types.h>
11871 #include <sys/ipc.h>
11872 #include <sys/sem.h>
11873 int main () { union semun semun; semun.buf = 0; }
11874 END
11875 set try
11876 if eval $compile; then
11877     echo "You have union semun in <sys/sem.h>." >&4
11878     val="$define"
11879 else
11880     echo "You do not have union semun in <sys/sem.h>." >&4
11881     val="$undef"
11882 fi
11883 $rm -f try try.c try.h
11884 set d_union_semun
11885 eval $setvar
11886
11887 : see how to do semctl IPC_STAT
11888 case "$d_sem" in
11889 $define)
11890     : see whether semctl IPC_STAT can use union semun
11891     echo " "
11892     $cat > try.h <<END
11893 #ifndef S_IRUSR
11894 #   ifdef S_IREAD
11895 #       define S_IRUSR S_IREAD
11896 #       define S_IWUSR S_IWRITE
11897 #       define S_IXUSR S_IEXEC
11898 #   else
11899 #       define S_IRUSR 0400
11900 #       define S_IWUSR 0200
11901 #       define S_IXUSR 0100
11902 #   endif
11903 #   define S_IRGRP (S_IRUSR>>3)
11904 #   define S_IWGRP (S_IWUSR>>3)
11905 #   define S_IXGRP (S_IXUSR>>3)
11906 #   define S_IROTH (S_IRUSR>>6)
11907 #   define S_IWOTH (S_IWUSR>>6)
11908 #   define S_IXOTH (S_IXUSR>>6)
11909 #endif
11910 #ifndef S_IRWXU
11911 #   define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
11912 #   define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
11913 #   define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
11914 #endif
11915 END
11916
11917     $cat > try.c <<END
11918 #include <sys/types.h>
11919 #include <sys/ipc.h>
11920 #include <sys/sem.h>
11921 #include <sys/stat.h>
11922 #include <stdio.h>
11923 #include <errno.h>
11924 #include "try.h"
11925 #ifndef errno
11926 extern int errno;
11927 #endif
11928 #$d_union_semun HAS_UNION_SEMUN
11929 int main() {
11930     union semun
11931 #ifndef HAS_UNION_SEMUN
11932     {
11933         int val;
11934         struct semid_ds *buf;
11935         unsigned short *array;
11936     }
11937 #endif
11938     arg;
11939     int sem, st;
11940
11941 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
11942     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
11943     if (sem > -1) {
11944         struct semid_ds argbuf;
11945         arg.buf = &argbuf;
11946 #       ifdef IPC_STAT
11947         st = semctl(sem, 0, IPC_STAT, arg);
11948         if (st == 0)
11949             printf("semun\n");
11950         else
11951 #       endif /* IPC_STAT */
11952             printf("semctl IPC_STAT failed: errno = %d\n", errno);
11953 #       ifdef IPC_RMID
11954         if (semctl(sem, 0, IPC_RMID, arg) != 0)
11955 #       endif /* IPC_RMID */
11956             printf("semctl IPC_RMID failed: errno = %d\n", errno);
11957     } else
11958 #endif /* IPC_PRIVATE && ... */
11959         printf("semget failed: errno = %d\n", errno);
11960   return 0;
11961 }
11962 END
11963     val="$undef"
11964     set try
11965     if eval $compile; then
11966         xxx=`$run ./try`
11967         case "$xxx" in
11968         semun) val="$define" ;;
11969         esac
11970     fi
11971     $rm -f try try.c
11972     set d_semctl_semun
11973     eval $setvar
11974     case "$d_semctl_semun" in
11975     $define)
11976         echo "You can use union semun for semctl IPC_STAT." >&4
11977         also='also'
11978         ;;
11979     *)  echo "You cannot use union semun for semctl IPC_STAT." >&4
11980         also=''
11981         ;;
11982     esac
11983
11984     : see whether semctl IPC_STAT can use struct semid_ds pointer
11985     $cat > try.c <<'END'
11986 #include <sys/types.h>
11987 #include <sys/ipc.h>
11988 #include <sys/sem.h>
11989 #include <sys/stat.h>
11990 #include "try.h"
11991 #include <stdio.h>
11992 #include <errno.h>
11993 #ifndef errno
11994 extern int errno;
11995 #endif
11996 int main() {
11997     struct semid_ds arg;
11998     int sem, st;
11999
12000 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) &&  defined(S_IRWXO) && defined(IPC_CREAT)
12001     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
12002     if (sem > -1) {
12003 #       ifdef IPC_STAT
12004         st = semctl(sem, 0, IPC_STAT, &arg);
12005         if (st == 0)
12006             printf("semid_ds\n");
12007         else
12008 #       endif /* IPC_STAT */
12009             printf("semctl IPC_STAT failed: errno = %d\n", errno);
12010 #       ifdef IPC_RMID
12011         if (semctl(sem, 0, IPC_RMID, &arg) != 0)
12012 #       endif /* IPC_RMID */
12013             printf("semctl IPC_RMID failed: errno = %d\n", errno);
12014     } else
12015 #endif /* IPC_PRIVATE && ... */
12016         printf("semget failed: errno = %d\n", errno);
12017
12018     return 0;
12019 }
12020 END
12021     val="$undef"
12022     set try
12023     if eval $compile; then
12024         xxx=`$run ./try`
12025         case "$xxx" in
12026         semid_ds) val="$define" ;;
12027         esac
12028     fi
12029     $rm -f try try.c
12030     set d_semctl_semid_ds
12031     eval $setvar
12032     case "$d_semctl_semid_ds" in
12033     $define)
12034         echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
12035         ;;
12036     *)  echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
12037         ;;
12038     esac
12039     $rm -f try.h
12040     ;;
12041 *)  val="$undef"
12042
12043     # We do not have the full sem*(2) library, so assume we can not
12044     # use either.
12045
12046     set d_semctl_semun
12047     eval $setvar
12048
12049     set d_semctl_semid_ds
12050     eval $setvar
12051     ;;
12052 esac
12053
12054 : see if sendmsg exists
12055 set sendmsg d_sendmsg
12056 eval $inlibc
12057
12058 : see if setegid exists
12059 set setegid d_setegid
12060 eval $inlibc
12061
12062 : see if seteuid exists
12063 set seteuid d_seteuid
12064 eval $inlibc
12065
12066 : see if setgrent exists
12067 set setgrent d_setgrent
12068 eval $inlibc
12069
12070 : see if sethostent exists
12071 set sethostent d_sethent
12072 eval $inlibc
12073
12074 : see if setitimer exists
12075 set setitimer d_setitimer
12076 eval $inlibc
12077
12078 : see if setlinebuf exists
12079 set setlinebuf d_setlinebuf
12080 eval $inlibc
12081
12082 : see if setlocale exists
12083 set setlocale d_setlocale
12084 eval $inlibc
12085
12086 : see if setnetent exists
12087 set setnetent d_setnent
12088 eval $inlibc
12089
12090 : see if setprotoent exists
12091 set setprotoent d_setpent
12092 eval $inlibc
12093
12094 : see if setpgid exists
12095 set setpgid d_setpgid
12096 eval $inlibc
12097
12098 : see if setpgrp2 exists
12099 set setpgrp2 d_setpgrp2
12100 eval $inlibc
12101
12102 : see if setpriority exists
12103 set setpriority d_setprior
12104 eval $inlibc
12105
12106 : see if setproctitle exists
12107 set setproctitle d_setproctitle
12108 eval $inlibc
12109
12110 : see if setpwent exists
12111 set setpwent d_setpwent
12112 eval $inlibc
12113
12114 : see if setregid exists
12115 set setregid d_setregid
12116 eval $inlibc
12117 set setresgid d_setresgid
12118 eval $inlibc
12119
12120 : see if setreuid exists
12121 set setreuid d_setreuid
12122 eval $inlibc
12123 set setresuid d_setresuid
12124 eval $inlibc
12125
12126 : see if setrgid exists
12127 set setrgid d_setrgid
12128 eval $inlibc
12129
12130 : see if setruid exists
12131 set setruid d_setruid
12132 eval $inlibc
12133
12134 : see if setservent exists
12135 set setservent d_setsent
12136 eval $inlibc
12137
12138 : see if setsid exists
12139 set setsid d_setsid
12140 eval $inlibc
12141
12142 : see if setvbuf exists
12143 set setvbuf d_setvbuf
12144 eval $inlibc
12145
12146 : see if sfio.h is available
12147 set sfio.h i_sfio
12148 eval $inhdr
12149
12150
12151 : see if sfio library is available
12152 case "$i_sfio" in
12153 $define)
12154         val=''
12155         set sfreserve val
12156         eval $inlibc
12157         ;;
12158 *)
12159         val="$undef"
12160         ;;
12161 esac
12162 : Ok, but do we want to use it.
12163 case "$val" in
12164 $define)
12165         case "$usesfio" in
12166         true|$define|[yY]*) dflt='y';;
12167         *) dflt='n';;
12168         esac
12169         echo "$package can use the sfio library, but it is experimental."
12170         case "$useperlio" in
12171         "$undef")
12172             echo "For sfio also the PerlIO abstraction layer is needed."
12173             echo "Earlier you said you wouldn't want that."
12174             ;;
12175         esac
12176         rp="You seem to have sfio available, do you want to try using it?"
12177         . ./myread
12178         case "$ans" in
12179         y|Y)    echo "Ok, turning on both sfio and PerlIO, then."
12180                 useperlio="$define"
12181                 val="$define"
12182                 ;;
12183         *)      echo "Ok, avoiding sfio this time.  I'll use stdio instead."
12184                 val="$undef"
12185                 ;;
12186         esac
12187         ;;
12188 *)      case "$usesfio" in
12189         true|$define|[yY]*)
12190                 echo "Sorry, cannot find sfio on this machine." >&4
12191                 echo "Ignoring your setting of usesfio=$usesfio." >&4
12192                 val="$undef"
12193                 ;;
12194         esac
12195         ;;
12196 esac
12197 set d_sfio
12198 eval $setvar
12199 case "$d_sfio" in
12200 $define) usesfio='true';;
12201 *) usesfio='false';;
12202 esac
12203 case "$d_sfio" in
12204 $define) ;;
12205 *)      : Remove sfio from list of libraries to use
12206         case "$libs" in
12207         *-lsfio*)
12208                 echo "Removing unneeded -lsfio from library list" >&4
12209                 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
12210                 shift
12211                 libs="$*"
12212                 echo "libs = $libs" >&4
12213                 ;;
12214         esac
12215 ;;
12216 esac
12217
12218
12219 : see if shmctl exists
12220 set shmctl d_shmctl
12221 eval $inlibc
12222
12223 : see if shmget exists
12224 set shmget d_shmget
12225 eval $inlibc
12226
12227 : see if shmat exists
12228 set shmat d_shmat
12229 eval $inlibc
12230 : see what shmat returns
12231 case "$d_shmat" in
12232 "$define")
12233         $cat >shmat.c <<'END'
12234 #include <sys/shm.h>
12235 void *shmat();
12236 END
12237         if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
12238                 shmattype='void *'
12239         else
12240                 shmattype='char *'
12241         fi
12242         echo "and it returns ($shmattype)." >&4
12243         : see if a prototype for shmat is available
12244         xxx=`./findhdr sys/shm.h`
12245         $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
12246         if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
12247                 val="$define"
12248         else
12249                 val="$undef"
12250         fi
12251         $rm -f shmat.[co]
12252         ;;
12253 *)
12254         val="$undef"
12255         ;;
12256 esac
12257 set d_shmatprototype
12258 eval $setvar
12259
12260 : see if shmdt exists
12261 set shmdt d_shmdt
12262 eval $inlibc
12263
12264 : see how much of the 'shm*(2)' library is present.
12265 h_shm=true
12266 echo " "
12267 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
12268 *"$undef"*) h_shm=false;;
12269 esac
12270 case "$osname" in
12271 freebsd)
12272     case "`ipcs 2>&1`" in
12273     "SVID shared memory"*"not configured"*)
12274         echo "Your $osname does not have the shm*(2) configured." >&4
12275         h_shm=false
12276         val="$undef"
12277         set shmctl d_shmctl
12278         evat $setvar
12279         set shmget d_shmget
12280         evat $setvar
12281         set shmat d_shmat
12282         evat $setvar
12283         set shmdt d_shmdt
12284         evat $setvar
12285         ;;
12286     esac
12287     ;;
12288 esac
12289 : we could also check for sys/ipc.h ...
12290 if $h_shm && $test `./findhdr sys/shm.h`; then
12291         echo "You have the full shm*(2) library." >&4
12292         val="$define"
12293 else
12294         echo "You don't have the full shm*(2) library." >&4
12295         val="$undef"
12296 fi
12297 set d_shm
12298 eval $setvar
12299
12300 echo " "
12301 : see if we have sigaction
12302 if set sigaction val -f d_sigaction; eval $csym; $val; then
12303         echo 'sigaction() found.' >&4
12304         $cat > try.c <<'EOP'
12305 #include <stdio.h>
12306 #include <sys/types.h>
12307 #include <signal.h>
12308 int main()
12309 {
12310     struct sigaction act, oact;
12311     act.sa_flags = 0;
12312     oact.sa_handler = 0;
12313     /* so that act and oact are used */
12314     exit(act.sa_flags == 0 &&  oact.sa_handler == 0);
12315 }
12316 EOP
12317         set try
12318         if eval $compile_ok; then
12319                 val="$define"
12320         else
12321                 echo "But you don't seem to have a useable struct sigaction." >&4
12322                 val="$undef"
12323         fi
12324 else
12325         echo 'sigaction NOT found.' >&4
12326         val="$undef"
12327 fi
12328 set d_sigaction; eval $setvar
12329 $rm -f try try$_o try.c
12330
12331 : see if sigprocmask exists
12332 set sigprocmask d_sigprocmask
12333 eval $inlibc
12334
12335 : see if sigsetjmp exists
12336 echo " "
12337 case "$d_sigsetjmp" in
12338 '')
12339         $cat >try.c <<'EOP'
12340 #include <setjmp.h>
12341 sigjmp_buf env;
12342 int set = 1;
12343 int main()
12344 {
12345         if (sigsetjmp(env,1))
12346                 exit(set);
12347         set = 0;
12348         siglongjmp(env, 1);
12349         exit(1);
12350 }
12351 EOP
12352         set try
12353         if eval $compile; then
12354                 if $run ./try >/dev/null 2>&1; then
12355                         echo "POSIX sigsetjmp found." >&4
12356                         val="$define"
12357                 else
12358                         $cat >&4 <<EOM
12359 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
12360 I'll ignore them.
12361 EOM
12362                         val="$undef"
12363                 fi
12364         else
12365                 echo "sigsetjmp not found." >&4
12366                 val="$undef"
12367         fi
12368         ;;
12369 *) val="$d_sigsetjmp"
12370         case "$d_sigsetjmp" in
12371         $define) echo "POSIX sigsetjmp found." >&4;;
12372         $undef) echo "sigsetjmp not found." >&4;;
12373         esac
12374         ;;
12375 esac
12376 set d_sigsetjmp
12377 eval $setvar
12378 $rm -f try.c try
12379
12380 : see if sockatmark exists
12381 set sockatmark d_sockatmark
12382 eval $inlibc
12383
12384 : see if prototype for sockatmark is available
12385 echo " "
12386 set d_sockatmarkproto sockatmark $d_socket sys/socket.h
12387 eval $hasproto
12388
12389 : see if socks5_init exists
12390 set socks5_init d_socks5_init
12391 eval $inlibc
12392
12393 : see if prototype for setresgid is available
12394 echo " "
12395 set d_sresgproto setresgid $i_unistd unistd.h
12396 eval $hasproto
12397
12398 : see if prototype for setresuid is available
12399 echo " "
12400 set d_sresuproto setresuid $i_unistd unistd.h
12401 eval $hasproto
12402
12403 : see if sys/stat.h is available
12404 set sys/stat.h i_sysstat
12405 eval $inhdr
12406
12407
12408 : see if stat knows about block sizes
12409 echo " "
12410 echo "Checking to see if your struct stat has st_blocks field..." >&4
12411 set d_statblks stat st_blocks $i_sysstat sys/stat.h
12412 eval $hasfield
12413
12414
12415 : see if this is a sys/vfs.h system
12416 set sys/vfs.h i_sysvfs
12417 eval $inhdr
12418
12419
12420 : see if this is a sys/statfs.h system
12421 set sys/statfs.h i_sysstatfs
12422 eval $inhdr
12423
12424
12425 echo " "
12426 echo "Checking to see if your system supports struct statfs..." >&4
12427 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
12428 eval $hasstruct
12429 case "$d_statfs_s" in
12430 "$define")      echo "Yes, it does."   ;;
12431 *)              echo "No, it doesn't." ;;
12432 esac
12433
12434
12435
12436 : see if struct statfs knows about f_flags
12437 case "$d_statfs_s" in
12438 define) 
12439         echo " "
12440         echo "Checking to see if your struct statfs has f_flags field..." >&4
12441         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
12442         eval $hasfield
12443         ;;
12444 *)      val="$undef"
12445         set d_statfs_f_flags
12446         eval $setvar
12447         ;;
12448 esac
12449 case "$d_statfs_f_flags" in
12450 "$define")      echo "Yes, it does."   ;;
12451 *)              echo "No, it doesn't." ;;
12452 esac
12453
12454 : see if _ptr and _cnt from stdio act std
12455 echo " "
12456
12457 if $contains '_lbfsize' `./findhdr stdio.h` >/dev/null 2>&1 ; then
12458         echo "(Looks like you have stdio.h from BSD.)"
12459         case "$stdio_ptr" in
12460         '') stdio_ptr='((fp)->_p)'
12461                 ptr_lval=$define
12462                 ;;
12463         *)      ptr_lval=$d_stdio_ptr_lval;;
12464         esac
12465         case "$stdio_cnt" in
12466         '') stdio_cnt='((fp)->_r)'
12467                 cnt_lval=$define
12468                 ;;
12469         *)      cnt_lval=$d_stdio_cnt_lval;;
12470         esac
12471         case "$stdio_base" in
12472         '') stdio_base='((fp)->_ub._base ? (fp)->_ub._base : (fp)->_bf._base)';;
12473         esac
12474         case "$stdio_bufsiz" in
12475         '') stdio_bufsiz='((fp)->_ub._base ? (fp)->_ub._size : (fp)->_bf._size)';;
12476         esac
12477 elif $contains '_IO_fpos_t' `./findhdr stdio.h` `./findhdr libio.h` >/dev/null 2>&1 ; then
12478         echo "(Looks like you have stdio.h from Linux.)"
12479         case "$stdio_ptr" in
12480         '') stdio_ptr='((fp)->_IO_read_ptr)'
12481                 ptr_lval=$define
12482                 ;;
12483         *)      ptr_lval=$d_stdio_ptr_lval;;
12484         esac
12485         case "$stdio_cnt" in
12486         '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
12487                 cnt_lval=$undef
12488                 ;;
12489         *)      cnt_lval=$d_stdio_cnt_lval;;
12490         esac
12491         case "$stdio_base" in
12492         '') stdio_base='((fp)->_IO_read_base)';;
12493         esac
12494         case "$stdio_bufsiz" in
12495         '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
12496         esac
12497 else
12498         case "$stdio_ptr" in
12499         '') stdio_ptr='((fp)->_ptr)'
12500                 ptr_lval=$define
12501                 ;;
12502         *)      ptr_lval=$d_stdio_ptr_lval;;
12503         esac
12504         case "$stdio_cnt" in
12505         '') stdio_cnt='((fp)->_cnt)'
12506                 cnt_lval=$define
12507                 ;;
12508         *)      cnt_lval=$d_stdio_cnt_lval;;
12509         esac
12510         case "$stdio_base" in
12511         '') stdio_base='((fp)->_base)';;
12512         esac
12513         case "$stdio_bufsiz" in
12514         '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
12515         esac
12516 fi
12517
12518 : test whether _ptr and _cnt really work
12519 echo "Checking how std your stdio is..." >&4
12520 $cat >try.c <<EOP
12521 #include <stdio.h>
12522 #define FILE_ptr(fp)    $stdio_ptr
12523 #define FILE_cnt(fp)    $stdio_cnt
12524 int main() {
12525         FILE *fp = fopen("try.c", "r");
12526         char c = getc(fp);
12527         if (
12528                 18 <= FILE_cnt(fp) &&
12529                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
12530         )
12531                 exit(0);
12532         exit(1);
12533 }
12534 EOP
12535 val="$undef"
12536 set try
12537 if eval $compile && $to try.c; then
12538         if $run ./try; then
12539                 echo "Your stdio acts pretty std."
12540                 val="$define"
12541         else
12542                 echo "Your stdio isn't very std."
12543         fi
12544 else
12545         echo "Your stdio doesn't appear very std."
12546 fi
12547 $rm -f try.c try
12548 set d_stdstdio
12549 eval $setvar
12550
12551 : Can _ptr be used as an lvalue?
12552 case "$d_stdstdio$ptr_lval" in
12553 $define$define) val=$define ;;
12554 *) val=$undef ;;
12555 esac
12556 set d_stdio_ptr_lval
12557 eval $setvar
12558
12559 : Can _cnt be used as an lvalue?
12560 case "$d_stdstdio$cnt_lval" in
12561 $define$define) val=$define ;;
12562 *) val=$undef ;;
12563 esac
12564 set d_stdio_cnt_lval
12565 eval $setvar
12566
12567
12568 : test whether setting _ptr sets _cnt as a side effect
12569 d_stdio_ptr_lval_sets_cnt="$undef"
12570 d_stdio_ptr_lval_nochange_cnt="$undef"
12571 case "$d_stdio_ptr_lval$d_stdstdio" in
12572 $define$define)
12573         echo "Checking to see what happens if we set the stdio ptr..." >&4
12574 $cat >try.c <<EOP
12575 #include <stdio.h>
12576 /* Can we scream? */
12577 /* Eat dust sed :-) */
12578 /* In the buffer space, no one can hear you scream. */
12579 #define FILE_ptr(fp)    $stdio_ptr
12580 #define FILE_cnt(fp)    $stdio_cnt
12581 #include <sys/types.h>
12582 int main() {
12583         FILE *fp = fopen("try.c", "r");
12584         int c;
12585         char *ptr;
12586         size_t cnt;
12587         if (!fp) {
12588             puts("Fail even to read");
12589             exit(1);
12590         }
12591         c = getc(fp); /* Read away the first # */
12592         if (c == EOF) {
12593             puts("Fail even to read");
12594             exit(1);
12595         }
12596         if (!(
12597                 18 <= FILE_cnt(fp) &&
12598                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
12599         )) {
12600                 puts("Fail even to read");
12601                 exit (1);
12602         }
12603         ptr = (char*) FILE_ptr(fp);
12604         cnt = (size_t)FILE_cnt(fp);
12605
12606         FILE_ptr(fp) += 42;
12607
12608         if ((char*)FILE_ptr(fp) != (ptr + 42)) {
12609                 printf("Fail ptr check %p != %p", FILE_ptr(fp), (ptr + 42));
12610                 exit (1);
12611         }
12612         if (FILE_cnt(fp) <= 20) {
12613                 printf ("Fail (<20 chars to test)");
12614                 exit (1);
12615         }
12616         if (strncmp(FILE_ptr(fp), "Eat dust sed :-) */\n", 20) != 0) {
12617                 puts("Fail compare");
12618                 exit (1);
12619         }
12620         if (cnt == FILE_cnt(fp)) {
12621                 puts("Pass_unchanged");
12622                 exit (0);
12623         }       
12624         if (FILE_cnt(fp) == (cnt - 42)) {
12625                 puts("Pass_changed");
12626                 exit (0);
12627         }
12628         printf("Fail count was %d now %d\n", cnt, FILE_cnt(fp));
12629         return 1;
12630
12631 }
12632 EOP
12633         set try
12634         if eval $compile && $to try.c; then
12635                 case `$run ./try` in
12636                 Pass_changed)
12637                         echo "Increasing ptr in your stdio decreases cnt by the same amount.  Good." >&4
12638                         d_stdio_ptr_lval_sets_cnt="$define" ;;
12639                 Pass_unchanged)
12640                         echo "Increasing ptr in your stdio leaves cnt unchanged.  Good." >&4
12641                         d_stdio_ptr_lval_nochange_cnt="$define" ;;
12642                 Fail*)
12643                         echo "Increasing ptr in your stdio didn't do exactly what I expected.  We'll not be doing that then." >&4 ;;
12644                 *)
12645                         echo "It appears attempting to set ptr in your stdio is a bad plan." >&4 ;;
12646         esac
12647         else
12648                 echo "It seems we can't set ptr in your stdio.  Nevermind." >&4
12649         fi
12650         $rm -f try.c try
12651         ;;
12652 esac
12653
12654 : see if _base is also standard
12655 val="$undef"
12656 case "$d_stdstdio" in
12657 $define)
12658         $cat >try.c <<EOP
12659 #include <stdio.h>
12660 #define FILE_base(fp)   $stdio_base
12661 #define FILE_bufsiz(fp) $stdio_bufsiz
12662 int main() {
12663         FILE *fp = fopen("try.c", "r");
12664         char c = getc(fp);
12665         if (
12666                 19 <= FILE_bufsiz(fp) &&
12667                 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
12668         )
12669                 exit(0);
12670         exit(1);
12671 }
12672 EOP
12673         set try
12674         if eval $compile && $to try.c; then
12675                 if $run ./try; then
12676                         echo "And its _base field acts std."
12677                         val="$define"
12678                 else
12679                         echo "But its _base field isn't std."
12680                 fi
12681         else
12682                 echo "However, it seems to be lacking the _base field."
12683         fi
12684         $rm -f try.c try
12685         ;;
12686 esac
12687 set d_stdiobase
12688 eval $setvar
12689
12690 $cat >&4 <<EOM
12691 Checking how to access stdio streams by file descriptor number...
12692 EOM
12693 case "$stdio_stream_array" in
12694 '')     $cat >try.c <<EOCP
12695 #include <stdio.h>
12696 int main() {
12697   if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
12698     printf("yes\n");
12699 }
12700 EOCP
12701         for s in _iob __iob __sF
12702         do
12703                 set try -DSTDIO_STREAM_ARRAY=$s
12704                 if eval $compile; then
12705                         case "`$run ./try`" in
12706                         yes)    stdio_stream_array=$s; break ;;
12707                         esac
12708                 fi
12709         done
12710         $rm -f try.* try$exe_ext
12711 esac
12712 case "$stdio_stream_array" in
12713 '')     $cat >&4 <<EOM
12714 I can't figure out how to access stdio streams by file descriptor number.
12715 EOM
12716         d_stdio_stream_array="$undef"
12717         ;;
12718 *)      $cat >&4 <<EOM
12719 You can access stdio streams by file descriptor number by the $stdio_stream_array array.
12720 EOM
12721         d_stdio_stream_array="$define"
12722         ;;
12723 esac
12724
12725 : see if strcoll exists
12726 set strcoll d_strcoll
12727 eval $inlibc
12728
12729 : check for structure copying
12730 echo " "
12731 echo "Checking to see if your C compiler can copy structs..." >&4
12732 $cat >try.c <<'EOCP'
12733 int main()
12734 {
12735         struct blurfl {
12736                 int dyick;
12737         } foo, bar;
12738
12739         foo = bar;
12740 }
12741 EOCP
12742 if $cc -c try.c >/dev/null 2>&1 ; then
12743         val="$define"
12744         echo "Yup, it can."
12745 else
12746         val="$undef"
12747         echo "Nope, it can't."
12748 fi
12749 set d_strctcpy
12750 eval $setvar
12751 $rm -f try.*
12752
12753 : see if strerror and/or sys_errlist[] exist
12754 echo " "
12755 if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
12756     if set strerror val -f d_strerror; eval $csym; $val; then
12757                 echo 'strerror() found.' >&4
12758                 d_strerror="$define"
12759                 d_strerrm='strerror(e)'
12760                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
12761                         echo "(You also have sys_errlist[], so we could roll our own strerror.)" 
12762                         d_syserrlst="$define"
12763                 else
12764                         echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
12765                         d_syserrlst="$undef"
12766                 fi
12767     elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
12768                         $contains '#[   ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
12769                 echo 'strerror() found in string header.' >&4
12770                 d_strerror="$define"
12771                 d_strerrm='strerror(e)'
12772                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
12773                         echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
12774                                 d_syserrlst="$define"
12775                 else
12776                         echo "(You don't appear to have any sys_errlist[], how can this be?)"
12777                         d_syserrlst="$undef"
12778                 fi
12779     elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
12780                 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
12781                 d_strerror="$undef"
12782                 d_syserrlst="$define"
12783                 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
12784     else
12785                 echo 'strerror() and sys_errlist[] NOT found.' >&4
12786                 d_strerror="$undef"
12787                 d_syserrlst="$undef"
12788                 d_strerrm='"unknown"'
12789     fi
12790 fi
12791
12792 : see if strftime exists
12793 set strftime d_strftime
12794 eval $inlibc
12795
12796 : see if strtod exists
12797 set strtod d_strtod
12798 eval $inlibc
12799
12800 : see if strtol exists
12801 set strtol d_strtol
12802 eval $inlibc
12803
12804 : see if strtold exists
12805 set strtold d_strtold
12806 eval $inlibc
12807
12808 : see if strtoll exists
12809 set strtoll d_strtoll
12810 eval $inlibc
12811
12812 case "$d_longlong-$d_strtoll" in
12813 "$define-$define")
12814         $cat <<EOM
12815 Checking whether your strtoll() works okay...
12816 EOM
12817         $cat >try.c <<'EOCP'
12818 #include <errno.h>
12819 #ifdef __hpux
12820 #define strtoll __strtoll
12821 #endif
12822 #ifdef __EMX__
12823 #define strtoll _strtoll
12824 #endif
12825 #include <stdio.h>
12826 extern long long int strtoll(char *s, char **, int); 
12827 static int bad = 0;
12828 int check(char *s, long long ell, int een) {
12829         long long gll;
12830         errno = 0;
12831         gll = strtoll(s, 0, 10);
12832         if (!((gll == ell) && (errno == een)))
12833                 bad++;
12834 }
12835 int main() {
12836         check(" 1",                                      1LL, 0);
12837         check(" 0",                                      0LL, 0);
12838         check("-1",                                     -1LL, 0);
12839         check("-9223372036854775808", -9223372036854775808LL, 0);
12840         check("-9223372036854775808", -9223372036854775808LL, 0);
12841         check(" 9223372036854775807",  9223372036854775807LL, 0);
12842         check("-9223372036854775808", -9223372036854775808LL, 0);
12843         check(" 9223372036854775808",  9223372036854775807LL, ERANGE);
12844         check("-9223372036854775809", -9223372036854775808LL, ERANGE);
12845         if (!bad)
12846                 printf("ok\n");
12847 }
12848 EOCP
12849         set try
12850         if eval $compile; then
12851                 yyy=`$run ./try`
12852                 case "$yyy" in
12853                 ok) echo "Your strtoll() seems to be working okay." ;;
12854                 *) cat <<EOM >&4
12855 Your strtoll() doesn't seem to be working okay.
12856 EOM
12857                    d_strtoll="$undef"
12858                    ;;
12859                 esac
12860         else
12861                 echo "(I can't seem to compile the test program--assuming it doesn't)"
12862                 d_strtoll="$undef"
12863         fi
12864         ;;
12865 esac
12866
12867 : see if strtoq exists
12868 set strtoq d_strtoq
12869 eval $inlibc
12870
12871 : see if strtoul exists
12872 set strtoul d_strtoul
12873 eval $inlibc
12874
12875 case "$d_strtoul" in
12876 "$define")
12877         $cat <<EOM
12878 Checking whether your strtoul() works okay...
12879 EOM
12880         $cat >try.c <<'EOCP'
12881 #include <errno.h>
12882 #include <stdio.h>
12883 extern unsigned long int strtoul(char *s, char **, int); 
12884 static int bad = 0;
12885 void check(char *s, unsigned long eul, int een) {
12886         unsigned long gul;
12887         errno = 0;
12888         gul = strtoul(s, 0, 10);
12889         if (!((gul == eul) && (errno == een)))
12890                 bad++;
12891 }
12892 int main() {
12893         check(" 1", 1L, 0);
12894         check(" 0", 0L, 0);
12895 EOCP
12896         case "$longsize" in
12897         8)
12898             $cat >>try.c <<'EOCP'
12899         check("18446744073709551615", 18446744073709551615UL, 0);
12900         check("18446744073709551616", 18446744073709551615UL, ERANGE);
12901 #if 0 /* strtoul() for /^-/ strings is undefined. */
12902         check("-1", 18446744073709551615UL, 0);
12903         check("-18446744073709551614", 2, 0);
12904         check("-18446744073709551615", 1, 0);
12905         check("-18446744073709551616", 18446744073709551615UL, ERANGE);
12906         check("-18446744073709551617", 18446744073709551615UL, ERANGE);
12907 #endif
12908 EOCP
12909                 ;;
12910         4)
12911                     $cat >>try.c <<'EOCP'
12912         check("4294967295", 4294967295UL, 0);
12913         check("4294967296", 4294967295UL, ERANGE);
12914 #if 0 /* strtoul() for /^-/ strings is undefined. */
12915         check("-1", 4294967295UL, 0);
12916         check("-4294967294", 2, 0);
12917         check("-4294967295", 1, 0);
12918         check("-4294967296", 4294967295UL, ERANGE);
12919         check("-4294967297", 4294967295UL, ERANGE);
12920 #endif
12921 EOCP
12922                 ;;
12923         *)
12924 : Should we write these tests to be more portable by sprintf-ing
12925 : ~0 and then manipulating that char string as input for strtol?
12926                 ;;
12927         esac
12928         $cat >>try.c <<'EOCP'
12929         if (!bad)
12930                 printf("ok\n");
12931         return 0;
12932 }
12933 EOCP
12934         set try
12935         if eval $compile; then
12936                 case "`$run ./try`" in
12937                 ok) echo "Your strtoul() seems to be working okay." ;;
12938                 *) cat <<EOM >&4
12939 Your strtoul() doesn't seem to be working okay.
12940 EOM
12941                    d_strtoul="$undef"
12942                    ;;
12943                 esac
12944         fi
12945         ;;
12946 esac
12947
12948 : see if strtoull exists
12949 set strtoull d_strtoull
12950 eval $inlibc
12951
12952 case "$d_longlong-$d_strtoull" in
12953 "$define-$define")
12954         $cat <<EOM
12955 Checking whether your strtoull() works okay...
12956 EOM
12957         $cat >try.c <<'EOCP'
12958 #include <errno.h>
12959 #ifdef __hpux
12960 #define strtoull __strtoull
12961 #endif
12962 #include <stdio.h>
12963 extern unsigned long long int strtoull(char *s, char **, int); 
12964 static int bad = 0;
12965 int check(char *s, long long eull, int een) {
12966         long long gull;
12967         errno = 0;
12968         gull = strtoull(s, 0, 10);
12969         if (!((gull == eull) && (errno == een)))
12970                 bad++;
12971 }
12972 int main() {
12973         check(" 1",                                        1LL, 0);
12974         check(" 0",                                        0LL, 0);
12975         check("18446744073709551615",  18446744073709551615ULL, 0);
12976         check("18446744073709551616",  18446744073709551615ULL, ERANGE);
12977 #if 0 /* strtoull() for /^-/ strings is undefined. */
12978         check("-1",                    18446744073709551615ULL, 0);
12979         check("-18446744073709551614",                     2LL, 0);
12980         check("-18446744073709551615",                     1LL, 0);
12981         check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
12982         check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
12983 #endif
12984         if (!bad)
12985                 printf("ok\n");
12986 }
12987 EOCP
12988         set try
12989         if eval $compile; then
12990                 case "`$run ./try`" in
12991                 ok) echo "Your strtoull() seems to be working okay." ;;
12992                 *) cat <<EOM >&4
12993 Your strtoull() doesn't seem to be working okay.
12994 EOM
12995                    d_strtoull="$undef"
12996                    ;;
12997                 esac
12998         fi
12999         ;;
13000 esac
13001
13002 : see if strtouq exists
13003 set strtouq d_strtouq
13004 eval $inlibc
13005
13006 case "$d_strtouq" in
13007 "$define")
13008         $cat <<EOM
13009 Checking whether your strtouq() works okay...
13010 EOM
13011         $cat >try.c <<'EOCP'
13012 #include <errno.h>
13013 #include <stdio.h>
13014 extern unsigned long long int strtouq(char *s, char **, int); 
13015 static int bad = 0;
13016 void check(char *s, unsigned long long eull, int een) {
13017         unsigned long long gull;
13018         errno = 0;
13019         gull = strtouq(s, 0, 10);
13020         if (!((gull == eull) && (errno == een)))
13021                 bad++;
13022 }
13023 int main() {
13024         check(" 1",                                        1LL, 0);
13025         check(" 0",                                        0LL, 0);
13026         check("18446744073709551615",  18446744073709551615ULL, 0);
13027         check("18446744073709551616",  18446744073709551615ULL, ERANGE);
13028 #if 0 /* strtouq() for /^-/ strings is undefined. */
13029         check("-1",                    18446744073709551615ULL, 0);
13030         check("-18446744073709551614",                     2LL, 0);
13031         check("-18446744073709551615",                     1LL, 0);
13032         check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
13033         check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
13034 #endif
13035         if (!bad)
13036                 printf("ok\n");
13037         return 0;
13038 }
13039 EOCP
13040         set try
13041         if eval $compile; then
13042                 case "`$run ./try`" in
13043                 ok) echo "Your strtouq() seems to be working okay." ;;
13044                 *) cat <<EOM >&4
13045 Your strtouq() doesn't seem to be working okay.
13046 EOM
13047                    d_strtouq="$undef"
13048                    ;;
13049                 esac
13050         fi
13051         ;;
13052 esac
13053
13054 : see if strxfrm exists
13055 set strxfrm d_strxfrm
13056 eval $inlibc
13057
13058 : see if symlink exists
13059 set symlink d_symlink
13060 eval $inlibc
13061
13062 : see if syscall exists
13063 set syscall d_syscall
13064 eval $inlibc
13065
13066 : see if prototype for syscall is available
13067 echo " "
13068 set d_syscallproto syscall $i_unistd unistd.h
13069 eval $hasproto
13070
13071 : see if sysconf exists
13072 set sysconf d_sysconf
13073 eval $inlibc
13074
13075 : see if system exists
13076 set system d_system
13077 eval $inlibc
13078
13079 : see if tcgetpgrp exists
13080 set tcgetpgrp d_tcgetpgrp
13081 eval $inlibc
13082
13083 : see if tcsetpgrp exists
13084 set tcsetpgrp d_tcsetpgrp
13085 eval $inlibc
13086
13087 : see if prototype for telldir is available
13088 echo " "
13089 set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
13090 eval $hasproto
13091
13092 : see if this is a sys/times.h system
13093 set sys/times.h i_systimes
13094 eval $inhdr
13095
13096 : see if times exists
13097 echo " "
13098 if set times val -f d_times; eval $csym; $val; then
13099         echo 'times() found.' >&4
13100         d_times="$define"
13101         inc=''
13102         case "$i_systimes" in
13103         "$define") inc='sys/times.h';;
13104         esac
13105         rp="What is the type returned by times() on this system?"
13106         set clock_t clocktype long stdio.h sys/types.h $inc
13107         eval $typedef_ask
13108 else
13109         echo 'times() NOT found, hope that will do.' >&4
13110         d_times="$undef"
13111         clocktype='int'
13112 fi
13113
13114 : see if truncate exists
13115 set truncate d_truncate
13116 eval $inlibc
13117
13118 : see if tzname[] exists
13119 echo " "
13120 if set tzname val -a d_tzname; eval $csym; $val; then
13121         val="$define"
13122         echo 'tzname[] found.' >&4
13123 else
13124         val="$undef"
13125         echo 'tzname[] NOT found.' >&4
13126 fi
13127 set d_tzname
13128 eval $setvar
13129
13130 case "$osname" in
13131 next|rhapsody|darwin) multiarch="$define" ;;
13132 esac
13133 case "$multiarch" in
13134 ''|[nN]*) multiarch="$undef" ;;
13135 esac
13136
13137 : check for ordering of bytes in a long
13138 echo " "
13139 case "$usecrosscompile$multiarch" in
13140 *$define*)
13141         $cat <<EOM
13142 You seem to be either cross-compiling or doing a multiarchitecture build,
13143 skipping the byteorder check.
13144
13145 EOM
13146         byteorder='ffff'
13147         ;;
13148 *)
13149         case "$byteorder" in
13150         '')
13151                 $cat <<'EOM'
13152 In the following, larger digits indicate more significance.  A big-endian
13153 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
13154 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
13155 machines may have weird orders like 3412.  A Cray will report 87654321,
13156 an Alpha will report 12345678. If the test program works the default is
13157 probably right.
13158 I'm now running the test program...
13159 EOM
13160                 $cat >try.c <<'EOCP'
13161 #include <stdio.h>
13162 int main()
13163 {
13164         int i;
13165         union {
13166                 unsigned long l;
13167                 char c[sizeof(long)];
13168         } u;
13169
13170         if (sizeof(long) > 4)
13171                 u.l = (0x08070605L << 32) | 0x04030201L;
13172         else
13173                 u.l = 0x04030201L;
13174         for (i = 0; i < sizeof(long); i++)
13175                 printf("%c", u.c[i]+'0');
13176         printf("\n");
13177         exit(0);
13178 }
13179 EOCP
13180                 xxx_prompt=y
13181                 set try
13182                 if eval $compile && ./try > /dev/null; then
13183                         dflt=`$run ./try`
13184                         case "$dflt" in
13185                         [1-4][1-4][1-4][1-4]|12345678|87654321)
13186                                 echo "(The test program ran ok.)"
13187                                 echo "byteorder=$dflt"
13188                                 xxx_prompt=n
13189                         ;;
13190                         ????|????????) echo "(The test program ran ok.)" ;;
13191                         *) echo "(The test program didn't run right for some reason.)" ;;
13192                         esac
13193                 else
13194                         dflt='4321'
13195                         cat <<'EOM'
13196 (I can't seem to compile the test program.  Guessing big-endian...)
13197 EOM
13198                 fi
13199                 case "$xxx_prompt" in
13200                 y)
13201                         rp="What is the order of bytes in a long?"
13202                         . ./myread
13203                         byteorder="$ans"
13204                         ;;
13205                 *)      byteorder=$dflt
13206                         ;;
13207                 esac
13208                 ;;
13209         esac
13210         $rm -f try.c try
13211         ;;
13212 esac
13213
13214
13215 $cat <<EOM
13216
13217 Checking to see whether you can access character data unalignedly...
13218 EOM
13219 $cat >try.c <<EOCP
13220 #include <stdio.h>
13221 #define U32 $u32type
13222 #define BYTEORDER $byteorder
13223 int main() {
13224 #if BYTEORDER == 0x1234 || BYTEORDER == 0x4321
13225     U8 buf[] = "\0\0\0\1\0\0\0\0";
13226     U32 *up;
13227     int i;
13228
13229     if (sizeof(U32) != 4) {
13230         printf("sizeof(U32) is not 4, but %d\n", sizeof(U32));
13231         exit(1);
13232     }
13233
13234     fflush(stdout);
13235
13236     for (i = 0; i < 4; i++) {
13237         up = (U32*)(buf + i);
13238         if (! ((*up == 1 << (8*i)) ||   /* big-endian */
13239                (*up == 1 << (8*(3-i)))  /* little-endian */
13240               )
13241            )
13242         {
13243             printf("read failed (%x)\n", *up);
13244             exit(2);
13245         }
13246     }
13247
13248     /* write test */
13249     for (i = 0; i < 4; i++) {
13250         up = (U32*)(buf + i);
13251         *up = 0xBeef;
13252         if (*up != 0xBeef) {
13253             printf("write failed (%x)\n", *up);
13254             exit(3);
13255         }
13256     }
13257
13258     exit(0);
13259 #else
13260     printf("1\n");
13261     exit(1);
13262 #endif
13263     return 0;
13264 }
13265 EOCP
13266 set try
13267 if eval $compile_ok; then
13268         echo "(Testing for character data alignment may dump core.)" >&4
13269         $run ./try 2>&1 >/dev/null
13270         case "$?" in
13271         0)      cat >&4 <<EOM
13272 You can access character data pretty unalignedly.
13273 EOM
13274                 d_u32align="$undef"
13275                 ;;
13276         *)      cat >&4 <<EOM
13277 It seems that you must access character data in an aligned manner.
13278 EOM
13279                 d_u32align="$define"
13280                 ;;
13281         esac
13282         $rm -f core core.try.* try.core
13283 else
13284         rp='Can you access character data at unaligned addresses?'
13285         dflt='n'
13286         . ./myread
13287         case "$ans" in
13288         [yY]*)  d_u32align="$undef"  ;;
13289         *)      d_u32align="$define" ;;
13290         esac
13291 fi
13292
13293 : see if ualarm exists
13294 set ualarm d_ualarm
13295 eval $inlibc
13296
13297 : see if umask exists
13298 set umask d_umask
13299 eval $inlibc
13300
13301 : see if usleep exists
13302 set usleep d_usleep
13303 eval $inlibc
13304
13305 : see if prototype for usleep is available
13306 echo " "
13307 set d_usleepproto usleep $i_unistd unistd.h
13308 eval $hasproto
13309
13310 : see if ustat exists
13311 set ustat d_ustat
13312 eval $inlibc
13313
13314 : backward compatibility for d_hvfork
13315 if test X$d_hvfork != X; then
13316         d_vfork="$d_hvfork"
13317         d_hvfork=''
13318 fi
13319 : see if there is a vfork
13320 val=''
13321 set vfork val
13322 eval $inlibc
13323
13324 : Ok, but do we want to use it. vfork is reportedly unreliable in 
13325 : perl on Solaris 2.x, and probably elsewhere.
13326 case "$val" in
13327 $define)
13328         echo " "
13329         case "$usevfork" in
13330         false) dflt='n';;
13331         *) dflt='y';;
13332         esac
13333         cat <<'EOM'
13334  
13335 Perl can only use a vfork() that doesn't suffer from strict
13336 restrictions on calling functions or modifying global data in
13337 the child.  For example, glibc-2.1 contains such a vfork()
13338 that is unsuitable.  If your system provides a proper fork()
13339 call, chances are that you do NOT want perl to use vfork().
13340
13341 EOM
13342         rp="Do you still want to use vfork()?"
13343         . ./myread
13344         case "$ans" in
13345         y|Y) ;;
13346         *)
13347                 echo "Ok, we won't use vfork()."
13348                 val="$undef"
13349                 ;;
13350         esac
13351         ;;
13352 esac
13353 set d_vfork
13354 eval $setvar
13355 case "$d_vfork" in
13356 $define) usevfork='true';;
13357 *) usevfork='false';;
13358 esac
13359
13360 : see if this is an sysdir system
13361 set sys/dir.h i_sysdir
13362 eval $inhdr
13363
13364 : see if this is an sysndir system
13365 set sys/ndir.h i_sysndir
13366 eval $inhdr
13367
13368 : see if closedir exists
13369 set closedir d_closedir
13370 eval $inlibc
13371
13372 case "$d_closedir" in
13373 "$define")
13374         echo " "
13375         echo "Checking whether closedir() returns a status..." >&4
13376         cat > try.c <<EOM
13377 #$i_dirent I_DIRENT             /**/
13378 #$i_sysdir I_SYS_DIR            /**/
13379 #$i_sysndir I_SYS_NDIR          /**/
13380 #$i_systypes I_SYS_TYPES        /**/
13381
13382 #if defined(I_SYS_TYPES)
13383 #include <sys/types.h>
13384 #endif
13385 #if defined(I_DIRENT)
13386 #include <dirent.h>
13387 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
13388 #include <sys/dir.h>
13389 #endif
13390 #else
13391 #ifdef I_SYS_NDIR
13392 #include <sys/ndir.h>
13393 #else
13394 #ifdef I_SYS_DIR
13395 #ifdef hp9000s500
13396 #include <ndir.h>       /* may be wrong in the future */
13397 #else
13398 #include <sys/dir.h>
13399 #endif
13400 #endif
13401 #endif
13402 #endif 
13403 int main() { return closedir(opendir(".")); }
13404 EOM
13405         set try
13406         if eval $compile_ok; then
13407                 if $run ./try > /dev/null 2>&1 ; then
13408                         echo "Yes, it does."
13409                         val="$undef"
13410                 else
13411                         echo "No, it doesn't."
13412                         val="$define"
13413                 fi
13414         else
13415                 echo "(I can't seem to compile the test program--assuming it doesn't)"
13416                 val="$define"
13417         fi
13418         ;;
13419 *)
13420         val="$undef";
13421         ;;
13422 esac
13423 set d_void_closedir
13424 eval $setvar
13425 $rm -f try try.*
13426 : see if there is a wait4
13427 set wait4 d_wait4
13428 eval $inlibc
13429
13430 : see if waitpid exists
13431 set waitpid d_waitpid
13432 eval $inlibc
13433
13434 : see if wcstombs exists
13435 set wcstombs d_wcstombs
13436 eval $inlibc
13437
13438 : see if wctomb exists
13439 set wctomb d_wctomb
13440 eval $inlibc
13441
13442 : see if writev exists
13443 set writev d_writev
13444 eval $inlibc
13445
13446 : preserve RCS keywords in files with variable substitution, grrr
13447 Date='$Date'
13448 Id='$Id'
13449 Log='$Log'
13450 RCSfile='$RCSfile'
13451 Revision='$Revision'
13452
13453 : check for alignment requirements
13454 echo " "
13455 case "$usecrosscompile$multiarch" in
13456 *$define*)
13457         $cat <<EOM
13458 You seem to be either cross-compiling or doing a multiarchitecture build,
13459 skipping the memory alignment check.
13460
13461 EOM
13462         case "$alignbytes" in
13463         '') alignbytes=8 ;;
13464         esac
13465         ;;
13466 *)
13467         case "$alignbytes" in
13468         '') echo "Checking alignment constraints..." >&4
13469                 if $test "X$uselongdouble" = Xdefine -a "X$d_longdbl" = Xdefine; then
13470                         $cat >try.c <<'EOCP'
13471 typedef long double NV;
13472 EOCP
13473                 else
13474                         $cat >try.c <<'EOCP'
13475 typedef double NV;
13476 EOCP
13477                 fi
13478                 $cat >>try.c <<'EOCP'
13479 #include <stdio.h>
13480 struct foobar {
13481         char foo;
13482         NV bar;
13483 } try_algn;
13484 int main()
13485 {
13486     printf("%d\n", (int)((char *)&try_algn.bar - (char *)&try_algn.foo));
13487     return(0);
13488 }
13489 EOCP
13490                 set try
13491                 if eval $compile_ok; then
13492                         dflt=`$run ./try`
13493                 else
13494                         dflt='8'
13495                         echo "(I can't seem to compile the test program...)"
13496                 fi
13497                 ;;
13498         *) dflt="$alignbytes"
13499                 ;;
13500         esac
13501         rp="Doubles must be aligned on a how-many-byte boundary?"
13502         . ./myread
13503         alignbytes="$ans"
13504         $rm -f try.c try
13505         ;;
13506 esac
13507
13508
13509 : set the base revision
13510 baserev=5.0
13511
13512 : how do we catenate cpp tokens here?
13513 echo " "
13514 echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
13515 $cat >cpp_stuff.c <<'EOCP'
13516 #define RCAT(a,b)a/**/b
13517 #define ACAT(a,b)a ## b
13518 RCAT(Rei,ser)
13519 ACAT(Cir,cus)
13520 EOCP
13521 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
13522 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
13523         echo "Oh!  Smells like ANSI's been here." >&4
13524         echo "We can catify or stringify, separately or together!"
13525         cpp_stuff=42
13526 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
13527         echo "Ah, yes!  The good old days!" >&4
13528         echo "However, in the good old days we don't know how to stringify and"
13529         echo "catify at the same time."
13530         cpp_stuff=1
13531 else
13532         $cat >&4 <<EOM
13533 Hmm, I don't seem to be able to catenate tokens with your cpp.  You're going
13534 to have to edit the values of CAT[2-5] in config.h...
13535 EOM
13536         cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
13537 fi
13538 $rm -f cpp_stuff.*
13539
13540 : see if this is a db.h system
13541 set db.h i_db
13542 eval $inhdr
13543
13544 case "$i_db" in
13545 $define)
13546         : Check db version.
13547         echo " "
13548         echo "Checking Berkeley DB version ..." >&4
13549         $cat >try.c <<EOCP
13550 #$d_const HASCONST
13551 #ifndef HASCONST
13552 #define const
13553 #endif
13554 #include <sys/types.h>
13555 #include <stdio.h>
13556 #include <db.h>
13557 int main(int argc, char *argv[])
13558 {
13559 #ifdef DB_VERSION_MAJOR /* DB version >= 2 */
13560     int Major, Minor, Patch ;
13561     unsigned long Version ;
13562     (void)db_version(&Major, &Minor, &Patch) ;
13563     if (argc == 2) {
13564         printf("%d %d %d %d %d %d\n",
13565                DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH,
13566                Major, Minor, Patch);
13567         exit(0);
13568     }
13569     printf("You have Berkeley DB Version 2 or greater.\n");
13570
13571     printf("db.h is from Berkeley DB Version %d.%d.%d\n",
13572                 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
13573     printf("libdb is from Berkeley DB Version %d.%d.%d\n",
13574                 Major, Minor, Patch) ;
13575
13576     /* check that db.h & libdb are compatible */
13577     if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
13578         printf("db.h and libdb are incompatible.\n") ;
13579         exit(3);        
13580     }
13581
13582     printf("db.h and libdb are compatible.\n") ;
13583
13584     Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
13585                 + DB_VERSION_PATCH ;
13586
13587     /* needs to be >= 2.3.4 */
13588     if (Version < 2003004) {
13589     /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
13590         printf("Perl needs Berkeley DB 2.3.4 or greater.\n") ;
13591         exit(2);        
13592     }
13593
13594     exit(0);
13595 #else
13596 #if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
13597     if (argc == 2) {
13598         printf("1 0 0\n");
13599         exit(0);
13600     }
13601     printf("You have Berkeley DB Version 1.\n");
13602     exit(0);    /* DB version < 2: the coast is clear. */
13603 #else
13604     exit(1);    /* <db.h> not Berkeley DB? */
13605 #endif
13606 #endif
13607 }
13608 EOCP
13609         set try
13610         if eval $compile_ok && $run ./try; then
13611                 echo 'Looks OK.' >&4
13612                 set `$run ./try 1`
13613                 db_version_major=$1
13614                 db_version_minor=$2
13615                 db_version_patch=$3
13616         else
13617                 echo "I can't use Berkeley DB with your <db.h>.  I'll disable Berkeley DB." >&4
13618                 i_db=$undef
13619                 case " $libs " in
13620                 *"-ldb "*)
13621                         : Remove db from list of libraries to use
13622                         echo "Removing unusable -ldb from library list" >&4
13623                         set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
13624                         shift
13625                         libs="$*"
13626                         echo "libs = $libs" >&4
13627                         ;;
13628                 esac
13629         fi
13630         $rm -f try.*
13631         ;;
13632 esac
13633
13634 case "$i_db" in
13635 define)
13636         : Check the return type needed for hash 
13637         echo " "
13638         echo "Checking return type needed for hash for Berkeley DB ..." >&4
13639         $cat >try.c <<EOCP
13640 #$d_const HASCONST
13641 #ifndef HASCONST
13642 #define const
13643 #endif
13644 #include <sys/types.h>
13645 #include <db.h>
13646
13647 #ifndef DB_VERSION_MAJOR
13648 u_int32_t hash_cb (ptr, size)
13649 const void *ptr;
13650 size_t size;
13651 {
13652 }
13653 HASHINFO info;
13654 int main()
13655 {
13656         info.hash = hash_cb;
13657 }
13658 #endif
13659 EOCP
13660         if $cc $ccflags -c try.c >try.out 2>&1 ; then
13661                 if $contains warning try.out >>/dev/null 2>&1 ; then
13662                         db_hashtype='int'
13663                 else
13664                         db_hashtype='u_int32_t'
13665                 fi
13666         else
13667                 : XXX Maybe we should just give up here.
13668                 db_hashtype=u_int32_t
13669                 $cat try.out >&4
13670                 echo "Help:  I can't seem to compile the db test program." >&4
13671                 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
13672         fi
13673         $rm -f try.*
13674         echo "Your version of Berkeley DB uses $db_hashtype for hash."
13675         ;;
13676 *)      db_hashtype=u_int32_t
13677         ;;
13678 esac
13679 case "$i_db" in
13680 define)
13681         : Check the return type needed for prefix 
13682         echo " "
13683         echo "Checking return type needed for prefix for Berkeley DB ..." >&4
13684         cat >try.c <<EOCP
13685 #$d_const HASCONST
13686 #ifndef HASCONST
13687 #define const
13688 #endif
13689 #include <sys/types.h>
13690 #include <db.h>
13691
13692 #ifndef DB_VERSION_MAJOR
13693 size_t prefix_cb (key1, key2)
13694 const DBT *key1;
13695 const DBT *key2;
13696 {
13697 }
13698 BTREEINFO info;
13699 int main()
13700 {
13701         info.prefix = prefix_cb;
13702 }
13703 #endif
13704 EOCP
13705         if $cc $ccflags -c try.c  >try.out 2>&1 ; then
13706                 if $contains warning try.out >>/dev/null 2>&1 ; then
13707                         db_prefixtype='int'
13708                 else
13709                         db_prefixtype='size_t'
13710                 fi
13711         else
13712                 db_prefixtype='size_t'
13713                 : XXX Maybe we should just give up here.
13714                 $cat try.out >&4
13715                 echo "Help:  I can't seem to compile the db test program." >&4
13716                 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
13717         fi
13718         $rm -f try.*
13719         echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
13720         ;;
13721 *)      db_prefixtype='size_t'
13722         ;;
13723 esac
13724
13725
13726 : How can we generate normalized random numbers ?
13727 echo " "
13728 echo "Looking for a random number function..." >&4
13729 case "$randfunc" in
13730 '')
13731         if set drand48 val -f; eval $csym; $val; then
13732                 dflt="drand48"
13733                 echo "Good, found drand48()." >&4
13734         elif set random val -f; eval $csym; $val; then
13735                 dflt="random"
13736                 echo "OK, found random()." >&4
13737         else
13738                 dflt="rand"
13739                 echo "Yick, looks like I have to use rand()." >&4
13740         fi
13741         echo " "
13742         ;;
13743 *)
13744         dflt="$randfunc"
13745         ;;
13746 esac
13747 cont=true
13748
13749 case "$ccflags" in
13750 *-Dmy_rand=*|*-Dmy_srand=*)
13751         echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
13752         ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
13753         ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
13754         ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
13755         ;;
13756 esac
13757
13758 while $test "$cont"; do
13759         rp="Use which function to generate random numbers?"
13760         . ./myread
13761         if $test "$ans" = "$dflt"; then
13762                 : null
13763         else
13764                 randbits=''
13765         fi
13766         randfunc="$ans"
13767         if set $ans val -f; eval $csym; $val; then
13768                 cont=''
13769         else
13770                 dflt=y
13771                 rp="I cannot find function $ans. Use that name anyway?"
13772                 . ./myread
13773                 dflt=rand
13774                 case "$ans" in
13775                         [yY]*) cont='';;
13776                 esac
13777         fi
13778         case "$cont" in
13779         '')
13780                 case "$randfunc" in
13781                 drand48)
13782                         drand01="drand48()"
13783                         seedfunc="srand48"
13784                         randbits=48
13785                         randseedtype=long
13786                         ;;
13787                 rand|random)
13788                         case "$randbits" in
13789                         '')
13790 echo "Checking to see how many bits your $randfunc() function produces..." >&4
13791                                 $cat >try.c <<EOCP
13792 #$i_unistd I_UNISTD
13793 #$i_stdlib I_STDLIB
13794 #include <stdio.h>
13795 #ifdef I_UNISTD
13796 #  include <unistd.h>
13797 #endif
13798 #ifdef I_STDLIB
13799 #  include <stdlib.h>
13800 #endif
13801 int main()
13802 {
13803         register int i;
13804         register unsigned long tmp;
13805         register unsigned long max = 0L;
13806
13807         for (i = 1000; i; i--) {
13808                 tmp = (unsigned long) $randfunc();
13809                 if (tmp > max) max = tmp;
13810         }
13811         for (i = 0; max; i++)
13812                 max /= 2;
13813         printf("%d\n",i);
13814 }
13815 EOCP
13816                                 set try
13817                                 if eval $compile_ok; then
13818                                         dflt=`try`
13819                                 else
13820                                         dflt='?'
13821                                         echo "(I can't seem to compile the test program...)"
13822                                 fi
13823                                 ;;
13824                         *)
13825                                 dflt="$randbits"
13826                                 ;;
13827                         esac
13828                         rp="How many bits does your $randfunc() function produce?"
13829                         . ./myread
13830                         randbits="$ans"
13831                         $rm -f try.c try
13832                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
13833                         seedfunc="s$randfunc"
13834                         randseedtype=unsigned
13835                         ;;
13836                 *)
13837                         dflt="31"
13838                         rp="How many bits does your $randfunc() function produce?"
13839                         . ./myread
13840                         randbits="$ans"
13841                         seedfunc="s$randfunc"
13842                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
13843                         if set $seedfunc val -f; eval $csym; $val; then
13844                                 echo "(Using $seedfunc() to seed random generator)"
13845                         else
13846                                 echo "(Warning: no $seedfunc() to seed random generator)"
13847                                 seedfunc=rand
13848                         fi
13849                         randseedtype=unsigned
13850                         ;;
13851                 esac
13852                 ;;
13853         esac
13854 done
13855
13856 echo " "
13857 echo "Determining whether or not we are on an EBCDIC system..." >&4
13858 $cat >try.c <<'EOM'
13859 int main()
13860 {
13861   if ('M'==0xd4) return 0;
13862   return 1;
13863 }
13864 EOM
13865
13866 val=$undef
13867 set try
13868 if eval $compile_ok; then
13869         if $run ./try; then
13870                 echo "You seem to speak EBCDIC." >&4
13871                 val="$define"
13872         else
13873                 echo "Nope, no EBCDIC, probably ASCII or some ISO Latin. Or UTF-8." >&4
13874         fi
13875 else
13876         echo "I'm unable to compile the test program." >&4
13877         echo "I'll assume ASCII or some ISO Latin. Or UTF8." >&4
13878 fi
13879 $rm -f try try.*
13880 set ebcdic
13881 eval $setvar
13882
13883 echo " "
13884 $cat >&4 <<EOM
13885 Checking how to flush all pending stdio output...
13886 EOM
13887 # I only know how to find the first 32 possibly open files on SunOS.
13888 # See also hints/sunos_4_1.sh and util.c  --AD
13889 case "$osname" in
13890 sunos) $echo '#define PERL_FFLUSH_ALL_FOPEN_MAX 32' > try.c ;;
13891 esac
13892 $cat >>try.c <<EOCP
13893 #include <stdio.h>
13894 #$i_unistd I_UNISTD
13895 #ifdef I_UNISTD
13896 # include <unistd.h>
13897 #endif
13898 #$d_sysconf HAS_SYSCONF
13899 #$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY
13900 #ifdef HAS_STDIO_STREAM_ARRAY
13901 # define STDIO_STREAM_ARRAY $stdio_stream_array
13902 #endif
13903 int main() {
13904   FILE* p;
13905   unlink("try.out");
13906   p = fopen("try.out", "w");
13907 #ifdef TRY_FPUTC
13908   fputc('x', p);
13909 #else
13910 # ifdef TRY_FPRINTF
13911   fprintf(p, "x");
13912 # endif
13913 #endif
13914 #ifdef TRY_FFLUSH_NULL
13915   fflush(NULL);
13916 #endif
13917 #ifdef TRY_FFLUSH_ALL
13918   {
13919     long open_max = -1;
13920 # ifdef PERL_FFLUSH_ALL_FOPEN_MAX
13921     open_max = PERL_FFLUSH_ALL_FOPEN_MAX;
13922 # else
13923 #  if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
13924     open_max = sysconf(_SC_OPEN_MAX);
13925 #  else
13926 #   ifdef FOPEN_MAX
13927     open_max = FOPEN_MAX;
13928 #   else
13929 #    ifdef OPEN_MAX
13930     open_max = OPEN_MAX;
13931 #    else
13932 #     ifdef _NFILE
13933     open_max = _NFILE;
13934 #     endif
13935 #    endif
13936 #   endif
13937 #  endif
13938 # endif 
13939 # ifdef HAS_STDIO_STREAM_ARRAY
13940     if (open_max > 0) {
13941       long i;
13942       for (i = 0; i < open_max; i++)
13943             if (STDIO_STREAM_ARRAY[i]._file >= 0 &&
13944                 STDIO_STREAM_ARRAY[i]._file < open_max &&
13945                 STDIO_STREAM_ARRAY[i]._flag)
13946                 fflush(&STDIO_STREAM_ARRAY[i]);
13947     }   
13948   }
13949 # endif
13950 #endif
13951   _exit(42);
13952 }
13953 EOCP
13954 : first we have to find out how _not_ to flush
13955 $to try.c
13956 if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
13957     output=''
13958     set try -DTRY_FPUTC
13959     if eval $compile; then
13960             $run ./try 2>/dev/null
13961             code="$?"
13962             $from try.out
13963             if $test ! -s try.out -a "X$code" = X42; then
13964                 output=-DTRY_FPUTC
13965             fi
13966     fi
13967     case "$output" in
13968     '')
13969             set try -DTRY_FPRINTF
13970             if eval $compile; then
13971                     $run ./try 2>/dev/null
13972                     code="$?"
13973                     $from try.out
13974                     if $test ! -s try.out -a "X$code" = X42; then
13975                         output=-DTRY_FPRINTF
13976                     fi
13977             fi
13978         ;;
13979     esac
13980 fi
13981 : check for fflush NULL behaviour
13982 case "$fflushNULL" in
13983 '')     set try -DTRY_FFLUSH_NULL $output
13984         if eval $compile; then
13985                 $run ./try 2>/dev/null
13986                 code="$?"
13987                 $from try.out
13988                 if $test -s try.out -a "X$code" = X42; then
13989                         fflushNULL="`$cat try.out`"
13990                 else
13991                         if $test "X$code" != X42; then
13992                                 $cat >&4 <<EOM
13993 (If this test failed, don't worry, we'll try another method shortly.)
13994 EOM
13995                         fi
13996                 fi
13997         fi
13998         $rm -f core try.core core.try.*
13999         case "$fflushNULL" in
14000         x)      $cat >&4 <<EOM
14001 Your fflush(NULL) works okay for output streams.
14002 Let's see if it clobbers input pipes...
14003 EOM
14004 # As of mid-March 2000 all versions of Solaris appear to have a stdio
14005 # bug that improperly flushes the input end of pipes.  So we avoid the
14006 # autoflush on fork/system/exec support for now. :-(
14007 $cat >tryp.c <<EOCP
14008 #include <stdio.h>
14009 int
14010 main(int argc, char **argv)
14011 {
14012     char buf[1024];
14013     int i;
14014     char *bp = buf;
14015     while (1) {
14016         while ((i = getc(stdin)) != -1
14017                && (*bp++ = i) != '\n'
14018                && bp < &buf[1024])
14019         /* DO NOTHING */ ;
14020         *bp = '\0';
14021         fprintf(stdout, "%s", buf);
14022         fflush(NULL);
14023         if (i == -1)
14024             return 0;
14025         bp = buf;
14026     }
14027 }
14028 EOCP
14029                 fflushNULL="$define"
14030                 set tryp
14031                 if eval $compile; then
14032                     $rm -f tryp.out
14033                     $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
14034                     if cmp tryp.c tryp.out >/dev/null 2>&1; then
14035                        $cat >&4 <<EOM
14036 fflush(NULL) seems to behave okay with input streams.
14037 EOM
14038                         fflushNULL="$define"
14039                     else
14040                         $cat >&4 <<EOM
14041 Ouch, fflush(NULL) clobbers input pipes!  We will not use it.
14042 EOM
14043                         fflushNULL="$undef"
14044                     fi
14045                 fi
14046                 $rm -f core tryp.c tryp.core core.tryp.*
14047                 ;;
14048         '')     $cat >&4 <<EOM
14049 Your fflush(NULL) isn't working (contrary to ANSI C).
14050 EOM
14051                 fflushNULL="$undef"
14052                 ;;
14053         *)      $cat >&4 <<EOM
14054 Cannot figure out whether your fflush(NULL) works or not.
14055 I'm assuming it doesn't (contrary to ANSI C).
14056 EOM
14057                 fflushNULL="$undef"
14058                 ;;
14059         esac
14060         ;;
14061 $define|true|[yY]*)
14062         fflushNULL="$define"
14063         ;;
14064 *)
14065         fflushNULL="$undef"
14066         ;;
14067 esac
14068 : check explicit looping only if NULL did not work, and if the pipe
14069 : bug does not show up on an explicit flush too
14070 case "$fflushNULL" in
14071 "$undef")
14072         $cat >tryp.c <<EOCP
14073 #include <stdio.h>
14074 int
14075 main(int argc, char **argv)
14076 {
14077     char buf[1024];
14078     int i;
14079     char *bp = buf;
14080     while (1) {
14081         while ((i = getc(stdin)) != -1
14082                && (*bp++ = i) != '\n'
14083                && bp < &buf[1024])
14084         /* DO NOTHING */ ;
14085         *bp = '\0';
14086         fprintf(stdout, "%s", buf);
14087         fflush(stdin);
14088         if (i == -1)
14089             return 0;
14090         bp = buf;
14091     }
14092 }
14093 EOCP
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 Good, at least fflush(stdin) seems to behave okay when stdin is a pipe.
14101 EOM
14102                 : now check for fflushall behaviour
14103                 case "$fflushall" in
14104                 '')     set try -DTRY_FFLUSH_ALL $output
14105                         if eval $compile; then
14106                                 $cat >&4 <<EOM
14107 (Now testing the other method--but note that this also may fail.)
14108 EOM
14109                                 $run ./try 2>/dev/null
14110                                 code=$?
14111                                 $from try.out
14112                                 if $test -s try.out -a "X$code" = X42; then
14113                                         fflushall="`$cat try.out`"
14114                                 fi
14115                         fi
14116                         $rm -f core try.core core.try.*
14117                         case "$fflushall" in
14118                         x)      $cat >&4 <<EOM
14119 Whew. Flushing explicitly all the stdio streams works.
14120 EOM
14121                                 fflushall="$define"
14122                                 ;;
14123                         '')     $cat >&4 <<EOM
14124 Sigh. Flushing explicitly all the stdio streams doesn't work.
14125 EOM
14126                                 fflushall="$undef"
14127                                 ;;
14128                         *)      $cat >&4 <<EOM
14129 Cannot figure out whether flushing stdio streams explicitly works or not.
14130 I'm assuming it doesn't.
14131 EOM
14132                                 fflushall="$undef"
14133                                 ;;
14134                         esac
14135                         ;;
14136                 "$define"|true|[yY]*)
14137                         fflushall="$define"
14138                         ;;
14139                 *)
14140                         fflushall="$undef"
14141                         ;;
14142                 esac
14143             else
14144                 $cat >&4 <<EOM
14145 All is futile.  Even fflush(stdin) clobbers input pipes!
14146 EOM
14147                 fflushall="$undef"
14148             fi
14149         else
14150             fflushall="$undef"
14151         fi
14152         $rm -f core tryp.c tryp.core core.tryp.*
14153         ;;
14154 *)      fflushall="$undef"
14155         ;;
14156 esac
14157
14158 case "$fflushNULL$fflushall" in
14159 undefundef)
14160         $cat <<EOM
14161 OK, I give up.  I cannot figure out how to flush pending stdio output.
14162 We won't be flushing handles at all before fork/exec/popen.
14163 EOM
14164         ;;
14165 esac
14166 $rm -f try.* try$exe_ext
14167
14168 : Store the full pathname to the ar program for use in the C program
14169 : Respect a hint or command line value for full_ar.
14170 case "$full_ar" in
14171 '') full_ar=$ar ;;
14172 esac
14173
14174 : Store the full pathname to the sed program for use in the C program
14175 full_sed=$sed
14176
14177 : see what type gids are declared as in the kernel
14178 echo " "
14179 echo "Looking for the type for group ids returned by getgid()."
14180 set gid_t gidtype xxx stdio.h sys/types.h
14181 eval $typedef
14182 case "$gidtype" in
14183 xxx)
14184         xxx=`./findhdr sys/user.h`
14185         set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
14186         case $1 in
14187         unsigned) dflt="$1 $2" ;;
14188         *) dflt="$1" ;;
14189         esac
14190         ;;
14191 *) dflt="$gidtype";;
14192 esac
14193 case "$gidtype" in
14194 gid_t) echo "gid_t found." ;;
14195 *)      rp="What is the type for group ids returned by getgid()?"
14196         . ./myread
14197         gidtype="$ans"
14198         ;;
14199 esac
14200
14201 echo " "
14202 case "$gidtype" in
14203 *_t) zzz="$gidtype"     ;;
14204 *)   zzz="gid"          ;;
14205 esac
14206 echo "Checking the size of $zzz..." >&4 
14207 cat > try.c <<EOCP
14208 #include <sys/types.h>
14209 #include <stdio.h>
14210 int main() {
14211     printf("%d\n", (int)sizeof($gidtype));
14212     exit(0);
14213 }
14214 EOCP
14215 set try
14216 if eval $compile_ok; then
14217         yyy=`$run ./try`
14218         case "$yyy" in
14219         '')     gidsize=4
14220                 echo "(I can't execute the test program--guessing $gidsize.)" >&4
14221                 ;;
14222         *)      gidsize=$yyy
14223                 echo "Your $zzz is $gidsize bytes long."
14224                 ;;
14225         esac
14226 else
14227         gidsize=4
14228         echo "(I can't compile the test program--guessing $gidsize.)" >&4
14229 fi
14230
14231
14232 echo " "
14233 case "$gidtype" in
14234 *_t) zzz="$gidtype"     ;;
14235 *)   zzz="gid"          ;;
14236 esac
14237 echo "Checking the sign of $zzz..." >&4 
14238 cat > try.c <<EOCP
14239 #include <sys/types.h>
14240 #include <stdio.h>
14241 int main() {
14242         $gidtype foo = -1;
14243         if (foo < 0)
14244                 printf("-1\n");
14245         else
14246                 printf("1\n");
14247 }
14248 EOCP
14249 set try
14250 if eval $compile; then
14251         yyy=`$run ./try`
14252         case "$yyy" in
14253         '')     gidsign=1
14254                 echo "(I can't execute the test program--guessing unsigned.)" >&4
14255                 ;;
14256         *)      gidsign=$yyy
14257                 case "$gidsign" in
14258                  1) echo "Your $zzz is unsigned." ;;
14259                 -1) echo "Your $zzz is signed."   ;;
14260                 esac
14261                 ;;
14262         esac
14263 else
14264         gidsign=1
14265         echo "(I can't compile the test program--guessing unsigned.)" >&4
14266 fi
14267
14268
14269 echo " "
14270
14271 if $test X"$quadtype" != X; then
14272
14273 echo "Checking how to print 64-bit integers..." >&4
14274
14275 if $test X"$sPRId64" = X -a X"$quadtype" = Xint; then
14276         $cat >try.c <<'EOCP'
14277 #include <sys/types.h>
14278 #include <stdio.h>
14279 int main() {
14280   int q = 12345678901;
14281   printf("%ld\n", q);
14282 }
14283 EOCP
14284         set try
14285         if eval $compile; then
14286                 yyy=`$run ./try`
14287                 case "$yyy" in
14288                 12345678901)
14289                         sPRId64='"d"'; sPRIi64='"i"'; sPRIu64='"u"';
14290                         sPRIo64='"o"'; sPRIx64='"x"'; sPRIXU64='"X"';
14291                         echo "We will use %d."
14292                         ;;
14293                 esac
14294         fi
14295 fi
14296
14297 if $test X"$sPRId64" = X -a X"$quadtype" = Xlong; then
14298         $cat >try.c <<'EOCP'
14299 #include <sys/types.h>
14300 #include <stdio.h>
14301 int main() {
14302   long q = 12345678901;
14303   printf("%ld\n", q);
14304 }
14305 EOCP
14306         set try
14307         if eval $compile; then
14308                 yyy=`$run ./try`
14309                 case "$yyy" in
14310                 12345678901)
14311                         sPRId64='"ld"'; sPRIi64='"li"'; sPRIu64='"lu"';
14312                         sPRIo64='"lo"'; sPRIx64='"lx"'; sPRIXU64='"lX"';
14313                         echo "We will use %ld."
14314                         ;;
14315                 esac
14316         fi
14317 fi
14318
14319 if $test X"$sPRId64" = X -a X"$i_inttypes" = X"$define" -a X"$quadtype" = Xint64_t; then
14320         $cat >try.c <<'EOCP'
14321 #include <sys/types.h>
14322 #include <inttypes.h>
14323 #include <stdio.h>
14324 int main() {
14325   int64_t q = 12345678901;
14326   printf("%" PRId64 "\n", q);
14327 }
14328 EOCP
14329         set try
14330         if eval $compile; then
14331                 yyy=`$run ./try`
14332                 case "$yyy" in
14333                 12345678901)
14334                         sPRId64=PRId64; sPRIi64=PRIi64; sPRIu64=PRIu64;
14335                         sPRIo64=PRIo64; sPRIx64=PRIx64; sPRIXU64=PRIXU64;
14336                         echo "We will use the C9X style."
14337                         ;;
14338                 esac
14339         fi
14340 fi
14341
14342 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
14343         $cat >try.c <<EOCP
14344 #include <sys/types.h>
14345 #include <stdio.h>
14346 int main() {
14347   $quadtype q = 12345678901;
14348   printf("%Ld\n", q);
14349 }
14350 EOCP
14351         set try
14352         if eval $compile; then
14353                 yyy=`$run ./try`
14354                 case "$yyy" in
14355                 12345678901)
14356                         sPRId64='"Ld"'; sPRIi64='"Li"'; sPRIu64='"Lu"';
14357                         sPRIo64='"Lo"'; sPRIx64='"Lx"'; sPRIXU64='"LX"';
14358                         echo "We will use %Ld."
14359                         ;;
14360                 esac
14361         fi
14362 fi
14363
14364 if $test X"$sPRId64" = X -a X"$quadtype" = X"long long"; then
14365         $cat >try.c <<'EOCP'
14366 #include <sys/types.h>
14367 #include <stdio.h>
14368 int main() {
14369   long long q = 12345678901LL; /* AIX cc requires the LL suffix. */
14370   printf("%lld\n", q);
14371 }
14372 EOCP
14373         set try
14374         if eval $compile; then
14375                 yyy=`$run ./try`
14376                 case "$yyy" in
14377                 12345678901)
14378                         sPRId64='"lld"'; sPRIi64='"lli"'; sPRIu64='"llu"';
14379                         sPRIo64='"llo"'; sPRIx64='"llx"'; sPRIXU64='"llX"';
14380                         echo "We will use the %lld style."
14381                         ;;
14382                 esac
14383         fi
14384 fi
14385
14386 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
14387         $cat >try.c <<EOCP
14388 #include <sys/types.h>
14389 #include <stdio.h>
14390 int main() {
14391   $quadtype q = 12345678901;
14392   printf("%qd\n", q);
14393 }
14394 EOCP
14395         set try
14396         if eval $compile; then
14397                 yyy=`$run ./try`
14398                 case "$yyy" in
14399                 12345678901)
14400                         sPRId64='"qd"'; sPRIi64='"qi"'; sPRIu64='"qu"';
14401                         sPRIo64='"qo"'; sPRIx64='"qx"'; sPRIXU64='"qX"';
14402                         echo "We will use %qd."
14403                         ;;
14404                 esac
14405         fi
14406 fi
14407
14408 if $test X"$sPRId64" = X; then
14409         echo "Cannot figure out how to print 64-bit integers." >&4
14410 fi
14411
14412 $rm -f try try.*
14413
14414 fi
14415
14416 case "$sPRId64" in
14417 '')     d_PRId64="$undef"; d_PRIi64="$undef"; d_PRIu64="$undef"; 
14418         d_PRIo64="$undef"; d_PRIx64="$undef"; d_PRIXU64="$undef"; 
14419         ;;
14420 *)      d_PRId64="$define"; d_PRIi64="$define"; d_PRIu64="$define"; 
14421         d_PRIo64="$define"; d_PRIx64="$define"; d_PRIXU64="$define"; 
14422         ;;
14423 esac
14424
14425
14426 echo " "
14427 $echo "Checking the format strings to be used for Perl's internal types..." >&4
14428
14429 if $test X"$ivsize" = X8; then
14430         ivdformat="$sPRId64"
14431         uvuformat="$sPRIu64"
14432         uvoformat="$sPRIo64"
14433         uvxformat="$sPRIx64"
14434         uvXUformat="$sPRIXU64"
14435 else
14436         if $test X"$ivsize" = X"$longsize"; then
14437                 ivdformat='"ld"'
14438                 uvuformat='"lu"'
14439                 uvoformat='"lo"'
14440                 uvxformat='"lx"'
14441                 uvXUformat='"lX"'
14442         else
14443                 if $test X"$ivsize" = X"$intsize"; then
14444                         ivdformat='"d"'
14445                         uvuformat='"u"'
14446                         uvoformat='"o"'
14447                         uvxformat='"x"'
14448                         uvXUformat='"X"'
14449                 else
14450                         : far out
14451                         if $test X"$ivsize" = X"$shortsize"; then
14452                                 ivdformat='"hd"'
14453                                 uvuformat='"hu"'
14454                                 uvoformat='"ho"'
14455                                 uvxformat='"hx"'
14456                                 uvXUformat='"hX"'
14457                         fi
14458                 fi
14459         fi
14460 fi
14461
14462 if $test X"$uselongdouble" = X"$define" -a X"$d_longdbl" = X"$define" -a X"$d_PRIgldbl" = X"$define"; then
14463         nveformat="$sPRIeldbl"
14464         nvfformat="$sPRIfldbl"
14465         nvgformat="$sPRIgldbl"
14466         nvEUformat="$sPRIEUldbl"
14467         nvFUformat="$sPRIFUldbl"
14468         nvGUformat="$sPRIGUldbl"
14469 else
14470         nveformat='"e"'
14471         nvfformat='"f"'
14472         nvgformat='"g"'
14473         nvEUformat='"E"'
14474         nvFUformat='"F"'
14475         nvGUformat='"G"'
14476 fi
14477
14478 case "$ivdformat" in
14479 '') echo "$0: Fatal: failed to find format strings, cannot continue." >& 4
14480     exit 1
14481     ;;
14482 esac
14483
14484
14485 echo " "
14486 $echo "Checking the format string to be used for gids..." >&4
14487
14488 case "$gidsign" in
14489 -1)     if $test X"$gidsize" = X"$ivsize"; then
14490                 gidformat="$ivdformat"
14491         else
14492                 if $test X"$gidsize" = X"$longsize"; then
14493                         gidformat='"ld"'
14494                 else
14495                         if $test X"$gidsize" = X"$intsize"; then
14496                                 gidformat='"d"'
14497                         else
14498                                 if $test X"$gidsize" = X"$shortsize"; then
14499                                         gidformat='"hd"'
14500                                 fi
14501                         fi
14502                 fi
14503         fi
14504         ;;
14505 *)      if $test X"$gidsize" = X"$uvsize"; then
14506                 gidformat="$uvuformat"
14507         else
14508                 if $test X"$gidsize" = X"$longsize"; then
14509                         gidformat='"lu"'
14510                 else
14511                         if $test X"$gidsize" = X"$intsize"; then
14512                                 gidformat='"u"'
14513                         else
14514                                 if $test X"$gidsize" = X"$shortsize"; then
14515                                         gidformat='"hu"'
14516                                 fi
14517                         fi
14518                 fi
14519         fi
14520         ;;
14521 esac
14522
14523 : see if getgroups exists
14524 set getgroups d_getgrps
14525 eval $inlibc
14526
14527 : see if setgroups exists
14528 set setgroups d_setgrps
14529 eval $inlibc
14530
14531
14532 : Find type of 2nd arg to 'getgroups()' and 'setgroups()'
14533 echo " "
14534 case "$d_getgrps$d_setgrps" in
14535 *define*)
14536         case "$groupstype" in
14537         '') dflt="$gidtype" ;;
14538         *)  dflt="$groupstype" ;;
14539         esac
14540         $cat <<EOM
14541 What type of pointer is the second argument to getgroups() and setgroups()?
14542 Usually this is the same as group ids, $gidtype, but not always.
14543
14544 EOM
14545         rp='What type pointer is the second argument to getgroups() and setgroups()?'
14546         . ./myread
14547         groupstype="$ans"
14548         ;;
14549 *)  groupstype="$gidtype";;
14550 esac
14551
14552 echo " "
14553 echo "Checking if your $make program sets \$(MAKE)..." >&4
14554 case "$make_set_make" in
14555 '')
14556         $sed 's/^X //' > testmake.mak << 'EOF'
14557 Xall:
14558 X       @echo 'maketemp="$(MAKE)"'
14559 EOF
14560         case "`$make -f testmake.mak 2>/dev/null`" in
14561         *maketemp=*) make_set_make='#' ;;
14562         *)      make_set_make="MAKE=$make" ;;
14563         esac
14564         $rm -f testmake.mak
14565         ;;
14566 esac
14567 case "$make_set_make" in
14568 '#') echo "Yup, it does.";;
14569 *) echo "Nope, it doesn't.";;
14570 esac
14571
14572 : see what type is used for mode_t
14573 rp="What is the type used for file modes for system calls (e.g. fchmod())?"
14574 set mode_t modetype int stdio.h sys/types.h
14575 eval $typedef_ask
14576
14577 : see if stdarg is available
14578 echo " "
14579 if $test `./findhdr stdarg.h`; then
14580         echo "<stdarg.h> found." >&4
14581         valstd="$define"
14582 else
14583         echo "<stdarg.h> NOT found." >&4
14584         valstd="$undef"
14585 fi
14586
14587 : see if varags is available
14588 echo " "
14589 if $test `./findhdr varargs.h`; then
14590         echo "<varargs.h> found." >&4
14591 else
14592         echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
14593 fi
14594
14595 : set up the varargs testing programs
14596 $cat > varargs.c <<EOP
14597 #ifdef I_STDARG
14598 #include <stdarg.h>
14599 #endif
14600 #ifdef I_VARARGS
14601 #include <varargs.h>
14602 #endif
14603
14604 #ifdef I_STDARG
14605 int f(char *p, ...)
14606 #else
14607 int f(va_alist)
14608 va_dcl
14609 #endif
14610 {
14611         va_list ap;
14612 #ifndef I_STDARG
14613         char *p;
14614 #endif
14615 #ifdef I_STDARG
14616         va_start(ap,p);
14617 #else
14618         va_start(ap);
14619         p = va_arg(ap, char *);
14620 #endif
14621         va_end(ap);
14622 }
14623 EOP
14624 $cat > varargs <<EOP
14625 $startsh
14626 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
14627         echo "true"
14628 else
14629         echo "false"
14630 fi
14631 $rm -f varargs$_o
14632 EOP
14633 chmod +x varargs
14634
14635 : now check which varargs header should be included
14636 echo " "
14637 i_varhdr=''
14638 case "$valstd" in
14639 "$define")
14640         if `./varargs I_STDARG`; then
14641                 val='stdarg.h'
14642         elif `./varargs I_VARARGS`; then
14643                 val='varargs.h'
14644         fi
14645         ;;
14646 *)
14647         if `./varargs I_VARARGS`; then
14648                 val='varargs.h'
14649         fi
14650         ;;
14651 esac
14652 case "$val" in
14653 '')
14654 echo "I could not find the definition for va_dcl... You have problems..." >&4
14655         val="$undef"; set i_stdarg; eval $setvar
14656         val="$undef"; set i_varargs; eval $setvar
14657         ;;
14658 *) 
14659         set i_varhdr
14660         eval $setvar
14661         case "$i_varhdr" in
14662         stdarg.h)
14663                 val="$define"; set i_stdarg; eval $setvar
14664                 val="$undef"; set i_varargs; eval $setvar
14665                 ;;
14666         varargs.h)
14667                 val="$undef"; set i_stdarg; eval $setvar
14668                 val="$define"; set i_varargs; eval $setvar
14669                 ;;
14670         esac
14671         echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
14672 esac
14673 $rm -f varargs*
14674
14675 : see if we need va_copy
14676 echo " "
14677 case "$i_stdarg" in
14678 "$define")
14679         $cat >try.c <<EOCP
14680 #include <stdarg.h>
14681 #include <stdio.h>
14682 #$i_stdlib I_STDLIB
14683 #ifdef I_STDLIB
14684 #include <stdlib.h>
14685 #endif
14686 #include <signal.h>
14687
14688 int
14689 ivfprintf(FILE *f, const char *fmt, va_list *valp)
14690 {
14691   return vfprintf(f, fmt, *valp);
14692 }
14693  
14694 int    
14695 myvfprintf(FILE *f, const  char *fmt, va_list val)
14696 {
14697   return ivfprintf(f, fmt, &val);
14698 }
14699       
14700 int
14701 myprintf(char *fmt, ...) 
14702 {
14703   va_list val;
14704   va_start(val, fmt);
14705   return myvfprintf(stdout, fmt, val); 
14706 }         
14707
14708 int
14709 main(int ac, char **av)
14710 {
14711   signal(SIGSEGV, exit);
14712
14713   myprintf("%s%cs all right, then\n", "that", '\'');                            
14714   exit(0);      
14715 }
14716 EOCP
14717         set try
14718         if eval $compile && $run ./try 2>&1 >/dev/null; then
14719                 case "`$run ./try`" in
14720                 "that's all right, then")
14721                         okay=yes
14722                         ;;
14723                 esac
14724         fi
14725         case "$okay" in
14726         yes)    echo "It seems that you don't need va_copy()." >&4
14727                 need_va_copy="$undef"
14728                 ;;
14729         *)      echo "It seems that va_copy() or similar will be needed." >&4
14730                 need_va_copy="$define"
14731                 ;;
14732         esac
14733         $rm -f try.* core core.* *.core *.core.*
14734         ;;
14735 *)      echo "You don't have <stdarg.h>, not checking for va_copy()." >&4
14736         ;;
14737 esac
14738
14739 : define a fucntion to check prototypes
14740 $cat > protochk <<EOSH
14741 $startsh
14742 cc="$cc"
14743 optimize="$optimize"
14744 ccflags="$ccflags"
14745 prototype="$prototype"
14746 define="$define"
14747 rm=$rm
14748 EOSH
14749
14750 $cat >> protochk <<'EOSH'
14751
14752 $rm -f try.c
14753 foo="$1"
14754 shift
14755 while test $# -ge 2; do
14756         case "$1" in
14757                 $define) echo "#include <$2>" >> try.c ;;
14758                 literal) echo "$2" >> try.c ;;
14759         esac
14760     shift 2
14761 done
14762 test "$prototype" = "$define"  && echo '#define CAN_PROTOTYPE' >> try.c
14763 cat >> try.c <<'EOCP'
14764 #ifdef CAN_PROTOTYPE
14765 #define _(args) args
14766 #else
14767 #define _(args) ()
14768 #endif
14769 EOCP
14770 echo "$foo" >> try.c
14771 echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
14772 $cc $optimize $ccflags -c try.c > /dev/null 2>&1
14773 status=$?
14774 $rm -f try.[co]
14775 exit $status
14776 EOSH
14777 chmod +x protochk
14778 $eunicefix protochk
14779
14780 : see what type is used for size_t
14781 rp="What is the type used for the length parameter for string functions?"
14782 set size_t sizetype 'unsigned int' stdio.h sys/types.h
14783 eval $typedef_ask
14784
14785 : check for type of arguments to gethostbyaddr. 
14786 if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
14787         case "$d_gethbyaddr" in
14788         $define)
14789                 $cat <<EOM
14790
14791 Checking to see what type of arguments are accepted by gethostbyaddr().
14792 EOM
14793                 hdrs="$define sys/types.h
14794                         $d_socket sys/socket.h 
14795                         $i_niin netinet/in.h 
14796                         $i_netdb netdb.h
14797                         $i_unistd unistd.h"
14798                 : The first arg can 'char *' or 'void *'
14799                 : The second arg is some of integral type
14800                 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
14801                         for yyy in size_t long int; do
14802                                 case "$netdb_host_type" in
14803                                 '')     try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
14804                                         if ./protochk "$try" $hdrs; then
14805                                                 echo "Your system accepts $xxx for the first arg."
14806                                                 echo "...and $yyy for the second arg."
14807                                                 netdb_host_type="$xxx"
14808                                                 netdb_hlen_type="$yyy"
14809                                         fi
14810                                         ;;
14811                                 esac
14812                         done
14813                 done
14814                 : In case none of those worked, prompt the user.
14815                 case "$netdb_host_type" in
14816                 '')     rp='What is the type for the 1st argument to gethostbyaddr?'
14817                         dflt='char *'
14818                         . ./myread
14819                         netdb_host_type=$ans
14820                         rp='What is the type for the 2nd argument to gethostbyaddr?'
14821                         dflt="$sizetype"
14822                         . ./myread
14823                         netdb_hlen_type=$ans
14824                         ;;
14825                 esac
14826                 ;;
14827         *)      : no gethostbyaddr, so pick harmless defaults
14828                 netdb_host_type='char *'
14829                 netdb_hlen_type="$sizetype"
14830                 ;;
14831         esac
14832         # Remove the "const" if needed. -- but then we'll have a 
14833         # prototype clash!
14834         # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
14835 fi
14836
14837 : check for type of argument to gethostbyname. 
14838 if test "X$netdb_name_type" = X ; then
14839         case "$d_gethbyname" in
14840         $define)
14841                 $cat <<EOM
14842
14843 Checking to see what type of argument is accepted by gethostbyname().
14844 EOM
14845                 hdrs="$define sys/types.h
14846                         $d_socket sys/socket.h 
14847                         $i_niin netinet/in.h 
14848                         $i_netdb netdb.h
14849                         $i_unistd unistd.h"
14850                 for xxx in "const char *" "char *"; do
14851                         case "$netdb_name_type" in
14852                         '')     try="extern struct hostent *gethostbyname($xxx);"
14853                                 if ./protochk "$try" $hdrs; then
14854                                         echo "Your system accepts $xxx."
14855                                         netdb_name_type="$xxx"
14856                                 fi
14857                                 ;;
14858                         esac
14859                 done
14860                 : In case none of those worked, prompt the user.
14861                 case "$netdb_name_type" in
14862                 '')     rp='What is the type for the 1st argument to gethostbyname?'
14863                         dflt='char *'
14864                         . ./myread
14865                         netdb_name_type=$ans
14866                         ;;
14867                 esac
14868                 ;;
14869         *)      : no gethostbyname, so pick harmless default
14870                 netdb_name_type='char *'
14871                 ;;
14872         esac
14873 fi
14874
14875 : check for type of 1st argument to getnetbyaddr. 
14876 if test "X$netdb_net_type" = X ; then
14877         case "$d_getnbyaddr" in
14878         $define)
14879                 $cat <<EOM
14880
14881 Checking to see what type of 1st argument is accepted by getnetbyaddr().
14882 EOM
14883                 hdrs="$define sys/types.h
14884                         $d_socket sys/socket.h 
14885                         $i_niin netinet/in.h 
14886                         $i_netdb netdb.h
14887                         $i_unistd unistd.h"
14888                 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
14889                         case "$netdb_net_type" in
14890                         '')     try="extern struct netent *getnetbyaddr($xxx, int);"
14891                                 if ./protochk "$try" $hdrs; then
14892                                         echo "Your system accepts $xxx."
14893                                         netdb_net_type="$xxx"
14894                                 fi
14895                                 ;;
14896                         esac
14897                 done
14898                 : In case none of those worked, prompt the user.
14899                 case "$netdb_net_type" in
14900                 '')     rp='What is the type for the 1st argument to getnetbyaddr?'
14901                         dflt='long'
14902                         . ./myread
14903                         netdb_net_type=$ans
14904                         ;;
14905                 esac
14906                 ;;
14907         *)      : no getnetbyaddr, so pick harmless default
14908                 netdb_net_type='long'
14909                 ;;
14910         esac
14911 fi
14912 : locate the preferred pager for this system
14913 case "$pager" in
14914 '')
14915         dflt=''
14916         case "$pg" in
14917         /*) dflt=$pg;;
14918         [a-zA-Z]:/*) dflt=$pg;;
14919         esac
14920         case "$more" in
14921         /*) dflt=$more;;
14922         [a-zA-Z]:/*) dflt=$more;;
14923         esac
14924         case "$less" in
14925         /*) dflt=$less;;
14926         [a-zA-Z]:/*) dflt=$less;;
14927         esac
14928         case "$dflt" in
14929         '') dflt=/usr/ucb/more;;
14930         esac
14931         ;;
14932 *) dflt="$pager";;
14933 esac
14934 echo " "
14935 fn=f/
14936 rp='What pager is used on your system?'
14937 . ./getfile
14938 pager="$ans"
14939
14940 : see what type pids are declared as in the kernel
14941 rp="What is the type of process ids on this system?"
14942 set pid_t pidtype int stdio.h sys/types.h
14943 eval $typedef_ask
14944
14945 : Find earliest binary compatible site_perl subdirectory perl can use.
14946 case "$bincompat5005" in
14947 "$define") xs_apiversion='5.005' ;;
14948 *) xs_apiversion=$version ;;   # The current site_perl version.
14949 esac
14950 : Find earliest pure perl site_perl subdirectory perl can use.
14951 : The versioned directories started at 5.005.
14952 pm_apiversion='5.005'
14953
14954 : see if ar generates random libraries by itself
14955 echo " "
14956 echo "Checking how to generate random libraries on your machine..." >&4
14957 echo 'int bar1() { return bar2(); }' > bar1.c
14958 echo 'int bar2() { return 2; }' > bar2.c
14959 $cat > foo.c <<'EOP'
14960 int main() { printf("%d\n", bar1()); exit(0); }
14961 EOP
14962 $cc $ccflags -c bar1.c >/dev/null 2>&1
14963 $cc $ccflags -c bar2.c >/dev/null 2>&1
14964 $cc $ccflags -c foo.c >/dev/null 2>&1
14965 $ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
14966 if $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
14967         $run ./foobar >/dev/null 2>&1; then
14968         echo "$ar appears to generate random libraries itself."
14969         orderlib=false
14970         ranlib=":"
14971 elif $ar ts bar$_a >/dev/null 2>&1 &&
14972         $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
14973         $run ./foobar >/dev/null 2>&1; then
14974                 echo "a table of contents needs to be added with '$ar ts'."
14975                 orderlib=false
14976                 ranlib="$ar ts"
14977 else
14978         case "$ranlib" in
14979         :) ranlib='';;
14980         '')
14981                 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
14982                 $test -f $ranlib || ranlib=''
14983                 ;;
14984         esac
14985         if $test -n "$ranlib"; then
14986                 echo "your system has '$ranlib'; we'll use that."
14987                 orderlib=false
14988         else
14989                 echo "your system doesn't seem to support random libraries"
14990                 echo "so we'll use lorder and tsort to order the libraries."
14991                 orderlib=true
14992                 ranlib=":"
14993         fi
14994 fi
14995 $rm -f foo* bar* 
14996
14997 : check for type of arguments to select. 
14998 case "$selecttype" in
14999 '') case "$d_select" in
15000         $define)
15001                 echo " "
15002                 $cat <<EOM
15003 Checking to see what type of arguments are accepted by select().
15004 EOM
15005                 hdrs="$define sys/types.h
15006                         $i_systime sys/time.h 
15007                         $i_sysselct sys/select.h
15008                         $d_socket sys/socket.h"
15009                 : The first arg can be int, unsigned, or size_t
15010                 : The last arg may or may not be 'const'
15011                 val=''
15012                 : void pointer has been seen but using that
15013                 : breaks the selectminbits test
15014                 for xxx in 'fd_set *' 'int *'; do
15015                         for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
15016                                 for tmo in 'struct timeval *' 'const struct timeval *'; do
15017                                         case "$val" in
15018                                         '')     try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
15019                                                 if ./protochk "$try" $hdrs; then
15020                                                         echo "Your system accepts $xxx."
15021                                                         val="$xxx"
15022                                                 fi
15023                                                 ;;
15024                                         esac
15025                                 done
15026                         done
15027                 done
15028                 case "$val" in
15029                 '')     rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
15030                         case "$d_fd_set" in
15031                                 $define) dflt="fd_set *" ;;
15032                                 *)              dflt="int *" ;;
15033                         esac
15034                         . ./myread
15035                         val=$ans
15036                         ;;
15037                 esac
15038                 selecttype="$val"
15039                 ;;
15040         *)      : no select, so pick a harmless default
15041                 selecttype='int *'
15042                 ;;
15043         esac
15044         ;;
15045 esac
15046
15047 : check for the select 'width'
15048 case "$selectminbits" in
15049 '') case "$d_select" in
15050         $define)
15051                 $cat <<EOM
15052
15053 Checking to see on how many bits at a time your select() operates...
15054 EOM
15055                 $cat >try.c <<EOCP
15056 #include <sys/types.h>
15057 #$i_time I_TIME
15058 #$i_systime I_SYS_TIME
15059 #$i_systimek I_SYS_TIME_KERNEL
15060 #ifdef I_TIME
15061 #   include <time.h>
15062 #endif
15063 #ifdef I_SYS_TIME
15064 #   ifdef I_SYS_TIME_KERNEL
15065 #       define KERNEL
15066 #   endif
15067 #   include <sys/time.h>
15068 #   ifdef I_SYS_TIME_KERNEL
15069 #       undef KERNEL
15070 #   endif
15071 #endif
15072 #$i_sysselct I_SYS_SELECT
15073 #ifdef I_SYS_SELECT
15074 #include <sys/select.h>
15075 #endif
15076 #$d_socket HAS_SOCKET
15077 #ifdef HAS_SOCKET
15078 #   include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
15079 #endif
15080 #include <stdio.h>
15081 $selecttype b;
15082 #define S sizeof(*(b))
15083 #define MINBITS 64
15084 #define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
15085 #define NBITS  (NBYTES * 8)
15086 int main() {
15087     char s[NBYTES];
15088     struct timeval t;
15089     int i;
15090     FILE* fp;
15091     int fd;
15092
15093     fclose(stdin);
15094     fp = fopen("try.c", "r");
15095     if (fp == 0)
15096       exit(1);
15097     fd = fileno(fp);
15098     if (fd < 0)
15099       exit(2);
15100     b = ($selecttype)s;
15101     for (i = 0; i < NBITS; i++)
15102         FD_SET(i, b);
15103     t.tv_sec  = 0;
15104     t.tv_usec = 0;
15105     select(fd + 1, b, 0, 0, &t);
15106     for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
15107     printf("%d\n", i + 1);
15108     return 0;
15109 }
15110 EOCP
15111                 set try
15112                 if eval $compile_ok; then
15113                         selectminbits=`$run ./try`
15114                         case "$selectminbits" in
15115                         '')     cat >&4 <<EOM
15116 Cannot figure out on how many bits at a time your select() operates.
15117 I'll play safe and guess it is 32 bits.
15118 EOM
15119                                 selectminbits=32
15120                                 bits="32 bits"
15121                                 ;;
15122                         1)      bits="1 bit" ;;
15123                         *)      bits="$selectminbits bits" ;;
15124                         esac
15125                         echo "Your select() operates on $bits at a time." >&4
15126                 else
15127                         rp='What is the minimum number of bits your select() operates on?'
15128                         case "$byteorder" in
15129                         1234|12345678)  dflt=32 ;;
15130                         *)              dflt=1  ;;
15131                         esac
15132                         . ./myread
15133                         val=$ans
15134                         selectminbits="$val"
15135                 fi
15136                 $rm -f try.* try
15137                 ;;
15138         *)      : no select, so pick a harmless default
15139                 selectminbits='32'
15140                 ;;
15141         esac
15142         ;;
15143 esac
15144
15145 : Trace out the files included by signal.h, then look for SIGxxx names.
15146 : Remove SIGARRAYSIZE used by HPUX.
15147 : Remove SIGSTKSIZE used by Linux.
15148 : Remove SIGSTKSZ used by Posix.
15149 : Remove SIGTYP void lines used by OS2.
15150 : Some cpps, like os390, dont give the file name anywhere
15151 if [ "X$fieldn" = X ]; then
15152         : Just make some guesses.  We check them later.
15153         xxx='/usr/include/signal.h /usr/include/sys/signal.h'
15154 else
15155         xxx=`echo '#include <signal.h>' |
15156         $cppstdin $cppminus $cppflags 2>/dev/null |
15157         $grep '^[       ]*#.*include' | 
15158         $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sed 's!\\\\\\\\!/!g' | $sort | $uniq`
15159 fi
15160 : Check this list of files to be sure we have parsed the cpp output ok.
15161 : This will also avoid potentially non-existent files, such 
15162 : as ../foo/bar.h
15163 xxxfiles=''
15164 for xx in $xxx /dev/null ; do
15165         $test -f "$xx" && xxxfiles="$xxxfiles $xx"
15166 done
15167 : If we have found no files, at least try signal.h
15168 case "$xxxfiles" in
15169 '')     xxxfiles=`./findhdr signal.h` ;;
15170 esac
15171 xxx=`awk '
15172 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
15173         print substr($2, 4, 20)
15174 }
15175 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
15176         print substr($3, 4, 20)
15177 }' $xxxfiles`
15178 : Append some common names just in case the awk scan failed.
15179 xxx="$xxx ABRT ALRM BUS CANCEL CHLD CLD CONT DIL EMT FPE"
15180 xxx="$xxx FREEZE HUP ILL INT IO IOT KILL LOST LWP PHONE"
15181 xxx="$xxx PIPE POLL PROF PWR QUIT RTMAX RTMIN SEGV STKFLT STOP"
15182 xxx="$xxx SYS TERM THAW TRAP TSTP TTIN TTOU URG USR1 USR2"
15183 xxx="$xxx USR3 USR4 VTALRM WAITING WINCH WIND WINDOW XCPU XFSZ"
15184
15185 : generate a few handy files for later
15186 $cat > signal.c <<'EOCP'
15187 #include <sys/types.h>
15188 #include <signal.h>
15189 #include <stdio.h>
15190 int main() {
15191
15192 /* Strange style to avoid deeply-nested #if/#else/#endif */
15193 #ifndef NSIG
15194 #  ifdef _NSIG
15195 #    define NSIG (_NSIG)
15196 #  endif
15197 #endif
15198
15199 #ifndef NSIG
15200 #  ifdef SIGMAX
15201 #    define NSIG (SIGMAX+1)
15202 #  endif
15203 #endif
15204
15205 #ifndef NSIG
15206 #  ifdef SIG_MAX
15207 #    define NSIG (SIG_MAX+1)
15208 #  endif
15209 #endif
15210
15211 #ifndef NSIG
15212 #  ifdef MAXSIG
15213 #    define NSIG (MAXSIG+1)
15214 #  endif
15215 #endif
15216
15217 #ifndef NSIG
15218 #  ifdef MAX_SIG
15219 #    define NSIG (MAX_SIG+1)
15220 #  endif
15221 #endif
15222
15223 #ifndef NSIG
15224 #  ifdef SIGARRAYSIZE
15225 #    define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
15226 #  endif
15227 #endif
15228
15229 #ifndef NSIG
15230 #  ifdef _sys_nsig
15231 #    define NSIG (_sys_nsig) /* Solaris 2.5 */
15232 #  endif
15233 #endif
15234
15235 /* Default to some arbitrary number that's big enough to get most
15236    of the common signals.
15237 */
15238 #ifndef NSIG
15239 #    define NSIG 50
15240 #endif
15241
15242 printf("NSIG %d\n", NSIG);
15243
15244 #ifndef JUST_NSIG
15245
15246 EOCP
15247
15248 echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
15249 {
15250         printf "#ifdef SIG"; printf $1; printf "\n"
15251         printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
15252         printf $1; printf ");\n"
15253         printf "#endif\n"
15254 }
15255 END {
15256         printf "#endif /* JUST_NSIG */\n";
15257         printf "exit(0);\n}\n";
15258 }
15259 ' >>signal.c
15260 $cat >signal.awk <<'EOP'
15261 BEGIN { ndups = 0 }
15262 $1 ~ /^NSIG$/ { nsig = $2 }
15263 ($1 !~ /^NSIG$/) && (NF == 2) {
15264     if ($2 > maxsig) { maxsig = $2 }
15265     if (sig_name[$2]) {
15266         dup_name[ndups] = $1
15267         dup_num[ndups] = $2
15268         ndups++ 
15269     }
15270     else {
15271         sig_name[$2] = $1
15272         sig_num[$2] = $2
15273     }
15274 }
15275 END { 
15276     if (nsig == 0) {
15277         nsig = maxsig + 1
15278     }
15279     printf("NSIG %d\n", nsig);
15280     for (n = 1; n < nsig; n++) {
15281         if (sig_name[n]) {
15282             printf("%s %d\n", sig_name[n], sig_num[n])
15283         }
15284         else {
15285             printf("NUM%d %d\n", n, n) 
15286         }
15287     }
15288     for (n = 0; n < ndups; n++) {
15289         printf("%s %d\n", dup_name[n], dup_num[n])
15290     }
15291 }
15292 EOP
15293 $cat >signal_cmd <<EOS
15294 $startsh
15295 if $test -s signal.lst; then
15296     echo "Using your existing signal.lst file"
15297         exit 0
15298 fi
15299 xxx="$xxx"
15300 EOS
15301 $cat >>signal_cmd <<'EOS'
15302
15303 set signal
15304 if eval $compile_ok; then
15305         $run ./signal$_exe | $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
15306 else
15307         echo "(I can't seem be able to compile the whole test program)" >&4
15308         echo "(I'll try it in little pieces.)" >&4
15309         set signal -DJUST_NSIG
15310         if eval $compile_ok; then
15311                 $run ./signal$_exe > signal.nsg
15312                 $cat signal.nsg
15313         else
15314                 echo "I can't seem to figure out how many signals you have." >&4
15315                 echo "Guessing 50." >&4
15316                 echo 'NSIG 50' > signal.nsg
15317         fi
15318         : Now look at all the signal names, one at a time.
15319         for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
15320                 $cat > signal.c <<EOCP
15321 #include <sys/types.h>
15322 #include <signal.h>
15323 #include <stdio.h>
15324 int main() {
15325 printf("$xx %d\n", SIG${xx});
15326 return 0;
15327 }
15328 EOCP
15329                 set signal
15330                 if eval $compile; then
15331                         echo "SIG${xx} found."
15332                         $run ./signal$_exe  >> signal.ls1
15333                 else
15334                         echo "SIG${xx} NOT found."
15335                 fi
15336         done
15337         if $test -s signal.ls1; then
15338                 $cat signal.nsg signal.ls1 |
15339                         $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
15340         fi
15341
15342 fi
15343 if $test -s signal.lst; then
15344         :
15345 else
15346         echo "(AAK! I can't compile the test programs -- Guessing)" >&4
15347         echo 'kill -l' >signal
15348         set X `csh -f <signal`
15349         $rm -f signal
15350         shift
15351         case $# in
15352         0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
15353         esac
15354         echo $@ | $tr ' ' $trnl | \
15355             $awk '{ printf "%s %d\n", $1, ++s; }
15356                   END { printf "NSIG %d\n", ++s }' >signal.lst
15357 fi
15358 $rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
15359 EOS
15360 chmod a+x signal_cmd
15361 $eunicefix signal_cmd
15362
15363 : generate list of signal names
15364 echo " "
15365 case "$sig_name_init" in
15366 '') doinit=yes ;;
15367 *)  case "$sig_num_init" in
15368     ''|*,*) doinit=yes ;;
15369     esac ;;
15370 esac
15371 case "$doinit" in
15372 yes)
15373         echo "Generating a list of signal names and numbers..." >&4
15374         . ./signal_cmd
15375         sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
15376         sig_name=`$awk 'BEGIN { printf "ZERO " }
15377                         !/^NSIG/ { printf "%s ", $1 }' signal.lst`
15378         sig_num=`$awk  'BEGIN { printf "0 " }
15379                         !/^NSIG/ { printf "%d ", $2 }' signal.lst`
15380         sig_name_init=`$awk 'BEGIN      { printf "\"ZERO\", " }
15381                              !/^NSIG/   { printf "\"%s\", ", $1 }
15382                              END        { printf "0\n" }' signal.lst`
15383         sig_num_init=`$awk  'BEGIN      { printf "0, " }
15384                              !/^NSIG/   { printf "%d, ", $2}
15385                              END        { printf "0\n"}' signal.lst`
15386         ;;
15387 esac
15388 echo "The following $sig_count signals are available:"
15389 echo " "
15390 echo $sig_name | $awk \
15391 'BEGIN { linelen = 0 }
15392 {
15393         for (i = 1; i <= NF; i++) {
15394                 name = "SIG" $i " "
15395                 linelen = linelen + length(name)
15396                 if (linelen > 70) {
15397                         printf "\n"
15398                         linelen = length(name)
15399                 }
15400                 printf "%s", name
15401         }
15402         printf "\n"
15403 }'
15404 sig_size=`echo $sig_name | awk '{print NF}'`
15405 $rm -f signal signal.c signal.awk signal.lst signal_cmd 
15406
15407 echo " "
15408 case "$sizetype" in
15409 *_t) zzz="$sizetype"    ;;
15410 *)   zzz="filesize"     ;;
15411 esac
15412 echo "Checking the size of $zzz..." >&4 
15413 cat > try.c <<EOCP
15414 #include <sys/types.h>
15415 #include <stdio.h>
15416 int main() {
15417     printf("%d\n", (int)sizeof($sizetype));
15418     exit(0);
15419 }
15420 EOCP
15421 set try
15422 if eval $compile_ok; then
15423         yyy=`$run ./try`
15424         case "$yyy" in
15425         '')     sizesize=4
15426                 echo "(I can't execute the test program--guessing $sizesize.)" >&4
15427                 ;;
15428         *)      sizesize=$yyy
15429                 echo "Your $zzz size is $sizesize bytes."
15430                 ;;
15431         esac
15432 else
15433         sizesize=4
15434         echo "(I can't compile the test program--guessing $sizesize.)" >&4
15435 fi
15436
15437
15438 : check for socklen_t
15439 echo " "
15440 echo "Checking to see if you have socklen_t..." >&4
15441 $cat >try.c <<EOCP
15442 #include <sys/types.h>
15443 #$d_socket HAS_SOCKET
15444 #ifdef HAS_SOCKET
15445 #include <sys/socket.h>
15446 #endif
15447 int main() { socklen_t x = 16; }
15448 EOCP
15449 set try
15450 if eval $compile; then
15451         val="$define"
15452         echo "You have socklen_t."
15453 else
15454         val="$undef"
15455         echo "You do not have socklen_t."
15456         case "$sizetype" in
15457         size_t) echo "(You do have size_t, that might work. Some people are happy with just an int.)" ;;
15458         esac
15459 fi
15460 $rm -f try try.*
15461 set d_socklen_t
15462 eval $setvar
15463
15464 : see if this is a socks.h system
15465 set socks.h i_socks
15466 eval $inhdr
15467
15468 : check for type of the size argument to socket calls
15469 case "$d_socket" in
15470 "$define")
15471         $cat <<EOM
15472
15473 Checking to see what type is the last argument of accept().
15474 EOM
15475         yyy=''
15476         case "$d_socklen_t" in
15477         "$define") yyy="$yyy socklen_t"
15478         esac
15479         yyy="$yyy $sizetype int long unsigned"
15480         for xxx in $yyy; do
15481                 case "$socksizetype" in
15482                 '')     try="extern int accept(int, struct sockaddr *, $xxx *);"
15483                         case "$usesocks" in
15484                         "$define")
15485                                 if ./protochk "$try" $i_systypes sys/types.h $d_socket sys/socket.h literal '#define INCLUDE_PROTOTYPES' $i_socks socks.h.; then
15486                                         echo "Your system accepts '$xxx *' for the last argument of accept()."
15487                                         socksizetype="$xxx"
15488                                 fi
15489                                 ;;
15490                         *)      if ./protochk "$try"  $i_systypes sys/types.h $d_socket sys/socket.h; then
15491                                         echo "Your system accepts '$xxx *' for the last argument of accept()."
15492                                         socksizetype="$xxx"
15493                                 fi
15494                                 ;;
15495                         esac
15496                         ;;
15497                 esac
15498         done
15499 : In case none of those worked, prompt the user.
15500         case "$socksizetype" in
15501         '')     rp='What is the type for socket address structure sizes?'
15502                 dflt='int'
15503                 . ./myread
15504                 socksizetype=$ans
15505                 ;;
15506         esac
15507         ;;
15508 *)      : no sockets, so pick relatively harmless default
15509         socksizetype='int'
15510         ;;
15511 esac
15512
15513 : see what type is used for signed size_t
15514 set ssize_t ssizetype int stdio.h sys/types.h
15515 eval $typedef
15516 dflt="$ssizetype"
15517 $cat > try.c <<EOM
15518 #include <stdio.h>
15519 #include <sys/types.h>
15520 #define Size_t $sizetype
15521 #define SSize_t $dflt
15522 int main()
15523 {
15524         if (sizeof(Size_t) == sizeof(SSize_t))
15525                 printf("$dflt\n");
15526         else if (sizeof(Size_t) == sizeof(int))
15527                 printf("int\n");
15528         else 
15529                 printf("long\n");
15530         exit(0);
15531 }
15532 EOM
15533 echo " "
15534 set try
15535 if eval $compile_ok && $run ./try > /dev/null; then
15536         ssizetype=`$run ./try`
15537         echo "I'll be using $ssizetype for functions returning a byte count." >&4
15538 else
15539         $cat >&4 <<EOM
15540 Help! I can't compile and run the ssize_t test program: please enlighten me!
15541 (This is probably a misconfiguration in your system or libraries, and
15542 you really ought to fix it.  Still, I'll try anyway.)
15543
15544 I need a type that is the same size as $sizetype, but is guaranteed to
15545 be signed.  Common values are ssize_t, int and long.
15546
15547 EOM
15548         rp="What signed type is the same size as $sizetype?"
15549         . ./myread
15550         ssizetype="$ans"
15551 fi
15552 $rm -f try try.*
15553
15554 : see what type of char stdio uses.
15555 echo " "
15556 echo '#include <stdio.h>' | $cppstdin $cppminus > stdioh
15557 if $contains 'unsigned.*char.*_ptr;' stdioh >/dev/null 2>&1 ; then
15558         echo "Your stdio uses unsigned chars." >&4
15559         stdchar="unsigned char"
15560 else
15561         echo "Your stdio uses signed chars." >&4
15562         stdchar="char"
15563 fi
15564 $rm -f stdioh
15565
15566
15567
15568 : see if time exists
15569 echo " "
15570 if test "X$d_time" = X -o X"$timetype" = X; then
15571     if set time val -f d_time; eval $csym; $val; then
15572                 echo 'time() found.' >&4
15573                 val="$define"
15574                 rp="What is the type returned by time() on this system?"
15575                 set time_t timetype long stdio.h sys/types.h
15576                 eval $typedef_ask
15577     else
15578                 echo 'time() not found, hope that will do.' >&4
15579                 val="$undef"
15580                 timetype='int';
15581     fi
15582     set d_time
15583     eval $setvar
15584 fi
15585
15586 : see what type uids are declared as in the kernel
15587 echo " "
15588 echo "Looking for the type for user ids returned by getuid()."
15589 set uid_t uidtype xxx stdio.h sys/types.h
15590 eval $typedef
15591 case "$uidtype" in
15592 xxx)
15593         xxx=`./findhdr sys/user.h`
15594         set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
15595         case $1 in
15596         unsigned) dflt="$1 $2" ;;
15597         *) dflt="$1" ;;
15598         esac
15599         ;;
15600 *) dflt="$uidtype";;
15601 esac
15602 case "$uidtype" in
15603 uid_t)  echo "uid_t found." ;;
15604 *)      rp="What is the type for user ids returned by getuid()?"
15605         . ./myread
15606         uidtype="$ans"
15607         ;;
15608 esac
15609
15610 echo " "
15611 case "$uidtype" in
15612 *_t) zzz="$uidtype"     ;;
15613 *)   zzz="uid"          ;;
15614 esac
15615 echo "Checking the size of $zzz..." >&4 
15616 cat > try.c <<EOCP
15617 #include <sys/types.h>
15618 #include <stdio.h>
15619 int main() {
15620     printf("%d\n", (int)sizeof($uidtype));
15621     exit(0);
15622 }
15623 EOCP
15624 set try
15625 if eval $compile_ok; then
15626         yyy=`$run ./try`
15627         case "$yyy" in
15628         '')     uidsize=4
15629                 echo "(I can't execute the test program--guessing $uidsize.)" >&4
15630                 ;;
15631         *)      uidsize=$yyy
15632                 echo "Your $zzz is $uidsize bytes long."
15633                 ;;
15634         esac
15635 else
15636         uidsize=4
15637         echo "(I can't compile the test program--guessing $uidsize.)" >&4
15638 fi
15639
15640 echo " "
15641 case "$uidtype" in
15642 *_t) zzz="$uidtype"     ;;
15643 *)   zzz="uid"          ;;
15644 esac
15645 echo "Checking the sign of $zzz..." >&4
15646 cat > try.c <<EOCP
15647 #include <sys/types.h>
15648 #include <stdio.h>
15649 int main() {
15650         $uidtype foo = -1;
15651         if (foo < 0)
15652                 printf("-1\n");
15653         else
15654                 printf("1\n");
15655 }
15656 EOCP
15657 set try
15658 if eval $compile; then
15659         yyy=`$run ./try`
15660         case "$yyy" in
15661         '')     uidsign=1
15662                 echo "(I can't execute the test program--guessing unsigned.)" >&4
15663                 ;;
15664         *)      uidsign=$yyy
15665                 case "$uidsign" in
15666                  1) echo "Your $zzz is unsigned." ;;
15667                 -1) echo "Your $zzz is signed."   ;;
15668                 esac
15669                 ;;
15670         esac
15671 else
15672         uidsign=1
15673         echo "(I can't compile the test program--guessing unsigned.)" >&4
15674 fi
15675
15676
15677
15678 echo " "
15679 $echo "Checking the format string to be used for uids..." >&4
15680
15681 case "$uidsign" in
15682 -1)     if $test X"$uidsize" = X"$ivsize"; then
15683                 uidformat="$ivdformat"
15684         else
15685                 if $test X"$uidsize" = X"$longsize"; then
15686                         uidformat='"ld"'
15687                 else
15688                         if $test X"$uidsize" = X"$intsize"; then
15689                                 uidformat='"d"'
15690                         else
15691                                 if $test X"$uidsize" = X"$shortsize"; then
15692                                         uidformat='"hd"'
15693                                 fi
15694                         fi
15695                 fi
15696         fi
15697         ;;
15698 *)      if $test X"$uidsize" = X"$uvsize"; then
15699                 uidformat="$uvuformat"
15700         else
15701                 if $test X"$uidsize" = X"$longsize"; then
15702                         uidformat='"lu"'
15703                 else
15704                         if $test X"$uidsize" = X"$intsize"; then
15705                                 uidformat='"u"'
15706                         else
15707                                 if $test X"$uidsize" = X"$shortsize"; then
15708                                         uidformat='"hu"'
15709                                 fi
15710                         fi
15711                 fi
15712         fi
15713         ;;
15714 esac
15715
15716 : determine compiler compiler
15717 case "$yacc" in
15718 '')
15719         dflt=yacc;;
15720 *)
15721         dflt="$yacc";;
15722 esac
15723 echo " "
15724 comp='yacc'
15725 if $test -f "$byacc"; then
15726         dflt="$byacc"
15727         comp="byacc or $comp"
15728 fi
15729 if $test -f "$bison"; then
15730         comp="$comp or bison -y"
15731 fi
15732 rp="Which compiler compiler ($comp) shall I use?"
15733 . ./myread
15734 yacc="$ans"
15735 case "$yacc" in
15736 *bis*)
15737         case "$yacc" in
15738         *-y*) ;;
15739         *)
15740                 yacc="$yacc -y"
15741                 echo "(Adding -y option to bison to get yacc-compatible behaviour.)"
15742                 ;;
15743         esac
15744         ;;
15745 esac
15746
15747 : see if fcntl.h is there
15748 val=''
15749 set fcntl.h val
15750 eval $inhdr
15751
15752 : see if we can include fcntl.h
15753 case "$val" in
15754 "$define")
15755         echo " "
15756         if $h_fcntl; then
15757                 val="$define"
15758                 echo "We'll be including <fcntl.h>." >&4
15759         else
15760                 val="$undef"
15761                 if $h_sysfile; then
15762         echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
15763                 else
15764                         echo "We won't be including <fcntl.h>." >&4
15765                 fi
15766         fi
15767         ;;
15768 *)
15769         h_fcntl=false
15770         val="$undef"
15771         ;;
15772 esac
15773 set i_fcntl
15774 eval $setvar
15775
15776 : see if this is a iconv.h system
15777 set iconv.h i_iconv
15778 eval $inhdr
15779
15780 : see if this is a ieeefp.h system
15781 set ieeefp.h i_ieeefp
15782 eval $inhdr
15783
15784 : see if this is a libutil.h system
15785 set libutil.h i_libutil
15786 eval $inhdr
15787
15788 : see if locale.h is available
15789 set locale.h i_locale
15790 eval $inhdr
15791
15792 : see if mach cthreads are available
15793 if test "X$usethreads" = "X$define"; then
15794         set mach/cthreads.h i_machcthr
15795         eval $inhdr
15796 else
15797         i_machcthr="$undef"
15798 fi
15799
15800
15801
15802 : see if this is a math.h system
15803 set math.h i_math
15804 eval $inhdr
15805
15806 : see if this is a mntent.h system
15807 set mntent.h i_mntent
15808 eval $inhdr
15809
15810 : see if ndbm.h is available
15811 set ndbm.h t_ndbm
15812 eval $inhdr
15813 case "$t_ndbm" in
15814 $define)
15815         : see if dbm_open exists
15816         set dbm_open d_dbm_open
15817         eval $inlibc
15818         case "$d_dbm_open" in
15819         $undef)
15820                 t_ndbm="$undef"
15821                 echo "We won't be including <ndbm.h>"
15822                 ;;
15823         esac
15824         ;;
15825 esac
15826 val="$t_ndbm"
15827 set i_ndbm
15828 eval $setvar
15829
15830 : see if net/errno.h is available
15831 val=''
15832 set net/errno.h val
15833 eval $inhdr
15834
15835 : Unfortunately, it causes problems on some systems.  Arrgh.
15836 case "$val" in
15837 $define)
15838         cat > try.c <<'EOM'
15839 #include <stdio.h>
15840 #include <errno.h>
15841 #include <net/errno.h>
15842 int func()
15843 {
15844         return ENOTSOCK;
15845 }
15846 EOM
15847         if $cc $ccflags -c try.c >/dev/null 2>&1; then
15848                 echo "We'll be including <net/errno.h>." >&4
15849         else
15850                 echo "We won't be including <net/errno.h>." >&4
15851                 val="$undef"
15852         fi
15853         $rm -f try.* try
15854         ;;
15855 esac
15856 set i_neterrno
15857 eval $setvar
15858
15859 : see if netinet/tcp.h is available
15860 set netinet/tcp.h i_netinettcp
15861 eval $inhdr
15862
15863 : see if this is a poll.h system
15864 set poll.h i_poll
15865 eval $inhdr
15866
15867 : see if this is a prot.h system
15868 set prot.h i_prot
15869 eval $inhdr
15870
15871 echo " "
15872 $echo "Guessing which symbols your C compiler and preprocessor define..." >&4 
15873 $cat <<'EOSH' > Cppsym.know
15874 a29k ABI64 aegis AES_SOURCE AIX AIX32 AIX370
15875 AIX41 AIX42 AIX43 AIX_SOURCE aixpc ALL_SOURCE
15876 alliant alpha am29000 AM29000 AMD64 amiga AMIGAOS AMIX
15877 ansi ANSI_C_SOURCE apollo ardent ARM32 atarist att386 att3b
15878 BeOS BIG_ENDIAN BIT_MSF bsd BSD bsd43 bsd4_2 bsd4_3 BSD4_3 bsd4_4
15879 BSD_4_3 BSD_4_4 BSD_NET2 BSD_TIME BSD_TYPES BSDCOMPAT bsdi
15880 bull c cadmus clipper CMU COFF COMPILER_VERSION
15881 concurrent convex cpu cray CRAY CRAYMPP ctix CX_UX
15882 CYGWIN DGUX DGUX_SOURCE DJGPP dmert DOLPHIN DPX2 DSO
15883 Dynix DynixPTX ELF encore EPI EXTENSIONS FILE_OFFSET_BITS
15884 FreeBSD GCC_NEW_VARARGS gcos gcx gimpel
15885 GNU_SOURCE GNUC GNUC_MINOR GO32 gould GOULD_PN
15886 H3050R H3050RX hbullx20 hcx host_mips
15887 hp200 hp300 hp700 HP700 hp800 hp9000
15888 hp9000s200 hp9000s300 hp9000s400 hp9000s500
15889 hp9000s700 hp9000s800 hp9k8 hp_osf hppa hpux HPUX_SOURCE
15890 i186 i286 i386 i486 i586 i686 i8086 i80960 i860 I960
15891 IA64 iAPX286 ibm ibm032 ibmesa IBMR2 ibmrt ILP32 ILP64
15892 INLINE_INTRINSICS INTRINSICS INT64 interdata is68k ksr1
15893 LANGUAGE_C LARGE_FILE_API LARGEFILE64_SOURCE
15894 LARGEFILE_SOURCE LFS64_LARGEFILE LFS_LARGEFILE
15895 Linux LITTLE_ENDIAN LONG64 LONG_DOUBLE LONG_LONG
15896 LONGDOUBLE LONGLONG LP64 luna luna88k Lynx
15897 M68000 m68k m88100 m88k M88KBCS_TARGET M_COFF
15898 M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM M_SYS3
15899 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX MACH machine MachTen
15900 MATH_HAS_NO_SIDE_EFFECTS
15901 mc300 mc500 mc68000 mc68010 mc68020 mc68030 mc68040
15902 mc68060 mc68k mc68k32 mc700 mc88000 mc88100 merlin
15903 mert MiNT mips MIPS_FPSET MIPS_ISA MIPS_SIM MIPS_SZINT
15904 MIPS_SZLONG MIPS_SZPTR MIPSEB MIPSEL MODERN_C motorola
15905 mpeix MSDOS MTXINU MULTIMAX mvs MVS n16 ncl_el ncl_mr
15906 NetBSD news1500 news1700 news1800 news1900 news3700
15907 news700 news800 news900 NeXT NLS nonstopux ns16000 ns32000
15908 ns32016 ns32332 ns32k nsc32000
15909 OCS88 OEMVS OpenBSD os OS2 OS390 osf OSF1 OSF_SOURCE
15910 pa_risc PA_RISC1_1 PA_RISC2_0 PARAGON parisc
15911 pc532 pdp11 PGC PIC plexus PORTAR posix
15912 POSIX1B_SOURCE POSIX2_SOURCE POSIX4_SOURCE
15913 POSIX_C_SOURCE POSIX_SOURCE POWER
15914 PROTOTYPES PWB pyr QNX R3000 REENTRANT RES Rhapsody RISC6000
15915 riscix riscos RT S390 SA110 scs SCO sequent sgi SGI_SOURCE SH3 sinix
15916 SIZE_INT SIZE_LONG SIZE_PTR SOCKET_SOURCE SOCKETS_SOURCE
15917 sony sony_news sonyrisc sparc sparclite spectrum
15918 stardent stdc STDC_EXT stratos sun sun3 sun386
15919 Sun386i svr3 svr4 SVR4_2 SVR4_SOURCE svr5
15920 SX system SYSTYPE_BSD SYSTYPE_BSD43 SYSTYPE_BSD44
15921 SYSTYPE_SVR4 SYSTYPE_SVR5 SYSTYPE_SYSV SYSV SYSV3 SYSV4 SYSV5
15922 sysV68 sysV88 Tek4132 Tek4300 titan
15923 TM3200 TM5400 TM5600
15924 tower tower32 tower32_200 tower32_600 tower32_700
15925 tower32_800 tower32_850 tss
15926 u370 u3b u3b2 u3b20 u3b200 u3b20d u3b5
15927 ultrix UMAXV UnicomPBB UnicomPBD UNICOS UNICOSMK
15928 unix UNIX95 UNIX99 unixpc unos USGr4 USGr4_2
15929 Utek UTek UTS UWIN uxpm uxps vax venix VMESA vms xenix Xenix286
15930 XOPEN_SOURCE XOPEN_SOURCE_EXTENDED XPG2 XPG2_EXTENDED
15931 XPG3 XPG3_EXTENDED XPG4 XPG4_EXTENDED
15932 z8000
15933 EOSH
15934 # Maybe put other stuff here too.
15935 cat <<EOSH >>Cppsym.know
15936 $osname
15937 EOSH
15938 ./tr '[a-z]' '[A-Z]' < Cppsym.know > Cppsym.a
15939 ./tr '[A-Z]' '[a-z]' < Cppsym.know > Cppsym.b
15940 $cat Cppsym.know > Cppsym.c
15941 $cat Cppsym.a Cppsym.b Cppsym.c | $tr ' ' $trnl | $sort | $uniq > Cppsym.know
15942 $rm -f Cppsym.a Cppsym.b Cppsym.c
15943 cat <<EOSH > Cppsym
15944 $startsh
15945 if $test \$# -gt 0; then
15946     echo \$* | $tr " " "$trnl" | ./Cppsym.try > Cppsym.got
15947     if $test -s Cppsym.got; then
15948         $rm -f Cppsym.got
15949         exit 0
15950     fi
15951     $rm -f Cppsym.got
15952     exit 1
15953 else
15954     $tr " " "$trnl" | ./Cppsym.try
15955     exit 0
15956 fi
15957 EOSH
15958 chmod +x Cppsym
15959 $eunicefix Cppsym
15960 cat <<EOSH > Cppsym.try
15961 $startsh
15962 cat <<'EOCP' > try.c
15963 #include <stdio.h>
15964 int main() {
15965 EOCP
15966 $awk \\
15967 EOSH
15968 cat <<'EOSH' >> Cppsym.try
15969 'length($1) > 0 {
15970     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
15971     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
15972     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
15973     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
15974 }'       >> try.c
15975 echo 'return 0;}' >> try.c
15976 EOSH
15977 cat <<EOSH >> Cppsym.try
15978 ccflags="$ccflags"
15979 case "$osname-$gccversion" in
15980 irix-) ccflags="\$ccflags -woff 1178" ;;
15981 os2-*) ccflags="\$ccflags -Zlinker /PM:VIO" ;;
15982 esac
15983 $cc -o try $optimize \$ccflags $ldflags try.c $libs && $run ./try
15984 EOSH
15985 chmod +x Cppsym.try
15986 $eunicefix Cppsym.try
15987 ./Cppsym < Cppsym.know > Cppsym.true
15988 : now check the C compiler for additional symbols
15989 postprocess_cc_v=''
15990 case "$osname" in
15991 aix) postprocess_cc_v="|$tr , ' '" ;;
15992 esac
15993 $cat >ccsym <<EOS
15994 $startsh
15995 $cat >tmp.c <<EOF
15996 extern int foo;
15997 EOF
15998 for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
15999 do
16000         case "\$i" in
16001         -D*) echo "\$i" | $sed 's/^-D//';;
16002         -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A\(.*\)(\(.*\))/\1=\2/';;
16003         esac
16004 done
16005 $rm -f try.c
16006 EOS
16007 postprocess_cc_v=''
16008 chmod +x ccsym
16009 $eunicefix ccsym
16010 ./ccsym > ccsym1.raw
16011 if $test -s ccsym1.raw; then
16012        $sort ccsym1.raw | $uniq >ccsym.raw
16013 else
16014        mv ccsym1.raw ccsym.raw
16015 fi
16016
16017 $awk '/\=/ { print $0; next }
16018         { print $0"=1" }' ccsym.raw >ccsym.list
16019 $awk '/\=/ { print $0; next }
16020         { print $0"=1" }' Cppsym.true >ccsym.true
16021 $comm -13 ccsym.true ccsym.list >ccsym.own
16022 $comm -12 ccsym.true ccsym.list >ccsym.com
16023 $comm -23 ccsym.true ccsym.list >ccsym.cpp
16024 also=''
16025 if $test -z ccsym.raw; then
16026         echo "Your C compiler doesn't seem to define any symbols!" >&4
16027         echo " "
16028         echo "However, your C preprocessor defines the following symbols:"
16029         $cat Cppsym.true
16030         ccsymbols=''
16031         cppsymbols=`$cat Cppsym.true`
16032         cppsymbols=`echo $cppsymbols`
16033         cppccsymbols="$cppsymbols"
16034 else
16035         if $test -s ccsym.com; then
16036                 echo "Your C compiler and pre-processor define these symbols:"
16037                 $sed -e 's/\(..*\)=.*/\1/' ccsym.com
16038                 also='also '
16039                 symbols='ones'
16040                 cppccsymbols=`$cat ccsym.com`
16041                 cppccsymbols=`echo $cppccsymbols`
16042                 $test "$silent" || sleep 1
16043         fi
16044         if $test -s ccsym.cpp; then
16045                 $test "$also" && echo " "
16046                 echo "Your C pre-processor ${also}defines the following symbols:"
16047                 $sed -e 's/\(..*\)=.*/\1/' ccsym.cpp
16048                 also='further '
16049                 cppsymbols=`$cat ccsym.cpp`
16050                 cppsymbols=`echo $cppsymbols`
16051                 $test "$silent" || sleep 1
16052         fi
16053         if $test -s ccsym.own; then
16054                 $test "$also" && echo " "
16055                 echo "Your C compiler ${also}defines the following cpp symbols:"
16056                 $sed -e 's/\(..*\)=1/\1/' ccsym.own
16057                 $sed -e 's/\(..*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
16058                 ccsymbols=`$cat ccsym.own`
16059                 ccsymbols=`echo $ccsymbols`
16060                 $test "$silent" || sleep 1
16061         fi
16062 fi
16063
16064 : see if this is a termio system
16065 val="$undef"
16066 val2="$undef"
16067 val3="$undef"
16068 if $test `./findhdr termios.h`; then
16069         set tcsetattr i_termios
16070         eval $inlibc
16071         val3="$i_termios"
16072 fi
16073 echo " "
16074 case "$val3" in
16075 "$define") echo "You have POSIX termios.h... good!" >&4;;
16076 *) if ./Cppsym pyr; then
16077                 case "`/bin/universe`" in
16078                 ucb) if $test `./findhdr sgtty.h`; then
16079                                 val2="$define"
16080                                 echo "<sgtty.h> found." >&4
16081                         else
16082                                 echo "System is pyramid with BSD universe."
16083                                 echo "<sgtty.h> not found--you could have problems." >&4
16084                         fi;;
16085                 *) if $test `./findhdr termio.h`; then
16086                                 val="$define"
16087                                 echo "<termio.h> found." >&4
16088                         else
16089                                 echo "System is pyramid with USG universe."
16090                                 echo "<termio.h> not found--you could have problems." >&4
16091                         fi;;
16092                 esac
16093         elif ./usg; then
16094                 if $test `./findhdr termio.h`; then
16095                         echo "<termio.h> found." >&4
16096                         val="$define"
16097                 elif $test `./findhdr sgtty.h`; then
16098                         echo "<sgtty.h> found." >&4
16099                         val2="$define"
16100                 else
16101 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
16102                 fi
16103         else
16104                 if $test `./findhdr sgtty.h`; then
16105                         echo "<sgtty.h> found." >&4
16106                         val2="$define"
16107                 elif $test `./findhdr termio.h`; then
16108                         echo "<termio.h> found." >&4
16109                         val="$define"
16110                 else
16111 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
16112                 fi
16113         fi;;
16114 esac
16115 set i_termio; eval $setvar
16116 val=$val2; set i_sgtty; eval $setvar
16117 val=$val3; set i_termios; eval $setvar
16118
16119 : see if this is a shadow.h system
16120 set shadow.h i_shadow
16121 eval $inhdr
16122
16123 : see if stddef is available
16124 set stddef.h i_stddef
16125 eval $inhdr
16126
16127 : see if this is a sunmath.h system
16128 set sunmath.h i_sunmath
16129 eval $inhdr
16130
16131 : see if sys/access.h is available
16132 set sys/access.h i_sysaccess
16133 eval $inhdr
16134
16135 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
16136 set sys/filio.h i_sysfilio
16137 eval $inhdr
16138 echo " "
16139 if $test `./findhdr sys/ioctl.h`; then
16140         val="$define"
16141         echo '<sys/ioctl.h> found.' >&4
16142 else
16143         val="$undef"
16144         if $test $i_sysfilio = "$define"; then
16145             echo '<sys/ioctl.h> NOT found.' >&4
16146         else
16147                 $test $i_sgtty = "$define" && xxx="sgtty.h"
16148                 $test $i_termio = "$define" && xxx="termio.h"
16149                 $test $i_termios = "$define" && xxx="termios.h"
16150 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
16151         fi
16152 fi
16153 set i_sysioctl
16154 eval $setvar
16155
16156 : see if socket ioctl defs are in sys/sockio.h
16157 echo " "
16158 xxx=`./findhdr sys/sockio.h`
16159 if $test "$xxx"; then
16160         if $contains SIOCATMARK $xxx >/dev/null 2>&1; then
16161                 val="$define"
16162                 echo "You have socket ioctls defined in <sys/sockio.h>." >&4
16163         else
16164                 val="$undef"
16165                 echo "No socket ioctls found in <sys/sockio.h>." >&4
16166         fi
16167 else
16168         val="$undef"
16169         $cat <<EOM
16170 <sys/sockio.h> not found, assuming socket ioctls are in <sys/ioctl.h>.
16171 EOM
16172 fi
16173 set i_syssockio
16174 eval $setvar
16175
16176
16177 : see if this is a syslog.h system
16178 set syslog.h i_syslog
16179 eval $inhdr
16180
16181
16182 : see if this is a sys/mode.h system
16183 set sys/mode.h i_sysmode
16184 eval $inhdr
16185
16186 : see if sys/resource.h has to be included
16187 set sys/resource.h i_sysresrc
16188 eval $inhdr
16189
16190 : see if sys/security.h is available
16191 set sys/security.h i_syssecrt
16192 eval $inhdr
16193
16194 : see if this is a sys/statvfs.h system
16195 set sys/statvfs.h i_sysstatvfs
16196 eval $inhdr
16197
16198 : see if this is a sys/un.h system
16199 set sys/un.h i_sysun
16200 eval $inhdr
16201
16202
16203 : see if this is a sys/utsname.h system
16204 set sys/utsname.h i_sysutsname
16205 eval $inhdr
16206
16207 : see if this is a syswait system
16208 set sys/wait.h i_syswait
16209 eval $inhdr
16210
16211 : see if this is a ustat.h system
16212 set ustat.h i_ustat
16213 eval $inhdr
16214
16215 : see if this is an utime system
16216 set utime.h i_utime
16217 eval $inhdr
16218
16219 : see if this is a values.h system
16220 set values.h i_values
16221 eval $inhdr
16222
16223 : see if this is a vfork system
16224 case "$d_vfork" in
16225 "$define")
16226         set vfork.h i_vfork
16227         eval $inhdr
16228         ;;
16229 *)
16230         i_vfork="$undef"
16231         ;;
16232 esac
16233
16234 : see if gdbm.h is available
16235 set gdbm.h t_gdbm
16236 eval $inhdr
16237 case "$t_gdbm" in
16238 $define)
16239         : see if gdbm_open exists
16240         set gdbm_open d_gdbm_open
16241         eval $inlibc
16242         case "$d_gdbm_open" in
16243         $undef)
16244                 t_gdbm="$undef"
16245                 echo "We won't be including <gdbm.h>"
16246                 ;;
16247         esac
16248         ;;
16249 esac
16250 val="$t_gdbm"
16251 set i_gdbm
16252 eval $setvar
16253
16254 echo " "
16255 echo "Looking for extensions..." >&4
16256 : If we are using the old config.sh, known_extensions may contain
16257 : old or inaccurate or duplicate values.
16258 known_extensions=''
16259 nonxs_extensions=''
16260 : We do not use find because it might not be available.
16261 : We do not just use MANIFEST because the user may have dropped
16262 : some additional extensions into the source tree and expect them
16263 : to be built.
16264
16265 : Function to recursively find available extensions, ignoring DynaLoader
16266 : NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
16267 find_extensions='
16268     for xxx in *; do
16269        case "$xxx" in
16270            DynaLoader|dynaload) ;;
16271            *)
16272            if $test -f $xxx/$xxx.xs; then
16273                known_extensions="$known_extensions $1$xxx";
16274            elif $test -f $xxx/Makefile.PL; then
16275                nonxs_extensions="$nonxs_extensions $1$xxx";
16276            else
16277                if $test -d $xxx -a $# -lt 10; then
16278                    set $1$xxx/ $*;
16279                    cd $xxx;
16280                    eval $find_extensions;
16281                    cd ..;
16282                    shift;
16283                fi;
16284            fi
16285            ;;
16286        esac;
16287     done'
16288 tdir=`pwd`
16289 cd $rsrc/ext
16290 set X
16291 shift
16292 eval $find_extensions
16293 set X $nonxs_extensions
16294 shift
16295 nonxs_extensions="$*"
16296 set X $known_extensions
16297 shift
16298 known_extensions="$*"
16299 cd $tdir
16300
16301 : Now see which are supported on this system.
16302 avail_ext=''
16303 for xxx in $known_extensions ; do
16304         case "$xxx" in
16305         DB_File|db_file)
16306                 case "$i_db" in
16307                 $define) avail_ext="$avail_ext $xxx" ;;
16308                 esac
16309                 ;;
16310         GDBM_File|gdbm_fil)
16311                 case "$i_gdbm" in 
16312                 $define) avail_ext="$avail_ext $xxx" ;;
16313                 esac
16314                 ;;
16315         I18N/Langinfo|i18n_lan)
16316                 case "$i_langinfo$d_nl_langinfo" in 
16317                 $define$define) avail_ext="$avail_ext $xxx" ;;
16318                 esac
16319                 ;;
16320         NDBM_File|ndbm_fil)
16321                 case "$i_ndbm" in
16322                 $define)
16323                     case "$osname-$use64bitint" in
16324                     cygwin-*|hpux-define)
16325                         case "$libs" in
16326                         *-lndbm*) avail_ext="$avail_ext $xxx" ;;
16327                         esac
16328                         ;;
16329                     *) avail_ext="$avail_ext $xxx" ;;
16330                     esac
16331                     ;;
16332                 esac
16333                 ;;
16334         ODBM_File|odbm_fil) 
16335                 case "${i_dbm}${i_rpcsvcdbm}" in
16336                 *"${define}"*)
16337                     case "$osname-$use64bitint" in
16338                     cygwin-*|hpux-define)
16339                         case "$libs" in
16340                         *-ldbm*) avail_ext="$avail_ext $xxx" ;;
16341                         esac
16342                         ;;
16343                     *) avail_ext="$avail_ext $xxx" ;;
16344                     esac
16345                     ;;
16346                 esac
16347                 ;;
16348         POSIX|posix)
16349                 case "$useposix" in
16350                 true|define|y) avail_ext="$avail_ext $xxx" ;;
16351                 esac
16352                 ;;
16353         Opcode|opcode)
16354                 case "$useopcode" in
16355                 true|define|y) avail_ext="$avail_ext $xxx" ;;
16356                 esac
16357                 ;;
16358         Socket|socket)
16359                 case "$d_socket" in 
16360                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
16361                 esac
16362                 ;;
16363         Sys/Syslog|sys/syslog)
16364                 : XXX syslog requires socket
16365                 case "$d_socket" in 
16366                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
16367                 esac
16368                 ;;
16369         Thread|thread)
16370                 case "$usethreads" in
16371                 true|$define|y)
16372                         case "$useithreads" in
16373                         $undef|false|[nN]*) avail_ext="$avail_ext $xxx" ;;
16374                         esac
16375                 esac
16376                 ;;
16377         IPC/SysV|ipc/sysv)
16378                 : XXX Do we need a useipcsysv variable here
16379                 case "${d_msg}${d_sem}${d_shm}" in 
16380                 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
16381                 esac
16382                 ;;
16383         *)      avail_ext="$avail_ext $xxx"
16384                 ;;
16385         esac
16386 done
16387
16388 set X $avail_ext
16389 shift
16390 avail_ext="$*"
16391
16392 : Now see which nonxs extensions are supported on this system.
16393 : For now assume all are.
16394 nonxs_ext=''
16395 for xxx in $nonxs_extensions ; do
16396         case "$xxx" in
16397         *)      nonxs_ext="$nonxs_ext $xxx"
16398                 ;;
16399         esac
16400 done
16401
16402 set X $nonxs_ext
16403 shift
16404 nonxs_ext="$*"
16405
16406 case $usedl in
16407 $define)
16408         $cat <<EOM
16409 A number of extensions are supplied with $package.  You may choose to
16410 compile these extensions for dynamic loading (the default), compile
16411 them into the $package executable (static loading), or not include
16412 them at all.  Answer "none" to include no extensions.
16413 Note that DynaLoader is always built and need not be mentioned here.
16414
16415 EOM
16416         case "$dynamic_ext" in
16417         '') dflt="$avail_ext" ;;
16418         *)      dflt="$dynamic_ext"
16419                 # Perhaps we are reusing an old out-of-date config.sh.
16420                 case "$hint" in
16421                 previous)
16422                         if test X"$dynamic_ext" != X"$avail_ext"; then
16423                                 $cat <<EOM
16424 NOTICE:  Your previous config.sh list may be incorrect. 
16425 The extensions now available to you are 
16426         ${avail_ext}
16427 but the default list from your previous config.sh is
16428         ${dynamic_ext} 
16429
16430 EOM
16431                         fi
16432                         ;;
16433                 esac
16434                 ;;
16435         esac
16436         case "$dflt" in
16437         '')     dflt=none;;
16438         esac
16439         rp="What extensions do you wish to load dynamically?"
16440         . ./myread
16441         case "$ans" in
16442         none) dynamic_ext=' ' ;;
16443         *) dynamic_ext="$ans" ;;
16444         esac
16445
16446         case "$static_ext" in
16447         '')
16448                 : Exclude those already listed in dynamic linking
16449                 dflt=''
16450                 for xxx in $avail_ext; do
16451                         case " $dynamic_ext " in
16452                         *" $xxx "*) ;;
16453                         *) dflt="$dflt $xxx" ;;
16454                         esac
16455                 done
16456                 set X $dflt
16457                 shift
16458                 dflt="$*"
16459                 ;;
16460         *)  dflt="$static_ext" 
16461                 ;;
16462         esac
16463
16464         case "$dflt" in
16465         '')     dflt=none;;
16466         esac
16467         rp="What extensions do you wish to load statically?"
16468         . ./myread
16469         case "$ans" in
16470         none) static_ext=' ' ;;
16471         *) static_ext="$ans" ;;
16472         esac
16473         ;;
16474 *)
16475         $cat <<EOM
16476 A number of extensions are supplied with $package.  Answer "none" 
16477 to include no extensions. 
16478 Note that DynaLoader is always built and need not be mentioned here.
16479
16480 EOM
16481         case "$static_ext" in
16482         '') dflt="$avail_ext" ;;
16483         *)      dflt="$static_ext"
16484                 # Perhaps we are reusing an old out-of-date config.sh.
16485                 case "$hint" in
16486                 previous)
16487                         if test X"$static_ext" != X"$avail_ext"; then
16488                                 $cat <<EOM
16489 NOTICE:  Your previous config.sh list may be incorrect. 
16490 The extensions now available to you are 
16491         ${avail_ext}
16492 but the default list from your previous config.sh is
16493         ${static_ext} 
16494
16495 EOM
16496                         fi
16497                         ;;
16498                 esac
16499                 ;;
16500         esac
16501         : Exclude those that are not xs extensions
16502         case "$dflt" in
16503         '')     dflt=none;;
16504         esac
16505         rp="What extensions do you wish to include?"
16506         . ./myread
16507         case "$ans" in
16508         none) static_ext=' ' ;;
16509         *) static_ext="$ans" ;;
16510         esac
16511         ;;
16512 esac
16513
16514 set X $dynamic_ext $static_ext $nonxs_ext
16515 shift
16516 extensions="$*"
16517
16518 : Remove libraries needed only for extensions
16519 : The appropriate ext/Foo/Makefile.PL will add them back in, if necessary.
16520 : The exception is SunOS 4.x, which needs them.
16521 case "${osname}X${osvers}" in
16522 sunos*X4*)
16523     perllibs="$libs"
16524     ;;
16525 *) case "$usedl" in
16526     $define|true|[yY]*)
16527             set X `echo " $libs " | sed -e 's@ -lndbm @ @' -e 's@ -lgdbm @ @' -e 's@ -ldbm @ @' -e 's@ -ldb @ @'` 
16528             shift
16529             perllibs="$*"
16530             ;;
16531     *)  perllibs="$libs"
16532             ;;
16533     esac
16534     ;;
16535 esac
16536
16537 : Remove build directory name from cppstdin so it can be used from
16538 : either the present location or the final installed location.
16539 echo " "
16540 : Get out of the UU directory to get correct path name.
16541 cd ..
16542 case "$cppstdin" in
16543 `pwd`/cppstdin)
16544         echo "Stripping down cppstdin path name"
16545         cppstdin=cppstdin
16546         ;;
16547 esac
16548 cd UU
16549
16550 : end of configuration questions
16551 echo " "
16552 echo "End of configuration questions."
16553 echo " "
16554
16555 : back to where it started
16556 if test -d ../UU; then
16557         cd ..
16558 fi
16559
16560 : configuration may be patched via a 'config.over' file
16561 if $test -f config.over; then
16562         echo " "
16563         dflt=y
16564         rp='I see a config.over file.  Do you wish to load it?'
16565         . UU/myread
16566         case "$ans" in
16567         n*) echo "OK, I'll ignore it.";;
16568         *)      . ./config.over
16569                 echo "Configuration override changes have been loaded."
16570                 ;;
16571         esac
16572 fi
16573
16574 : in case they want portability, strip down executable paths
16575 case "$d_portable" in
16576 "$define")
16577         echo " "
16578         echo "Stripping down executable paths..." >&4
16579         for file in $loclist $trylist; do
16580                 eval temp=\$$file
16581                 eval $file=`basename $temp`
16582         done
16583         ;;
16584 esac
16585
16586 : create config.sh file
16587 echo " "
16588 echo "Creating config.sh..." >&4
16589 $spitshell <<EOT >config.sh
16590 $startsh
16591 #
16592 # This file was produced by running the Configure script. It holds all the
16593 # definitions figured out by Configure. Should you modify one of these values,
16594 # do not forget to propagate your changes by running "Configure -der". You may
16595 # instead choose to run each of the .SH files by yourself, or "Configure -S".
16596 #
16597
16598 # Package name      : $package
16599 # Source directory  : $src
16600 # Configuration time: $cf_time
16601 # Configured by     : $cf_by
16602 # Target system     : $myuname
16603
16604 Author='$Author'
16605 Date='$Date'
16606 Header='$Header'
16607 Id='$Id'
16608 Locker='$Locker'
16609 Log='$Log'
16610 Mcc='$Mcc'
16611 RCSfile='$RCSfile'
16612 Revision='$Revision'
16613 Source='$Source'
16614 State='$State'
16615 _a='$_a'
16616 _exe='$_exe'
16617 _o='$_o'
16618 afs='$afs'
16619 afsroot='$afsroot'
16620 alignbytes='$alignbytes'
16621 ansi2knr='$ansi2knr'
16622 aphostname='$aphostname'
16623 api_revision='$api_revision'
16624 api_subversion='$api_subversion'
16625 api_version='$api_version'
16626 api_versionstring='$api_versionstring'
16627 ar='$ar'
16628 archlib='$archlib'
16629 archlibexp='$archlibexp'
16630 archname64='$archname64'
16631 archname='$archname'
16632 archobjs='$archobjs'
16633 awk='$awk'
16634 baserev='$baserev'
16635 bash='$bash'
16636 bin='$bin'
16637 bincompat5005='$bincompat5005'
16638 binexp='$binexp'
16639 bison='$bison'
16640 byacc='$byacc'
16641 byteorder='$byteorder'
16642 c='$c'
16643 castflags='$castflags'
16644 cat='$cat'
16645 cc='$cc'
16646 cccdlflags='$cccdlflags'
16647 ccdlflags='$ccdlflags'
16648 ccflags='$ccflags'
16649 ccflags_uselargefiles='$ccflags_uselargefiles'
16650 ccname='$ccname'
16651 ccsymbols='$ccsymbols'
16652 ccversion='$ccversion'
16653 cf_by='$cf_by'
16654 cf_email='$cf_email'
16655 cf_time='$cf_time'
16656 charsize='$charsize'
16657 chgrp='$chgrp'
16658 chmod='$chmod'
16659 chown='$chown'
16660 clocktype='$clocktype'
16661 comm='$comm'
16662 compress='$compress'
16663 contains='$contains'
16664 cp='$cp'
16665 cpio='$cpio'
16666 cpp='$cpp'
16667 cpp_stuff='$cpp_stuff'
16668 cppccsymbols='$cppccsymbols'
16669 cppflags='$cppflags'
16670 cpplast='$cpplast'
16671 cppminus='$cppminus'
16672 cpprun='$cpprun'
16673 cppstdin='$cppstdin'
16674 cppsymbols='$cppsymbols'
16675 cryptlib='$cryptlib'
16676 csh='$csh'
16677 d_Gconvert='$d_Gconvert'
16678 d_PRIEUldbl='$d_PRIEUldbl'
16679 d_PRIFUldbl='$d_PRIFUldbl'
16680 d_PRIGUldbl='$d_PRIGUldbl'
16681 d_PRIXU64='$d_PRIXU64'
16682 d_PRId64='$d_PRId64'
16683 d_PRIeldbl='$d_PRIeldbl'
16684 d_PRIfldbl='$d_PRIfldbl'
16685 d_PRIgldbl='$d_PRIgldbl'
16686 d_PRIi64='$d_PRIi64'
16687 d_PRIo64='$d_PRIo64'
16688 d_PRIu64='$d_PRIu64'
16689 d_PRIx64='$d_PRIx64'
16690 d_SCNfldbl='$d_SCNfldbl'
16691 d__fwalk='$d__fwalk'
16692 d_access='$d_access'
16693 d_accessx='$d_accessx'
16694 d_alarm='$d_alarm'
16695 d_archlib='$d_archlib'
16696 d_atolf='$d_atolf'
16697 d_atoll='$d_atoll'
16698 d_attribut='$d_attribut'
16699 d_bcmp='$d_bcmp'
16700 d_bcopy='$d_bcopy'
16701 d_bincompat5005='$d_bincompat5005'
16702 d_bsd='$d_bsd'
16703 d_bsdgetpgrp='$d_bsdgetpgrp'
16704 d_bsdsetpgrp='$d_bsdsetpgrp'
16705 d_bzero='$d_bzero'
16706 d_casti32='$d_casti32'
16707 d_castneg='$d_castneg'
16708 d_charvspr='$d_charvspr'
16709 d_chown='$d_chown'
16710 d_chroot='$d_chroot'
16711 d_chsize='$d_chsize'
16712 d_closedir='$d_closedir'
16713 d_cmsghdr_s='$d_cmsghdr_s'
16714 d_const='$d_const'
16715 d_crypt='$d_crypt'
16716 d_csh='$d_csh'
16717 d_cuserid='$d_cuserid'
16718 d_dbl_dig='$d_dbl_dig'
16719 d_dbminitproto='$d_dbminitproto'
16720 d_difftime='$d_difftime'
16721 d_dirnamlen='$d_dirnamlen'
16722 d_dlerror='$d_dlerror'
16723 d_dlopen='$d_dlopen'
16724 d_dlsymun='$d_dlsymun'
16725 d_dosuid='$d_dosuid'
16726 d_drand48proto='$d_drand48proto'
16727 d_dup2='$d_dup2'
16728 d_eaccess='$d_eaccess'
16729 d_endgrent='$d_endgrent'
16730 d_endhent='$d_endhent'
16731 d_endnent='$d_endnent'
16732 d_endpent='$d_endpent'
16733 d_endpwent='$d_endpwent'
16734 d_endsent='$d_endsent'
16735 d_eofnblk='$d_eofnblk'
16736 d_eunice='$d_eunice'
16737 d_fchdir='$d_fchdir'
16738 d_fchmod='$d_fchmod'
16739 d_fchown='$d_fchown'
16740 d_fcntl='$d_fcntl'
16741 d_fcntl_can_lock='$d_fcntl_can_lock'
16742 d_fd_macros='$d_fd_macros'
16743 d_fd_set='$d_fd_set'
16744 d_fds_bits='$d_fds_bits'
16745 d_fgetpos='$d_fgetpos'
16746 d_flexfnam='$d_flexfnam'
16747 d_flock='$d_flock'
16748 d_flockproto='$d_flockproto'
16749 d_fork='$d_fork'
16750 d_fpathconf='$d_fpathconf'
16751 d_fpos64_t='$d_fpos64_t'
16752 d_frexpl='$d_frexpl'
16753 d_fs_data_s='$d_fs_data_s'
16754 d_fseeko='$d_fseeko'
16755 d_fsetpos='$d_fsetpos'
16756 d_fstatfs='$d_fstatfs'
16757 d_fstatvfs='$d_fstatvfs'
16758 d_fsync='$d_fsync'
16759 d_ftello='$d_ftello'
16760 d_ftime='$d_ftime'
16761 d_getcwd='$d_getcwd'
16762 d_getespwnam='$d_getespwnam'
16763 d_getfsstat='$d_getfsstat'
16764 d_getgrent='$d_getgrent'
16765 d_getgrps='$d_getgrps'
16766 d_gethbyaddr='$d_gethbyaddr'
16767 d_gethbyname='$d_gethbyname'
16768 d_gethent='$d_gethent'
16769 d_gethname='$d_gethname'
16770 d_gethostprotos='$d_gethostprotos'
16771 d_getitimer='$d_getitimer'
16772 d_getlogin='$d_getlogin'
16773 d_getmnt='$d_getmnt'
16774 d_getmntent='$d_getmntent'
16775 d_getnbyaddr='$d_getnbyaddr'
16776 d_getnbyname='$d_getnbyname'
16777 d_getnent='$d_getnent'
16778 d_getnetprotos='$d_getnetprotos'
16779 d_getpagsz='$d_getpagsz'
16780 d_getpbyname='$d_getpbyname'
16781 d_getpbynumber='$d_getpbynumber'
16782 d_getpent='$d_getpent'
16783 d_getpgid='$d_getpgid'
16784 d_getpgrp2='$d_getpgrp2'
16785 d_getpgrp='$d_getpgrp'
16786 d_getppid='$d_getppid'
16787 d_getprior='$d_getprior'
16788 d_getprotoprotos='$d_getprotoprotos'
16789 d_getprpwnam='$d_getprpwnam'
16790 d_getpwent='$d_getpwent'
16791 d_getsbyname='$d_getsbyname'
16792 d_getsbyport='$d_getsbyport'
16793 d_getsent='$d_getsent'
16794 d_getservprotos='$d_getservprotos'
16795 d_getspnam='$d_getspnam'
16796 d_gettimeod='$d_gettimeod'
16797 d_gnulibc='$d_gnulibc'
16798 d_grpasswd='$d_grpasswd'
16799 d_hasmntopt='$d_hasmntopt'
16800 d_htonl='$d_htonl'
16801 d_iconv='$d_iconv'
16802 d_index='$d_index'
16803 d_inetaton='$d_inetaton'
16804 d_int64_t='$d_int64_t'
16805 d_isascii='$d_isascii'
16806 d_isnan='$d_isnan'
16807 d_isnanl='$d_isnanl'
16808 d_killpg='$d_killpg'
16809 d_lchown='$d_lchown'
16810 d_ldbl_dig='$d_ldbl_dig'
16811 d_link='$d_link'
16812 d_locconv='$d_locconv'
16813 d_lockf='$d_lockf'
16814 d_longdbl='$d_longdbl'
16815 d_longlong='$d_longlong'
16816 d_lseekproto='$d_lseekproto'
16817 d_lstat='$d_lstat'
16818 d_madvise='$d_madvise'
16819 d_mblen='$d_mblen'
16820 d_mbstowcs='$d_mbstowcs'
16821 d_mbtowc='$d_mbtowc'
16822 d_memchr='$d_memchr'
16823 d_memcmp='$d_memcmp'
16824 d_memcpy='$d_memcpy'
16825 d_memmove='$d_memmove'
16826 d_memset='$d_memset'
16827 d_mkdir='$d_mkdir'
16828 d_mkdtemp='$d_mkdtemp'
16829 d_mkfifo='$d_mkfifo'
16830 d_mkstemp='$d_mkstemp'
16831 d_mkstemps='$d_mkstemps'
16832 d_mktime='$d_mktime'
16833 d_mmap='$d_mmap'
16834 d_modfl='$d_modfl'
16835 d_modfl_pow32_bug='$d_modfl_pow32_bug'
16836 d_mprotect='$d_mprotect'
16837 d_msg='$d_msg'
16838 d_msg_ctrunc='$d_msg_ctrunc'
16839 d_msg_dontroute='$d_msg_dontroute'
16840 d_msg_oob='$d_msg_oob'
16841 d_msg_peek='$d_msg_peek'
16842 d_msg_proxy='$d_msg_proxy'
16843 d_msgctl='$d_msgctl'
16844 d_msgget='$d_msgget'
16845 d_msghdr_s='$d_msghdr_s'
16846 d_msgrcv='$d_msgrcv'
16847 d_msgsnd='$d_msgsnd'
16848 d_msync='$d_msync'
16849 d_munmap='$d_munmap'
16850 d_mymalloc='$d_mymalloc'
16851 d_nice='$d_nice'
16852 d_nl_langinfo='$d_nl_langinfo'
16853 d_nv_preserves_uv='$d_nv_preserves_uv'
16854 d_nv_preserves_uv_bits='$d_nv_preserves_uv_bits'
16855 d_off64_t='$d_off64_t'
16856 d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
16857 d_oldpthreads='$d_oldpthreads'
16858 d_oldsock='$d_oldsock'
16859 d_open3='$d_open3'
16860 d_pathconf='$d_pathconf'
16861 d_pause='$d_pause'
16862 d_perl_otherlibdirs='$d_perl_otherlibdirs'
16863 d_phostname='$d_phostname'
16864 d_pipe='$d_pipe'
16865 d_poll='$d_poll'
16866 d_portable='$d_portable'
16867 d_pthread_atfork='$d_pthread_atfork'
16868 d_pthread_yield='$d_pthread_yield'
16869 d_pwage='$d_pwage'
16870 d_pwchange='$d_pwchange'
16871 d_pwclass='$d_pwclass'
16872 d_pwcomment='$d_pwcomment'
16873 d_pwexpire='$d_pwexpire'
16874 d_pwgecos='$d_pwgecos'
16875 d_pwpasswd='$d_pwpasswd'
16876 d_pwquota='$d_pwquota'
16877 d_qgcvt='$d_qgcvt'
16878 d_quad='$d_quad'
16879 d_readdir='$d_readdir'
16880 d_readlink='$d_readlink'
16881 d_readv='$d_readv'
16882 d_recvmsg='$d_recvmsg'
16883 d_rename='$d_rename'
16884 d_rewinddir='$d_rewinddir'
16885 d_rmdir='$d_rmdir'
16886 d_safebcpy='$d_safebcpy'
16887 d_safemcpy='$d_safemcpy'
16888 d_sanemcmp='$d_sanemcmp'
16889 d_sbrkproto='$d_sbrkproto'
16890 d_sched_yield='$d_sched_yield'
16891 d_scm_rights='$d_scm_rights'
16892 d_seekdir='$d_seekdir'
16893 d_select='$d_select'
16894 d_sem='$d_sem'
16895 d_semctl='$d_semctl'
16896 d_semctl_semid_ds='$d_semctl_semid_ds'
16897 d_semctl_semun='$d_semctl_semun'
16898 d_semget='$d_semget'
16899 d_semop='$d_semop'
16900 d_sendmsg='$d_sendmsg'
16901 d_setegid='$d_setegid'
16902 d_seteuid='$d_seteuid'
16903 d_setgrent='$d_setgrent'
16904 d_setgrps='$d_setgrps'
16905 d_sethent='$d_sethent'
16906 d_setitimer='$d_setitimer'
16907 d_setlinebuf='$d_setlinebuf'
16908 d_setlocale='$d_setlocale'
16909 d_setnent='$d_setnent'
16910 d_setpent='$d_setpent'
16911 d_setpgid='$d_setpgid'
16912 d_setpgrp2='$d_setpgrp2'
16913 d_setpgrp='$d_setpgrp'
16914 d_setprior='$d_setprior'
16915 d_setproctitle='$d_setproctitle'
16916 d_setpwent='$d_setpwent'
16917 d_setregid='$d_setregid'
16918 d_setresgid='$d_setresgid'
16919 d_setresuid='$d_setresuid'
16920 d_setreuid='$d_setreuid'
16921 d_setrgid='$d_setrgid'
16922 d_setruid='$d_setruid'
16923 d_setsent='$d_setsent'
16924 d_setsid='$d_setsid'
16925 d_setvbuf='$d_setvbuf'
16926 d_sfio='$d_sfio'
16927 d_shm='$d_shm'
16928 d_shmat='$d_shmat'
16929 d_shmatprototype='$d_shmatprototype'
16930 d_shmctl='$d_shmctl'
16931 d_shmdt='$d_shmdt'
16932 d_shmget='$d_shmget'
16933 d_sigaction='$d_sigaction'
16934 d_sigprocmask='$d_sigprocmask'
16935 d_sigsetjmp='$d_sigsetjmp'
16936 d_sockatmark='$d_sockatmark'
16937 d_sockatmarkproto='$d_sockatmarkproto'
16938 d_socket='$d_socket'
16939 d_socklen_t='$d_socklen_t'
16940 d_sockpair='$d_sockpair'
16941 d_socks5_init='$d_socks5_init'
16942 d_sqrtl='$d_sqrtl'
16943 d_sresgproto='$d_sresgproto'
16944 d_sresuproto='$d_sresuproto'
16945 d_statblks='$d_statblks'
16946 d_statfs_f_flags='$d_statfs_f_flags'
16947 d_statfs_s='$d_statfs_s'
16948 d_statvfs='$d_statvfs'
16949 d_stdio_cnt_lval='$d_stdio_cnt_lval'
16950 d_stdio_ptr_lval='$d_stdio_ptr_lval'
16951 d_stdio_ptr_lval_nochange_cnt='$d_stdio_ptr_lval_nochange_cnt'
16952 d_stdio_ptr_lval_sets_cnt='$d_stdio_ptr_lval_sets_cnt'
16953 d_stdio_stream_array='$d_stdio_stream_array'
16954 d_stdiobase='$d_stdiobase'
16955 d_stdstdio='$d_stdstdio'
16956 d_strchr='$d_strchr'
16957 d_strcoll='$d_strcoll'
16958 d_strctcpy='$d_strctcpy'
16959 d_strerrm='$d_strerrm'
16960 d_strerror='$d_strerror'
16961 d_strftime='$d_strftime'
16962 d_strtod='$d_strtod'
16963 d_strtol='$d_strtol'
16964 d_strtold='$d_strtold'
16965 d_strtoll='$d_strtoll'
16966 d_strtoq='$d_strtoq'
16967 d_strtoul='$d_strtoul'
16968 d_strtoull='$d_strtoull'
16969 d_strtouq='$d_strtouq'
16970 d_strxfrm='$d_strxfrm'
16971 d_suidsafe='$d_suidsafe'
16972 d_symlink='$d_symlink'
16973 d_syscall='$d_syscall'
16974 d_syscallproto='$d_syscallproto'
16975 d_sysconf='$d_sysconf'
16976 d_sysernlst='$d_sysernlst'
16977 d_syserrlst='$d_syserrlst'
16978 d_system='$d_system'
16979 d_tcgetpgrp='$d_tcgetpgrp'
16980 d_tcsetpgrp='$d_tcsetpgrp'
16981 d_telldir='$d_telldir'
16982 d_telldirproto='$d_telldirproto'
16983 d_time='$d_time'
16984 d_times='$d_times'
16985 d_truncate='$d_truncate'
16986 d_tzname='$d_tzname'
16987 d_u32align='$d_u32align'
16988 d_ualarm='$d_ualarm'
16989 d_umask='$d_umask'
16990 d_uname='$d_uname'
16991 d_union_semun='$d_union_semun'
16992 d_usleep='$d_usleep'
16993 d_usleepproto='$d_usleepproto'
16994 d_ustat='$d_ustat'
16995 d_vendorarch='$d_vendorarch'
16996 d_vendorbin='$d_vendorbin'
16997 d_vendorlib='$d_vendorlib'
16998 d_vfork='$d_vfork'
16999 d_void_closedir='$d_void_closedir'
17000 d_voidsig='$d_voidsig'
17001 d_voidtty='$d_voidtty'
17002 d_volatile='$d_volatile'
17003 d_vprintf='$d_vprintf'
17004 d_wait4='$d_wait4'
17005 d_waitpid='$d_waitpid'
17006 d_wcstombs='$d_wcstombs'
17007 d_wctomb='$d_wctomb'
17008 d_writev='$d_writev'
17009 d_xenix='$d_xenix'
17010 date='$date'
17011 db_hashtype='$db_hashtype'
17012 db_prefixtype='$db_prefixtype'
17013 db_version_major='$db_version_major'
17014 db_version_minor='$db_version_minor'
17015 db_version_patch='$db_version_patch'
17016 defvoidused='$defvoidused'
17017 direntrytype='$direntrytype'
17018 dlext='$dlext'
17019 dlsrc='$dlsrc'
17020 doublesize='$doublesize'
17021 drand01='$drand01'
17022 dynamic_ext='$dynamic_ext'
17023 eagain='$eagain'
17024 ebcdic='$ebcdic'
17025 echo='$echo'
17026 egrep='$egrep'
17027 emacs='$emacs'
17028 eunicefix='$eunicefix'
17029 exe_ext='$exe_ext'
17030 expr='$expr'
17031 extensions='$extensions'
17032 extras='$extras'
17033 fflushNULL='$fflushNULL'
17034 fflushall='$fflushall'
17035 find='$find'
17036 firstmakefile='$firstmakefile'
17037 flex='$flex'
17038 fpossize='$fpossize'
17039 fpostype='$fpostype'
17040 freetype='$freetype'
17041 from='$from'
17042 full_ar='$full_ar'
17043 full_csh='$full_csh'
17044 full_sed='$full_sed'
17045 gccosandvers='$gccosandvers'
17046 gccversion='$gccversion'
17047 gidformat='$gidformat'
17048 gidsign='$gidsign'
17049 gidsize='$gidsize'
17050 gidtype='$gidtype'
17051 glibpth='$glibpth'
17052 grep='$grep'
17053 groupcat='$groupcat'
17054 groupstype='$groupstype'
17055 gzip='$gzip'
17056 h_fcntl='$h_fcntl'
17057 h_sysfile='$h_sysfile'
17058 hint='$hint'
17059 hostcat='$hostcat'
17060 i16size='$i16size'
17061 i16type='$i16type'
17062 i32size='$i32size'
17063 i32type='$i32type'
17064 i64size='$i64size'
17065 i64type='$i64type'
17066 i8size='$i8size'
17067 i8type='$i8type'
17068 i_arpainet='$i_arpainet'
17069 i_bsdioctl='$i_bsdioctl'
17070 i_db='$i_db'
17071 i_dbm='$i_dbm'
17072 i_dirent='$i_dirent'
17073 i_dld='$i_dld'
17074 i_dlfcn='$i_dlfcn'
17075 i_fcntl='$i_fcntl'
17076 i_float='$i_float'
17077 i_gdbm='$i_gdbm'
17078 i_grp='$i_grp'
17079 i_iconv='$i_iconv'
17080 i_ieeefp='$i_ieeefp'
17081 i_inttypes='$i_inttypes'
17082 i_langinfo='$i_langinfo'
17083 i_libutil='$i_libutil'
17084 i_limits='$i_limits'
17085 i_locale='$i_locale'
17086 i_machcthr='$i_machcthr'
17087 i_malloc='$i_malloc'
17088 i_math='$i_math'
17089 i_memory='$i_memory'
17090 i_mntent='$i_mntent'
17091 i_ndbm='$i_ndbm'
17092 i_netdb='$i_netdb'
17093 i_neterrno='$i_neterrno'
17094 i_netinettcp='$i_netinettcp'
17095 i_niin='$i_niin'
17096 i_poll='$i_poll'
17097 i_prot='$i_prot'
17098 i_pthread='$i_pthread'
17099 i_pwd='$i_pwd'
17100 i_rpcsvcdbm='$i_rpcsvcdbm'
17101 i_sfio='$i_sfio'
17102 i_sgtty='$i_sgtty'
17103 i_shadow='$i_shadow'
17104 i_socks='$i_socks'
17105 i_stdarg='$i_stdarg'
17106 i_stddef='$i_stddef'
17107 i_stdlib='$i_stdlib'
17108 i_string='$i_string'
17109 i_sunmath='$i_sunmath'
17110 i_sysaccess='$i_sysaccess'
17111 i_sysdir='$i_sysdir'
17112 i_sysfile='$i_sysfile'
17113 i_sysfilio='$i_sysfilio'
17114 i_sysin='$i_sysin'
17115 i_sysioctl='$i_sysioctl'
17116 i_syslog='$i_syslog'
17117 i_sysmman='$i_sysmman'
17118 i_sysmode='$i_sysmode'
17119 i_sysmount='$i_sysmount'
17120 i_sysndir='$i_sysndir'
17121 i_sysparam='$i_sysparam'
17122 i_sysresrc='$i_sysresrc'
17123 i_syssecrt='$i_syssecrt'
17124 i_sysselct='$i_sysselct'
17125 i_syssockio='$i_syssockio'
17126 i_sysstat='$i_sysstat'
17127 i_sysstatfs='$i_sysstatfs'
17128 i_sysstatvfs='$i_sysstatvfs'
17129 i_systime='$i_systime'
17130 i_systimek='$i_systimek'
17131 i_systimes='$i_systimes'
17132 i_systypes='$i_systypes'
17133 i_sysuio='$i_sysuio'
17134 i_sysun='$i_sysun'
17135 i_sysutsname='$i_sysutsname'
17136 i_sysvfs='$i_sysvfs'
17137 i_syswait='$i_syswait'
17138 i_termio='$i_termio'
17139 i_termios='$i_termios'
17140 i_time='$i_time'
17141 i_unistd='$i_unistd'
17142 i_ustat='$i_ustat'
17143 i_utime='$i_utime'
17144 i_values='$i_values'
17145 i_varargs='$i_varargs'
17146 i_varhdr='$i_varhdr'
17147 i_vfork='$i_vfork'
17148 ignore_versioned_solibs='$ignore_versioned_solibs'
17149 inc_version_list='$inc_version_list'
17150 inc_version_list_init='$inc_version_list_init'
17151 incpath='$incpath'
17152 inews='$inews'
17153 installarchlib='$installarchlib'
17154 installbin='$installbin'
17155 installman1dir='$installman1dir'
17156 installman3dir='$installman3dir'
17157 installprefix='$installprefix'
17158 installprefixexp='$installprefixexp'
17159 installprivlib='$installprivlib'
17160 installscript='$installscript'
17161 installsitearch='$installsitearch'
17162 installsitebin='$installsitebin'
17163 installsitelib='$installsitelib'
17164 installstyle='$installstyle'
17165 installusrbinperl='$installusrbinperl'
17166 installvendorarch='$installvendorarch'
17167 installvendorbin='$installvendorbin'
17168 installvendorlib='$installvendorlib'
17169 intsize='$intsize'
17170 issymlink='$issymlink'
17171 ivdformat='$ivdformat'
17172 ivsize='$ivsize'
17173 ivtype='$ivtype'
17174 known_extensions='$known_extensions'
17175 ksh='$ksh'
17176 ld='$ld'
17177 lddlflags='$lddlflags'
17178 ldflags='$ldflags'
17179 ldflags_uselargefiles='$ldflags_uselargefiles'
17180 ldlibpthname='$ldlibpthname'
17181 less='$less'
17182 lib_ext='$lib_ext'
17183 libc='$libc'
17184 libperl='$libperl'
17185 libpth='$libpth'
17186 libs='$libs'
17187 libsdirs='$libsdirs'
17188 libsfiles='$libsfiles'
17189 libsfound='$libsfound'
17190 libspath='$libspath'
17191 libswanted='$libswanted'
17192 libswanted_uselargefiles='$libswanted_uselargefiles'
17193 line='$line'
17194 lint='$lint'
17195 lkflags='$lkflags'
17196 ln='$ln'
17197 lns='$lns'
17198 locincpth='$locincpth'
17199 loclibpth='$loclibpth'
17200 longdblsize='$longdblsize'
17201 longlongsize='$longlongsize'
17202 longsize='$longsize'
17203 lp='$lp'
17204 lpr='$lpr'
17205 ls='$ls'
17206 lseeksize='$lseeksize'
17207 lseektype='$lseektype'
17208 mail='$mail'
17209 mailx='$mailx'
17210 make='$make'
17211 make_set_make='$make_set_make'
17212 mallocobj='$mallocobj'
17213 mallocsrc='$mallocsrc'
17214 malloctype='$malloctype'
17215 man1dir='$man1dir'
17216 man1direxp='$man1direxp'
17217 man1ext='$man1ext'
17218 man3dir='$man3dir'
17219 man3direxp='$man3direxp'
17220 man3ext='$man3ext'
17221 mips_type='$mips_type'
17222 mkdir='$mkdir'
17223 mmaptype='$mmaptype'
17224 modetype='$modetype'
17225 more='$more'
17226 multiarch='$multiarch'
17227 mv='$mv'
17228 myarchname='$myarchname'
17229 mydomain='$mydomain'
17230 myhostname='$myhostname'
17231 myuname='$myuname'
17232 n='$n'
17233 need_va_copy='$need_va_copy'
17234 netdb_hlen_type='$netdb_hlen_type'
17235 netdb_host_type='$netdb_host_type'
17236 netdb_name_type='$netdb_name_type'
17237 netdb_net_type='$netdb_net_type'
17238 nm='$nm'
17239 nm_opt='$nm_opt'
17240 nm_so_opt='$nm_so_opt'
17241 nonxs_ext='$nonxs_ext'
17242 nroff='$nroff'
17243 nvEUformat='$nvEUformat'
17244 nvFUformat='$nvFUformat'
17245 nvGUformat='$nvGUformat'
17246 nveformat='$nveformat'
17247 nvfformat='$nvfformat'
17248 nvgformat='$nvgformat'
17249 nvsize='$nvsize'
17250 nvtype='$nvtype'
17251 o_nonblock='$o_nonblock'
17252 obj_ext='$obj_ext'
17253 old_pthread_create_joinable='$old_pthread_create_joinable'
17254 optimize='$optimize'
17255 orderlib='$orderlib'
17256 osname='$osname'
17257 osvers='$osvers'
17258 otherlibdirs='$otherlibdirs'
17259 package='$package'
17260 pager='$pager'
17261 passcat='$passcat'
17262 patchlevel='$patchlevel'
17263 path_sep='$path_sep'
17264 perl5='$perl5'
17265 perl='$perl'
17266 perl_patchlevel='$perl_patchlevel'
17267 perladmin='$perladmin'
17268 perllibs='$perllibs'
17269 perlpath='$perlpath'
17270 pg='$pg'
17271 phostname='$phostname'
17272 pidtype='$pidtype'
17273 plibpth='$plibpth'
17274 pm_apiversion='$pm_apiversion'
17275 pmake='$pmake'
17276 pr='$pr'
17277 prefix='$prefix'
17278 prefixexp='$prefixexp'
17279 privlib='$privlib'
17280 privlibexp='$privlibexp'
17281 prototype='$prototype'
17282 ptrsize='$ptrsize'
17283 quadkind='$quadkind'
17284 quadtype='$quadtype'
17285 randbits='$randbits'
17286 randfunc='$randfunc'
17287 randseedtype='$randseedtype'
17288 ranlib='$ranlib'
17289 rd_nodata='$rd_nodata'
17290 revision='$revision'
17291 rm='$rm'
17292 rmail='$rmail'
17293 run='$run'
17294 runnm='$runnm'
17295 sPRIEUldbl='$sPRIEUldbl'
17296 sPRIFUldbl='$sPRIFUldbl'
17297 sPRIGUldbl='$sPRIGUldbl'
17298 sPRIXU64='$sPRIXU64'
17299 sPRId64='$sPRId64'
17300 sPRIeldbl='$sPRIeldbl'
17301 sPRIfldbl='$sPRIfldbl'
17302 sPRIgldbl='$sPRIgldbl'
17303 sPRIi64='$sPRIi64'
17304 sPRIo64='$sPRIo64'
17305 sPRIu64='$sPRIu64'
17306 sPRIx64='$sPRIx64'
17307 sSCNfldbl='$sSCNfldbl'
17308 sched_yield='$sched_yield'
17309 scriptdir='$scriptdir'
17310 scriptdirexp='$scriptdirexp'
17311 sed='$sed'
17312 seedfunc='$seedfunc'
17313 selectminbits='$selectminbits'
17314 selecttype='$selecttype'
17315 sendmail='$sendmail'
17316 sh='$sh'
17317 shar='$shar'
17318 sharpbang='$sharpbang'
17319 shmattype='$shmattype'
17320 shortsize='$shortsize'
17321 shrpenv='$shrpenv'
17322 shsharp='$shsharp'
17323 sig_count='$sig_count'
17324 sig_name='$sig_name'
17325 sig_name_init='$sig_name_init'
17326 sig_num='$sig_num'
17327 sig_num_init='$sig_num_init'
17328 sig_size='$sig_size'
17329 signal_t='$signal_t'
17330 sitearch='$sitearch'
17331 sitearchexp='$sitearchexp'
17332 sitebin='$sitebin'
17333 sitebinexp='$sitebinexp'
17334 sitelib='$sitelib'
17335 sitelib_stem='$sitelib_stem'
17336 sitelibexp='$sitelibexp'
17337 siteprefix='$siteprefix'
17338 siteprefixexp='$siteprefixexp'
17339 sizesize='$sizesize'
17340 sizetype='$sizetype'
17341 sleep='$sleep'
17342 smail='$smail'
17343 so='$so'
17344 sockethdr='$sockethdr'
17345 socketlib='$socketlib'
17346 socksizetype='$socksizetype'
17347 sort='$sort'
17348 spackage='$spackage'
17349 spitshell='$spitshell'
17350 src='$src'
17351 ssizetype='$ssizetype'
17352 startperl='$startperl'
17353 startsh='$startsh'
17354 static_ext='$static_ext'
17355 stdchar='$stdchar'
17356 stdio_base='$stdio_base'
17357 stdio_bufsiz='$stdio_bufsiz'
17358 stdio_cnt='$stdio_cnt'
17359 stdio_filbuf='$stdio_filbuf'
17360 stdio_ptr='$stdio_ptr'
17361 stdio_stream_array='$stdio_stream_array'
17362 strings='$strings'
17363 submit='$submit'
17364 subversion='$subversion'
17365 sysman='$sysman'
17366 tail='$tail'
17367 tar='$tar'
17368 targetarch='$targetarch'
17369 tbl='$tbl'
17370 tee='$tee'
17371 test='$test'
17372 timeincl='$timeincl'
17373 timetype='$timetype'
17374 to='$to'
17375 touch='$touch'
17376 tr='$tr'
17377 trnl='$trnl'
17378 troff='$troff'
17379 u16size='$u16size'
17380 u16type='$u16type'
17381 u32size='$u32size'
17382 u32type='$u32type'
17383 u64size='$u64size'
17384 u64type='$u64type'
17385 u8size='$u8size'
17386 u8type='$u8type'
17387 uidformat='$uidformat'
17388 uidsign='$uidsign'
17389 uidsize='$uidsize'
17390 uidtype='$uidtype'
17391 uname='$uname'
17392 uniq='$uniq'
17393 uquadtype='$uquadtype'
17394 use5005threads='$use5005threads'
17395 use64bitall='$use64bitall'
17396 use64bitint='$use64bitint'
17397 usecrosscompile='$usecrosscompile'
17398 usedl='$usedl'
17399 useithreads='$useithreads'
17400 uselargefiles='$uselargefiles'
17401 uselongdouble='$uselongdouble'
17402 usemorebits='$usemorebits'
17403 usemultiplicity='$usemultiplicity'
17404 usemymalloc='$usemymalloc'
17405 usenm='$usenm'
17406 useopcode='$useopcode'
17407 useperlio='$useperlio'
17408 useposix='$useposix'
17409 usereentrant='$usereentrant'
17410 usesfio='$usesfio'
17411 useshrplib='$useshrplib'
17412 usesocks='$usesocks'
17413 usethreads='$usethreads'
17414 usevendorprefix='$usevendorprefix'
17415 usevfork='$usevfork'
17416 usrinc='$usrinc'
17417 uuname='$uuname'
17418 uvXUformat='$uvXUformat'
17419 uvoformat='$uvoformat'
17420 uvsize='$uvsize'
17421 uvtype='$uvtype'
17422 uvuformat='$uvuformat'
17423 uvxformat='$uvxformat'
17424 vendorarch='$vendorarch'
17425 vendorarchexp='$vendorarchexp'
17426 vendorbin='$vendorbin'
17427 vendorbinexp='$vendorbinexp'
17428 vendorlib='$vendorlib'
17429 vendorlib_stem='$vendorlib_stem'
17430 vendorlibexp='$vendorlibexp'
17431 vendorprefix='$vendorprefix'
17432 vendorprefixexp='$vendorprefixexp'
17433 version='$version'
17434 version_patchlevel_string='$version_patchlevel_string'
17435 versiononly='$versiononly'
17436 vi='$vi'
17437 voidflags='$voidflags'
17438 xlibpth='$xlibpth'
17439 xs_apiversion='$xs_apiversion'
17440 yacc='$yacc'
17441 yaccflags='$yaccflags'
17442 zcat='$zcat'
17443 zip='$zip'
17444 EOT
17445
17446 : Add in command line options if available
17447 $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
17448
17449 : add special variables
17450 $test -f $src/patchlevel.h && \
17451 awk '/^#define[         ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
17452 echo "PERL_PATCHLEVEL=$perl_patchlevel" >>config.sh
17453 echo "PERL_CONFIG_SH=true" >>config.sh
17454
17455 : propagate old symbols
17456 if $test -f UU/config.sh; then
17457         <UU/config.sh $sort | $uniq >UU/oldconfig.sh
17458         sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
17459         $sort | $uniq -u >UU/oldsyms
17460         set X `cat UU/oldsyms`
17461         shift
17462         case $# in
17463         0) ;;
17464         *)
17465                 cat <<EOM
17466 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
17467 EOM
17468                 echo "# Variables propagated from previous config.sh file." >>config.sh
17469                 for sym in `cat UU/oldsyms`; do
17470                         echo "    Propagating $hint variable "'$'"$sym..."
17471                         eval 'tmp="$'"${sym}"'"'
17472                         echo "$tmp" | \
17473                                 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
17474                 done
17475                 ;;
17476         esac
17477 fi
17478
17479 : Finish up by extracting the .SH files
17480 case "$alldone" in
17481 exit)
17482         $rm -rf UU
17483         echo "Extraction done."
17484         exit 0
17485         ;;
17486 cont)
17487         ;;
17488 '')
17489         dflt=''
17490         nostick=true
17491         $cat <<EOM
17492
17493 If you'd like to make any changes to the config.sh file before I begin
17494 to configure things, do it as a shell escape now (e.g. !vi config.sh).
17495
17496 EOM
17497         rp="Press return or use a shell escape to edit config.sh:"
17498         . UU/myread
17499         nostick=''
17500         case "$ans" in
17501         '') ;;
17502         *) : in case they cannot read
17503                 sh 1>&4 -c "$ans";;
17504         esac
17505         ;;
17506 esac
17507
17508 : if this fails, just run all the .SH files by hand
17509 . ./config.sh
17510
17511 echo " "
17512 exec 1>&4
17513 pwd=`pwd`
17514 . ./UU/extract
17515 cd $pwd
17516
17517 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
17518         dflt=y
17519         case "$silent" in
17520         true) ;;
17521         *)
17522                 $cat <<EOM
17523
17524 Now you need to generate make dependencies by running "$make depend".
17525 You might prefer to run it in background: "$make depend > makedepend.out &"
17526 It can take a while, so you might not want to run it right now.
17527
17528 EOM
17529                 ;;
17530         esac
17531         rp="Run $make depend now?"
17532         . UU/myread
17533         case "$ans" in
17534         y*)
17535                 $make depend && echo "Now you must run '$make'."
17536                 ;;
17537         *)
17538                 echo "You must run '$make depend' then '$make'."
17539                 ;;
17540         esac
17541 elif test -f [Mm]akefile; then
17542         echo " "
17543         echo "Now you must run a $make."
17544 else
17545         echo "Configure done."
17546 fi
17547
17548 if $test -f Policy.sh; then
17549     $cat <<EOM
17550
17551 If you compile $package on a different machine or from a different object
17552 directory, copy the Policy.sh file from this object directory to the
17553 new one before you run Configure -- this will help you with most of
17554 the policy defaults.
17555
17556 EOM
17557 fi
17558 if $test -f config.msg; then
17559     echo "Hmm.  I also noted the following information while running:"
17560     echo " "
17561     $cat config.msg >&4
17562     $rm -f config.msg
17563 fi
17564 $rm -f kit*isdone ark*isdone
17565 $rm -rf UU
17566
17567 : End of Configure
17568