Configure's detection of system manual
[p5sagit/p5-mst-13.2.git] / Configure
1 #! /bin/sh
2 #
3 # If these # comments don't work, trim them. Don't worry about any other
4 # shell scripts, Configure will trim # comments from them for you.
5 #
6 # (If you are trying to port this package to a machine without sh,
7 # I would suggest you have a look at the prototypical config_h.SH file
8 # and edit it to reflect your system. Some packages may include samples
9 # of config.h for certain machines, so you might look for one of those.)
10 #
11 # Yes, you may rip this off to use in other distribution packages. This
12 # script belongs to the public domain and cannot be copyrighted.
13 #
14 # (Note: this Configure script was generated automatically. Rather than
15 # working with this copy of Configure, you may wish to get metaconfig.
16 # The dist-3.0 package (which contains metaconfig) was posted in
17 # comp.sources.misc and is available on CPAN under authors/id/RAM so
18 # you may fetch it yourself from your nearest archive site.)
19 #
20
21 # $Id: Head.U,v 3.0.1.9 1997/02/28 15:02:09 ram Exp $
22 #
23 # Generated on Tue Jul 31 17:53:39 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 case "$extras" in
6770 '') dflt='n';;
6771 *) dflt='y';;
6772 esac
6773 cat <<EOM
6774 Perl can be built with extra modules or bundles of modules which
6775 will be fetched from the CPAN and installed alongside Perl.
6776
6777 Notice that you will need access to the CPAN; either via the Internet,
6778 or a local copy, for example a CD-ROM or a local CPAN mirror.  (You will
6779 be asked later to configure the CPAN.pm module which will in turn do
6780 the installation of the rest of the extra modules or bundles.)
6781
6782 Notice also that if the modules require any external software such as
6783 libraries (the libz library for the Compress::Zlib module, for example)
6784 you *NEED* to have any such external software already installed, this
6785 configuration process will not install such things for you.
6786
6787 If this doesn't make any sense to you, just accept the default '$dflt'.
6788 EOM
6789 rp='Install any extra modules (y or n) ?'
6790 . ./myread
6791 case "$ans" in
6792 y|Y)
6793         cat <<EOM
6794
6795 Please list any extra modules or bundles to be installed from CPAN,
6796 with spaces between the names.  The names can be in any format the
6797 'install' command of CPAN.pm will understand.  (Answer 'none' the
6798 quotes, to install no extra modules or bundles.)
6799 EOM
6800         rp='Extras?'
6801         dflt="$extras"
6802         . ./myread
6803         extras="$ans"
6804 esac
6805 case "$extras" in
6806 ''|'none')
6807         val=''
6808         $rm -f ../extras.lst
6809         ;;
6810 *)      echo "(Saving the list of extras for later...)"
6811         echo $extras > ../extras.lst
6812         val="$extras"
6813         ;;
6814 esac
6815 set extras
6816 eval $setvar
6817 echo " "
6818
6819 : Find perl5.005 or later.
6820 echo "Looking for a previously installed perl5.005 or later... "
6821 case "$perl5" in
6822 '')     for tdir in `echo "$binexp$path_sep$PATH" | $sed "s/$path_sep/ /g"`; do
6823                 : Check if this perl is recent and can load a simple module
6824                 if $test -x $tdir/perl$exe_ext && $tdir/perl -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6825                         perl5=$tdir/perl
6826                         break;
6827                 elif $test -x $tdir/perl5$exe_ext && $tdir/perl5 -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6828                         perl5=$tdir/perl5
6829                         break;
6830                 fi
6831         done
6832         ;;
6833 *)      perl5="$perl5"
6834         ;;
6835 esac
6836 case "$perl5" in
6837 '')     echo "None found.  That's ok.";;
6838 *)      echo "Using $perl5." ;;
6839 esac
6840
6841 : Determine list of previous versions to include in @INC
6842 $cat > getverlist <<EOPL
6843 #!$perl5 -w
6844 use File::Basename;
6845 \$api_versionstring = "$api_versionstring";
6846 \$version = "$version";
6847 \$stem = "$sitelib_stem";
6848 \$archname = "$archname";
6849 EOPL
6850         $cat >> getverlist <<'EOPL'
6851 # Can't have leading @ because metaconfig interprets it as a command!
6852 ;@inc_version_list=();
6853 # XXX Redo to do opendir/readdir? 
6854 if (-d $stem) {
6855     chdir($stem);
6856     ;@candidates = glob("5.*");
6857 }
6858 else {
6859     ;@candidates = ();
6860 }
6861
6862 # XXX ToDo:  These comparisons must be reworked when two-digit
6863 # subversions come along, so that 5.7.10 compares as greater than
6864 # 5.7.3!  By that time, hope that 5.6.x is sufficiently
6865 # widespread that we can use the built-in version vectors rather
6866 # than reinventing them here.  For 5.6.0, however, we must
6867 # assume this script will likely be run by 5.005_0x.  --AD 1/2000.
6868 foreach $d (@candidates) {
6869     if ($d lt $version) {
6870         if ($d ge $api_versionstring) {
6871             unshift(@inc_version_list, grep { -d } "$d/$archname", $d);
6872         }
6873         elsif ($d ge "5.005") {
6874             unshift(@inc_version_list, grep { -d } $d);
6875         }
6876     }
6877     else {
6878         # Skip newer version.  I.e. don't look in
6879         # 5.7.0 if we're installing 5.6.1.
6880     }
6881 }
6882
6883 if (@inc_version_list) {
6884     print join(' ', @inc_version_list);
6885 }
6886 else {
6887     # Blank space to preserve value for next Configure run.
6888     print " ";
6889 }
6890 EOPL
6891 chmod +x getverlist
6892 case "$inc_version_list" in
6893 '')     if test -x "$perl5$exe_ext"; then
6894                 dflt=`$perl5 getverlist`
6895         else
6896                 dflt='none'
6897         fi
6898         ;;
6899 $undef) dflt='none' ;;
6900 *)  eval dflt=\"$inc_version_list\" ;;
6901 esac
6902 case "$dflt" in
6903 ''|' ') dflt=none ;;
6904 esac
6905 case "$dflt" in
6906 5.005) case "$bincompat5005" in
6907        $define|true|[yY]*) ;;
6908        *) dflt=none ;;
6909        esac
6910        ;;
6911 esac
6912 $cat <<'EOM'
6913
6914 In order to ease the process of upgrading, this version of perl 
6915 can be configured to use modules built and installed with earlier 
6916 versions of perl that were installed under $prefix.  Specify here
6917 the list of earlier versions that this version of perl should check.
6918 If Configure detected no earlier versions of perl installed under
6919 $prefix, then the list will be empty.  Answer 'none' to tell perl
6920 to not search earlier versions.
6921
6922 The default should almost always be sensible, so if you're not sure,
6923 just accept the default.
6924 EOM
6925
6926 rp='List of earlier versions to include in @INC?'
6927 . ./myread
6928 case "$ans" in
6929 [Nn]one|''|' ') inc_version_list=' ' ;;
6930 *) inc_version_list="$ans" ;;
6931 esac
6932 case "$inc_version_list" in
6933 ''|' ') 
6934         inc_version_list_init='0';;
6935 *)      inc_version_list_init=`echo $inc_version_list |
6936                 $sed -e 's/^/"/' -e 's/ /","/g' -e 's/$/",0/'`
6937         ;;
6938 esac
6939 $rm -f getverlist
6940
6941 : determine whether to install perl also as /usr/bin/perl
6942
6943 echo " "
6944 if $test -d /usr/bin -a "X$installbin" != X/usr/bin; then
6945         $cat <<EOM
6946 Many scripts expect perl to be installed as /usr/bin/perl.
6947 I can install the perl you are about to compile also as /usr/bin/perl
6948 (in addition to $installbin/perl).
6949 EOM
6950         case "$installusrbinperl" in
6951         "$undef"|[nN]*) dflt='n';;
6952         *)              dflt='y';;
6953         esac
6954         rp="Do you want to install perl as /usr/bin/perl?"
6955         . ./myread
6956         case "$ans" in
6957         [yY]*)  val="$define";;
6958         *)      val="$undef" ;;
6959         esac
6960 else
6961         val="$undef"
6962 fi
6963 set installusrbinperl
6964 eval $setvar
6965
6966 : see if dld is available
6967 set dld.h i_dld
6968 eval $inhdr
6969
6970 : see if dlopen exists
6971 xxx_runnm="$runnm"
6972 runnm=false
6973 set dlopen d_dlopen
6974 eval $inlibc
6975 runnm="$xxx_runnm"
6976
6977 : determine which dynamic loading, if any, to compile in
6978 echo " "
6979 dldir="ext/DynaLoader"
6980 case "$usedl" in
6981 $define|y|true)
6982         dflt='y'
6983         usedl="$define"
6984         ;;
6985 $undef|n|false)
6986         dflt='n'
6987         usedl="$undef"
6988         ;;
6989 *) 
6990         dflt='n'
6991         case "$d_dlopen" in
6992             $define) dflt='y' ;;
6993         esac
6994         case "$i_dld" in
6995             $define) dflt='y' ;;
6996         esac
6997         : Does a dl_xxx.xs file exist for this operating system
6998         $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
6999         ;;
7000 esac
7001 rp="Do you wish to use dynamic loading?"
7002 . ./myread
7003 usedl="$ans"
7004 case "$ans" in
7005 y*) usedl="$define"
7006         case "$dlsrc" in
7007         '')
7008                 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
7009                         dflt="$dldir/dl_${osname}.xs"
7010                 elif $test "$d_dlopen" = "$define" ; then
7011                         dflt="$dldir/dl_dlopen.xs"
7012                 elif $test "$i_dld" = "$define" ; then
7013                         dflt="$dldir/dl_dld.xs"
7014                 else
7015                         dflt=''
7016                 fi
7017                 ;;
7018         *)      dflt="$dldir/$dlsrc"
7019                 ;;
7020         esac
7021     echo "The following dynamic loading files are available:"
7022         : Can not go over to $dldir because getfile has path hard-coded in.
7023         tdir=`pwd`; cd $rsrc; $ls -C $dldir/dl*.xs; cd $tdir
7024         rp="Source file to use for dynamic loading"
7025         fn="fne"
7026         gfpth="$src"
7027         . ./getfile
7028         usedl="$define"
7029         : emulate basename
7030         dlsrc=`echo $ans | $sed -e 's%.*/\([^/]*\)$%\1%'`
7031
7032         $cat << EOM
7033
7034 Some systems may require passing special flags to $cc -c to
7035 compile modules that will be used to create a shared library.
7036 To use no flags, say "none".
7037
7038 EOM
7039     case "$cccdlflags" in
7040     '') case "$gccversion" in
7041                 '') case "$osname" in
7042                         hpux)   dflt='+z' ;;
7043                         next)   dflt='none' ;;
7044                         irix*)  dflt='-KPIC' ;;
7045                         svr4*|esix*|solaris|nonstopux) dflt='-KPIC' ;;
7046                         sunos)  dflt='-pic' ;;
7047                         *)      dflt='none' ;;
7048                     esac
7049                         ;;
7050                 *)  case "$osname" in
7051                         darwin) dflt='none' ;;
7052                         svr4*|esix*|solaris|nonstopux) dflt='-fPIC' ;;
7053                         *)      dflt='-fpic' ;;
7054                     esac ;;
7055             esac ;;
7056         ' ') dflt='none' ;;
7057     *)  dflt="$cccdlflags" ;;
7058     esac
7059     rp="Any special flags to pass to $cc -c to compile shared library modules?"
7060     . ./myread
7061     case "$ans" in
7062     none) cccdlflags=' ' ;;
7063     *) cccdlflags="$ans" ;;
7064     esac
7065
7066     cat << EOM
7067
7068 Some systems use ld to create libraries that can be dynamically loaded,
7069 while other systems (such as those using ELF) use $cc.
7070
7071 EOM
7072         case "$ld" in
7073         '')     $cat >try.c <<'EOM'
7074 /* Test for whether ELF binaries are produced */
7075 #include <fcntl.h>
7076 #include <stdlib.h>
7077 int main() {
7078         char b[4];
7079         int i = open("a.out",O_RDONLY);
7080         if(i == -1) 
7081                 exit(1); /* fail */
7082         if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
7083                 exit(0); /* succeed (yes, it's ELF) */
7084         else
7085                 exit(1); /* fail */
7086 }
7087 EOM
7088                 if $cc $ccflags $ldflags try.c >/dev/null 2>&1 && $run ./a.out; then
7089                         cat <<EOM
7090 You appear to have ELF support.  I'll use $cc to build dynamic libraries.
7091 EOM
7092                         dflt="$cc"
7093                 else
7094                         echo "I'll use ld to build dynamic libraries."
7095                         dflt='ld'
7096                 fi
7097                 rm -f try.c a.out
7098                 ;;
7099         *)      dflt="$ld"
7100                 ;;
7101         esac
7102
7103     rp="What command should be used to create dynamic libraries?"
7104     . ./myread
7105         ld="$ans"
7106
7107     cat << EOM
7108
7109 Some systems may require passing special flags to $ld to create a
7110 library that can be dynamically loaded.  If your ld flags include
7111 -L/other/path options to locate libraries outside your loader's normal
7112 search path, you may need to specify those -L options here as well.  To
7113 use no flags, say "none".
7114
7115 EOM
7116     case "$lddlflags" in
7117     '') case "$osname" in
7118                         beos) dflt='-nostart' ;;
7119                         hpux) dflt='-b';
7120                               case "$gccversion" in
7121                               '') dflt="$dflt +vnocompatwarnings" ;;
7122                               esac
7123                               ;;        
7124                         linux|irix*)    dflt='-shared' ;;
7125                         next)  dflt='none' ;;
7126                         solaris) dflt='-G' ;;
7127                         sunos) dflt='-assert nodefinitions' ;;
7128                         svr4*|esix*|nonstopux) dflt="-G $ldflags" ;;
7129                 *)     dflt='none' ;;
7130                         esac
7131                         ;;
7132     *) dflt="$lddlflags" ;;
7133     esac
7134
7135         : Try to guess additional flags to pick up local libraries.
7136         : Be careful not to append to a plain 'none'
7137         case "$dflt" in
7138         none) dflt='' ;;
7139         esac
7140         for thisflag in $ldflags; do
7141                 case "$thisflag" in
7142                 -L*|-R*)
7143                         case " $dflt " in
7144                         *" $thisflag "*) ;;
7145                         *) dflt="$dflt $thisflag" ;;
7146                         esac
7147                         ;;
7148                 esac
7149         done
7150
7151         case "$dflt" in
7152         ''|' ') dflt='none' ;;
7153         esac
7154
7155     rp="Any special flags to pass to $ld to create a dynamically loaded library?"
7156     . ./myread
7157     case "$ans" in
7158     none) lddlflags=' ' ;;
7159     *) lddlflags="$ans" ;;
7160     esac
7161
7162         cat <<EOM
7163
7164 Some systems may require passing special flags to $cc to indicate that
7165 the resulting executable will use dynamic linking.  To use no flags,
7166 say "none".
7167
7168 EOM
7169     case "$ccdlflags" in
7170     '') case "$osname" in
7171                 hpux)   dflt='-Wl,-E' ;;
7172                 linux)  dflt='-rdynamic' ;;
7173                 next)   dflt='none' ;;
7174                 sunos)  dflt='none' ;;
7175                 *)      dflt='none' ;;
7176             esac ;;
7177     ' ')  dflt='none' ;;
7178     *)  dflt="$ccdlflags" ;;
7179     esac
7180     rp="Any special flags to pass to $cc to use dynamic linking?"
7181     . ./myread
7182     case "$ans" in
7183     none) ccdlflags=' ' ;;
7184     *) ccdlflags="$ans" ;;
7185     esac
7186     ;;
7187 *)  usedl="$undef"
7188         ld='ld'
7189     dlsrc='dl_none.xs'
7190     lddlflags=''
7191     ccdlflags=''
7192     ;;
7193 esac
7194
7195 also=''
7196 case "$usedl" in
7197 $undef)
7198         # No dynamic loading being used, so don't bother even to prompt.
7199         useshrplib='false'
7200         ;;
7201 *)      case "$useshrplib" in
7202         '')     case "$osname" in
7203                 svr4*|nonstopux|dgux|dynixptx|esix|powerux|beos|cygwin*)
7204                         dflt=y
7205                         also='Building a shared libperl is required for dynamic loading to work on your system.'
7206                         ;;
7207                 next*)
7208                         case "$osvers" in
7209                         4*)     dflt=y
7210                                 also='Building a shared libperl is needed for MAB support.'
7211                                 ;;
7212                         *)      dflt=n
7213                                 ;;
7214                         esac
7215                         ;;
7216                 *)      dflt=n
7217                         ;;
7218                 esac
7219                 ;;
7220         $define|true|[Yy]*)
7221                 dflt=y
7222                 ;;
7223         *)      dflt=n
7224                 ;;
7225         esac
7226         $cat << EOM
7227
7228 The perl executable is normally obtained by linking perlmain.c with
7229 libperl${_a}, any static extensions (usually just DynaLoader), and
7230 any other libraries needed on this system (such as -lm, etc.).  Since
7231 your system supports dynamic loading, it is probably possible to build
7232 a shared libperl.$so.  If you will have more than one executable linked
7233 to libperl.$so, this will significantly reduce the size of each
7234 executable, but it may have a noticeable affect on performance.  The
7235 default is probably sensible for your system.
7236 $also
7237
7238 EOM
7239         rp="Build a shared libperl.$so (y/n)"
7240         . ./myread
7241         case "$ans" in
7242         true|$define|[Yy]*)
7243                 useshrplib='true'  ;;
7244         *)      useshrplib='false' ;;
7245         esac
7246         ;;
7247 esac
7248
7249 case "$useshrplib" in
7250 true)
7251         case "$libperl" in
7252         '')
7253                 # Figure out a good name for libperl.so.  Since it gets stored in
7254                 # a version-specific architecture-dependent library, the version
7255                 # number isn't really that important, except for making cc/ld happy.
7256                 #
7257                 # A name such as libperl.so.3.1
7258                 majmin="libperl.$so.$patchlevel.$subversion"
7259                 # A name such as libperl.so.301
7260                 majonly=`echo $patchlevel $subversion |
7261                         $awk '{printf "%d%02d", $1, $2}'`
7262                 majonly=libperl.$so.$majonly
7263                 # I'd prefer to keep the os-specific stuff here to a minimum, and
7264                 # rely on figuring it out from the naming of libc.
7265                 case "${osname}${osvers}" in
7266                 next4*)
7267                         dflt=libperl.5.$so
7268                         # XXX How handle the --version stuff for MAB?
7269                         ;;
7270                 linux*)  # ld won't link with a bare -lperl otherwise.
7271                         dflt=libperl.$so
7272                         ;;
7273                 cygwin*) # include version
7274                         dflt=`echo libperl$version | sed -e 's/\./_/g'`$lib_ext
7275                         ;;
7276                 *)      # Try to guess based on whether libc has major.minor.
7277                         case "$libc" in
7278                         *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
7279                         *libc.$so.[0-9]*) dflt=$majonly ;;
7280                         *)      dflt=libperl.$so ;;
7281                         esac
7282                         ;;
7283                 esac
7284                 ;;
7285         *)      dflt=$libperl
7286                 ;;
7287         esac
7288         cat << EOM
7289
7290 I need to select a good name for the shared libperl.  If your system uses
7291 library names with major and minor numbers, then you might want something
7292 like $majmin.  Alternatively, if your system uses a single version
7293 number for shared libraries, then you might want to use $majonly.
7294 Or, your system might be quite happy with a simple libperl.$so.
7295
7296 Since the shared libperl will get installed into a version-specific
7297 architecture-dependent directory, the version number of the shared perl
7298 library probably isn't important, so the default should be o.k.
7299
7300 EOM
7301         rp='What name do you want to give to the shared libperl?'
7302         . ./myread
7303         libperl=$ans
7304         echo "Ok, I'll use $libperl"
7305         ;;
7306 *)
7307         libperl="libperl${_a}"
7308         ;;
7309 esac
7310
7311 # Detect old use of shrpdir via undocumented Configure -Dshrpdir
7312 case "$shrpdir" in
7313 '') ;;
7314 *)      $cat >&4 <<EOM
7315 WARNING:  Use of the shrpdir variable for the installation location of
7316 the shared $libperl is not supported.  It was never documented and
7317 will not work in this version.  Let me (perlbug@perl.org)
7318 know of any problems this may cause.
7319
7320 EOM
7321         case "$shrpdir" in
7322         "$archlibexp/CORE")
7323                 $cat >&4 <<EOM
7324 But your current setting of $shrpdir is
7325 the default anyway, so it's harmless.
7326 EOM
7327                 ;;
7328         *)
7329                 $cat >&4 <<EOM
7330 Further, your current attempted setting of $shrpdir
7331 conflicts with the value of $archlibexp/CORE
7332 that installperl will use.
7333 EOM
7334                 ;;
7335         esac
7336         ;;
7337 esac
7338
7339 # How will the perl executable find the installed shared $libperl?
7340 # Add $xxx to ccdlflags.
7341 # If we can't figure out a command-line option, use $shrpenv to
7342 # set env LD_RUN_PATH.  The main perl makefile uses this.
7343 shrpdir=$archlibexp/CORE
7344 xxx=''
7345 tmp_shrpenv=''
7346 if "$useshrplib"; then
7347     case "$osname" in 
7348         aix)
7349                 # We'll set it in Makefile.SH...
7350                 ;;
7351         solaris|netbsd)
7352                 xxx="-R $shrpdir"
7353                 ;;
7354         freebsd)
7355                 xxx="-Wl,-R$shrpdir"
7356                 ;;
7357         linux|irix*|dec_osf)
7358                 xxx="-Wl,-rpath,$shrpdir"
7359                 ;;
7360         next)
7361                 # next doesn't like the default...
7362                 ;;
7363         beos)
7364                 # beos doesn't like the default, either.
7365                 ;;
7366         hpux*)
7367                 # hpux doesn't like the default, either.
7368                 tmp_shrpenv="env LDOPTS=\"+s +b${shrpdir}\""
7369                 ;;
7370         *)
7371                 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
7372                 ;;
7373         esac
7374         case "$xxx" in
7375         '') ;;
7376         *)      
7377                 # Only add $xxx if it isn't already in ccdlflags.
7378                 case " $ccdlflags " in
7379                 *" $xxx "*)     ;;
7380                 *)      ccdlflags="$ccdlflags $xxx"
7381                         cat <<EOM >&4
7382
7383 Adding $xxx to the flags
7384 passed to $ld so that the perl executable will find the 
7385 installed shared $libperl.
7386
7387 EOM
7388                         ;;
7389                 esac
7390                 ;;
7391         esac
7392 fi
7393 # Fix ccdlflags in AIX for building external extensions.
7394 # (For building Perl itself bare -bE:perl.exp is needed,
7395 #  Makefile.SH takes care of this.)
7396 case "$osname" in
7397 aix) ccdlflags="$ccdlflags -bE:$installarchlib/CORE/perl.exp" ;;
7398 esac
7399 # Respect a hint or command-line value.
7400 case "$shrpenv" in
7401 '') shrpenv="$tmp_shrpenv" ;;
7402 esac
7403 case "$ldlibpthname" in
7404 '')     ldlibpthname=LD_LIBRARY_PATH ;;
7405 none)   ldlibpthname='' ;;
7406 esac
7407
7408 : determine where manual pages are on this system
7409 echo " "
7410 case "$sysman" in
7411 '') 
7412         syspath='/usr/share/man/man1 /usr/man/man1'
7413         syspath="$syspath /usr/man/mann /usr/man/manl /usr/man/local/man1"
7414         syspath="$syspath /usr/man/u_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/share/man/man1"
7447         lookpath="$lookpath $prefixexp/man/man1 $prefixexp/man/l_man/man1"
7448         lookpath="$lookpath $prefixexp/man/p_man/man1"
7449         lookpath="$lookpath $prefixexp/man/u_man/man1"
7450         lookpath="$lookpath $prefixexp/man/man.1"
7451         case "$sysman" in
7452         */?_man*)       dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
7453         *)      dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
7454         esac
7455         set dflt
7456         eval $prefixup
7457         ;;
7458 *)  dflt="$man1dir"
7459         ;;
7460 esac
7461 echo " "
7462 fn=dn+~
7463 rp="Where do the main $spackage manual pages (source) go?"
7464 . ./getfile
7465 if $test "X$man1direxp" != "X$ansexp"; then
7466         installman1dir=''
7467 fi
7468 man1dir="$ans"
7469 man1direxp="$ansexp"
7470 case "$man1dir" in
7471 '')     man1dir=' '
7472         installman1dir='';;
7473 esac
7474
7475 : Change installation prefix, if necessary.
7476 if $test X"$prefix" != X"$installprefix"; then
7477         installman1dir=`echo $man1direxp | $sed "s#^$prefix#$installprefix#"`
7478 else
7479         installman1dir="$man1direxp"
7480 fi
7481
7482 : What suffix to use on installed man pages
7483
7484 case "$man1dir" in
7485 ' ')
7486         man1ext='0'
7487         ;;
7488 *)
7489         rp="What suffix should be used for the main $spackage man pages?"
7490         case "$man1ext" in
7491         '')     case "$man1dir" in
7492                 *1)  dflt=1 ;;
7493                 *1p) dflt=1p ;;
7494                 *1pm) dflt=1pm ;;
7495                 *l) dflt=l;;
7496                 *n) dflt=n;;
7497                 *o) dflt=o;;
7498                 *p) dflt=p;;
7499                 *C) dflt=C;;
7500                 *L) dflt=L;;
7501                 *L1) dflt=L1;;
7502                 *) dflt=1;;
7503                 esac
7504                 ;;
7505         *)      dflt="$man1ext";;
7506         esac
7507         . ./myread
7508         man1ext="$ans"
7509         ;;
7510 esac
7511
7512 : see if we can have long filenames
7513 echo " "
7514 first=123456789abcdef
7515 $rm -f $first
7516 if (echo hi >$first) 2>/dev/null; then
7517         if $test -f 123456789abcde; then
7518                 echo 'You cannot have filenames longer than 14 characters.  Sigh.' >&4
7519                 val="$undef"
7520         else
7521                 echo 'You can have filenames longer than 14 characters.'>&4
7522                 val="$define"
7523         fi
7524 else
7525         $cat <<'EOM'
7526 You can't have filenames longer than 14 chars.
7527 You can't even think about them!
7528 EOM
7529         val="$undef"
7530 fi 
7531 set d_flexfnam
7532 eval $setvar
7533 $rm -rf 123456789abcde*
7534
7535 : determine where library module manual pages go
7536 set man3dir man3dir none
7537 eval $prefixit
7538 $cat <<EOM
7539
7540 $spackage has manual pages for many of the library modules.
7541 EOM
7542
7543 case "$nroff" in
7544 nroff)
7545         $cat <<'EOM'
7546 However, you don't have nroff, so they're probably useless to you.
7547 EOM
7548         case "$man3dir" in
7549         '') man3dir="none";;
7550         esac;;
7551 esac
7552
7553 case "$d_flexfnam" in
7554 undef)
7555         $cat <<'EOM'
7556 However, your system can't handle the long file names like File::Basename.3. 
7557 EOM
7558         case "$man3dir" in
7559         '') man3dir="none";;
7560         esac;;
7561 esac
7562
7563 echo "If you don't want the manual sources installed, answer 'none'."
7564 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
7565 case "$man3dir" in
7566 '')     dflt=`echo "$man1dir" | $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'`
7567         if $test -d "$privlib/man/man3"; then
7568                 cat <<EOM >&4
7569
7570 WARNING:  Previous versions of perl installed man3 pages into
7571 $privlib/man/man3.  This version will suggest a 
7572 new default of $dflt.  
7573 EOM
7574                 tdflt=$dflt
7575                 dflt='n'
7576                 rp='Do you wish to preserve the old behavior?(y/n)'
7577                 . ./myread
7578                 case "$ans" in
7579                 y*) dflt="$privlib/man/man3" ;;
7580                 *)  dflt=$tdflt ;;
7581                 esac
7582     fi
7583         ;;
7584 *)      dflt="$man3dir" ;;
7585 esac
7586 case "$dflt" in
7587 ' ') dflt=none ;;
7588 esac
7589 echo " "
7590 fn=dn+~
7591 rp="Where do the $package library man pages (source) go?"
7592 . ./getfile
7593 man3dir="$ans"
7594 man3direxp="$ansexp"
7595 case "$man3dir" in
7596 '')     man3dir=' '
7597         installman3dir='';;
7598 esac
7599
7600 : Change installation prefix, if necessary.
7601 if $test X"$prefix" != X"$installprefix"; then
7602         installman3dir=`echo $man3direxp | $sed "s#^$prefix#$installprefix#"`
7603 else
7604         installman3dir="$man3direxp"
7605 fi
7606
7607 : What suffix to use on installed man pages
7608 case "$man3dir" in
7609 ' ')
7610         man3ext='0'
7611         ;;
7612 *)
7613         rp="What suffix should be used for the $package library man pages?"
7614         case "$man3ext" in
7615         '')     case "$man3dir" in
7616                 *3)  dflt=3 ;;
7617                 *3p) dflt=3p ;;
7618                 *3pm) dflt=3pm ;;
7619                 *l) dflt=l;;
7620                 *n) dflt=n;;
7621                 *o) dflt=o;;
7622                 *p) dflt=p;;
7623                 *C) dflt=C;;
7624                 *L) dflt=L;;
7625                 *L3) dflt=L3;;
7626                 *) dflt=3;;
7627                 esac
7628                 ;;
7629         *)      dflt="$man3ext";;
7630         esac
7631         . ./myread
7632         man3ext="$ans"
7633         ;;
7634 esac
7635
7636 : see if we have to deal with yellow pages, now NIS.
7637 if $test -d /usr/etc/yp || $test -d /etc/yp; then
7638         if $test -f /usr/etc/nibindd; then
7639                 echo " "
7640                 echo "I'm fairly confident you're on a NeXT."
7641                 echo " "
7642                 rp='Do you get the hosts file via NetInfo?'
7643                 dflt=y
7644                 case "$hostcat" in
7645                 nidump*) ;;
7646                 '') ;;
7647                 *) dflt=n;;
7648                 esac
7649                 . ./myread
7650                 case "$ans" in
7651                 y*) hostcat='nidump hosts .';;
7652                 *)      case "$hostcat" in
7653                         nidump*) hostcat='';;
7654                         esac
7655                         ;;
7656                 esac
7657         fi
7658         case "$hostcat" in
7659         nidump*) ;;
7660         *)
7661                 case "$hostcat" in
7662                 *ypcat*) dflt=y;;
7663                 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
7664                                 dflt=y
7665                         else
7666                                 dflt=n
7667                         fi;;
7668                 *) dflt=n;;
7669                 esac
7670                 echo " "
7671                 rp='Are you getting the hosts file via yellow pages?'
7672                 . ./myread
7673                 case "$ans" in
7674                 y*) hostcat='ypcat hosts';;
7675                 *) hostcat='cat /etc/hosts';;
7676                 esac
7677                 ;;
7678         esac
7679 fi
7680 case "$hostcat" in
7681 '') test -f /etc/hosts && hostcat='cat /etc/hosts';;
7682 esac
7683 case "$groupcat" in
7684 '') test -f /etc/group && groupcat='cat /etc/group';;
7685 esac
7686 case "$passcat" in
7687 '') test -f /etc/passwd && passcat='cat /etc/passwd';;
7688 esac
7689
7690 : now get the host name
7691 echo " "
7692 echo "Figuring out host name..." >&4
7693 case "$myhostname" in
7694 '') cont=true
7695         echo 'Maybe "hostname" will work...'
7696         if tans=`sh -c hostname 2>&1` ; then
7697                 myhostname=$tans
7698                 phostname=hostname
7699                 cont=''
7700         fi
7701         ;;
7702 *) cont='';;
7703 esac
7704 if $test "$cont"; then
7705         if ./xenix; then
7706                 echo 'Oh, dear.  Maybe "/etc/systemid" is the key...'
7707                 if tans=`cat /etc/systemid 2>&1` ; then
7708                         myhostname=$tans
7709                         phostname='cat /etc/systemid'
7710                         echo "Whadyaknow.  Xenix always was a bit strange..."
7711                         cont=''
7712                 fi
7713         elif $test -r /etc/systemid; then
7714                 echo "(What is a non-Xenix system doing with /etc/systemid?)"
7715         fi
7716 fi
7717 if $test "$cont"; then
7718         echo 'No, maybe "uuname -l" will work...'
7719         if tans=`sh -c 'uuname -l' 2>&1` ; then
7720                 myhostname=$tans
7721                 phostname='uuname -l'
7722         else
7723                 echo 'Strange.  Maybe "uname -n" will work...'
7724                 if tans=`sh -c 'uname -n' 2>&1` ; then
7725                         myhostname=$tans
7726                         phostname='uname -n'
7727                 else
7728                         echo 'Oh well, maybe I can mine it out of whoami.h...'
7729                         if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
7730                                 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
7731                                 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
7732                         else
7733                                 case "$myhostname" in
7734                                 '') echo "Does this machine have an identity crisis or something?"
7735                                         phostname='';;
7736                                 *)
7737                                         echo "Well, you said $myhostname before..."
7738                                         phostname='echo $myhostname';;
7739                                 esac
7740                         fi
7741                 fi
7742         fi
7743 fi
7744 : you do not want to know about this
7745 set $myhostname
7746 myhostname=$1
7747
7748 : verify guess
7749 if $test "$myhostname" ; then
7750         dflt=y
7751         rp='Your host name appears to be "'$myhostname'".'" Right?"
7752         . ./myread
7753         case "$ans" in
7754         y*) ;;
7755         *) myhostname='';;
7756         esac
7757 fi
7758
7759 : bad guess or no guess
7760 while $test "X$myhostname" = X ; do
7761         dflt=''
7762         rp="Please type the (one word) name of your host:"
7763         . ./myread
7764         myhostname="$ans"
7765 done
7766
7767 : translate upper to lower if necessary
7768 case "$myhostname" in
7769 *[A-Z]*)
7770         echo "(Normalizing case in your host name)"
7771         myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
7772         ;;
7773 esac
7774
7775 case "$myhostname" in
7776 *.*)
7777         dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
7778         myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
7779         echo "(Trimming domain name from host name--host name is now $myhostname)"
7780         ;;
7781 *) case "$mydomain" in
7782         '')
7783                 {
7784                         test "X$hostcat" = "Xypcat hosts" &&
7785                         ypmatch "$myhostname" hosts 2>/dev/null |\
7786                                 $sed -e 's/[     ]*#.*//; s/$/ /' > hosts && \
7787                         $test -s hosts
7788                 } || {
7789                         test "X$hostcat" != "X" &&
7790                         $hostcat | $sed -n -e "s/[       ]*#.*//; s/\$/ /
7791                                         /[       ]$myhostname[  . ]/p" > hosts
7792                 }
7793                 tmp_re="[       . ]"
7794                 if $test -f hosts; then
7795                         $test x`$awk "/[0-9].*[  ]$myhostname$tmp_re/ { sum++ }
7796                              END { print sum }" hosts` = x1 || tmp_re="[         ]"
7797                         dflt=.`$awk "/[0-9].*[   ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
7798                                 hosts | $sort | $uniq | \
7799                                 $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
7800                         case `$echo X$dflt` in
7801                         X*\ *)  echo "(Several hosts in the database matched hostname)"
7802                                 dflt=.
7803                                 ;;
7804                         X.) echo "(You do not have fully-qualified names in the hosts database)"
7805                                 ;;
7806                         esac
7807                 else
7808                         echo "(I cannot locate a hosts database anywhere)"
7809                         dflt=.
7810                 fi
7811                 case "$dflt" in
7812                 .)
7813                         tans=`./loc resolv.conf X /etc /usr/etc`
7814                         if $test -f "$tans"; then
7815                                 echo "(Attempting domain name extraction from $tans)"
7816                                 dflt=.`$sed -n -e 's/   / /g' \
7817                                   -e 's/^search  *\([^ ]*\).*/\1/p' $tans \
7818                                   | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
7819                                 case "$dflt" in
7820                                 .) dflt=.`$sed -n -e 's/        / /g' \
7821                                      -e 's/^domain  *\([^ ]*\).*/\1/p' $tans \
7822                                      | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
7823                                         ;;
7824                                 esac
7825                         fi
7826                         ;;
7827                 esac
7828                 case "$dflt" in
7829                 .) echo "(No help from resolv.conf either -- attempting clever guess)"
7830                         dflt=.`sh -c domainname 2>/dev/null`
7831                         case "$dflt" in
7832                         '') dflt='.';;
7833                         .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
7834                         esac
7835                         ;;
7836                 esac
7837                 case "$dflt$osname" in
7838                 .os390) echo "(Attempting domain name extraction from //'SYS1.TCPPARMS(TCPDATA)')"
7839                         dflt=.`awk '/^DOMAINORIGIN/ {print $2}' "//'SYS1.TCPPARMS(TCPDATA)'" 2>/dev/null`
7840                         ;;
7841                 esac
7842                 case "$dflt" in
7843                 .) echo "(Lost all hope -- silly guess then)"
7844                         dflt='.uucp'
7845                         ;;
7846                 esac
7847                 $rm -f hosts
7848                 ;;
7849         *) dflt="$mydomain";;
7850         esac;;
7851 esac
7852 echo " "
7853 rp="What is your domain name?"
7854 . ./myread
7855 tans="$ans"
7856 case "$ans" in
7857 '') ;;
7858 .*) ;;
7859 *) tans=".$tans";;
7860 esac
7861 mydomain="$tans"
7862
7863 : translate upper to lower if necessary
7864 case "$mydomain" in
7865 *[A-Z]*)
7866         echo "(Normalizing case in your domain name)"
7867         mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
7868         ;;
7869 esac
7870
7871 : a little sanity check here
7872 case "$phostname" in
7873 '') ;;
7874 *)
7875         case `$phostname | ./tr '[A-Z]' '[a-z]'` in
7876         $myhostname$mydomain|$myhostname) ;;
7877         *)
7878                 case "$phostname" in
7879                 sed*)
7880                         echo "(That doesn't agree with your whoami.h file, by the way.)"
7881                         ;;
7882                 *)
7883                         echo "(That doesn't agree with your $phostname command, by the way.)"
7884                         ;;
7885                 esac
7886         ;;
7887         esac
7888         ;;
7889 esac
7890
7891 $cat <<EOM
7892
7893 I need to get your e-mail address in Internet format if possible, i.e.
7894 something like user@host.domain. Please answer accurately since I have
7895 no easy means to double check it. The default value provided below
7896 is most probably close to reality but may not be valid from outside
7897 your organization...
7898
7899 EOM
7900 cont=x
7901 while test "$cont"; do
7902         case "$cf_email" in
7903         '') dflt="$cf_by@$myhostname$mydomain";;
7904         *) dflt="$cf_email";;
7905         esac
7906         rp='What is your e-mail address?'
7907         . ./myread
7908         cf_email="$ans"
7909         case "$cf_email" in
7910         *@*.*) cont='' ;;
7911         *)
7912                 rp='Address does not look like an Internet one.  Use it anyway?'
7913                 case "$fastread" in
7914                 yes) dflt=y ;;
7915                 *) dflt=n ;;
7916                 esac
7917                 . ./myread
7918                 case "$ans" in
7919                 y*) cont='' ;;
7920                 *) echo " " ;;
7921                 esac
7922                 ;;
7923         esac
7924 done
7925
7926 $cat <<EOM
7927
7928 If you or somebody else will be maintaining perl at your site, please
7929 fill in the correct e-mail address here so that they may be contacted
7930 if necessary. Currently, the "perlbug" program included with perl
7931 will send mail to this address in addition to perlbug@perl.org. You may
7932 enter "none" for no administrator.
7933
7934 EOM
7935 case "$perladmin" in
7936 '') dflt="$cf_email";;
7937 *) dflt="$perladmin";;
7938 esac
7939 rp='Perl administrator e-mail address'
7940 . ./myread
7941 perladmin="$ans"
7942
7943 : determine whether to only install version-specific parts.
7944 echo " "
7945 $cat <<EOM
7946 Do you want to install only the version-specific parts of the perl
7947 distribution?  Usually you do *not* want to do this.
7948 EOM
7949 case "$versiononly" in
7950 "$define"|[Yy]*|true) dflt='y' ;;
7951 *) dflt='n';
7952 esac
7953 rp="Do you want to install only the version-specific parts of perl?"
7954 . ./myread
7955 case "$ans" in
7956 [yY]*)  val="$define";;
7957 *)      val="$undef" ;;
7958 esac
7959 set versiononly
7960 eval $setvar
7961
7962 : figure out how to guarantee perl startup
7963 case "$startperl" in
7964 '')
7965         case "$sharpbang" in
7966         *!)
7967                 $cat <<EOH
7968
7969 I can use the #! construct to start perl on your system. This will
7970 make startup of perl scripts faster, but may cause problems if you
7971 want to share those scripts and perl is not in a standard place
7972 ($binexp/perl) on all your platforms. The alternative is to force
7973 a shell by starting the script with a single ':' character.
7974
7975 EOH
7976                 case "$versiononly" in
7977                 "$define")      dflt="$binexp/perl$version";;  
7978                 *)              dflt="$binexp/perl";;
7979                 esac
7980                 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
7981                 . ./myread
7982                 case "$ans" in
7983                 none)   startperl=": # use perl";;
7984                 *)      startperl="#!$ans"
7985                         if $test 30 -lt `echo "$ans" | wc -c`; then
7986                                 $cat >&4 <<EOM
7987
7988 WARNING:  Some systems limit the #! command to 32 characters.
7989 If you experience difficulty running Perl scripts with #!, try
7990 installing Perl in a directory with a shorter pathname.
7991
7992 EOM
7993                         fi ;;
7994                 esac
7995                 ;;
7996         *) startperl=": # use perl"
7997                 ;;
7998         esac
7999         ;;
8000 esac
8001 echo "I'll use $startperl to start perl scripts."
8002
8003 : figure best path for perl in scripts
8004 case "$perlpath" in
8005 '')
8006         perlpath="$binexp/perl"
8007         case "$startperl" in
8008         *!*) ;;
8009         *)
8010                 $cat <<EOH
8011
8012 I will use the "eval 'exec'" idiom to start Perl on your system.
8013 I can use the full path of your Perl binary for this purpose, but
8014 doing so may cause problems if you want to share those scripts and
8015 Perl is not always in a standard place ($binexp/perl).
8016
8017 EOH
8018                 dflt="$binexp/perl"
8019                 rp="What path shall I use in \"eval 'exec'\"?"
8020                 . ./myread
8021                 perlpath="$ans"
8022                 ;;
8023         esac
8024         ;;
8025 esac
8026 case "$startperl" in
8027 *!*)    ;;
8028 *)      echo "I'll use $perlpath in \"eval 'exec'\"" ;;
8029 esac
8030
8031 : determine where public executable scripts go
8032 set scriptdir scriptdir
8033 eval $prefixit
8034 case "$scriptdir" in
8035 '')
8036         dflt="$bin"
8037         : guess some guesses
8038         $test -d /usr/share/scripts && dflt=/usr/share/scripts
8039         $test -d /usr/share/bin     && dflt=/usr/share/bin
8040         $test -d /usr/local/script  && dflt=/usr/local/script
8041         $test -d /usr/local/scripts && dflt=/usr/local/scripts
8042         $test -d $prefixexp/script  && dflt=$prefixexp/script
8043         set dflt
8044         eval $prefixup
8045         ;;
8046 *)  dflt="$scriptdir"
8047         ;;
8048 esac
8049 $cat <<EOM
8050  
8051 Some installations have a separate directory just for executable scripts so
8052 that they can mount it across multiple architectures but keep the scripts in
8053 one spot.  You might, for example, have a subdirectory of /usr/share for this.
8054 Or you might just lump your scripts in with all your other executables.
8055  
8056 EOM
8057 fn=d~
8058 rp='Where do you keep publicly executable scripts?'
8059 . ./getfile
8060 if $test "X$ansexp" != "X$scriptdirexp"; then
8061         installscript=''
8062 fi
8063 scriptdir="$ans"
8064 scriptdirexp="$ansexp"
8065 : Change installation prefix, if necessary.
8066 if $test X"$prefix" != X"$installprefix"; then
8067         installscript=`echo $scriptdirexp | sed "s#^$prefix#$installprefix#"`
8068 else
8069         installscript="$scriptdirexp"
8070 fi
8071
8072 : determine where add-on public executables go
8073 case "$sitebin" in
8074 '')     dflt=$siteprefix/bin ;;
8075 *)      dflt=$sitebin ;;
8076 esac
8077 fn=d~
8078 rp='Pathname where the add-on public executables should be installed?'
8079 . ./getfile
8080 sitebin="$ans"
8081 sitebinexp="$ansexp"
8082 : Change installation prefix, if necessary.
8083 if $test X"$prefix" != X"$installprefix"; then
8084         installsitebin=`echo $sitebinexp | sed "s#^$prefix#$installprefix#"`
8085 else
8086         installsitebin="$sitebinexp"
8087 fi
8088
8089 : define an is-a-typedef? function
8090 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
8091 case "$inclist" in
8092 "") inclist="sys/types.h";;
8093 esac;
8094 eval "varval=\$$var";
8095 case "$varval" in
8096 "")
8097         $rm -f temp.c;
8098         for inc in $inclist; do
8099                 echo "#include <$inc>" >>temp.c;
8100         done;
8101         echo "#ifdef $type" >> temp.c;
8102         echo "printf(\"We have $type\");" >> temp.c;
8103         echo "#endif" >> temp.c;
8104         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
8105         if $contains $type temp.E >/dev/null 2>&1; then
8106                 eval "$var=\$type";
8107         else
8108                 eval "$var=\$def";
8109         fi;
8110         $rm -f temp.?;;
8111 *) eval "$var=\$varval";;
8112 esac'
8113
8114 : define an is-a-typedef? function that prompts if the type is not available.
8115 typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
8116 case "$inclist" in
8117 "") inclist="sys/types.h";;
8118 esac;
8119 eval "varval=\$$var";
8120 case "$varval" in
8121 "")
8122         $rm -f temp.c;
8123         for inc in $inclist; do
8124                 echo "#include <$inc>" >>temp.c;
8125         done;
8126         echo "#ifdef $type" >> temp.c;
8127         echo "printf(\"We have $type\");" >> temp.c;
8128         echo "#endif" >> temp.c;
8129         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
8130         echo " " ;
8131         echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
8132         if $contains $type temp.E >/dev/null 2>&1; then
8133                 echo "$type found." >&4;
8134                 eval "$var=\$type";
8135         else
8136                 echo "$type NOT found." >&4;
8137                 dflt="$def";
8138                 . ./myread ;
8139                 eval "$var=\$ans";
8140         fi;
8141         $rm -f temp.?;;
8142 *) eval "$var=\$varval";;
8143 esac'
8144
8145 : see what type lseek is declared as in the kernel
8146 rp="What is the type used for lseek's offset on this system?"
8147 set off_t lseektype long stdio.h sys/types.h
8148 eval $typedef_ask
8149
8150 echo " "
8151 echo "Checking to see how big your file offsets are..." >&4
8152 $cat >try.c <<EOCP
8153 #include <sys/types.h>
8154 #include <stdio.h>
8155 int main()
8156 {
8157     printf("%d\n", (int)sizeof($lseektype));
8158     return(0); 
8159 }
8160 EOCP
8161 set try
8162 if eval $compile_ok; then
8163         lseeksize=`$run ./try`
8164         echo "Your file offsets are $lseeksize bytes long."
8165 else
8166         dflt=$longsize
8167         echo " "
8168         echo "(I can't seem to compile the test program.  Guessing...)"
8169         rp="What is the size of your file offsets (in bytes)?"
8170         . ./myread
8171         lseeksize="$ans"
8172 fi
8173 $rm -f try.c try
8174
8175 : see what type file positions are declared as in the library
8176 rp="What is the type for file position used by fsetpos()?"
8177 set fpos_t fpostype long stdio.h sys/types.h
8178 eval $typedef_ask
8179
8180 echo " "
8181 case "$fpostype" in
8182 *_t) zzz="$fpostype"    ;;
8183 *)   zzz="fpos_t"       ;;
8184 esac
8185 echo "Checking the size of $zzz..." >&4 
8186 cat > try.c <<EOCP
8187 #include <sys/types.h>
8188 #include <stdio.h>
8189 int main() {
8190     printf("%d\n", (int)sizeof($fpostype));
8191     exit(0);
8192 }
8193 EOCP
8194 set try
8195 if eval $compile_ok; then
8196         yyy=`$run ./try`
8197         case "$yyy" in
8198         '')     fpossize=4
8199                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
8200                 ;;
8201         *)      fpossize=$yyy
8202                 echo "Your $zzz is $fpossize bytes long."
8203                 ;;
8204         esac
8205 else
8206         dflt="$longsize"
8207         echo " " >&4
8208         echo "(I can't compile the test program.  Guessing...)" >&4
8209         rp="What is the size of your file positions (in bytes)?"
8210         . ./myread
8211         fpossize="$ans"
8212 fi
8213
8214
8215
8216 # Backward compatibility (uselfs is deprecated).
8217 case "$uselfs" in
8218 "$define"|true|[yY]*)
8219         cat <<EOM >&4
8220
8221 *** Configure -Duselfs is deprecated, using -Duselargefiles instead.
8222 EOM
8223         uselargefiles="$define"
8224         ;;
8225 esac                          
8226
8227 case "$lseeksize:$fpossize" in
8228 8:8) cat <<EOM
8229
8230 You can have files larger than 2 gigabytes.
8231 EOM
8232    val="$define" ;;
8233 *)    case "$uselargefiles" in
8234    "$undef"|false|[nN]*) dflt='n' ;;
8235    *)   dflt='y' ;;
8236    esac
8237    cat <<EOM
8238
8239 Perl can be built to understand large files (files larger than 2 gigabytes)
8240 on some systems.  To do so, Configure can be run with -Duselargefiles.
8241
8242 If this doesn't make any sense to you, just accept the default '$dflt'.
8243 EOM
8244    rp='Try to understand large files, if available?'
8245    . ./myread
8246    case "$ans" in
8247    y|Y)         val="$define" ;;
8248    *)           val="$undef"  ;;
8249    esac
8250    ;;
8251 esac
8252 set uselargefiles
8253 eval $setvar
8254 case "$uselargefiles" in
8255 "$define")
8256 : Look for a hint-file generated 'call-back-unit'.  If the
8257 : user has specified that a large files perl is to be built,
8258 : we may need to set or change some other defaults.
8259         if $test -f uselargefiles.cbu; then
8260                 echo "Your platform has some specific hints for large file builds, using them..."
8261                 . ./uselargefiles.cbu
8262                 echo " "
8263                 echo "Rechecking to see how big your file offsets are..." >&4
8264                 $cat >try.c <<EOCP
8265 #include <sys/types.h>
8266 #include <stdio.h>
8267 int main()
8268 {
8269     printf("%d\n", (int)sizeof($lseektype));
8270     return(0); 
8271 }
8272 EOCP
8273                 set try
8274                 if eval $compile_ok; then
8275                         lseeksize=`$run ./try`
8276                         $echo "Your file offsets are now $lseeksize bytes long."
8277                 else
8278                         dflt="$lseeksize"
8279                         echo " "
8280                         echo "(I can't seem to compile the test program.  Guessing...)"
8281                         rp="What is the size of your file offsets (in bytes)?"
8282                         . ./myread
8283                         lseeksize="$ans"
8284                 fi
8285                 case "$fpostype" in
8286                 *_t) zzz="$fpostype"    ;;
8287                 *)   zzz="fpos_t"       ;;
8288                 esac
8289                 $echo $n "Rechecking the size of $zzz...$c" >&4 
8290                 $cat > try.c <<EOCP
8291 #include <sys/types.h>
8292 #include <stdio.h>
8293 int main() {
8294     printf("%d\n", (int)sizeof($fpostype));
8295     exit(0);
8296 }
8297 EOCP
8298                 set try
8299                 if eval $compile_ok; then
8300                         yyy=`$run ./try`
8301                         dflt="$lseeksize"
8302                         case "$yyy" in
8303                         '')     echo " "
8304                                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
8305                                 ;;
8306                         *)      fpossize=$yyy
8307                                 echo " $fpossize bytes." >&4
8308                                 ;;
8309                         esac
8310                 else
8311                         dflt="$fpossize"
8312                         echo " "
8313                         echo "(I can't compile the test program.  Guessing...)" >&4
8314                         rp="What is the size of your file positions (in bytes)?"
8315                         . ./myread
8316                         fpossize="$ans"
8317                 fi
8318                 $rm -f try.c try
8319         fi
8320         ;;
8321 esac
8322
8323 case "$vendorprefix" in
8324 '')     d_vendorbin="$undef"
8325         vendorbin=''
8326         vendorbinexp=''
8327         ;;
8328 *)      d_vendorbin="$define"
8329         : determine where vendor-supplied executables go.
8330         case "$vendorbin" in
8331         '') dflt=$vendorprefix/bin ;;
8332         *)      dflt="$vendorbin" ;;
8333         esac
8334         fn=d~+
8335         rp='Pathname for the vendor-supplied executables directory?'
8336         . ./getfile
8337         vendorbin="$ans"
8338         vendorbinexp="$ansexp"
8339         ;;
8340 esac
8341 : Change installation prefix, if necessary.
8342 if $test X"$prefix" != X"$installprefix"; then
8343         installvendorbin=`echo $vendorbinexp | $sed "s#^$prefix#$installprefix#"`
8344 else
8345         installvendorbin="$vendorbinexp"
8346 fi
8347
8348 : see if qgcvt exists
8349 set qgcvt d_qgcvt
8350 eval $inlibc
8351
8352 echo " "
8353
8354 if $test X"$d_longdbl" = X"$define"; then
8355
8356 echo "Checking how to print long doubles..." >&4
8357
8358 if $test X"$sPRIfldbl" = X -a X"$doublesize" = X"$longdblsize"; then
8359         $cat >try.c <<'EOCP'
8360 #include <sys/types.h>
8361 #include <stdio.h>
8362 int main() {
8363   double d = 123.456;
8364   printf("%.3f\n", d);
8365 }
8366 EOCP
8367         set try
8368         if eval $compile; then
8369                 yyy=`$run ./try`
8370                 case "$yyy" in
8371                 123.456)
8372                         sPRIfldbl='"f"'; sPRIgldbl='"g"'; sPRIeldbl='"e"';
8373                         sPRIFUldbl='"F"'; sPRIGUldbl='"G"'; sPRIEUldbl='"E"';
8374                         echo "We will use %f."
8375                         ;;
8376                 esac
8377         fi
8378 fi
8379
8380 if $test X"$sPRIfldbl" = X; then
8381         $cat >try.c <<'EOCP'
8382 #include <sys/types.h>
8383 #include <stdio.h>
8384 int main() {
8385   long double d = 123.456;
8386   printf("%.3Lf\n", d);
8387 }
8388 EOCP
8389         set try
8390         if eval $compile; then
8391                 yyy=`$run ./try`
8392                 case "$yyy" in
8393                 123.456)
8394                         sPRIfldbl='"Lf"'; sPRIgldbl='"Lg"'; sPRIeldbl='"Le"';
8395                         sPRIFUldbl='"LF"'; sPRIGUldbl='"LG"'; sPRIEUldbl='"LE"';
8396                         echo "We will use %Lf."
8397                         ;;
8398                 esac
8399         fi
8400 fi
8401
8402 if $test X"$sPRIfldbl" = X; then
8403         $cat >try.c <<'EOCP'
8404 #include <sys/types.h>
8405 #include <stdio.h>
8406 int main() {
8407   long double d = 123.456;
8408   printf("%.3llf\n", d);
8409 }
8410 EOCP
8411         set try
8412         if eval $compile; then
8413                 yyy=`$run ./try`
8414                 case "$yyy" in
8415                 123.456)
8416                         sPRIfldbl='"llf"'; sPRIgldbl='"llg"'; sPRIeldbl='"lle"';
8417                         sPRIFUldbl='"llF"'; sPRIGUldbl='"llG"'; sPRIEUldbl='"llE"';
8418                         echo "We will use %llf."
8419                         ;;
8420                 esac
8421         fi
8422 fi
8423
8424 if $test X"$sPRIfldbl" = X; then
8425         $cat >try.c <<'EOCP'
8426 #include <sys/types.h>
8427 #include <stdio.h>
8428 int main() {
8429   long double d = 123.456;
8430   printf("%.3lf\n", d);
8431 }
8432 EOCP
8433         set try
8434         if eval $compile; then
8435                 yyy=`$run ./try`
8436                 case "$yyy" in
8437                 123.456)
8438                         sPRIfldbl='"lf"'; sPRIgldbl='"lg"'; sPRIeldbl='"le"';
8439                         sPRIFUldbl='"lF"'; sPRIGUldbl='"lG"'; sPRIEUldbl='"lE"';
8440                         echo "We will use %lf."
8441                         ;;
8442                 esac
8443         fi
8444 fi
8445
8446 if $test X"$sPRIfldbl" = X; then
8447         echo "Cannot figure out how to print long doubles." >&4
8448 else
8449         sSCNfldbl=$sPRIfldbl    # expect consistency
8450 fi
8451
8452 $rm -f try try.*
8453
8454 fi # d_longdbl
8455
8456 case "$sPRIfldbl" in
8457 '')     d_PRIfldbl="$undef"; d_PRIgldbl="$undef"; d_PRIeldbl="$undef"; 
8458         d_PRIFUldbl="$undef"; d_PRIGUldbl="$undef"; d_PRIEUldbl="$undef"; 
8459         d_SCNfldbl="$undef";
8460         ;;
8461 *)      d_PRIfldbl="$define"; d_PRIgldbl="$define"; d_PRIeldbl="$define"; 
8462         d_PRIFUldbl="$define"; d_PRIGUldbl="$define"; d_PRIEUldbl="$define"; 
8463         d_SCNfldbl="$define";
8464         ;;
8465 esac
8466
8467 : Check how to convert floats to strings.
8468 echo " "
8469 echo "Checking for an efficient way to convert floats to strings."
8470 echo " " > try.c
8471 case "$uselongdouble" in
8472 "$define") echo "#define USE_LONG_DOUBLE" >>try.c ;;
8473 esac
8474 case "$d_longdbl" in
8475 "$define") echo "#define HAS_LONG_DOUBLE" >>try.c ;;
8476 esac
8477 case "$d_PRIgldbl" in
8478 "$define") echo "#define HAS_PRIgldbl"    >>try.c ;;
8479 esac
8480 $cat >>try.c <<EOP
8481 #ifdef TRY_gconvert
8482 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
8483 char *myname = "gconvert";
8484 #endif
8485 #ifdef TRY_gcvt
8486 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
8487 char *myname = "gcvt";
8488 #endif
8489 #ifdef TRY_qgcvt
8490 #define Gconvert(x,n,t,b) qgcvt((x),(n),(b))
8491 char *myname = "qgcvt";
8492 #define DOUBLETYPE long double
8493 #endif
8494 #ifdef TRY_sprintf
8495 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE) && defined(HAS_PRIgldbl)
8496 #define Gconvert(x,n,t,b) sprintf((b),"%.*"$sPRIgldbl,(n),(x))
8497 #else
8498 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
8499 #endif
8500 char *myname = "sprintf";
8501 #endif
8502
8503 #ifndef DOUBLETYPE
8504 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
8505 #define DOUBLETYPE long double
8506 #else
8507 #define DOUBLETYPE double
8508 #endif
8509 #endif
8510
8511 #include <stdio.h>
8512
8513 #define I_STDLIB $i_stdlib
8514 #ifdef I_STDLIB
8515 #include <stdlib.h>
8516 #endif
8517
8518 int
8519 checkit(expect, got)
8520 char *expect;
8521 char *got;
8522 {
8523     if (strcmp(expect, got)) {
8524                 printf("%s oddity:  Expected %s, got %s\n",
8525                         myname, expect, got);
8526                 exit(1);
8527         }
8528 }
8529
8530 int main()
8531
8532         char buf[64]; 
8533         buf[63] = '\0';
8534
8535         /* This must be 1st test on (which?) platform */
8536         /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
8537         Gconvert((DOUBLETYPE)0.1, 8, 0, buf);
8538         checkit("0.1", buf);
8539
8540         Gconvert((DOUBLETYPE)1.0, 8, 0, buf); 
8541         checkit("1", buf);
8542
8543         Gconvert((DOUBLETYPE)1.1, 8, 0, buf); 
8544         checkit("1.1", buf);
8545
8546         Gconvert((DOUBLETYPE)1.01, 8, 0, buf); 
8547         checkit("1.01", buf);
8548
8549         Gconvert((DOUBLETYPE)1.001, 8, 0, buf); 
8550         checkit("1.001", buf);
8551
8552         Gconvert((DOUBLETYPE)1.0001, 8, 0, buf); 
8553         checkit("1.0001", buf);
8554
8555         Gconvert((DOUBLETYPE)1.00001, 8, 0, buf); 
8556         checkit("1.00001", buf);
8557
8558         Gconvert((DOUBLETYPE)1.000001, 8, 0, buf); 
8559         checkit("1.000001", buf);
8560
8561         Gconvert((DOUBLETYPE)0.0, 8, 0, buf); 
8562         checkit("0", buf);
8563
8564         Gconvert((DOUBLETYPE)-1.0, 8, 0, buf); 
8565         checkit("-1", buf);
8566
8567         /* Some Linux gcvt's give 1.e+5 here. */
8568         Gconvert((DOUBLETYPE)100000.0, 8, 0, buf); 
8569         checkit("100000", buf);
8570         
8571         /* Some Linux gcvt's give -1.e+5 here. */
8572         Gconvert((DOUBLETYPE)-100000.0, 8, 0, buf); 
8573         checkit("-100000", buf);
8574
8575         Gconvert((DOUBLETYPE)123.456, 8, 0, buf); 
8576         checkit("123.456", buf);
8577
8578         /* Testing of 1e+129 in bigintpm.t must not get extra '.' here. */
8579         Gconvert((DOUBLETYPE)1e30, 8, 0, buf);
8580         if (strlen(buf) > 5)
8581             checkit("1e+030", buf); /* for Microsoft */
8582         else
8583             checkit("1e+30", buf);
8584
8585         exit(0);
8586 }
8587 EOP
8588 case "$d_Gconvert" in
8589 gconvert*) xxx_list='gconvert gcvt sprintf' ;;
8590 gcvt*) xxx_list='gcvt gconvert sprintf' ;;
8591 sprintf*) xxx_list='sprintf gconvert gcvt' ;;
8592 *) xxx_list='gconvert gcvt sprintf' ;;
8593 esac
8594
8595 case "$d_longdbl$uselongdouble$d_PRIgldbl" in
8596 "$define$define$define")
8597     # for long doubles prefer first qgcvt, then sprintf
8598     xxx_list="`echo $xxx_list|sed s/sprintf//`" 
8599     xxx_list="sprintf $xxx_list"
8600     case "$d_qgcvt" in
8601     "$define") xxx_list="qgcvt $xxx_list" ;;
8602     esac
8603     ;;
8604 esac
8605
8606 for xxx_convert in $xxx_list; do
8607         echo "Trying $xxx_convert..."
8608         $rm -f try try$_o
8609         set try -DTRY_$xxx_convert
8610         if eval $compile; then
8611                 echo "$xxx_convert() found." >&4
8612                 if $run ./try; then
8613                         echo "I'll use $xxx_convert to convert floats into a string." >&4
8614                         break;
8615                 else
8616                         echo "...But $xxx_convert didn't work as I expected."
8617                 fi
8618         else
8619                 echo "$xxx_convert NOT found." >&4
8620         fi
8621 done
8622         
8623 case "$xxx_convert" in
8624 gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
8625 gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
8626 qgcvt) d_Gconvert='qgcvt((x),(n),(b))' ;;
8627 *) case "$uselongdouble$d_longdbl$d_PRIgldbl" in
8628    "$define$define$define")
8629       d_Gconvert="sprintf((b),\"%.*\"$sPRIgldbl,(n),(x))" ;;
8630    *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
8631    esac
8632    ;;  
8633 esac
8634
8635 : see if _fwalk exists
8636 set fwalk d__fwalk
8637 eval $inlibc
8638
8639 : Initialize h_fcntl
8640 h_fcntl=false
8641
8642 : Initialize h_sysfile
8643 h_sysfile=false
8644
8645 : access call always available on UNIX
8646 set access d_access
8647 eval $inlibc
8648
8649 : locate the flags for 'access()'
8650 case "$d_access" in
8651 "$define")
8652         echo " "
8653         $cat >access.c <<'EOCP'
8654 #include <sys/types.h>
8655 #ifdef I_FCNTL
8656 #include <fcntl.h>
8657 #endif
8658 #ifdef I_SYS_FILE
8659 #include <sys/file.h>
8660 #endif
8661 #ifdef I_UNISTD
8662 #include <unistd.h>
8663 #endif
8664 int main() {
8665         exit(R_OK);
8666 }
8667 EOCP
8668         : check sys/file.h first, no particular reason here
8669         if $test `./findhdr sys/file.h` && \
8670                 $cc -o access $cppflags -DI_SYS_FILE access.c >/dev/null 2>&1 ; then
8671                 h_sysfile=true;
8672                 echo "<sys/file.h> defines the *_OK access constants." >&4
8673         elif $test `./findhdr fcntl.h` && \
8674                 $cc -o access $cppflags -DI_FCNTL access.c >/dev/null 2>&1 ; then
8675                 h_fcntl=true;
8676                 echo "<fcntl.h> defines the *_OK access constants." >&4
8677         elif $test `./findhdr unistd.h` && \
8678                 $cc -o access $cppflags -DI_UNISTD access.c >/dev/null 2>&1 ; then
8679                 echo "<unistd.h> defines the *_OK access constants." >&4
8680         else
8681                 echo "I can't find the four *_OK access constants--I'll use mine." >&4
8682         fi
8683         ;;
8684 esac
8685 $rm -f access*
8686
8687 : see if accessx exists
8688 set accessx d_accessx
8689 eval $inlibc
8690
8691 : see if alarm exists
8692 set alarm d_alarm
8693 eval $inlibc
8694
8695 : see if atolf exists
8696 set atolf d_atolf
8697 eval $inlibc
8698
8699 : see if atoll exists
8700 set atoll d_atoll
8701 eval $inlibc
8702
8703 : Look for GNU-cc style attribute checking
8704 echo " "
8705 echo "Checking whether your compiler can handle __attribute__ ..." >&4
8706 $cat >attrib.c <<'EOCP'
8707 #include <stdio.h>
8708 void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn));
8709 EOCP
8710 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
8711         if $contains 'warning' attrib.out >/dev/null 2>&1; then
8712                 echo "Your C compiler doesn't fully support __attribute__."
8713                 val="$undef"
8714         else
8715                 echo "Your C compiler supports __attribute__."
8716                 val="$define"
8717         fi
8718 else
8719         echo "Your C compiler doesn't seem to understand __attribute__ at all."
8720         val="$undef"
8721 fi
8722 set d_attribut
8723 eval $setvar
8724 $rm -f attrib*
8725
8726 : see if bcmp exists
8727 set bcmp d_bcmp
8728 eval $inlibc
8729
8730 : see if bcopy exists
8731 set bcopy d_bcopy
8732 eval $inlibc
8733
8734 : see if this is a unistd.h system
8735 set unistd.h i_unistd
8736 eval $inhdr
8737
8738 : see if getpgrp exists
8739 set getpgrp d_getpgrp
8740 eval $inlibc
8741
8742 case "$d_getpgrp" in
8743 "$define")
8744         echo " "
8745         echo "Checking to see which flavor of getpgrp is in use..."
8746         $cat >try.c <<EOP
8747 #$i_unistd I_UNISTD
8748 #include <sys/types.h>
8749 #ifdef I_UNISTD
8750 #  include <unistd.h>
8751 #endif
8752 int main()
8753 {
8754         if (getuid() == 0) {
8755                 printf("(I see you are running Configure as super-user...)\n");
8756                 setuid(1);
8757         }
8758 #ifdef TRY_BSD_PGRP
8759         if (getpgrp(1) == 0)
8760                 exit(0);
8761 #else
8762         if (getpgrp() > 0)
8763                 exit(0);
8764 #endif
8765         exit(1);
8766 }
8767 EOP
8768         if $cc -o try -DTRY_BSD_PGRP $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
8769                 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
8770                 val="$define"
8771         elif $cc -o try $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
8772                 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
8773                 val="$undef"
8774         else
8775                 echo "I can't seem to compile and run the test program."
8776                 if ./usg; then
8777                         xxx="a USG one, i.e. you use getpgrp()."
8778                 else
8779                         # SVR4 systems can appear rather BSD-ish.
8780                         case "$i_unistd" in
8781                         $undef)
8782                                 xxx="a BSD one, i.e. you use getpgrp(pid)."
8783                                 val="$define"
8784                                 ;;
8785                         $define)
8786                                 xxx="probably a USG one, i.e. you use getpgrp()."
8787                                 val="$undef"
8788                                 ;;
8789                         esac
8790                 fi
8791                 echo "Assuming your getpgrp is $xxx" >&4
8792         fi
8793         ;;
8794 *) val="$undef";;
8795 esac
8796 set d_bsdgetpgrp
8797 eval $setvar
8798 $rm -f try try.*
8799
8800 : see if setpgrp exists
8801 set setpgrp d_setpgrp
8802 eval $inlibc
8803
8804 case "$d_setpgrp" in
8805 "$define")
8806         echo " "
8807         echo "Checking to see which flavor of setpgrp is in use..."
8808         $cat >try.c <<EOP
8809 #$i_unistd I_UNISTD
8810 #include <sys/types.h>
8811 #ifdef I_UNISTD
8812 #  include <unistd.h>
8813 #endif
8814 int main()
8815 {
8816         if (getuid() == 0) {
8817                 printf("(I see you are running Configure as super-user...)\n");
8818                 setuid(1);
8819         }
8820 #ifdef TRY_BSD_PGRP
8821         if (-1 == setpgrp(1, 1))
8822                 exit(0);
8823 #else
8824         if (setpgrp() != -1)
8825                 exit(0);
8826 #endif
8827         exit(1);
8828 }
8829 EOP
8830         if $cc -o try -DTRY_BSD_PGRP $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
8831                 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
8832                 val="$define"
8833         elif $cc -o try $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
8834                 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
8835                 val="$undef"
8836         else
8837                 echo "(I can't seem to compile and run the test program.)"
8838                 if ./usg; then
8839                         xxx="a USG one, i.e. you use setpgrp()."
8840                 else
8841                         # SVR4 systems can appear rather BSD-ish.
8842                         case "$i_unistd" in
8843                         $undef)
8844                                 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
8845                                 val="$define"
8846                                 ;;
8847                         $define)
8848                                 xxx="probably a USG one, i.e. you use setpgrp()."
8849                                 val="$undef"
8850                                 ;;
8851                         esac
8852                 fi
8853                 echo "Assuming your setpgrp is $xxx" >&4
8854         fi
8855         ;;
8856 *) val="$undef";;
8857 esac
8858 set d_bsdsetpgrp
8859 eval $setvar
8860 $rm -f try try.*
8861 : see if bzero exists
8862 set bzero d_bzero
8863 eval $inlibc
8864
8865 : see if signal is declared as pointer to function returning int or void
8866 echo " "
8867 xxx=`./findhdr signal.h`
8868 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
8869 if $contains 'int.*\*[  ]*signal' $$.tmp >/dev/null 2>&1 ; then
8870         echo "You have int (*signal())() instead of void." >&4
8871         val="$undef"
8872 elif $contains 'void.*\*[       ]*signal' $$.tmp >/dev/null 2>&1 ; then
8873         echo "You have void (*signal())()." >&4
8874         val="$define"
8875 elif $contains 'extern[         ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
8876         echo "You have int (*signal())() instead of void." >&4
8877         val="$undef"
8878 elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
8879         echo "You have void (*signal())()." >&4
8880         val="$define"
8881 else
8882         case "$d_voidsig" in
8883         '')
8884         echo "I can't determine whether signal handler returns void or int..." >&4
8885                 dflt=void
8886                 rp="What type does your signal handler return?"
8887                 . ./myread
8888                 case "$ans" in
8889                 v*) val="$define";;
8890                 *) val="$undef";;
8891                 esac;;
8892         "$define")
8893                 echo "As you already told me, signal handler returns void." >&4
8894                 val="$define"
8895                 ;;
8896         *)      echo "As you already told me, signal handler returns int." >&4
8897                 val="$undef"
8898                 ;;
8899         esac
8900 fi
8901 set d_voidsig
8902 eval $setvar
8903 case "$d_voidsig" in
8904 "$define") signal_t="void";;
8905 *) signal_t="int";;
8906 esac
8907 $rm -f $$.tmp
8908
8909 : check for ability to cast large floats to 32-bit ints.
8910 echo " "
8911 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
8912 if $test "$intsize" -ge 4; then
8913         xxx=int
8914 else
8915         xxx=long
8916 fi
8917 $cat >try.c <<EOCP
8918 #include <stdio.h>
8919 #include <sys/types.h>
8920 #include <signal.h>
8921 $signal_t blech(s) int s; { exit(3); }
8922 int main()
8923 {
8924         $xxx i32;
8925         double f, g;
8926         int result = 0;
8927         char str[16];
8928         signal(SIGFPE, blech);
8929
8930         /* Don't let compiler optimize the test away.  Store the number 
8931            in a writable string for gcc to pass to sscanf under HP/UX.
8932         */
8933         sprintf(str, "2147483647");
8934         sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
8935         g = 10 * f;
8936         i32  = ($xxx) g;
8937
8938         /* x86 processors will probably give 0x8000 0000, which is a
8939        sign change.  We don't want that.  We want to mimic SPARC
8940            behavior here, which is to preserve the sign and give
8941            back 0x7fff ffff.
8942         */
8943         if (i32 != ($xxx) f)
8944                 result |= 1;
8945         exit(result);
8946 }
8947 EOCP
8948 set try
8949 if eval $compile_ok; then
8950         $run ./try
8951         yyy=$?
8952 else
8953         echo "(I can't seem to compile the test program--assuming it can't)"
8954         yyy=1
8955 fi
8956 case "$yyy" in
8957 0)      val="$define"
8958         echo "Yup, it can."
8959         ;;
8960 *)      val="$undef"
8961         echo "Nope, it can't."
8962         ;;
8963 esac
8964 set d_casti32
8965 eval $setvar
8966 $rm -f try try.*
8967
8968 : check for ability to cast negative floats to unsigned
8969 echo " "
8970 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
8971 $cat >try.c <<EOCP
8972 #include <stdio.h>
8973 #include <sys/types.h>
8974 #include <signal.h>
8975 $signal_t blech(s) int s; { exit(7); }
8976 $signal_t blech_in_list(s) int s; { exit(4); }
8977 unsigned long dummy_long(p) unsigned long p; { return p; }
8978 unsigned int dummy_int(p) unsigned int p; { return p; }
8979 unsigned short dummy_short(p) unsigned short p; { return p; }
8980 int main()
8981 {
8982         double f;
8983         unsigned long along;
8984         unsigned int aint;
8985         unsigned short ashort;
8986         int result = 0;
8987         char str[16];
8988         
8989         /* Frustrate gcc-2.7.2's optimizer which failed this test with
8990            a direct f = -123. assignment.  gcc-2.8.0 reportedly
8991            optimized the whole file away
8992         */
8993         /* Store the number in a writable string for gcc to pass to 
8994            sscanf under HP/UX.
8995         */
8996         sprintf(str, "-123");
8997         sscanf(str, "%lf", &f);  /* f = -123.; */
8998
8999         signal(SIGFPE, blech);
9000         along = (unsigned long)f;
9001         aint = (unsigned int)f;
9002         ashort = (unsigned short)f;
9003         if (along != (unsigned long)-123)
9004                 result |= 1;
9005         if (aint != (unsigned int)-123)
9006                 result |= 1;
9007         if (ashort != (unsigned short)-123)
9008                 result |= 1;
9009         sprintf(str, "1073741824.");
9010         sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
9011         f = f + f;
9012         along = 0;
9013         along = (unsigned long)f;
9014         if (along != 0x80000000)
9015                 result |= 2;
9016         f -= 1.;
9017         along = 0;
9018         along = (unsigned long)f;
9019         if (along != 0x7fffffff)
9020                 result |= 1;
9021         f += 2.;
9022         along = 0;
9023         along = (unsigned long)f;
9024         if (along != 0x80000001)
9025                 result |= 2;
9026         if (result)
9027                 exit(result);
9028         signal(SIGFPE, blech_in_list);
9029         sprintf(str, "123.");
9030         sscanf(str, "%lf", &f);  /* f = 123.; */
9031         along = dummy_long((unsigned long)f);
9032         aint = dummy_int((unsigned int)f);
9033         ashort = dummy_short((unsigned short)f);
9034         if (along != (unsigned long)123)
9035                 result |= 4;
9036         if (aint != (unsigned int)123)
9037                 result |= 4;
9038         if (ashort != (unsigned short)123)
9039                 result |= 4;
9040         exit(result);
9041
9042 }
9043 EOCP
9044 set try
9045 if eval $compile_ok; then
9046         $run ./try
9047         castflags=$?
9048 else
9049         echo "(I can't seem to compile the test program--assuming it can't)"
9050         castflags=7
9051 fi
9052 case "$castflags" in
9053 0)      val="$define"
9054         echo "Yup, it can."
9055         ;;
9056 *)      val="$undef"
9057         echo "Nope, it can't."
9058         ;;
9059 esac
9060 set d_castneg
9061 eval $setvar
9062 $rm -f try.*
9063
9064 : see if vprintf exists
9065 echo " "
9066 if set vprintf val -f d_vprintf; eval $csym; $val; then
9067         echo 'vprintf() found.' >&4
9068         val="$define"
9069         $cat >try.c <<'EOF'
9070 #include <varargs.h>
9071
9072 int main() { xxx("foo"); }
9073
9074 xxx(va_alist)
9075 va_dcl
9076 {
9077         va_list args;
9078         char buf[10];
9079
9080         va_start(args);
9081         exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
9082 }
9083 EOF
9084         set try
9085         if eval $compile && $run ./try; then
9086                 echo "Your vsprintf() returns (int)." >&4
9087                 val2="$undef"
9088         else
9089                 echo "Your vsprintf() returns (char*)." >&4
9090                 val2="$define"
9091         fi
9092 else
9093         echo 'vprintf() NOT found.' >&4
9094                 val="$undef"
9095                 val2="$undef"
9096 fi
9097 $rm -f try try.*
9098 set d_vprintf
9099 eval $setvar
9100 val=$val2
9101 set d_charvspr
9102 eval $setvar
9103
9104 : see if chown exists
9105 set chown d_chown
9106 eval $inlibc
9107
9108 : see if chroot exists
9109 set chroot d_chroot
9110 eval $inlibc
9111
9112 : see if chsize exists
9113 set chsize d_chsize
9114 eval $inlibc
9115
9116 hasstruct='varname=$1; struct=$2; shift; shift;
9117 while $test $# -ge 2; do
9118         case "$1" in
9119         $define) echo "#include <$2>";;
9120         esac ;
9121     shift 2;
9122 done > try.c;
9123 echo "int main () { struct $struct foo; }" >> try.c;
9124 set try;
9125 if eval $compile; then
9126         val="$define";
9127 else
9128         val="$undef";
9129 fi;
9130 set $varname;
9131 eval $setvar;
9132 $rm -f try.c try.o'
9133
9134 : see if sys/types.h has to be included
9135 set sys/types.h i_systypes
9136 eval $inhdr
9137
9138 hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
9139 while $test $# -ge 2; do
9140         case "$1" in
9141         $define) echo "#include <$2>";;
9142         esac ;
9143     shift 2;
9144 done > try.c;
9145 echo "int main () { struct $struct foo; char* bar; bar = (char*)foo.$field; }" >> try.c;
9146 set try;
9147 if eval $compile; then
9148         val="$define";
9149 else
9150         val="$undef";
9151 fi;
9152 set $varname;
9153 eval $setvar;
9154 $rm -f try.c try.o'
9155
9156 socketlib=''
9157 sockethdr=''
9158 : see whether socket exists
9159 echo " "
9160 $echo $n "Hmm... $c" >&4
9161 if set socket val -f d_socket; eval $csym; $val; then
9162         echo "Looks like you have Berkeley networking support." >&4
9163         d_socket="$define"
9164         if set setsockopt val -f; eval $csym; $val; then
9165                 d_oldsock="$undef"
9166         else
9167                 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
9168                 d_oldsock="$define"
9169         fi
9170 else
9171         if $contains socklib libc.list >/dev/null 2>&1; then
9172                 echo "Looks like you have Berkeley networking support." >&4
9173                 d_socket="$define"
9174                 : we will have to assume that it supports the 4.2 BSD interface
9175                 d_oldsock="$undef"
9176         else
9177                 echo "You don't have Berkeley networking in libc$_a..." >&4
9178                 if test "X$d_socket" = "X$define"; then
9179                    echo "...but you seem to believe that you have sockets." >&4
9180                 else
9181                         for net in net socket
9182                         do
9183                                 if test -f /usr/lib/lib$net$_a; then
9184                                         ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) ||  \
9185                                         $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
9186                                         if $contains socket libc.list >/dev/null 2>&1; then
9187                                                 d_socket="$define"
9188                                                 socketlib="-l$net"
9189                                                 case "$net" in
9190                                                 net)
9191                                                         echo "...but the Wollongong group seems to have hacked it in." >&4
9192                                                         sockethdr="-I/usr/netinclude"
9193                                                         ;;
9194                                                 esac
9195                                                 echo "Found Berkeley sockets interface in lib$net." >& 4 
9196                                                 if $contains setsockopt libc.list >/dev/null 2>&1; then
9197                                                         d_oldsock="$undef"
9198                                                 else
9199                                                         echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
9200                                                         d_oldsock="$define"
9201                                                 fi
9202                                                 break
9203                                         fi
9204                                 fi
9205                         done
9206                         if test "X$d_socket" != "X$define"; then
9207                            echo "or anywhere else I see." >&4
9208                            d_socket="$undef"
9209                            d_oldsock="$undef"
9210                         fi
9211                 fi
9212         fi
9213 fi
9214
9215 : see if socketpair exists
9216 set socketpair d_sockpair
9217 eval $inlibc
9218
9219
9220 echo " "
9221 echo "Checking the availability of certain socket constants..." >& 4
9222 for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
9223         enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
9224         $cat >try.c <<EOF
9225 #include <sys/types.h>
9226 #include <sys/socket.h>
9227 int main() {
9228     int i = $ENUM;
9229 }
9230 EOF
9231         val="$undef"
9232         set try; if eval $compile; then
9233                 val="$define"
9234         fi
9235         set d_${enum}; eval $setvar
9236         $rm -f try.c try
9237 done
9238
9239 : see if this is a sys/uio.h system
9240 set sys/uio.h i_sysuio
9241 eval $inhdr
9242
9243
9244 echo " "
9245 echo "Checking to see if your system supports struct cmsghdr..." >&4
9246 set d_cmsghdr_s cmsghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
9247 eval $hasstruct
9248 case "$d_cmsghdr_s" in
9249 "$define")      echo "Yes, it does."   ;;
9250 *)              echo "No, it doesn't." ;;
9251 esac
9252
9253
9254 : check for const keyword
9255 echo " "
9256 echo 'Checking to see if your C compiler knows about "const"...' >&4
9257 $cat >const.c <<'EOCP'
9258 typedef struct spug { int drokk; } spug;
9259 int main()
9260 {
9261         const char *foo;
9262         const spug y;
9263 }
9264 EOCP
9265 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
9266         val="$define"
9267         echo "Yup, it does."
9268 else
9269         val="$undef"
9270         echo "Nope, it doesn't."
9271 fi
9272 set d_const
9273 eval $setvar
9274
9275 : see if crypt exists
9276 echo " "
9277 if set crypt val -f d_crypt; eval $csym; $val; then
9278         echo 'crypt() found.' >&4
9279         val="$define"
9280         cryptlib=''
9281 else
9282         cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
9283         if $test -z "$cryptlib"; then
9284                 cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
9285         else
9286                 cryptlib=-lcrypt
9287         fi
9288         if $test -z "$cryptlib"; then
9289                 cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
9290         else
9291                 cryptlib=-lcrypt
9292         fi
9293         if $test -z "$cryptlib"; then
9294                 cryptlib=`./loc libcrypt$_a "" $libpth`
9295         else
9296                 cryptlib=-lcrypt
9297         fi
9298         if $test -z "$cryptlib"; then
9299                 echo 'crypt() NOT found.' >&4
9300                 val="$undef"
9301         else
9302                 val="$define"
9303         fi
9304 fi
9305 set d_crypt
9306 eval $setvar
9307
9308 : get csh whereabouts
9309 case "$csh" in
9310 'csh') val="$undef" ;;
9311 *) val="$define" ;;
9312 esac
9313 set d_csh
9314 eval $setvar
9315 : Respect a hint or command line value for full_csh.
9316 case "$full_csh" in
9317 '') full_csh=$csh ;;
9318 esac
9319
9320 : see if cuserid exists
9321 set cuserid d_cuserid
9322 eval $inlibc
9323
9324 : see if this is a limits.h system
9325 set limits.h i_limits
9326 eval $inhdr
9327
9328 : see if this is a float.h system
9329 set float.h i_float
9330 eval $inhdr
9331
9332 : See if number of significant digits in a double precision number is known
9333 echo " "
9334 $cat >dbl_dig.c <<EOM
9335 #$i_limits I_LIMITS
9336 #$i_float I_FLOAT
9337 #ifdef I_LIMITS
9338 #include <limits.h>
9339 #endif
9340 #ifdef I_FLOAT
9341 #include <float.h>
9342 #endif
9343 #ifdef DBL_DIG
9344 printf("Contains DBL_DIG");
9345 #endif
9346 EOM
9347 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
9348 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
9349         echo "DBL_DIG found." >&4
9350         val="$define"
9351 else
9352         echo "DBL_DIG NOT found." >&4
9353         val="$undef"
9354 fi
9355 $rm -f dbl_dig.?
9356 set d_dbl_dig
9357 eval $setvar
9358
9359 hasproto='varname=$1; func=$2; shift; shift;
9360 while $test $# -ge 2; do
9361         case "$1" in
9362         $define) echo "#include <$2>";;
9363         esac ;
9364     shift 2;
9365 done > try.c;
9366 $cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
9367 if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
9368         echo "$func() prototype found.";
9369         val="$define";
9370 else
9371         echo "$func() prototype NOT found.";
9372         val="$undef";
9373 fi;
9374 set $varname;
9375 eval $setvar;
9376 $rm -f try.c tryout.c'
9377
9378 : see if dbm.h is available
9379 : see if dbmclose exists
9380 set dbmclose d_dbmclose
9381 eval $inlibc
9382
9383 case "$d_dbmclose" in
9384 $define)
9385         set dbm.h i_dbm
9386         eval $inhdr
9387         case "$i_dbm" in
9388         $define)
9389                 val="$undef"
9390                 set i_rpcsvcdbm
9391                 eval $setvar
9392                 ;;
9393         *)      set rpcsvc/dbm.h i_rpcsvcdbm
9394                 eval $inhdr
9395                 ;;
9396         esac
9397         ;;
9398 *)      echo "We won't be including <dbm.h>"
9399         val="$undef"
9400         set i_dbm
9401         eval $setvar
9402         val="$undef"
9403         set i_rpcsvcdbm
9404         eval $setvar
9405         ;;
9406 esac
9407
9408 : see if prototype for dbminit is available
9409 echo " "
9410 set d_dbminitproto dbminit $i_dbm dbm.h
9411 eval $hasproto
9412
9413 : see if difftime exists
9414 set difftime d_difftime
9415 eval $inlibc
9416
9417 : see if this is a dirent system
9418 echo " "
9419 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
9420         val="$define"
9421         echo "<dirent.h> found." >&4
9422 else
9423         val="$undef"
9424         if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
9425                 echo "<sys/dir.h> found." >&4
9426                 echo " "
9427         else
9428                 xinc=`./findhdr sys/ndir.h`
9429         fi
9430         echo "<dirent.h> NOT found." >&4
9431 fi
9432 set i_dirent
9433 eval $setvar
9434
9435 : Look for type of directory structure.
9436 echo " "
9437 $cppstdin $cppflags $cppminus < "$xinc" > try.c
9438
9439 case "$direntrytype" in
9440 ''|' ')
9441         case "$i_dirent" in
9442         $define) guess1='struct dirent' ;;
9443         *) guess1='struct direct'  ;;
9444         esac
9445         ;;
9446 *)      guess1="$direntrytype"
9447         ;;
9448 esac
9449
9450 case "$guess1" in
9451 'struct dirent') guess2='struct direct' ;;
9452 *) guess2='struct dirent' ;;
9453 esac
9454                 
9455 if $contains "$guess1" try.c >/dev/null 2>&1; then
9456         direntrytype="$guess1"
9457         echo "Your directory entries are $direntrytype." >&4
9458 elif $contains "$guess2" try.c >/dev/null 2>&1; then
9459         direntrytype="$guess2"
9460         echo "Your directory entries seem to be $direntrytype." >&4
9461 else
9462         echo "I don't recognize your system's directory entries." >&4
9463         rp="What type is used for directory entries on this system?"
9464         dflt="$guess1"
9465         . ./myread
9466         direntrytype="$ans"
9467 fi
9468 $rm -f try.c
9469
9470
9471 : see if the directory entry stores field length
9472 echo " "
9473 $cppstdin $cppflags $cppminus < "$xinc" > try.c
9474 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
9475         echo "Good, your directory entry keeps length information in d_namlen." >&4
9476         val="$define"
9477 else
9478         echo "Your directory entry does not know about the d_namlen field." >&4
9479         val="$undef"
9480 fi
9481 set d_dirnamlen
9482 eval $setvar
9483 $rm -f try.c
9484
9485 : see if dlerror exists
9486 xxx_runnm="$runnm"
9487 runnm=false
9488 set dlerror d_dlerror
9489 eval $inlibc
9490 runnm="$xxx_runnm"
9491
9492 : see if dlfcn is available
9493 set dlfcn.h i_dlfcn
9494 eval $inhdr
9495
9496 case "$usedl" in
9497 $define|y|true)
9498         $cat << EOM
9499
9500 On a few systems, the dynamically loaded modules that perl generates and uses
9501 will need a different extension than shared libs. The default will probably
9502 be appropriate.
9503
9504 EOM
9505         case "$dlext" in
9506         '')     dflt="$so" ;;
9507         *)      dflt="$dlext" ;;
9508         esac
9509         rp='What is the extension of dynamically loaded modules'
9510         . ./myread
9511         dlext="$ans"
9512         ;;
9513 *)
9514         dlext="none"
9515         ;;
9516 esac
9517
9518 : Check if dlsym need a leading underscore
9519 echo " "
9520 val="$undef"
9521
9522 case "$dlsrc" in
9523 dl_dlopen.xs)
9524         echo "Checking whether your dlsym() needs a leading underscore ..." >&4
9525         $cat >dyna.c <<'EOM'
9526 fred () { }
9527 EOM
9528
9529 $cat >fred.c<<EOM
9530
9531 #include <stdio.h>
9532 #$i_dlfcn I_DLFCN
9533 #ifdef I_DLFCN
9534 #include <dlfcn.h>      /* the dynamic linker include file for SunOS/Solaris */
9535 #else
9536 #include <sys/types.h>
9537 #include <nlist.h>
9538 #include <link.h>
9539 #endif
9540
9541 extern int fred() ;
9542
9543 int main()
9544 {
9545     void * handle ;
9546     void * symbol ;
9547 #ifndef RTLD_LAZY
9548     int mode = 1 ;
9549 #else
9550     int mode = RTLD_LAZY ;
9551 #endif
9552     handle = dlopen("./dyna.$dlext", mode) ;
9553     if (handle == NULL) {
9554         printf ("1\n") ;
9555         fflush (stdout) ;
9556         exit(0);
9557     }
9558     symbol = dlsym(handle, "fred") ;
9559     if (symbol == NULL) {
9560         /* try putting a leading underscore */
9561         symbol = dlsym(handle, "_fred") ;
9562         if (symbol == NULL) {
9563             printf ("2\n") ;
9564             fflush (stdout) ;
9565             exit(0);
9566         }
9567         printf ("3\n") ;
9568     }
9569     else
9570         printf ("4\n") ;
9571     fflush (stdout) ;
9572     exit(0);
9573 }
9574 EOM
9575         : Call the object file tmp-dyna.o in case dlext=o.
9576         if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 && 
9577                 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 && 
9578                 $ld -o dyna.$dlext $ldflags $lddlflags tmp-dyna${_o} > /dev/null 2>&1 && 
9579                 $cc -o fred $ccflags $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1 && $to dyna.$dlext; then
9580                 xxx=`$run ./fred`
9581                 case $xxx in
9582                 1)      echo "Test program failed using dlopen." >&4
9583                         echo "Perhaps you should not use dynamic loading." >&4;;
9584                 2)      echo "Test program failed using dlsym." >&4
9585                         echo "Perhaps you should not use dynamic loading." >&4;;
9586                 3)      echo "dlsym needs a leading underscore" >&4
9587                         val="$define" ;;
9588                 4)      echo "dlsym doesn't need a leading underscore." >&4;;
9589                 esac
9590         else
9591                 echo "I can't compile and run the test program." >&4
9592                 echo "I'm guessing that dlsym doesn't need a leading underscore." >&4
9593         fi
9594         ;;
9595 esac
9596                 
9597 $rm -f fred fred.? dyna.$dlext dyna.? tmp-dyna.?
9598
9599 set d_dlsymun
9600 eval $setvar
9601
9602 : see if prototype for drand48 is available
9603 echo " "
9604 set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
9605 eval $hasproto
9606
9607 : see if dup2 exists
9608 set dup2 d_dup2
9609 eval $inlibc
9610
9611 : see if eaccess exists
9612 set eaccess d_eaccess
9613 eval $inlibc
9614
9615 : see if endgrent exists
9616 set endgrent d_endgrent
9617 eval $inlibc
9618
9619 : see if endhostent exists
9620 set endhostent d_endhent
9621 eval $inlibc
9622
9623 : see if endnetent exists
9624 set endnetent d_endnent
9625 eval $inlibc
9626
9627 : see if endprotoent exists
9628 set endprotoent d_endpent
9629 eval $inlibc
9630
9631 : see if endpwent exists
9632 set endpwent d_endpwent
9633 eval $inlibc
9634
9635 : see if endservent exists
9636 set endservent d_endsent
9637 eval $inlibc
9638
9639 : Locate the flags for 'open()'
9640 echo " "
9641 $cat >try.c <<'EOCP'
9642 #include <sys/types.h>
9643 #ifdef I_FCNTL
9644 #include <fcntl.h>
9645 #endif
9646 #ifdef I_SYS_FILE
9647 #include <sys/file.h>
9648 #endif
9649 int main() {
9650         if(O_RDONLY);
9651 #ifdef O_TRUNC
9652         exit(0);
9653 #else
9654         exit(1);
9655 #endif
9656 }
9657 EOCP
9658 : check sys/file.h first to get FREAD on Sun
9659 if $test `./findhdr sys/file.h` && \
9660                 set try -DI_SYS_FILE && eval $compile; then
9661         h_sysfile=true;
9662         echo "<sys/file.h> defines the O_* constants..." >&4
9663         if $run ./try; then
9664                 echo "and you have the 3 argument form of open()." >&4
9665                 val="$define"
9666         else
9667                 echo "but not the 3 argument form of open().  Oh, well." >&4
9668                 val="$undef"
9669         fi
9670 elif $test `./findhdr fcntl.h` && \
9671                 set try -DI_FCNTL && eval $compile; then
9672         h_fcntl=true;
9673         echo "<fcntl.h> defines the O_* constants..." >&4
9674         if $run ./try; then
9675                 echo "and you have the 3 argument form of open()." >&4
9676                 val="$define"
9677         else
9678                 echo "but not the 3 argument form of open().  Oh, well." >&4
9679                 val="$undef"
9680         fi
9681 else
9682         val="$undef"
9683         echo "I can't find the O_* constant definitions!  You got problems." >&4
9684 fi
9685 set d_open3
9686 eval $setvar
9687 $rm -f try try.*
9688
9689 : see which of string.h or strings.h is needed
9690 echo " "
9691 strings=`./findhdr string.h`
9692 if $test "$strings" && $test -r "$strings"; then
9693         echo "Using <string.h> instead of <strings.h>." >&4
9694         val="$define"
9695 else
9696         val="$undef"
9697         strings=`./findhdr strings.h`
9698         if $test "$strings" && $test -r "$strings"; then
9699                 echo "Using <strings.h> instead of <string.h>." >&4
9700         else
9701                 echo "No string header found -- You'll surely have problems." >&4
9702         fi
9703 fi
9704 set i_string
9705 eval $setvar
9706 case "$i_string" in
9707 "$undef") strings=`./findhdr strings.h`;;
9708 *)        strings=`./findhdr string.h`;;
9709 esac
9710
9711 : check for non-blocking I/O stuff
9712 case "$h_sysfile" in
9713 true) echo "#include <sys/file.h>" > head.c;;
9714 *)
9715        case "$h_fcntl" in
9716        true) echo "#include <fcntl.h>" > head.c;;
9717        *) echo "#include <sys/fcntl.h>" > head.c;;
9718        esac
9719        ;;
9720 esac
9721 echo " "
9722 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
9723 case "$o_nonblock" in
9724 '')
9725         $cat head.c > try.c
9726         $cat >>try.c <<'EOCP'
9727 #include <stdio.h>
9728 #include <stdlib.h>
9729 int main() {
9730 #ifdef O_NONBLOCK
9731         printf("O_NONBLOCK\n");
9732         exit(0);
9733 #endif
9734 #ifdef O_NDELAY
9735         printf("O_NDELAY\n");
9736         exit(0);
9737 #endif
9738 #ifdef FNDELAY
9739         printf("FNDELAY\n");
9740         exit(0);
9741 #endif
9742         exit(0);
9743 }
9744 EOCP
9745         set try
9746         if eval $compile_ok; then
9747                 o_nonblock=`$run ./try`
9748                 case "$o_nonblock" in
9749                 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
9750                 *) echo "Seems like we can use $o_nonblock.";;
9751                 esac
9752         else
9753                 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
9754         fi
9755         ;;
9756 *) echo "Using $hint value $o_nonblock.";;
9757 esac
9758 $rm -f try try.* .out core
9759
9760 echo " "
9761 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
9762 case "$eagain" in
9763 '')
9764         $cat head.c > try.c
9765         $cat >>try.c <<EOCP
9766 #include <errno.h>
9767 #include <sys/types.h>
9768 #include <signal.h>
9769 #include <stdio.h> 
9770 #include <stdlib.h> 
9771 #define MY_O_NONBLOCK $o_nonblock
9772 #ifndef errno  /* XXX need better Configure test */
9773 extern int errno;
9774 #endif
9775 #$i_unistd I_UNISTD
9776 #ifdef I_UNISTD
9777 #include <unistd.h>
9778 #endif
9779 #$i_string I_STRING
9780 #ifdef I_STRING
9781 #include <string.h>
9782 #else
9783 #include <strings.h>
9784 #endif
9785 $signal_t blech(x) int x; { exit(3); }
9786 EOCP
9787         $cat >> try.c <<'EOCP'
9788 int main()
9789 {
9790         int pd[2];
9791         int pu[2];
9792         char buf[1];
9793         char string[100];
9794
9795         pipe(pd);       /* Down: child -> parent */
9796         pipe(pu);       /* Up: parent -> child */
9797         if (0 != fork()) {
9798                 int ret;
9799                 close(pd[1]);   /* Parent reads from pd[0] */
9800                 close(pu[0]);   /* Parent writes (blocking) to pu[1] */
9801 #ifdef F_SETFL
9802                 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
9803                         exit(1);
9804 #else
9805                 exit(4);
9806 #endif
9807                 signal(SIGALRM, blech);
9808                 alarm(5);
9809                 if ((ret = read(pd[0], buf, 1)) > 0)    /* Nothing to read! */
9810                         exit(2);
9811                 sprintf(string, "%d\n", ret);
9812                 write(2, string, strlen(string));
9813                 alarm(0);
9814 #ifdef EAGAIN
9815                 if (errno == EAGAIN) {
9816                         printf("EAGAIN\n");
9817                         goto ok;
9818                 }
9819 #endif
9820 #ifdef EWOULDBLOCK
9821                 if (errno == EWOULDBLOCK)
9822                         printf("EWOULDBLOCK\n");
9823 #endif
9824         ok:
9825                 write(pu[1], buf, 1);   /* Unblocks child, tell it to close our pipe */
9826                 sleep(2);                               /* Give it time to close our pipe */
9827                 alarm(5);
9828                 ret = read(pd[0], buf, 1);      /* Should read EOF */
9829                 alarm(0);
9830                 sprintf(string, "%d\n", ret);
9831                 write(3, string, strlen(string));
9832                 exit(0);
9833         }
9834
9835         close(pd[0]);                   /* We write to pd[1] */
9836         close(pu[1]);                   /* We read from pu[0] */
9837         read(pu[0], buf, 1);    /* Wait for parent to signal us we may continue */
9838         close(pd[1]);                   /* Pipe pd is now fully closed! */
9839         exit(0);                                /* Bye bye, thank you for playing! */
9840 }
9841 EOCP
9842         set try
9843         if eval $compile_ok; then
9844                 echo "$startsh" >mtry
9845                 echo "$run ./try >try.out 2>try.ret 3>try.err || exit 4" >>mtry
9846                 chmod +x mtry
9847                 ./mtry >/dev/null 2>&1
9848                 case $? in
9849                 0) eagain=`$cat try.out`;;
9850                 1) echo "Could not perform non-blocking setting!";;
9851                 2) echo "I did a successful read() for something that was not there!";;
9852                 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
9853                 4) echo "Could not find F_SETFL!";;
9854                 *) echo "Something terribly wrong happened during testing.";;
9855                 esac
9856                 rd_nodata=`$cat try.ret`
9857                 echo "A read() system call with no data present returns $rd_nodata."
9858                 case "$rd_nodata" in
9859                 0|-1) ;;
9860                 *)
9861                         echo "(That's peculiar, fixing that to be -1.)"
9862                         rd_nodata=-1
9863                         ;;
9864                 esac
9865                 case "$eagain" in
9866                 '')
9867                         echo "Forcing errno EAGAIN on read() with no data available."
9868                         eagain=EAGAIN
9869                         ;;
9870                 *)
9871                         echo "Your read() sets errno to $eagain when no data is available."
9872                         ;;
9873                 esac
9874                 status=`$cat try.err`
9875                 case "$status" in
9876                 0) echo "And it correctly returns 0 to signal EOF.";;
9877                 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
9878                 *) echo "However, your read() returns '$status' on EOF??";;
9879                 esac
9880                 val="$define"
9881                 if test "$status" = "$rd_nodata"; then
9882                         echo "WARNING: you can't distinguish between EOF and no data!"
9883                         val="$undef"
9884                 fi
9885         else
9886                 echo "I can't compile the test program--assuming errno EAGAIN will do."
9887                 eagain=EAGAIN
9888         fi
9889         set d_eofnblk
9890         eval $setvar
9891         ;;
9892 *)
9893         echo "Using $hint value $eagain."
9894         echo "Your read() returns $rd_nodata when no data is present."
9895         case "$d_eofnblk" in
9896         "$define") echo "And you can see EOF because read() returns 0.";;
9897         "$undef") echo "But you can't see EOF status from read() returned value.";;
9898         *)
9899                 echo "(Assuming you can't see EOF status from read anyway.)"
9900                 d_eofnblk=$undef
9901                 ;;
9902         esac
9903         ;;
9904 esac
9905 $rm -f try try.* .out core head.c mtry
9906
9907 : see if fchdir exists
9908 set fchdir d_fchdir
9909 eval $inlibc
9910
9911 : see if fchmod exists
9912 set fchmod d_fchmod
9913 eval $inlibc
9914
9915 : see if fchown exists
9916 set fchown d_fchown
9917 eval $inlibc
9918
9919 : see if this is an fcntl system
9920 set fcntl d_fcntl
9921 eval $inlibc
9922
9923 echo " "
9924 : See if fcntl-based locking works.
9925 $cat >try.c <<EOCP
9926 #include <stdlib.h>
9927 #include <unistd.h>
9928 #include <fcntl.h>
9929 #include <signal.h>
9930 $signal_t blech(x) int x; { exit(3); }
9931 int main() {
9932 #if defined(F_SETLK) && defined(F_SETLKW)
9933      struct flock flock;
9934      int retval, fd;
9935      fd = open("try.c", O_RDONLY);
9936      flock.l_type = F_RDLCK;
9937      flock.l_whence = SEEK_SET;
9938      flock.l_start = flock.l_len = 0;
9939      signal(SIGALRM, blech);
9940      alarm(10);
9941      retval = fcntl(fd, F_SETLK, &flock);
9942      close(fd);
9943      (retval < 0 ? exit(2) : exit(0));
9944 #else
9945      exit(2);
9946 #endif
9947 }
9948 EOCP
9949 echo "Checking if fcntl-based file locking works... "
9950 case "$d_fcntl" in
9951 "$define")
9952         set try
9953         if eval $compile_ok; then
9954                 if $run ./try; then
9955                         echo "Yes, it seems to work."
9956                         val="$define"
9957                 else
9958                         echo "Nope, it didn't work."
9959                         val="$undef"
9960                         case "$?" in
9961                         3) $cat >&4 <<EOM
9962 ***
9963 *** I had to forcibly timeout from fcntl(..., F_SETLK, ...).
9964 *** This is (almost) impossible.
9965 *** If your NFS lock daemons are not feeling well, something like
9966 *** this may happen, please investigate.  Cannot continue, aborting.
9967 ***
9968 EOM
9969                                 exit 1
9970                                 ;;
9971                         esac
9972                 fi
9973         else
9974                 echo "I'm unable to compile the test program, so I'll assume not."
9975                 val="$undef"
9976         fi
9977         ;;
9978 *) val="$undef";
9979         echo "Nope, since you don't even have fcntl()."
9980         ;;
9981 esac
9982 set d_fcntl_can_lock
9983 eval $setvar
9984 $rm -f try*
9985
9986
9987 : see if sys/select.h has to be included
9988 set sys/select.h i_sysselct
9989 eval $inhdr
9990
9991 : see if we should include time.h, sys/time.h, or both
9992 echo " "
9993 if test "X$timeincl" = X; then
9994         echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
9995         $echo $n "I'm now running the test program...$c"
9996         $cat >try.c <<'EOCP'
9997 #include <sys/types.h>
9998 #ifdef I_TIME
9999 #include <time.h>
10000 #endif
10001 #ifdef I_SYSTIME
10002 #ifdef SYSTIMEKERNEL
10003 #define KERNEL
10004 #endif
10005 #include <sys/time.h>
10006 #endif
10007 #ifdef I_SYSSELECT
10008 #include <sys/select.h>
10009 #endif
10010 int main()
10011 {
10012         struct tm foo;
10013 #ifdef S_TIMEVAL
10014         struct timeval bar;
10015 #endif
10016 #ifdef S_TIMEZONE
10017         struct timezone tzp;
10018 #endif
10019         if (foo.tm_sec == foo.tm_sec)
10020                 exit(0);
10021 #ifdef S_TIMEVAL
10022         if (bar.tv_sec == bar.tv_sec)
10023                 exit(0);
10024 #endif
10025         exit(1);
10026 }
10027 EOCP
10028         flags=''
10029         for s_timezone in '-DS_TIMEZONE' ''; do
10030         sysselect=''
10031         for s_timeval in '-DS_TIMEVAL' ''; do
10032         for i_systimek in '' '-DSYSTIMEKERNEL'; do
10033         for i_time in '' '-DI_TIME'; do
10034         for i_systime in '-DI_SYSTIME' ''; do
10035                 case "$flags" in
10036                 '') $echo $n ".$c"
10037                         set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
10038                         if eval $compile; then
10039                                 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
10040                                 shift
10041                                 flags="$*"
10042                                 echo " "
10043                                 $echo $n "Succeeded with $flags$c"
10044                         fi
10045                         ;;
10046                 esac
10047         done
10048         done
10049         done
10050         done
10051         done
10052         timeincl=''
10053         echo " "
10054         case "$flags" in
10055         *SYSTIMEKERNEL*) i_systimek="$define"
10056                 timeincl=`./findhdr sys/time.h`
10057                 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
10058         *) i_systimek="$undef";;
10059         esac
10060         case "$flags" in
10061         *I_TIME*) i_time="$define"
10062                 timeincl=`./findhdr time.h`" $timeincl"
10063                 echo "We'll include <time.h>." >&4;;
10064         *) i_time="$undef";;
10065         esac
10066         case "$flags" in
10067         *I_SYSTIME*) i_systime="$define"
10068                 timeincl=`./findhdr sys/time.h`" $timeincl"
10069                 echo "We'll include <sys/time.h>." >&4;;
10070         *) i_systime="$undef";;
10071         esac
10072         $rm -f try.c try
10073 fi
10074
10075 : check for fd_set items
10076 $cat <<EOM
10077
10078 Checking to see how well your C compiler handles fd_set and friends ...
10079 EOM
10080 $cat >try.c <<EOCP
10081 #$i_systime I_SYS_TIME
10082 #$i_sysselct I_SYS_SELECT
10083 #$d_socket HAS_SOCKET
10084 #include <sys/types.h>
10085 #ifdef HAS_SOCKET
10086 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
10087 #endif
10088 #ifdef I_SYS_TIME
10089 #include <sys/time.h>
10090 #endif
10091 #ifdef I_SYS_SELECT
10092 #include <sys/select.h>
10093 #endif
10094 int main() {
10095         fd_set fds;
10096
10097 #ifdef TRYBITS
10098         if(fds.fds_bits);
10099 #endif
10100
10101 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
10102         exit(0);
10103 #else
10104         exit(1);
10105 #endif
10106 }
10107 EOCP
10108 set try -DTRYBITS
10109 if eval $compile; then
10110         d_fds_bits="$define"
10111         d_fd_set="$define"
10112         echo "Well, your system knows about the normal fd_set typedef..." >&4
10113         if $run ./try; then
10114                 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
10115                 d_fd_macros="$define"
10116         else
10117                 $cat >&4 <<'EOM'
10118 but not the normal fd_set macros!  Gaaack!  I'll have to cover for you.
10119 EOM
10120                 d_fd_macros="$undef"
10121         fi
10122 else
10123         $cat <<'EOM'
10124 Hmm, your compiler has some difficulty with fd_set.  Checking further...
10125 EOM
10126         set try
10127         if eval $compile; then
10128                 d_fds_bits="$undef"
10129                 d_fd_set="$define"
10130                 echo "Well, your system has some sort of fd_set available..." >&4
10131                 if $run ./try; then
10132                         echo "and you have the normal fd_set macros." >&4
10133                         d_fd_macros="$define"
10134                 else
10135                         $cat <<'EOM'
10136 but not the normal fd_set macros!  Gross!  More work for me...
10137 EOM
10138                         d_fd_macros="$undef"
10139                 fi
10140         else
10141         echo "Well, you got zip.  That's OK, I can roll my own fd_set stuff." >&4
10142                 d_fd_set="$undef"
10143                 d_fds_bits="$undef"
10144                 d_fd_macros="$undef"
10145         fi
10146 fi
10147 $rm -f try try.*
10148
10149 : see if fgetpos exists
10150 set fgetpos d_fgetpos
10151 eval $inlibc
10152
10153 : see if flock exists
10154 set flock d_flock
10155 eval $inlibc
10156
10157 : see if this is a sys/file.h system
10158 val=''
10159 set sys/file.h val
10160 eval $inhdr
10161
10162 : do we need to include sys/file.h ?
10163 case "$val" in
10164 "$define")
10165         echo " "
10166         if $h_sysfile; then
10167                 val="$define"
10168                 echo "We'll be including <sys/file.h>." >&4
10169         else
10170                 val="$undef"
10171                 echo "We won't be including <sys/file.h>." >&4
10172         fi
10173         ;;
10174 *)
10175         h_sysfile=false
10176         ;;
10177 esac
10178 set i_sysfile
10179 eval $setvar
10180
10181 : see if prototype for flock is available
10182 echo " "
10183 set d_flockproto flock $i_sysfile sys/file.h
10184 eval $hasproto
10185
10186 : see if fork exists
10187 set fork d_fork
10188 eval $inlibc
10189
10190 : see if pathconf exists
10191 set pathconf d_pathconf
10192 eval $inlibc
10193
10194 : see if fpathconf exists
10195 set fpathconf d_fpathconf
10196 eval $inlibc
10197
10198
10199 : check for fpos64_t
10200 echo " "
10201 echo "Checking to see if you have fpos64_t..." >&4
10202 $cat >try.c <<EOCP
10203 #include <stdio.h>
10204 int main() { fpos64_t x = 7; }
10205 EOCP
10206 set try
10207 if eval $compile; then
10208         val="$define"
10209         echo "You have fpos64_t."
10210 else
10211         val="$undef"
10212         echo "You do not have fpos64_t."
10213         case "$fpossize" in
10214         8) echo "(Your fpos_t is 64 bits, so you could use that.)" ;;
10215         esac
10216 fi
10217 $rm -f try.* try
10218 set d_fpos64_t
10219 eval $setvar
10220
10221 : see if frexpl exists
10222 set frexpl d_frexpl
10223 eval $inlibc
10224
10225 : see if this is a sys/param system
10226 set sys/param.h i_sysparam
10227 eval $inhdr
10228
10229 : see if this is a sys/mount.h system
10230 set sys/mount.h i_sysmount
10231 eval $inhdr
10232
10233
10234 echo " "
10235 echo "Checking to see if your system supports struct fs_data..." >&4
10236 set d_fs_data_s fs_data $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h
10237 eval $hasstruct
10238 case "$d_fs_data_s" in
10239 "$define")      echo "Yes, it does."   ;;
10240 *)              echo "No, it doesn't." ;;
10241 esac
10242
10243 : see if fseeko exists
10244 set fseeko d_fseeko
10245 eval $inlibc
10246 case "$longsize" in
10247 8) echo "(Your long is 64 bits, so you could use fseek.)" ;;
10248 esac
10249
10250 : see if fsetpos exists
10251 set fsetpos d_fsetpos
10252 eval $inlibc
10253
10254
10255 : see if fstatfs exists
10256 set fstatfs d_fstatfs
10257 eval $inlibc
10258
10259
10260 : see if statvfs exists
10261 set statvfs d_statvfs
10262 eval $inlibc
10263
10264 : see if fstatvfs exists
10265 set fstatvfs d_fstatvfs
10266 eval $inlibc
10267
10268
10269 : see if fsync exists
10270 set fsync d_fsync
10271 eval $inlibc
10272
10273 : see if ftello exists
10274 set ftello d_ftello
10275 eval $inlibc
10276 case "$longsize" in
10277 8) echo "(Your long is 64 bits, so you could use ftell.)" ;;
10278 esac
10279
10280 : see if getcwd exists
10281 set getcwd d_getcwd
10282 eval $inlibc
10283
10284 : see if getespwnam exists
10285 set getespwnam d_getespwnam
10286 eval $inlibc
10287
10288
10289 : see if getfsstat exists
10290 set getfsstat d_getfsstat
10291 eval $inlibc
10292
10293 : see if getgrent exists
10294 set getgrent d_getgrent
10295 eval $inlibc
10296
10297 : see if gethostbyaddr exists
10298 set gethostbyaddr d_gethbyaddr
10299 eval $inlibc
10300
10301 : see if gethostbyname exists
10302 set gethostbyname d_gethbyname
10303 eval $inlibc
10304
10305 : see if gethostent exists
10306 set gethostent d_gethent
10307 eval $inlibc
10308
10309 : see how we will look up host name
10310 echo " "
10311 call=''
10312 if set gethostname val -f d_gethname; eval $csym; $val; then
10313         echo 'gethostname() found.' >&4
10314         d_gethname="$define"
10315         call=gethostname
10316 fi
10317 if set uname val -f d_uname; eval $csym; $val; then
10318         if ./xenix; then
10319                 $cat <<'EOM'
10320 uname() was found, but you're running xenix, and older versions of xenix
10321 have a broken uname(). If you don't really know whether your xenix is old
10322 enough to have a broken system call, use the default answer.
10323
10324 EOM
10325                 dflt=y
10326                 case "$d_uname" in
10327                 "$define") dflt=n;;
10328                 esac
10329                 rp='Is your uname() broken?'
10330                 . ./myread
10331                 case "$ans" in
10332                 n*) d_uname="$define"; call=uname;;
10333                 esac
10334         else
10335                 echo 'uname() found.' >&4
10336                 d_uname="$define"
10337                 case "$call" in
10338                 '') call=uname ;;
10339                 esac
10340         fi
10341 fi
10342 case "$d_gethname" in
10343 '') d_gethname="$undef";;
10344 esac
10345 case "$d_uname" in
10346 '') d_uname="$undef";;
10347 esac
10348 case "$d_uname$d_gethname" in
10349 *define*)
10350         dflt=n
10351         cat <<EOM
10352  
10353 Every now and then someone has a $call() that lies about the hostname
10354 but can't be fixed for political or economic reasons.  If you wish, I can
10355 pretend $call() isn't there and maybe compute hostname at run-time
10356 thanks to the '$phostname' command.
10357
10358 EOM
10359         rp="Shall I ignore $call() from now on?"
10360         . ./myread
10361         case "$ans" in
10362         y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
10363         esac;;
10364 esac
10365 case "$phostname" in
10366 '') aphostname='';;
10367 *) case "$aphostname" in
10368         /*) ;;
10369         *) set X $phostname
10370                 shift
10371                 file=$1
10372                 shift
10373                 file=`./loc $file $file $pth`
10374                 aphostname=`echo $file $*`
10375                 ;;
10376         esac
10377         ;;
10378 esac
10379 case "$d_uname$d_gethname" in
10380 *define*) ;;
10381 *)
10382         case "$phostname" in
10383         '')
10384                 echo "There will be no way for $package to get your hostname." >&4;;
10385         *)
10386         echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
10387                 ;;
10388         esac;;
10389 esac
10390 case "$d_phostname" in
10391 '') d_phostname="$undef";;
10392 esac
10393
10394 : see if this is a netdb.h system
10395 set netdb.h i_netdb
10396 eval $inhdr
10397
10398 : see if prototypes for various gethostxxx netdb.h functions are available
10399 echo " "
10400 set d_gethostprotos gethostent $i_netdb netdb.h
10401 eval $hasproto
10402
10403 : see if getitimer exists
10404 set getitimer d_getitimer
10405 eval $inlibc
10406
10407 : see if getlogin exists
10408 set getlogin d_getlogin
10409 eval $inlibc
10410
10411 : see if getmnt exists
10412 set getmnt d_getmnt
10413 eval $inlibc
10414
10415 : see if getmntent exists
10416 set getmntent d_getmntent
10417 eval $inlibc
10418
10419 : see if getnetbyaddr exists
10420 set getnetbyaddr d_getnbyaddr
10421 eval $inlibc
10422
10423 : see if getnetbyname exists
10424 set getnetbyname d_getnbyname
10425 eval $inlibc
10426
10427 : see if getnetent exists
10428 set getnetent d_getnent
10429 eval $inlibc
10430
10431 : see if prototypes for various getnetxxx netdb.h functions are available
10432 echo " "
10433 set d_getnetprotos getnetent $i_netdb netdb.h
10434 eval $hasproto
10435
10436 : see if getpagesize exists
10437 set getpagesize d_getpagsz
10438 eval $inlibc
10439
10440
10441 : see if getprotobyname exists
10442 set getprotobyname d_getpbyname
10443 eval $inlibc
10444
10445 : see if getprotobynumber exists
10446 set getprotobynumber d_getpbynumber
10447 eval $inlibc
10448
10449 : see if getprotoent exists
10450 set getprotoent d_getpent
10451 eval $inlibc
10452
10453 : see if getpgid exists
10454 set getpgid d_getpgid
10455 eval $inlibc
10456
10457 : see if getpgrp2 exists
10458 set getpgrp2 d_getpgrp2
10459 eval $inlibc
10460
10461 : see if getppid exists
10462 set getppid d_getppid
10463 eval $inlibc
10464
10465 : see if getpriority exists
10466 set getpriority d_getprior
10467 eval $inlibc
10468
10469 : see if prototypes for various getprotoxxx netdb.h functions are available
10470 echo " "
10471 set d_getprotoprotos getprotoent $i_netdb netdb.h
10472 eval $hasproto
10473
10474 : see if getprpwnam exists
10475 set getprpwnam d_getprpwnam
10476 eval $inlibc
10477
10478 : see if getpwent exists
10479 set getpwent d_getpwent
10480 eval $inlibc
10481
10482
10483 : see if getservbyname exists
10484 set getservbyname d_getsbyname
10485 eval $inlibc
10486
10487 : see if getservbyport exists
10488 set getservbyport d_getsbyport
10489 eval $inlibc
10490
10491 : see if getservent exists
10492 set getservent d_getsent
10493 eval $inlibc
10494
10495 : see if prototypes for various getservxxx netdb.h functions are available
10496 echo " "
10497 set d_getservprotos getservent $i_netdb netdb.h
10498 eval $hasproto
10499
10500 : see if getspnam exists
10501 set getspnam d_getspnam
10502 eval $inlibc
10503
10504 : see if gettimeofday or ftime exists
10505 set gettimeofday d_gettimeod
10506 eval $inlibc
10507 case "$d_gettimeod" in
10508 "$undef")
10509         set ftime d_ftime 
10510         eval $inlibc
10511         ;;
10512 *)
10513         val="$undef"; set d_ftime; eval $setvar
10514         ;;
10515 esac
10516 case "$d_gettimeod$d_ftime" in
10517 "$undef$undef")
10518         echo " "
10519         echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
10520         ;;
10521 esac
10522
10523 : see if this is an grp system
10524 set grp.h i_grp
10525 eval $inhdr
10526
10527 case "$i_grp" in
10528 $define)
10529         xxx=`./findhdr grp.h`
10530         $cppstdin $cppflags $cppminus < $xxx >$$.h
10531
10532         if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
10533                 val="$define"
10534         else
10535                 val="$undef"
10536         fi
10537         set d_grpasswd
10538         eval $setvar
10539
10540         $rm -f $$.h
10541         ;;
10542 *)
10543         val="$undef";
10544         set d_grpasswd; eval $setvar
10545         ;;
10546 esac
10547
10548 : see if hasmntopt exists
10549 set hasmntopt d_hasmntopt
10550 eval $inlibc
10551
10552 : see if this is a netinet/in.h or sys/in.h system
10553 set netinet/in.h i_niin sys/in.h i_sysin
10554 eval $inhdr
10555
10556 : see if arpa/inet.h has to be included
10557 set arpa/inet.h i_arpainet
10558 eval $inhdr
10559
10560 : see if htonl --and friends-- exists
10561 val=''
10562 set htonl val
10563 eval $inlibc
10564
10565 : Maybe they are macros.
10566 case "$val" in
10567 $undef)
10568         $cat >htonl.c <<EOM
10569 #include <stdio.h>
10570 #include <sys/types.h>
10571 #$i_niin I_NETINET_IN
10572 #$i_sysin I_SYS_IN
10573 #$i_arpainet I_ARPA_INET
10574 #ifdef I_NETINET_IN
10575 #include <netinet/in.h>
10576 #endif
10577 #ifdef I_SYS_IN
10578 #include <sys/in.h>
10579 #endif
10580 #ifdef I_ARPA_INET
10581 #include <arpa/inet.h>
10582 #endif
10583 #ifdef htonl
10584 printf("Defined as a macro.");
10585 #endif
10586 EOM
10587         $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
10588         if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
10589                 val="$define"
10590                 echo "But it seems to be defined as a macro." >&4
10591         fi
10592         $rm -f htonl.?
10593         ;;
10594 esac
10595 set d_htonl
10596 eval $setvar
10597
10598 : see if iconv exists
10599 set iconv d_iconv
10600 eval $inlibc
10601
10602 : index or strchr
10603 echo " "
10604 if set index val -f; eval $csym; $val; then
10605         if set strchr val -f d_strchr; eval $csym; $val; then
10606                 if $contains strchr "$strings" >/dev/null 2>&1 ; then
10607                         val="$define"
10608                         vali="$undef"
10609                         echo "strchr() found." >&4
10610                 else
10611                         val="$undef"
10612                         vali="$define"
10613                         echo "index() found." >&4
10614                 fi
10615         else
10616                 val="$undef"
10617                 vali="$define"
10618                 echo "index() found." >&4
10619         fi
10620 else
10621         if set strchr val -f d_strchr; eval $csym; $val; then
10622                 val="$define"
10623                 vali="$undef"
10624                 echo "strchr() found." >&4
10625         else
10626                 echo "No index() or strchr() found!" >&4
10627                 val="$undef"
10628                 vali="$undef"
10629         fi
10630 fi
10631 set d_strchr; eval $setvar
10632 val="$vali"
10633 set d_index; eval $setvar
10634
10635 : check whether inet_aton exists
10636 set inet_aton d_inetaton
10637 eval $inlibc
10638
10639 : Look for isascii
10640 echo " "
10641 $cat >isascii.c <<'EOCP'
10642 #include <stdio.h>
10643 #include <ctype.h>
10644 int main() {
10645         int c = 'A';
10646         if (isascii(c))
10647                 exit(0);
10648         else
10649                 exit(1);
10650 }
10651 EOCP
10652 set isascii
10653 if eval $compile; then
10654         echo "isascii() found." >&4
10655         val="$define"
10656 else
10657         echo "isascii() NOT found." >&4
10658         val="$undef"
10659 fi
10660 set d_isascii
10661 eval $setvar
10662 $rm -f isascii*
10663
10664 : see if isnan exists
10665 set isnan d_isnan
10666 eval $inlibc
10667
10668 : see if isnanl exists
10669 set isnanl d_isnanl
10670 eval $inlibc
10671
10672 : see if killpg exists
10673 set killpg d_killpg
10674 eval $inlibc
10675
10676 : see if lchown exists
10677 echo " "
10678 $cat > try.c <<'EOCP'
10679 /* System header to define __stub macros and hopefully few prototypes,
10680     which can conflict with char lchown(); below.  */
10681 #include <assert.h>
10682 /* Override any gcc2 internal prototype to avoid an error.  */
10683 /* We use char because int might match the return type of a gcc2
10684    builtin and then its argument prototype would still apply.  */
10685 char lchown();
10686 int main() {
10687     /*  The GNU C library defines this for functions which it implements
10688         to always fail with ENOSYS.  Some functions are actually named
10689         something starting with __ and the normal name is an alias.  */
10690 #if defined (__stub_lchown) || defined (__stub___lchown)
10691 choke me
10692 #else
10693 lchown();
10694 #endif
10695 ; return 0; }
10696 EOCP
10697 set try
10698 if eval $compile; then
10699     $echo "lchown() found." >&4
10700     val="$define"
10701 else
10702     $echo "lchown() NOT found." >&4
10703     val="$undef"
10704 fi
10705 set d_lchown
10706 eval $setvar
10707
10708 : See if number of significant digits in a double precision number is known
10709 echo " "
10710 $cat >ldbl_dig.c <<EOM
10711 #$i_limits I_LIMITS
10712 #$i_float I_FLOAT
10713 #ifdef I_LIMITS
10714 #include <limits.h>
10715 #endif
10716 #ifdef I_FLOAT
10717 #include <float.h>
10718 #endif
10719 #ifdef LDBL_DIG
10720 printf("Contains LDBL_DIG");
10721 #endif
10722 EOM
10723 $cppstdin $cppflags $cppminus < ldbl_dig.c >ldbl_dig.E 2>/dev/null
10724 if $contains 'LDBL_DIG' ldbl_dig.E >/dev/null 2>&1; then
10725         echo "LDBL_DIG found." >&4
10726         val="$define"
10727 else
10728         echo "LDBL_DIG NOT found." >&4
10729         val="$undef"
10730 fi
10731 $rm -f ldbl_dig.?
10732 set d_ldbl_dig
10733 eval $setvar
10734
10735 : see if link exists
10736 set link d_link
10737 eval $inlibc
10738
10739 : see if localeconv exists
10740 set localeconv d_locconv
10741 eval $inlibc
10742
10743 : see if lockf exists
10744 set lockf d_lockf
10745 eval $inlibc
10746
10747 : see if prototype for lseek is available
10748 echo " "
10749 set d_lseekproto lseek $i_systypes sys/types.h $i_unistd unistd.h
10750 eval $hasproto
10751
10752 : see if lstat exists
10753 set lstat d_lstat
10754 eval $inlibc
10755
10756 : see if madvise exists
10757 set madvise d_madvise
10758 eval $inlibc
10759
10760 : see if mblen exists
10761 set mblen d_mblen
10762 eval $inlibc
10763
10764 : see if mbstowcs exists
10765 set mbstowcs d_mbstowcs
10766 eval $inlibc
10767
10768 : see if mbtowc exists
10769 set mbtowc d_mbtowc
10770 eval $inlibc
10771
10772 : see if memchr exists
10773 set memchr d_memchr
10774 eval $inlibc
10775
10776 : see if memcmp exists
10777 set memcmp d_memcmp
10778 eval $inlibc
10779
10780 : see if memcpy exists
10781 set memcpy d_memcpy
10782 eval $inlibc
10783
10784 : see if memmove exists
10785 set memmove d_memmove
10786 eval $inlibc
10787
10788 : see if memset exists
10789 set memset d_memset
10790 eval $inlibc
10791
10792 : see if mkdir exists
10793 set mkdir d_mkdir
10794 eval $inlibc
10795
10796 : see if mkdtemp exists
10797 set mkdtemp d_mkdtemp
10798 eval $inlibc
10799
10800 : see if mkfifo exists
10801 set mkfifo d_mkfifo
10802 eval $inlibc
10803
10804 : see if mkstemp exists
10805 set mkstemp d_mkstemp
10806 eval $inlibc
10807
10808 : see if mkstemps exists
10809 set mkstemps d_mkstemps
10810 eval $inlibc
10811
10812 : see if mktime exists
10813 set mktime d_mktime
10814 eval $inlibc
10815
10816 : see if this is a sys/mman.h system
10817 set sys/mman.h i_sysmman
10818 eval $inhdr
10819
10820 : see if mmap exists
10821 set mmap d_mmap
10822 eval $inlibc
10823 : see what shmat returns
10824 : default to something harmless
10825 mmaptype='void *'
10826 case "$i_sysmman$d_mmap" in
10827 "$define$define")
10828         $cat >mmap.c <<'END'
10829 #include <sys/mman.h>
10830 void *mmap();
10831 END
10832         if $cc $ccflags -c mmap.c >/dev/null 2>&1; then
10833                 mmaptype='void *'
10834         else
10835                 mmaptype='caddr_t'
10836         fi
10837         echo "and it returns ($mmaptype)." >&4
10838         ;;
10839 esac
10840
10841
10842
10843 : see if modfl exists
10844 set modfl d_modfl
10845 eval $inlibc
10846
10847 d_modfl_pow32_bug="$undef"
10848
10849 case "$d_longdbl$d_modfl" in
10850 $define$define)
10851         $cat <<EOM
10852 Checking to see whether your modfl() is okay for large values...
10853 EOM
10854 $cat >try.c <<EOCP
10855 #include <math.h> 
10856 #include <stdio.h>
10857 int main() {
10858     long double nv = 4294967303.15;
10859     long double v, w;
10860     v = modfl(nv, &w);         
10861 #ifdef __GLIBC__
10862     printf("glibc");
10863 #endif
10864     printf(" %"$sPRIfldbl" %"$sPRIfldbl" %"$sPRIfldbl"\n", nv, v, w);
10865     return 0;
10866 }
10867 EOCP
10868         case "$osname:$gccversion" in
10869         aix:)   saveccflags="$ccflags"
10870                 ccflags="$ccflags -qlongdouble" ;; # to avoid core dump
10871         esac
10872         set try
10873         if eval $compile; then
10874                 foo=`$run ./try`
10875                 case "$foo" in
10876                 *" 4294967303.150000 1.150000 4294967302.000000")
10877                         echo >&4 "Your modfl() is broken for large values."
10878                         d_modfl_pow32_bug="$define"
10879                         case "$foo" in
10880                         glibc)  echo >&4 "You should upgrade your glibc to at least 2.2.2 to get a fixed modfl()."
10881                         ;;
10882                         esac
10883                         ;;
10884                 *" 4294967303.150000 0.150000 4294967303.000000")
10885                         echo >&4 "Your modfl() seems okay for large values."
10886                         ;;
10887                 *)      echo >&4 "I don't understand your modfl() at all."
10888                         d_modfl="$undef"
10889                         ;;
10890                 esac
10891                 $rm -f try.* try core core.try.*
10892         else
10893                 echo "I cannot figure out whether your modfl() is okay, assuming it isn't."
10894                 d_modfl="$undef"
10895         fi
10896         case "$osname:$gccversion" in
10897         aix:)   ccflags="$saveccflags" ;; # restore
10898         esac
10899         ;;
10900 esac
10901
10902 : see if mprotect exists
10903 set mprotect d_mprotect
10904 eval $inlibc
10905
10906 : see if msgctl exists
10907 set msgctl d_msgctl
10908 eval $inlibc
10909
10910 : see if msgget exists
10911 set msgget d_msgget
10912 eval $inlibc
10913
10914 : see if msgsnd exists
10915 set msgsnd d_msgsnd
10916 eval $inlibc
10917
10918 : see if msgrcv exists
10919 set msgrcv d_msgrcv
10920 eval $inlibc
10921
10922 : see how much of the 'msg*(2)' library is present.
10923 h_msg=true
10924 echo " "
10925 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
10926 *"$undef"*) h_msg=false;;
10927 esac
10928 case "$osname" in
10929 freebsd)
10930     case "`ipcs 2>&1`" in
10931     "SVID messages"*"not configured"*)
10932         echo "Your $osname does not have the msg*(2) configured." >&4
10933         h_msg=false
10934         val="$undef"
10935         set msgctl d_msgctl
10936         eval $setvar
10937         set msgget d_msgget
10938         eval $setvar
10939         set msgsnd d_msgsnd
10940         eval $setvar
10941         set msgrcv d_msgrcv
10942         eval $setvar
10943         ;;
10944     esac
10945     ;;
10946 esac
10947 : we could also check for sys/ipc.h ...
10948 if $h_msg && $test `./findhdr sys/msg.h`; then
10949         echo "You have the full msg*(2) library." >&4
10950         val="$define"
10951 else
10952         echo "You don't have the full msg*(2) library." >&4
10953         val="$undef"
10954 fi
10955 set d_msg
10956 eval $setvar
10957
10958
10959 echo " "
10960 echo "Checking to see if your system supports struct msghdr..." >&4
10961 set d_msghdr_s msghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
10962 eval $hasstruct
10963 case "$d_msghdr_s" in
10964 "$define")      echo "Yes, it does."   ;;
10965 *)              echo "No, it doesn't." ;;
10966 esac
10967
10968
10969 : see if msync exists
10970 set msync d_msync
10971 eval $inlibc
10972
10973 : see if munmap exists
10974 set munmap d_munmap
10975 eval $inlibc
10976
10977 : see if nice exists
10978 set nice d_nice
10979 eval $inlibc
10980
10981 : see if this is a langinfo.h system
10982 set langinfo.h i_langinfo
10983 eval $inhdr
10984
10985 : see if nl_langinfo exists
10986 set nl_langinfo d_nl_langinfo
10987 eval $inlibc
10988
10989 : check for length of character
10990 echo " "
10991 case "$charsize" in
10992 '')
10993         echo "Checking to see how big your characters are (hey, you never know)..." >&4
10994         $cat >try.c <<'EOCP'
10995 #include <stdio.h>
10996 int main()
10997 {
10998     printf("%d\n", (int)sizeof(char));
10999     exit(0);
11000 }
11001 EOCP
11002         set try
11003         if eval $compile_ok; then
11004                 dflt=`$run ./try`
11005         else
11006                 dflt='1'
11007                 echo "(I can't seem to compile the test program.  Guessing...)"
11008         fi
11009         ;;
11010 *)
11011         dflt="$charsize"
11012         ;;
11013 esac
11014 rp="What is the size of a character (in bytes)?"
11015 . ./myread
11016 charsize="$ans"
11017 $rm -f try.c try
11018
11019 : check for volatile keyword
11020 echo " "
11021 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
11022 $cat >try.c <<'EOCP'
11023 int main()
11024 {
11025         typedef struct _goo_struct goo_struct;
11026         goo_struct * volatile goo = ((goo_struct *)0);
11027         struct _goo_struct {
11028                 long long_int;
11029                 int reg_int;
11030                 char char_var;
11031         };
11032         typedef unsigned short foo_t;
11033         char *volatile foo;
11034         volatile int bar;
11035         volatile foo_t blech;
11036         foo = foo;
11037 }
11038 EOCP
11039 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
11040         val="$define"
11041         echo "Yup, it does."
11042 else
11043         val="$undef"
11044         echo "Nope, it doesn't."
11045 fi
11046 set d_volatile
11047 eval $setvar
11048 $rm -f try.*
11049
11050
11051 echo " "
11052 $echo "Choosing the C types to be used for Perl's internal types..." >&4
11053
11054 case "$use64bitint:$d_quad:$quadtype" in
11055 define:define:?*)
11056         ivtype="$quadtype"
11057         uvtype="$uquadtype"
11058         ivsize=8
11059         uvsize=8
11060         ;;
11061 *)      ivtype="long"
11062         uvtype="unsigned long"
11063         ivsize=$longsize
11064         uvsize=$longsize
11065         ;;
11066 esac
11067
11068 case "$uselongdouble:$d_longdbl" in
11069 define:define)
11070         nvtype="long double"
11071         nvsize=$longdblsize
11072         ;;
11073 *)      nvtype=double
11074         nvsize=$doublesize
11075         ;;
11076 esac
11077
11078 $echo "(IV will be "$ivtype", $ivsize bytes)"
11079 $echo "(UV will be "$uvtype", $uvsize bytes)"
11080 $echo "(NV will be "$nvtype", $nvsize bytes)"
11081
11082 $cat >try.c <<EOCP
11083 #$i_inttypes I_INTTYPES
11084 #ifdef I_INTTYPES
11085 #include <inttypes.h>
11086 #endif
11087 #include <stdio.h>
11088 int main() {
11089 #ifdef INT8
11090    int8_t i =  INT8_MAX;
11091   uint8_t u = UINT8_MAX;
11092   printf("int8_t\n");
11093 #endif
11094 #ifdef INT16
11095    int16_t i =  INT16_MAX;
11096   uint16_t i = UINT16_MAX;
11097   printf("int16_t\n");
11098 #endif
11099 #ifdef INT32
11100    int32_t i =  INT32_MAX;
11101   uint32_t u = UINT32_MAX;
11102   printf("int32_t\n");
11103 #endif
11104 }
11105 EOCP
11106
11107 case "$i8type" in
11108 '')     case "$charsize" in
11109         1)      i8type=char
11110                 u8type="unsigned char"
11111                 i8size=$charsize
11112                 u8size=$charsize
11113                 ;;
11114         esac
11115         ;;
11116 esac
11117 case "$i8type" in
11118 '')     set try -DINT8
11119         if eval $compile; then
11120                 case "`$run ./try`" in
11121                 int8_t) i8type=int8_t
11122                         u8type=uint8_t
11123                         i8size=1
11124                         u8size=1
11125                         ;;
11126                 esac
11127         fi
11128         ;;
11129 esac
11130 case "$i8type" in
11131 '')     if $test $charsize -ge 1; then
11132                 i8type=char
11133                 u8type="unsigned char"
11134                 i8size=$charsize
11135                 u8size=$charsize
11136         fi
11137         ;;
11138 esac
11139
11140 case "$i16type" in
11141 '')     case "$shortsize" in
11142         2)      i16type=short
11143                 u16type="unsigned short"
11144                 i16size=$shortsize
11145                 u16size=$shortsize
11146                 ;;
11147         esac
11148         ;;
11149 esac
11150 case "$i16type" in
11151 '')     set try -DINT16
11152         if eval $compile; then
11153                 case "`$run ./try`" in
11154                 int16_t)
11155                         i16type=int16_t
11156                         u16type=uint16_t
11157                         i16size=2
11158                         u16size=2
11159                         ;;
11160                 esac
11161         fi
11162         ;;
11163 esac
11164 case "$i16type" in
11165 '')     if $test $shortsize -ge 2; then
11166                 i16type=short
11167                 u16type="unsigned short"
11168                 i16size=$shortsize
11169                 u16size=$shortsize
11170         fi
11171         ;;
11172 esac
11173
11174 case "$i32type" in
11175 '')     case "$longsize" in
11176         4)      i32type=long
11177                 u32type="unsigned long"
11178                 i32size=$longsize
11179                 u32size=$longsize
11180                 ;;
11181         *)      case "$intsize" in
11182                 4)      i32type=int
11183                         u32type="unsigned int"
11184                         i32size=$intsize
11185                         u32size=$intsize
11186                         ;;
11187                 esac
11188                 ;;
11189         esac
11190         ;;
11191 esac
11192 case "$i32type" in
11193 '')     set try -DINT32
11194         if eval $compile; then
11195                 case "`$run ./try`" in
11196                 int32_t)
11197                         i32type=int32_t
11198                         u32type=uint32_t
11199                         i32size=4
11200                         u32size=4
11201                         ;;
11202                 esac
11203         fi
11204         ;;
11205 esac
11206 case "$i32type" in
11207 '')     if $test $intsize -ge 4; then
11208                 i32type=int
11209                 u32type="unsigned int"
11210                 i32size=$intsize
11211                 u32size=$intsize
11212         fi
11213         ;;
11214 esac
11215
11216 case "$i64type" in
11217 '')     case "$d_quad:$quadtype" in
11218         define:?*)
11219                 i64type="$quadtype"
11220                 u64type="$uquadtype"
11221                 i64size=8
11222                 u64size=8
11223                 ;;
11224         esac
11225         ;;
11226 esac
11227
11228 $echo "Checking how many bits of your UVs your NVs can preserve..." >&4
11229 : volatile so that the compiler has to store it out to memory.
11230 if test X"$d_volatile" = X"$define"; then
11231         volatile=volatile
11232 fi
11233 $cat <<EOP >try.c
11234 #include <stdio.h>
11235 #include <sys/types.h>
11236 #include <signal.h>
11237 #ifdef SIGFPE
11238 $volatile int bletched = 0;
11239 $signal_t blech(s) int s; { bletched = 1; }
11240 #endif
11241 int main() {
11242     $uvtype u = 0;
11243     $nvtype d;
11244     int     n = 8 * $uvsize;
11245     int     i;
11246 #ifdef SIGFPE
11247     signal(SIGFPE, blech);
11248 #endif
11249
11250     for (i = 0; i < n; i++) {
11251       u = u << 1 | ($uvtype)1;
11252       d = ($nvtype)u;
11253       if (($uvtype)d != u)
11254         break;
11255       if (d <= 0)
11256         break;
11257       d = ($nvtype)(u - 1);
11258       if (($uvtype)d != (u - 1))
11259         break;
11260 #ifdef SIGFPE
11261       if (bletched) {
11262         break;
11263 #endif
11264       } 
11265     }
11266     printf("%d\n", ((i == n) ? -n : i));
11267     exit(0);
11268 }
11269 EOP
11270 set try
11271
11272 d_nv_preserves_uv="$undef"
11273 if eval $compile; then
11274         d_nv_preserves_uv_bits="`$run ./try`"
11275 fi
11276 case "$d_nv_preserves_uv_bits" in
11277 \-[1-9]*)       
11278         d_nv_preserves_uv_bits=`expr 0 - $d_nv_preserves_uv_bits`
11279         $echo "Your NVs can preserve all $d_nv_preserves_uv_bits bits of your UVs."  2>&1
11280         d_nv_preserves_uv="$define"
11281         ;;
11282 [1-9]*) $echo "Your NVs can preserve only $d_nv_preserves_uv_bits bits of your UVs."  2>&1
11283         d_nv_preserves_uv="$undef" ;;
11284 *)      $echo "Can't figure out how many bits your NVs preserve." 2>&1
11285         d_nv_preserves_uv_bits="$undef" ;;
11286 esac
11287
11288 $rm -f try.* try
11289
11290
11291 : check for off64_t
11292 echo " "
11293 echo "Checking to see if you have off64_t..." >&4
11294 $cat >try.c <<EOCP
11295 #include <sys/types.h>
11296 #include <unistd.h>
11297 int main() { off64_t x = 7; }
11298 EOCP
11299 set try
11300 if eval $compile; then
11301         val="$define"
11302         echo "You have off64_t."
11303 else
11304         val="$undef"
11305         echo "You do not have off64_t."
11306         case "$lseeksize" in
11307         8) echo "(Your off_t is 64 bits, so you could use that.)" ;;
11308         esac
11309 fi
11310 $rm -f try.* try
11311 set d_off64_t
11312 eval $setvar
11313
11314 : see if POSIX threads are available
11315 set pthread.h i_pthread
11316 eval $inhdr
11317
11318
11319
11320
11321 : how to create joinable pthreads
11322 if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
11323         echo " "
11324         echo "Checking what constant to use for creating joinable pthreads..." >&4 
11325         $cat >try.c <<'EOCP'
11326 #include <pthread.h>
11327 int main() {
11328     int detachstate = JOINABLE;
11329 }
11330 EOCP
11331         set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
11332         if eval $compile; then
11333                 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
11334                 val="$undef" # Yes, undef.
11335                 set d_old_pthread_create_joinable
11336                 eval $setvar
11337                 val=""
11338                 set old_pthread_create_joinable
11339                 eval $setvar
11340         else
11341                 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
11342                 if eval $compile; then
11343                         echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
11344                         val="$define"
11345                         set d_old_pthread_create_joinable
11346                         eval $setvar
11347                         val=PTHREAD_CREATE_UNDETACHED
11348                         set old_pthread_create_joinable
11349                         eval $setvar
11350                 else            
11351                         set try -DJOINABLE=__UNDETACHED
11352                         if eval $compile; then
11353                                 echo "You seem to use __UNDETACHED." >&4
11354                                 val="$define"
11355                                 set d_old_pthread_create_joinable
11356                                 eval $setvar
11357                                 val=__UNDETACHED
11358                                 set old_pthread_create_joinable
11359                                 eval $setvar
11360                         else
11361                                 echo "Egads, nothing obvious found.  Guessing that you use 0." >&4
11362                                 val="$define"
11363                                 set d_old_pthread_create_joinable
11364                                 eval $setvar
11365                                 val=0
11366                                 set old_pthread_create_joinable
11367                                 eval $setvar
11368                         fi
11369                 fi
11370         fi
11371         $rm -f try try.*
11372 else
11373     d_old_pthread_create_joinable="$undef"
11374     old_pthread_create_joinable=""
11375 fi
11376
11377 : see if pause exists
11378 set pause d_pause
11379 eval $inlibc
11380
11381 : see if pipe exists
11382 set pipe d_pipe
11383 eval $inlibc
11384
11385 : see if poll exists
11386 set poll d_poll
11387 eval $inlibc
11388
11389 : see if pthread_atfork exists
11390 set pthread_atfork d_pthread_atfork
11391 eval $inlibc
11392
11393
11394 : see whether the various POSIXish _yields exist
11395 $cat >try.c <<EOP
11396 #include <pthread.h>
11397 #include <stdio.h>
11398 int main() {
11399 #ifdef SCHED_YIELD
11400         sched_yield();
11401 #else
11402 #ifdef PTHREAD_YIELD
11403         pthread_yield();
11404 #else
11405 #ifdef PTHREAD_YIELD_NULL
11406         pthread_yield(NULL);
11407 #endif
11408 #endif
11409 #endif
11410 }
11411 EOP
11412 : see if sched_yield exists
11413 set try -DSCHED_YIELD
11414 if eval $compile; then
11415     val="$define"
11416     sched_yield='sched_yield()'
11417 else
11418     val="$undef"
11419 fi
11420 case "$usethreads" in
11421 $define)
11422         case "$val" in
11423         $define) echo 'sched_yield() found.' >&4        ;;
11424         *)       echo 'sched_yield() NOT found.' >&4    ;;
11425         esac
11426 esac
11427 set d_sched_yield
11428 eval $setvar
11429
11430 : see if pthread_yield exists
11431 set try -DPTHREAD_YIELD
11432 if eval $compile; then
11433     val="$define"
11434     case "$sched_yield" in
11435     '') sched_yield='pthread_yield()' ;;
11436     esac
11437 else
11438     set try -DPTHREAD_YIELD_NULL
11439     if eval $compile; then
11440         val="$define"
11441         case "$sched_yield" in
11442         '') sched_yield='pthread_yield(NULL)' ;;
11443         esac
11444     else
11445         val="$undef"
11446     fi
11447 fi
11448 case "$usethreads" in
11449 $define)
11450         case "$val" in
11451         $define) echo 'pthread_yield() found.' >&4      ;;
11452         *)       echo 'pthread_yield() NOT found.' >&4  ;;
11453         esac
11454         ;;
11455 esac
11456 set d_pthread_yield
11457 eval $setvar
11458
11459 case "$sched_yield" in
11460 '') sched_yield=undef ;;
11461 esac
11462
11463 $rm -f try try.*
11464
11465 : see if this is a pwd.h system
11466 set pwd.h i_pwd
11467 eval $inhdr
11468
11469 case "$i_pwd" in
11470 $define)
11471         xxx=`./findhdr pwd.h`
11472         $cppstdin $cppflags $cppminus < $xxx >$$.h
11473
11474         if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
11475                 val="$define"
11476         else
11477                 val="$undef"
11478         fi
11479         set d_pwquota
11480         eval $setvar
11481
11482         if $contains 'pw_age' $$.h >/dev/null 2>&1; then
11483                 val="$define"
11484         else
11485                 val="$undef"
11486         fi
11487         set d_pwage
11488         eval $setvar
11489
11490         if $contains 'pw_change' $$.h >/dev/null 2>&1; then
11491                 val="$define"
11492         else
11493                 val="$undef"
11494         fi
11495         set d_pwchange
11496         eval $setvar
11497
11498         if $contains 'pw_class' $$.h >/dev/null 2>&1; then
11499                 val="$define"
11500         else
11501                 val="$undef"
11502         fi
11503         set d_pwclass
11504         eval $setvar
11505
11506         if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
11507                 val="$define"
11508         else
11509                 val="$undef"
11510         fi
11511         set d_pwexpire
11512         eval $setvar
11513
11514         if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
11515                 val="$define"
11516         else
11517                 val="$undef"
11518         fi
11519         set d_pwcomment
11520         eval $setvar
11521
11522         if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
11523                 val="$define"
11524         else
11525                 val="$undef"
11526         fi
11527         set d_pwgecos
11528         eval $setvar
11529
11530         if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
11531                 val="$define"
11532         else
11533                 val="$undef"
11534         fi
11535         set d_pwpasswd
11536         eval $setvar
11537
11538         $rm -f $$.h
11539         ;;
11540 *)
11541         val="$undef"; 
11542         set d_pwquota; eval $setvar
11543         set d_pwage; eval $setvar
11544         set d_pwchange; eval $setvar
11545         set d_pwclass; eval $setvar
11546         set d_pwexpire; eval $setvar
11547         set d_pwcomment; eval $setvar
11548         set d_pwgecos; eval $setvar
11549         set d_pwpasswd; eval $setvar
11550         ;;
11551 esac
11552
11553 : see if readdir and friends exist
11554 set readdir d_readdir
11555 eval $inlibc
11556 set seekdir d_seekdir
11557 eval $inlibc
11558 set telldir d_telldir
11559 eval $inlibc
11560 set rewinddir d_rewinddir
11561 eval $inlibc
11562
11563 : see if readlink exists
11564 set readlink d_readlink
11565 eval $inlibc
11566
11567 : see if readv exists
11568 set readv d_readv
11569 eval $inlibc
11570
11571 : see if recvmsg exists
11572 set recvmsg d_recvmsg
11573 eval $inlibc
11574
11575 : see if rename exists
11576 set rename d_rename
11577 eval $inlibc
11578
11579 : see if rmdir exists
11580 set rmdir d_rmdir
11581 eval $inlibc
11582
11583 : see if memory.h is available.
11584 val=''
11585 set memory.h val
11586 eval $inhdr
11587
11588 : See if it conflicts with string.h
11589 case "$val" in
11590 $define)
11591         case "$strings" in
11592         '') ;;
11593         *)
11594                 $cppstdin $cppflags $cppminus < $strings > mem.h
11595                 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
11596                         echo " "
11597                         echo "We won't be including <memory.h>."
11598                         val="$undef"
11599                 fi
11600                 $rm -f mem.h
11601                 ;;
11602         esac
11603 esac
11604 set i_memory
11605 eval $setvar
11606
11607 : can bcopy handle overlapping blocks?
11608 echo " "
11609 val="$undef"
11610 case "$d_memmove" in
11611 "$define") echo "I'll use memmove() instead of bcopy() for overlapping copies." ;;
11612 *)      case "$d_bcopy" in
11613         "$define")
11614                 echo "Checking to see if bcopy() can do overlapping copies..." >&4
11615                 $cat >try.c <<EOCP
11616 #$i_memory I_MEMORY
11617 #$i_stdlib I_STDLIB
11618 #$i_string I_STRING
11619 #$i_unistd I_UNISTD
11620 EOCP
11621         $cat >>try.c <<'EOCP'
11622 #include <stdio.h>
11623 #ifdef I_MEMORY
11624 #  include <memory.h>
11625 #endif
11626 #ifdef I_STDLIB
11627 #  include <stdlib.h>
11628 #endif
11629 #ifdef I_STRING
11630 #  include <string.h>
11631 #else
11632 #  include <strings.h>
11633 #endif
11634 #ifdef I_UNISTD
11635 #  include <unistd.h>  /* Needed for NetBSD */
11636 #endif
11637 int main()
11638 {
11639 char buf[128], abc[128];
11640 char *b;
11641 int len;
11642 int off;
11643 int align;
11644
11645 /* Copy "abcde..." string to char abc[] so that gcc doesn't
11646    try to store the string in read-only memory. */
11647 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
11648
11649 for (align = 7; align >= 0; align--) {
11650         for (len = 36; len; len--) {
11651                 b = buf+align;
11652                 bcopy(abc, b, len);
11653                 for (off = 1; off <= len; off++) {
11654                         bcopy(b, b+off, len);
11655                         bcopy(b+off, b, len);
11656                         if (bcmp(b, abc, len))
11657                                 exit(1);
11658                 }
11659         }
11660 }
11661 exit(0);
11662 }
11663 EOCP
11664                 set try
11665                 if eval $compile_ok; then
11666                         if ./try 2>/dev/null; then
11667                                 echo "Yes, it can."
11668                                 val="$define"
11669                         else
11670                                 echo "It can't, sorry."
11671                         fi
11672                 else
11673                         echo "(I can't compile the test program, so we'll assume not...)"
11674                 fi
11675                 ;;
11676         esac
11677         $rm -f try.* try core
11678         ;;
11679 esac
11680 set d_safebcpy
11681 eval $setvar
11682
11683 : can memcpy handle overlapping blocks?
11684 echo " "
11685 val="$undef"
11686 case "$d_memmove" in
11687 "$define") echo "I'll use memmove() instead of memcpy() for overlapping copies." ;;
11688 *)      case "$d_memcpy" in
11689         "$define")
11690                 echo "Checking to see if memcpy() can do overlapping copies..." >&4
11691                 $cat >try.c <<EOCP
11692 #$i_memory I_MEMORY
11693 #$i_stdlib I_STDLIB
11694 #$i_string I_STRING
11695 #$i_unistd I_UNISTD
11696 EOCP
11697         $cat >>try.c <<'EOCP'
11698 #include <stdio.h>
11699 #ifdef I_MEMORY
11700 #  include <memory.h>
11701 #endif
11702 #ifdef I_STDLIB
11703 #  include <stdlib.h>
11704 #endif
11705 #ifdef I_STRING
11706 #  include <string.h>
11707 #else
11708 #  include <strings.h>
11709 #endif
11710 #ifdef I_UNISTD
11711 #  include <unistd.h>  /* Needed for NetBSD */
11712 #endif
11713 int main()
11714 {
11715 char buf[128], abc[128];
11716 char *b;
11717 int len;
11718 int off;
11719 int align;
11720
11721 /* Copy "abcde..." string to char abc[] so that gcc doesn't
11722    try to store the string in read-only memory. */
11723 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
11724
11725 for (align = 7; align >= 0; align--) {
11726         for (len = 36; len; len--) {
11727                 b = buf+align;
11728                 memcpy(b, abc, len);
11729                 for (off = 1; off <= len; off++) {
11730                         memcpy(b+off, b, len);
11731                         memcpy(b, b+off, len);
11732                         if (memcmp(b, abc, len))
11733                                 exit(1);
11734                 }
11735         }
11736 }
11737 exit(0);
11738 }
11739 EOCP
11740                 set try
11741                 if eval $compile_ok; then
11742                         if ./try 2>/dev/null; then
11743                                 echo "Yes, it can."
11744                                 val="$define"
11745                         else
11746                                 echo "It can't, sorry."
11747                         fi
11748                 else
11749                         echo "(I can't compile the test program, so we'll assume not...)"
11750                 fi
11751                 ;;
11752         esac
11753         $rm -f try.* try core
11754         ;;
11755 esac
11756 set d_safemcpy
11757 eval $setvar
11758
11759 : can memcmp be trusted to compare relative magnitude?
11760 val="$undef"
11761 case "$d_memcmp" in
11762 "$define")
11763         echo " "
11764         echo "Checking if your memcmp() can compare relative magnitude..." >&4
11765         $cat >try.c <<EOCP
11766 #$i_memory I_MEMORY
11767 #$i_stdlib I_STDLIB
11768 #$i_string I_STRING
11769 #$i_unistd I_UNISTD
11770 EOCP
11771         $cat >>try.c <<'EOCP'
11772 #include <stdio.h>
11773 #ifdef I_MEMORY
11774 #  include <memory.h>
11775 #endif
11776 #ifdef I_STDLIB
11777 #  include <stdlib.h>
11778 #endif
11779 #ifdef I_STRING
11780 #  include <string.h>
11781 #else
11782 #  include <strings.h>
11783 #endif
11784 #ifdef I_UNISTD
11785 #  include <unistd.h>  /* Needed for NetBSD */
11786 #endif
11787 int main()
11788 {
11789 char a = -1;
11790 char b = 0;
11791 if ((a < b) && memcmp(&a, &b, 1) < 0)
11792         exit(1);
11793 exit(0);
11794 }
11795 EOCP
11796         set try
11797         if eval $compile_ok; then
11798                 if $run ./try 2>/dev/null; then
11799                         echo "Yes, it can."
11800                         val="$define"
11801                 else
11802                         echo "No, it can't (it uses signed chars)."
11803                 fi
11804         else
11805                 echo "(I can't compile the test program, so we'll assume not...)"
11806         fi
11807         ;;
11808 esac
11809 $rm -f try.* try core
11810 set d_sanemcmp
11811 eval $setvar
11812
11813 : see if prototype for sbrk is available
11814 echo " "
11815 set d_sbrkproto sbrk $i_unistd unistd.h
11816 eval $hasproto
11817
11818 : see if select exists
11819 set select d_select
11820 eval $inlibc
11821
11822 : see if semctl exists
11823 set semctl d_semctl
11824 eval $inlibc
11825
11826 : see if semget exists
11827 set semget d_semget
11828 eval $inlibc
11829
11830 : see if semop exists
11831 set semop d_semop
11832 eval $inlibc
11833
11834 : see how much of the 'sem*(2)' library is present.
11835 h_sem=true
11836 echo " "
11837 case "$d_semctl$d_semget$d_semop" in
11838 *"$undef"*) h_sem=false;;
11839 esac
11840 case "$osname" in
11841 freebsd)
11842     case "`ipcs 2>&1`" in
11843     "SVID messages"*"not configured"*)
11844         echo "Your $osname does not have the sem*(2) configured." >&4
11845         h_sem=false
11846         val="$undef"
11847         set semctl d_semctl
11848         eval $setvar
11849         set semget d_semget
11850         eval $setvar
11851         set semop d_semop
11852         eval $setvar
11853         ;;
11854     esac
11855     ;;
11856 esac
11857 : we could also check for sys/ipc.h ...
11858 if $h_sem && $test `./findhdr sys/sem.h`; then
11859         echo "You have the full sem*(2) library." >&4
11860         val="$define"
11861 else
11862         echo "You don't have the full sem*(2) library." >&4
11863         val="$undef"
11864 fi
11865 set d_sem
11866 eval $setvar
11867
11868 : see whether sys/sem.h defines union semun
11869 echo " "
11870 $cat > try.c <<'END'
11871 #include <sys/types.h>
11872 #include <sys/ipc.h>
11873 #include <sys/sem.h>
11874 int main () { union semun semun; semun.buf = 0; }
11875 END
11876 set try
11877 if eval $compile; then
11878     echo "You have union semun in <sys/sem.h>." >&4
11879     val="$define"
11880 else
11881     echo "You do not have union semun in <sys/sem.h>." >&4
11882     val="$undef"
11883 fi
11884 $rm -f try try.c try.h
11885 set d_union_semun
11886 eval $setvar
11887
11888 : see how to do semctl IPC_STAT
11889 case "$d_sem" in
11890 $define)
11891     : see whether semctl IPC_STAT can use union semun
11892     echo " "
11893     $cat > try.h <<END
11894 #ifndef S_IRUSR
11895 #   ifdef S_IREAD
11896 #       define S_IRUSR S_IREAD
11897 #       define S_IWUSR S_IWRITE
11898 #       define S_IXUSR S_IEXEC
11899 #   else
11900 #       define S_IRUSR 0400
11901 #       define S_IWUSR 0200
11902 #       define S_IXUSR 0100
11903 #   endif
11904 #   define S_IRGRP (S_IRUSR>>3)
11905 #   define S_IWGRP (S_IWUSR>>3)
11906 #   define S_IXGRP (S_IXUSR>>3)
11907 #   define S_IROTH (S_IRUSR>>6)
11908 #   define S_IWOTH (S_IWUSR>>6)
11909 #   define S_IXOTH (S_IXUSR>>6)
11910 #endif
11911 #ifndef S_IRWXU
11912 #   define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
11913 #   define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
11914 #   define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
11915 #endif
11916 END
11917
11918     $cat > try.c <<END
11919 #include <sys/types.h>
11920 #include <sys/ipc.h>
11921 #include <sys/sem.h>
11922 #include <sys/stat.h>
11923 #include <stdio.h>
11924 #include <errno.h>
11925 #include "try.h"
11926 #ifndef errno
11927 extern int errno;
11928 #endif
11929 #$d_union_semun HAS_UNION_SEMUN
11930 int main() {
11931     union semun
11932 #ifndef HAS_UNION_SEMUN
11933     {
11934         int val;
11935         struct semid_ds *buf;
11936         unsigned short *array;
11937     }
11938 #endif
11939     arg;
11940     int sem, st;
11941
11942 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
11943     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
11944     if (sem > -1) {
11945         struct semid_ds argbuf;
11946         arg.buf = &argbuf;
11947 #       ifdef IPC_STAT
11948         st = semctl(sem, 0, IPC_STAT, arg);
11949         if (st == 0)
11950             printf("semun\n");
11951         else
11952 #       endif /* IPC_STAT */
11953             printf("semctl IPC_STAT failed: errno = %d\n", errno);
11954 #       ifdef IPC_RMID
11955         if (semctl(sem, 0, IPC_RMID, arg) != 0)
11956 #       endif /* IPC_RMID */
11957             printf("semctl IPC_RMID failed: errno = %d\n", errno);
11958     } else
11959 #endif /* IPC_PRIVATE && ... */
11960         printf("semget failed: errno = %d\n", errno);
11961   return 0;
11962 }
11963 END
11964     val="$undef"
11965     set try
11966     if eval $compile; then
11967         xxx=`$run ./try`
11968         case "$xxx" in
11969         semun) val="$define" ;;
11970         esac
11971     fi
11972     $rm -f try try.c
11973     set d_semctl_semun
11974     eval $setvar
11975     case "$d_semctl_semun" in
11976     $define)
11977         echo "You can use union semun for semctl IPC_STAT." >&4
11978         also='also'
11979         ;;
11980     *)  echo "You cannot use union semun for semctl IPC_STAT." >&4
11981         also=''
11982         ;;
11983     esac
11984
11985     : see whether semctl IPC_STAT can use struct semid_ds pointer
11986     $cat > try.c <<'END'
11987 #include <sys/types.h>
11988 #include <sys/ipc.h>
11989 #include <sys/sem.h>
11990 #include <sys/stat.h>
11991 #include "try.h"
11992 #include <stdio.h>
11993 #include <errno.h>
11994 #ifndef errno
11995 extern int errno;
11996 #endif
11997 int main() {
11998     struct semid_ds arg;
11999     int sem, st;
12000
12001 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) &&  defined(S_IRWXO) && defined(IPC_CREAT)
12002     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
12003     if (sem > -1) {
12004 #       ifdef IPC_STAT
12005         st = semctl(sem, 0, IPC_STAT, &arg);
12006         if (st == 0)
12007             printf("semid_ds\n");
12008         else
12009 #       endif /* IPC_STAT */
12010             printf("semctl IPC_STAT failed: errno = %d\n", errno);
12011 #       ifdef IPC_RMID
12012         if (semctl(sem, 0, IPC_RMID, &arg) != 0)
12013 #       endif /* IPC_RMID */
12014             printf("semctl IPC_RMID failed: errno = %d\n", errno);
12015     } else
12016 #endif /* IPC_PRIVATE && ... */
12017         printf("semget failed: errno = %d\n", errno);
12018
12019     return 0;
12020 }
12021 END
12022     val="$undef"
12023     set try
12024     if eval $compile; then
12025         xxx=`$run ./try`
12026         case "$xxx" in
12027         semid_ds) val="$define" ;;
12028         esac
12029     fi
12030     $rm -f try try.c
12031     set d_semctl_semid_ds
12032     eval $setvar
12033     case "$d_semctl_semid_ds" in
12034     $define)
12035         echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
12036         ;;
12037     *)  echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
12038         ;;
12039     esac
12040     $rm -f try.h
12041     ;;
12042 *)  val="$undef"
12043
12044     # We do not have the full sem*(2) library, so assume we can not
12045     # use either.
12046
12047     set d_semctl_semun
12048     eval $setvar
12049
12050     set d_semctl_semid_ds
12051     eval $setvar
12052     ;;
12053 esac
12054
12055 : see if sendmsg exists
12056 set sendmsg d_sendmsg
12057 eval $inlibc
12058
12059 : see if setegid exists
12060 set setegid d_setegid
12061 eval $inlibc
12062
12063 : see if seteuid exists
12064 set seteuid d_seteuid
12065 eval $inlibc
12066
12067 : see if setgrent exists
12068 set setgrent d_setgrent
12069 eval $inlibc
12070
12071 : see if sethostent exists
12072 set sethostent d_sethent
12073 eval $inlibc
12074
12075 : see if setitimer exists
12076 set setitimer d_setitimer
12077 eval $inlibc
12078
12079 : see if setlinebuf exists
12080 set setlinebuf d_setlinebuf
12081 eval $inlibc
12082
12083 : see if setlocale exists
12084 set setlocale d_setlocale
12085 eval $inlibc
12086
12087 : see if setnetent exists
12088 set setnetent d_setnent
12089 eval $inlibc
12090
12091 : see if setprotoent exists
12092 set setprotoent d_setpent
12093 eval $inlibc
12094
12095 : see if setpgid exists
12096 set setpgid d_setpgid
12097 eval $inlibc
12098
12099 : see if setpgrp2 exists
12100 set setpgrp2 d_setpgrp2
12101 eval $inlibc
12102
12103 : see if setpriority exists
12104 set setpriority d_setprior
12105 eval $inlibc
12106
12107 : see if setproctitle exists
12108 set setproctitle d_setproctitle
12109 eval $inlibc
12110
12111 : see if setpwent exists
12112 set setpwent d_setpwent
12113 eval $inlibc
12114
12115 : see if setregid exists
12116 set setregid d_setregid
12117 eval $inlibc
12118 set setresgid d_setresgid
12119 eval $inlibc
12120
12121 : see if setreuid exists
12122 set setreuid d_setreuid
12123 eval $inlibc
12124 set setresuid d_setresuid
12125 eval $inlibc
12126
12127 : see if setrgid exists
12128 set setrgid d_setrgid
12129 eval $inlibc
12130
12131 : see if setruid exists
12132 set setruid d_setruid
12133 eval $inlibc
12134
12135 : see if setservent exists
12136 set setservent d_setsent
12137 eval $inlibc
12138
12139 : see if setsid exists
12140 set setsid d_setsid
12141 eval $inlibc
12142
12143 : see if setvbuf exists
12144 set setvbuf d_setvbuf
12145 eval $inlibc
12146
12147 : see if sfio.h is available
12148 set sfio.h i_sfio
12149 eval $inhdr
12150
12151
12152 : see if sfio library is available
12153 case "$i_sfio" in
12154 $define)
12155         val=''
12156         set sfreserve val
12157         eval $inlibc
12158         ;;
12159 *)
12160         val="$undef"
12161         ;;
12162 esac
12163 : Ok, but do we want to use it.
12164 case "$val" in
12165 $define)
12166         case "$usesfio" in
12167         true|$define|[yY]*) dflt='y';;
12168         *) dflt='n';;
12169         esac
12170         echo "$package can use the sfio library, but it is experimental."
12171         case "$useperlio" in
12172         "$undef")
12173             echo "For sfio also the PerlIO abstraction layer is needed."
12174             echo "Earlier you said you wouldn't want that."
12175             ;;
12176         esac
12177         rp="You seem to have sfio available, do you want to try using it?"
12178         . ./myread
12179         case "$ans" in
12180         y|Y)    echo "Ok, turning on both sfio and PerlIO, then."
12181                 useperlio="$define"
12182                 val="$define"
12183                 ;;
12184         *)      echo "Ok, avoiding sfio this time.  I'll use stdio instead."
12185                 val="$undef"
12186                 ;;
12187         esac
12188         ;;
12189 *)      case "$usesfio" in
12190         true|$define|[yY]*)
12191                 echo "Sorry, cannot find sfio on this machine." >&4
12192                 echo "Ignoring your setting of usesfio=$usesfio." >&4
12193                 val="$undef"
12194                 ;;
12195         esac
12196         ;;
12197 esac
12198 set d_sfio
12199 eval $setvar
12200 case "$d_sfio" in
12201 $define) usesfio='true';;
12202 *) usesfio='false';;
12203 esac
12204 case "$d_sfio" in
12205 $define) ;;
12206 *)      : Remove sfio from list of libraries to use
12207         case "$libs" in
12208         *-lsfio*)
12209                 echo "Removing unneeded -lsfio from library list" >&4
12210                 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
12211                 shift
12212                 libs="$*"
12213                 echo "libs = $libs" >&4
12214                 ;;
12215         esac
12216 ;;
12217 esac
12218
12219
12220 : see if shmctl exists
12221 set shmctl d_shmctl
12222 eval $inlibc
12223
12224 : see if shmget exists
12225 set shmget d_shmget
12226 eval $inlibc
12227
12228 : see if shmat exists
12229 set shmat d_shmat
12230 eval $inlibc
12231 : see what shmat returns
12232 case "$d_shmat" in
12233 "$define")
12234         $cat >shmat.c <<'END'
12235 #include <sys/shm.h>
12236 void *shmat();
12237 END
12238         if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
12239                 shmattype='void *'
12240         else
12241                 shmattype='char *'
12242         fi
12243         echo "and it returns ($shmattype)." >&4
12244         : see if a prototype for shmat is available
12245         xxx=`./findhdr sys/shm.h`
12246         $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
12247         if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
12248                 val="$define"
12249         else
12250                 val="$undef"
12251         fi
12252         $rm -f shmat.[co]
12253         ;;
12254 *)
12255         val="$undef"
12256         ;;
12257 esac
12258 set d_shmatprototype
12259 eval $setvar
12260
12261 : see if shmdt exists
12262 set shmdt d_shmdt
12263 eval $inlibc
12264
12265 : see how much of the 'shm*(2)' library is present.
12266 h_shm=true
12267 echo " "
12268 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
12269 *"$undef"*) h_shm=false;;
12270 esac
12271 case "$osname" in
12272 freebsd)
12273     case "`ipcs 2>&1`" in
12274     "SVID shared memory"*"not configured"*)
12275         echo "Your $osname does not have the shm*(2) configured." >&4
12276         h_shm=false
12277         val="$undef"
12278         set shmctl d_shmctl
12279         evat $setvar
12280         set shmget d_shmget
12281         evat $setvar
12282         set shmat d_shmat
12283         evat $setvar
12284         set shmdt d_shmdt
12285         evat $setvar
12286         ;;
12287     esac
12288     ;;
12289 esac
12290 : we could also check for sys/ipc.h ...
12291 if $h_shm && $test `./findhdr sys/shm.h`; then
12292         echo "You have the full shm*(2) library." >&4
12293         val="$define"
12294 else
12295         echo "You don't have the full shm*(2) library." >&4
12296         val="$undef"
12297 fi
12298 set d_shm
12299 eval $setvar
12300
12301 echo " "
12302 : see if we have sigaction
12303 if set sigaction val -f d_sigaction; eval $csym; $val; then
12304         echo 'sigaction() found.' >&4
12305         $cat > try.c <<'EOP'
12306 #include <stdio.h>
12307 #include <sys/types.h>
12308 #include <signal.h>
12309 int main()
12310 {
12311     struct sigaction act, oact;
12312     act.sa_flags = 0;
12313     oact.sa_handler = 0;
12314     /* so that act and oact are used */
12315     exit(act.sa_flags == 0 &&  oact.sa_handler == 0);
12316 }
12317 EOP
12318         set try
12319         if eval $compile_ok; then
12320                 val="$define"
12321         else
12322                 echo "But you don't seem to have a useable struct sigaction." >&4
12323                 val="$undef"
12324         fi
12325 else
12326         echo 'sigaction NOT found.' >&4
12327         val="$undef"
12328 fi
12329 set d_sigaction; eval $setvar
12330 $rm -f try try$_o try.c
12331
12332 : see if sigprocmask exists
12333 set sigprocmask d_sigprocmask
12334 eval $inlibc
12335
12336 : see if sigsetjmp exists
12337 echo " "
12338 case "$d_sigsetjmp" in
12339 '')
12340         $cat >try.c <<'EOP'
12341 #include <setjmp.h>
12342 sigjmp_buf env;
12343 int set = 1;
12344 int main()
12345 {
12346         if (sigsetjmp(env,1))
12347                 exit(set);
12348         set = 0;
12349         siglongjmp(env, 1);
12350         exit(1);
12351 }
12352 EOP
12353         set try
12354         if eval $compile; then
12355                 if $run ./try >/dev/null 2>&1; then
12356                         echo "POSIX sigsetjmp found." >&4
12357                         val="$define"
12358                 else
12359                         $cat >&4 <<EOM
12360 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
12361 I'll ignore them.
12362 EOM
12363                         val="$undef"
12364                 fi
12365         else
12366                 echo "sigsetjmp not found." >&4
12367                 val="$undef"
12368         fi
12369         ;;
12370 *) val="$d_sigsetjmp"
12371         case "$d_sigsetjmp" in
12372         $define) echo "POSIX sigsetjmp found." >&4;;
12373         $undef) echo "sigsetjmp not found." >&4;;
12374         esac
12375         ;;
12376 esac
12377 set d_sigsetjmp
12378 eval $setvar
12379 $rm -f try.c try
12380
12381 : see if sockatmark exists
12382 set sockatmark d_sockatmark
12383 eval $inlibc
12384
12385 : see if prototype for sockatmark is available
12386 echo " "
12387 set d_sockatmarkproto sockatmark $d_socket sys/socket.h
12388 eval $hasproto
12389
12390 : see if socks5_init exists
12391 set socks5_init d_socks5_init
12392 eval $inlibc
12393
12394 : see if prototype for setresgid is available
12395 echo " "
12396 set d_sresgproto setresgid $i_unistd unistd.h
12397 eval $hasproto
12398
12399 : see if prototype for setresuid is available
12400 echo " "
12401 set d_sresuproto setresuid $i_unistd unistd.h
12402 eval $hasproto
12403
12404 : see if sys/stat.h is available
12405 set sys/stat.h i_sysstat
12406 eval $inhdr
12407
12408
12409 : see if stat knows about block sizes
12410 echo " "
12411 echo "Checking to see if your struct stat has st_blocks field..." >&4
12412 set d_statblks stat st_blocks $i_sysstat sys/stat.h
12413 eval $hasfield
12414
12415
12416 : see if this is a sys/vfs.h system
12417 set sys/vfs.h i_sysvfs
12418 eval $inhdr
12419
12420
12421 : see if this is a sys/statfs.h system
12422 set sys/statfs.h i_sysstatfs
12423 eval $inhdr
12424
12425
12426 echo " "
12427 echo "Checking to see if your system supports struct statfs..." >&4
12428 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
12429 eval $hasstruct
12430 case "$d_statfs_s" in
12431 "$define")      echo "Yes, it does."   ;;
12432 *)              echo "No, it doesn't." ;;
12433 esac
12434
12435
12436
12437 : see if struct statfs knows about f_flags
12438 case "$d_statfs_s" in
12439 define) 
12440         echo " "
12441         echo "Checking to see if your struct statfs has f_flags field..." >&4
12442         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
12443         eval $hasfield
12444         ;;
12445 *)      val="$undef"
12446         set d_statfs_f_flags
12447         eval $setvar
12448         ;;
12449 esac
12450 case "$d_statfs_f_flags" in
12451 "$define")      echo "Yes, it does."   ;;
12452 *)              echo "No, it doesn't." ;;
12453 esac
12454
12455 : see if _ptr and _cnt from stdio act std
12456 echo " "
12457
12458 if $contains '_lbfsize' `./findhdr stdio.h` >/dev/null 2>&1 ; then
12459         echo "(Looks like you have stdio.h from BSD.)"
12460         case "$stdio_ptr" in
12461         '') stdio_ptr='((fp)->_p)'
12462                 ptr_lval=$define
12463                 ;;
12464         *)      ptr_lval=$d_stdio_ptr_lval;;
12465         esac
12466         case "$stdio_cnt" in
12467         '') stdio_cnt='((fp)->_r)'
12468                 cnt_lval=$define
12469                 ;;
12470         *)      cnt_lval=$d_stdio_cnt_lval;;
12471         esac
12472         case "$stdio_base" in
12473         '') stdio_base='((fp)->_ub._base ? (fp)->_ub._base : (fp)->_bf._base)';;
12474         esac
12475         case "$stdio_bufsiz" in
12476         '') stdio_bufsiz='((fp)->_ub._base ? (fp)->_ub._size : (fp)->_bf._size)';;
12477         esac
12478 elif $contains '_IO_fpos_t' `./findhdr stdio.h` `./findhdr libio.h` >/dev/null 2>&1 ; then
12479         echo "(Looks like you have stdio.h from Linux.)"
12480         case "$stdio_ptr" in
12481         '') stdio_ptr='((fp)->_IO_read_ptr)'
12482                 ptr_lval=$define
12483                 ;;
12484         *)      ptr_lval=$d_stdio_ptr_lval;;
12485         esac
12486         case "$stdio_cnt" in
12487         '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
12488                 cnt_lval=$undef
12489                 ;;
12490         *)      cnt_lval=$d_stdio_cnt_lval;;
12491         esac
12492         case "$stdio_base" in
12493         '') stdio_base='((fp)->_IO_read_base)';;
12494         esac
12495         case "$stdio_bufsiz" in
12496         '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
12497         esac
12498 else
12499         case "$stdio_ptr" in
12500         '') stdio_ptr='((fp)->_ptr)'
12501                 ptr_lval=$define
12502                 ;;
12503         *)      ptr_lval=$d_stdio_ptr_lval;;
12504         esac
12505         case "$stdio_cnt" in
12506         '') stdio_cnt='((fp)->_cnt)'
12507                 cnt_lval=$define
12508                 ;;
12509         *)      cnt_lval=$d_stdio_cnt_lval;;
12510         esac
12511         case "$stdio_base" in
12512         '') stdio_base='((fp)->_base)';;
12513         esac
12514         case "$stdio_bufsiz" in
12515         '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
12516         esac
12517 fi
12518
12519 : test whether _ptr and _cnt really work
12520 echo "Checking how std your stdio is..." >&4
12521 $cat >try.c <<EOP
12522 #include <stdio.h>
12523 #define FILE_ptr(fp)    $stdio_ptr
12524 #define FILE_cnt(fp)    $stdio_cnt
12525 int main() {
12526         FILE *fp = fopen("try.c", "r");
12527         char c = getc(fp);
12528         if (
12529                 18 <= FILE_cnt(fp) &&
12530                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
12531         )
12532                 exit(0);
12533         exit(1);
12534 }
12535 EOP
12536 val="$undef"
12537 set try
12538 if eval $compile && $to try.c; then
12539         if $run ./try; then
12540                 echo "Your stdio acts pretty std."
12541                 val="$define"
12542         else
12543                 echo "Your stdio isn't very std."
12544         fi
12545 else
12546         echo "Your stdio doesn't appear very std."
12547 fi
12548 $rm -f try.c try
12549 set d_stdstdio
12550 eval $setvar
12551
12552 : Can _ptr be used as an lvalue?
12553 case "$d_stdstdio$ptr_lval" in
12554 $define$define) val=$define ;;
12555 *) val=$undef ;;
12556 esac
12557 set d_stdio_ptr_lval
12558 eval $setvar
12559
12560 : Can _cnt be used as an lvalue?
12561 case "$d_stdstdio$cnt_lval" in
12562 $define$define) val=$define ;;
12563 *) val=$undef ;;
12564 esac
12565 set d_stdio_cnt_lval
12566 eval $setvar
12567
12568
12569 : test whether setting _ptr sets _cnt as a side effect
12570 d_stdio_ptr_lval_sets_cnt="$undef"
12571 d_stdio_ptr_lval_nochange_cnt="$undef"
12572 case "$d_stdio_ptr_lval$d_stdstdio" in
12573 $define$define)
12574         echo "Checking to see what happens if we set the stdio ptr..." >&4
12575 $cat >try.c <<EOP
12576 #include <stdio.h>
12577 /* Can we scream? */
12578 /* Eat dust sed :-) */
12579 /* In the buffer space, no one can hear you scream. */
12580 #define FILE_ptr(fp)    $stdio_ptr
12581 #define FILE_cnt(fp)    $stdio_cnt
12582 #include <sys/types.h>
12583 int main() {
12584         FILE *fp = fopen("try.c", "r");
12585         int c;
12586         char *ptr;
12587         size_t cnt;
12588         if (!fp) {
12589             puts("Fail even to read");
12590             exit(1);
12591         }
12592         c = getc(fp); /* Read away the first # */
12593         if (c == EOF) {
12594             puts("Fail even to read");
12595             exit(1);
12596         }
12597         if (!(
12598                 18 <= FILE_cnt(fp) &&
12599                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
12600         )) {
12601                 puts("Fail even to read");
12602                 exit (1);
12603         }
12604         ptr = (char*) FILE_ptr(fp);
12605         cnt = (size_t)FILE_cnt(fp);
12606
12607         FILE_ptr(fp) += 42;
12608
12609         if ((char*)FILE_ptr(fp) != (ptr + 42)) {
12610                 printf("Fail ptr check %p != %p", FILE_ptr(fp), (ptr + 42));
12611                 exit (1);
12612         }
12613         if (FILE_cnt(fp) <= 20) {
12614                 printf ("Fail (<20 chars to test)");
12615                 exit (1);
12616         }
12617         if (strncmp(FILE_ptr(fp), "Eat dust sed :-) */\n", 20) != 0) {
12618                 puts("Fail compare");
12619                 exit (1);
12620         }
12621         if (cnt == FILE_cnt(fp)) {
12622                 puts("Pass_unchanged");
12623                 exit (0);
12624         }       
12625         if (FILE_cnt(fp) == (cnt - 42)) {
12626                 puts("Pass_changed");
12627                 exit (0);
12628         }
12629         printf("Fail count was %d now %d\n", cnt, FILE_cnt(fp));
12630         return 1;
12631
12632 }
12633 EOP
12634         set try
12635         if eval $compile && $to try.c; then
12636                 case `$run ./try` in
12637                 Pass_changed)
12638                         echo "Increasing ptr in your stdio decreases cnt by the same amount.  Good." >&4
12639                         d_stdio_ptr_lval_sets_cnt="$define" ;;
12640                 Pass_unchanged)
12641                         echo "Increasing ptr in your stdio leaves cnt unchanged.  Good." >&4
12642                         d_stdio_ptr_lval_nochange_cnt="$define" ;;
12643                 Fail*)
12644                         echo "Increasing ptr in your stdio didn't do exactly what I expected.  We'll not be doing that then." >&4 ;;
12645                 *)
12646                         echo "It appears attempting to set ptr in your stdio is a bad plan." >&4 ;;
12647         esac
12648         else
12649                 echo "It seems we can't set ptr in your stdio.  Nevermind." >&4
12650         fi
12651         $rm -f try.c try
12652         ;;
12653 esac
12654
12655 : see if _base is also standard
12656 val="$undef"
12657 case "$d_stdstdio" in
12658 $define)
12659         $cat >try.c <<EOP
12660 #include <stdio.h>
12661 #define FILE_base(fp)   $stdio_base
12662 #define FILE_bufsiz(fp) $stdio_bufsiz
12663 int main() {
12664         FILE *fp = fopen("try.c", "r");
12665         char c = getc(fp);
12666         if (
12667                 19 <= FILE_bufsiz(fp) &&
12668                 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
12669         )
12670                 exit(0);
12671         exit(1);
12672 }
12673 EOP
12674         set try
12675         if eval $compile && $to try.c; then
12676                 if $run ./try; then
12677                         echo "And its _base field acts std."
12678                         val="$define"
12679                 else
12680                         echo "But its _base field isn't std."
12681                 fi
12682         else
12683                 echo "However, it seems to be lacking the _base field."
12684         fi
12685         $rm -f try.c try
12686         ;;
12687 esac
12688 set d_stdiobase
12689 eval $setvar
12690
12691 $cat >&4 <<EOM
12692 Checking how to access stdio streams by file descriptor number...
12693 EOM
12694 case "$stdio_stream_array" in
12695 '')     $cat >try.c <<EOCP
12696 #include <stdio.h>
12697 int main() {
12698   if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
12699     printf("yes\n");
12700 }
12701 EOCP
12702         for s in _iob __iob __sF
12703         do
12704                 set try -DSTDIO_STREAM_ARRAY=$s
12705                 if eval $compile; then
12706                         case "`$run ./try`" in
12707                         yes)    stdio_stream_array=$s; break ;;
12708                         esac
12709                 fi
12710         done
12711         $rm -f try.* try$exe_ext
12712 esac
12713 case "$stdio_stream_array" in
12714 '')     $cat >&4 <<EOM
12715 I can't figure out how to access stdio streams by file descriptor number.
12716 EOM
12717         d_stdio_stream_array="$undef"
12718         ;;
12719 *)      $cat >&4 <<EOM
12720 You can access stdio streams by file descriptor number by the $stdio_stream_array array.
12721 EOM
12722         d_stdio_stream_array="$define"
12723         ;;
12724 esac
12725
12726 : see if strcoll exists
12727 set strcoll d_strcoll
12728 eval $inlibc
12729
12730 : check for structure copying
12731 echo " "
12732 echo "Checking to see if your C compiler can copy structs..." >&4
12733 $cat >try.c <<'EOCP'
12734 int main()
12735 {
12736         struct blurfl {
12737                 int dyick;
12738         } foo, bar;
12739
12740         foo = bar;
12741 }
12742 EOCP
12743 if $cc -c try.c >/dev/null 2>&1 ; then
12744         val="$define"
12745         echo "Yup, it can."
12746 else
12747         val="$undef"
12748         echo "Nope, it can't."
12749 fi
12750 set d_strctcpy
12751 eval $setvar
12752 $rm -f try.*
12753
12754 : see if strerror and/or sys_errlist[] exist
12755 echo " "
12756 if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
12757     if set strerror val -f d_strerror; eval $csym; $val; then
12758                 echo 'strerror() found.' >&4
12759                 d_strerror="$define"
12760                 d_strerrm='strerror(e)'
12761                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
12762                         echo "(You also have sys_errlist[], so we could roll our own strerror.)" 
12763                         d_syserrlst="$define"
12764                 else
12765                         echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
12766                         d_syserrlst="$undef"
12767                 fi
12768     elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
12769                         $contains '#[   ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
12770                 echo 'strerror() found in string header.' >&4
12771                 d_strerror="$define"
12772                 d_strerrm='strerror(e)'
12773                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
12774                         echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
12775                                 d_syserrlst="$define"
12776                 else
12777                         echo "(You don't appear to have any sys_errlist[], how can this be?)"
12778                         d_syserrlst="$undef"
12779                 fi
12780     elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
12781                 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
12782                 d_strerror="$undef"
12783                 d_syserrlst="$define"
12784                 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
12785     else
12786                 echo 'strerror() and sys_errlist[] NOT found.' >&4
12787                 d_strerror="$undef"
12788                 d_syserrlst="$undef"
12789                 d_strerrm='"unknown"'
12790     fi
12791 fi
12792
12793 : see if strftime exists
12794 set strftime d_strftime
12795 eval $inlibc
12796
12797 : see if strtod exists
12798 set strtod d_strtod
12799 eval $inlibc
12800
12801 : see if strtol exists
12802 set strtol d_strtol
12803 eval $inlibc
12804
12805 : see if strtold exists
12806 set strtold d_strtold
12807 eval $inlibc
12808
12809 : see if strtoll exists
12810 set strtoll d_strtoll
12811 eval $inlibc
12812
12813 case "$d_longlong-$d_strtoll" in
12814 "$define-$define")
12815         $cat <<EOM
12816 Checking whether your strtoll() works okay...
12817 EOM
12818         $cat >try.c <<'EOCP'
12819 #include <errno.h>
12820 #ifdef __hpux
12821 #define strtoll __strtoll
12822 #endif
12823 #ifdef __EMX__
12824 #define strtoll _strtoll
12825 #endif
12826 #include <stdio.h>
12827 extern long long int strtoll(char *s, char **, int); 
12828 static int bad = 0;
12829 int check(char *s, long long ell, int een) {
12830         long long gll;
12831         errno = 0;
12832         gll = strtoll(s, 0, 10);
12833         if (!((gll == ell) && (errno == een)))
12834                 bad++;
12835 }
12836 int main() {
12837         check(" 1",                                      1LL, 0);
12838         check(" 0",                                      0LL, 0);
12839         check("-1",                                     -1LL, 0);
12840         check("-9223372036854775808", -9223372036854775808LL, 0);
12841         check("-9223372036854775808", -9223372036854775808LL, 0);
12842         check(" 9223372036854775807",  9223372036854775807LL, 0);
12843         check("-9223372036854775808", -9223372036854775808LL, 0);
12844         check(" 9223372036854775808",  9223372036854775807LL, ERANGE);
12845         check("-9223372036854775809", -9223372036854775808LL, ERANGE);
12846         if (!bad)
12847                 printf("ok\n");
12848 }
12849 EOCP
12850         set try
12851         if eval $compile; then
12852                 yyy=`$run ./try`
12853                 case "$yyy" in
12854                 ok) echo "Your strtoll() seems to be working okay." ;;
12855                 *) cat <<EOM >&4
12856 Your strtoll() doesn't seem to be working okay.
12857 EOM
12858                    d_strtoll="$undef"
12859                    ;;
12860                 esac
12861         else
12862                 echo "(I can't seem to compile the test program--assuming it doesn't)"
12863                 d_strtoll="$undef"
12864         fi
12865         ;;
12866 esac
12867
12868 : see if strtoq exists
12869 set strtoq d_strtoq
12870 eval $inlibc
12871
12872 : see if strtoul exists
12873 set strtoul d_strtoul
12874 eval $inlibc
12875
12876 case "$d_strtoul" in
12877 "$define")
12878         $cat <<EOM
12879 Checking whether your strtoul() works okay...
12880 EOM
12881         $cat >try.c <<'EOCP'
12882 #include <errno.h>
12883 #include <stdio.h>
12884 extern unsigned long int strtoul(char *s, char **, int); 
12885 static int bad = 0;
12886 void check(char *s, unsigned long eul, int een) {
12887         unsigned long gul;
12888         errno = 0;
12889         gul = strtoul(s, 0, 10);
12890         if (!((gul == eul) && (errno == een)))
12891                 bad++;
12892 }
12893 int main() {
12894         check(" 1", 1L, 0);
12895         check(" 0", 0L, 0);
12896 EOCP
12897         case "$longsize" in
12898         8)
12899             $cat >>try.c <<'EOCP'
12900         check("18446744073709551615", 18446744073709551615UL, 0);
12901         check("18446744073709551616", 18446744073709551615UL, ERANGE);
12902 #if 0 /* strtoul() for /^-/ strings is undefined. */
12903         check("-1", 18446744073709551615UL, 0);
12904         check("-18446744073709551614", 2, 0);
12905         check("-18446744073709551615", 1, 0);
12906         check("-18446744073709551616", 18446744073709551615UL, ERANGE);
12907         check("-18446744073709551617", 18446744073709551615UL, ERANGE);
12908 #endif
12909 EOCP
12910                 ;;
12911         4)
12912                     $cat >>try.c <<'EOCP'
12913         check("4294967295", 4294967295UL, 0);
12914         check("4294967296", 4294967295UL, ERANGE);
12915 #if 0 /* strtoul() for /^-/ strings is undefined. */
12916         check("-1", 4294967295UL, 0);
12917         check("-4294967294", 2, 0);
12918         check("-4294967295", 1, 0);
12919         check("-4294967296", 4294967295UL, ERANGE);
12920         check("-4294967297", 4294967295UL, ERANGE);
12921 #endif
12922 EOCP
12923                 ;;
12924         *)
12925 : Should we write these tests to be more portable by sprintf-ing
12926 : ~0 and then manipulating that char string as input for strtol?
12927                 ;;
12928         esac
12929         $cat >>try.c <<'EOCP'
12930         if (!bad)
12931                 printf("ok\n");
12932         return 0;
12933 }
12934 EOCP
12935         set try
12936         if eval $compile; then
12937                 case "`$run ./try`" in
12938                 ok) echo "Your strtoul() seems to be working okay." ;;
12939                 *) cat <<EOM >&4
12940 Your strtoul() doesn't seem to be working okay.
12941 EOM
12942                    d_strtoul="$undef"
12943                    ;;
12944                 esac
12945         fi
12946         ;;
12947 esac
12948
12949 : see if strtoull exists
12950 set strtoull d_strtoull
12951 eval $inlibc
12952
12953 case "$d_longlong-$d_strtoull" in
12954 "$define-$define")
12955         $cat <<EOM
12956 Checking whether your strtoull() works okay...
12957 EOM
12958         $cat >try.c <<'EOCP'
12959 #include <errno.h>
12960 #ifdef __hpux
12961 #define strtoull __strtoull
12962 #endif
12963 #include <stdio.h>
12964 extern unsigned long long int strtoull(char *s, char **, int); 
12965 static int bad = 0;
12966 int check(char *s, long long eull, int een) {
12967         long long gull;
12968         errno = 0;
12969         gull = strtoull(s, 0, 10);
12970         if (!((gull == eull) && (errno == een)))
12971                 bad++;
12972 }
12973 int main() {
12974         check(" 1",                                        1LL, 0);
12975         check(" 0",                                        0LL, 0);
12976         check("18446744073709551615",  18446744073709551615ULL, 0);
12977         check("18446744073709551616",  18446744073709551615ULL, ERANGE);
12978 #if 0 /* strtoull() for /^-/ strings is undefined. */
12979         check("-1",                    18446744073709551615ULL, 0);
12980         check("-18446744073709551614",                     2LL, 0);
12981         check("-18446744073709551615",                     1LL, 0);
12982         check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
12983         check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
12984 #endif
12985         if (!bad)
12986                 printf("ok\n");
12987 }
12988 EOCP
12989         set try
12990         if eval $compile; then
12991                 case "`$run ./try`" in
12992                 ok) echo "Your strtoull() seems to be working okay." ;;
12993                 *) cat <<EOM >&4
12994 Your strtoull() doesn't seem to be working okay.
12995 EOM
12996                    d_strtoull="$undef"
12997                    ;;
12998                 esac
12999         fi
13000         ;;
13001 esac
13002
13003 : see if strtouq exists
13004 set strtouq d_strtouq
13005 eval $inlibc
13006
13007 case "$d_strtouq" in
13008 "$define")
13009         $cat <<EOM
13010 Checking whether your strtouq() works okay...
13011 EOM
13012         $cat >try.c <<'EOCP'
13013 #include <errno.h>
13014 #include <stdio.h>
13015 extern unsigned long long int strtouq(char *s, char **, int); 
13016 static int bad = 0;
13017 void check(char *s, unsigned long long eull, int een) {
13018         unsigned long long gull;
13019         errno = 0;
13020         gull = strtouq(s, 0, 10);
13021         if (!((gull == eull) && (errno == een)))
13022                 bad++;
13023 }
13024 int main() {
13025         check(" 1",                                        1LL, 0);
13026         check(" 0",                                        0LL, 0);
13027         check("18446744073709551615",  18446744073709551615ULL, 0);
13028         check("18446744073709551616",  18446744073709551615ULL, ERANGE);
13029 #if 0 /* strtouq() for /^-/ strings is undefined. */
13030         check("-1",                    18446744073709551615ULL, 0);
13031         check("-18446744073709551614",                     2LL, 0);
13032         check("-18446744073709551615",                     1LL, 0);
13033         check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
13034         check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
13035 #endif
13036         if (!bad)
13037                 printf("ok\n");
13038         return 0;
13039 }
13040 EOCP
13041         set try
13042         if eval $compile; then
13043                 case "`$run ./try`" in
13044                 ok) echo "Your strtouq() seems to be working okay." ;;
13045                 *) cat <<EOM >&4
13046 Your strtouq() doesn't seem to be working okay.
13047 EOM
13048                    d_strtouq="$undef"
13049                    ;;
13050                 esac
13051         fi
13052         ;;
13053 esac
13054
13055 : see if strxfrm exists
13056 set strxfrm d_strxfrm
13057 eval $inlibc
13058
13059 : see if symlink exists
13060 set symlink d_symlink
13061 eval $inlibc
13062
13063 : see if syscall exists
13064 set syscall d_syscall
13065 eval $inlibc
13066
13067 : see if prototype for syscall is available
13068 echo " "
13069 set d_syscallproto syscall $i_unistd unistd.h
13070 eval $hasproto
13071
13072 : see if sysconf exists
13073 set sysconf d_sysconf
13074 eval $inlibc
13075
13076 : see if system exists
13077 set system d_system
13078 eval $inlibc
13079
13080 : see if tcgetpgrp exists
13081 set tcgetpgrp d_tcgetpgrp
13082 eval $inlibc
13083
13084 : see if tcsetpgrp exists
13085 set tcsetpgrp d_tcsetpgrp
13086 eval $inlibc
13087
13088 : see if prototype for telldir is available
13089 echo " "
13090 set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
13091 eval $hasproto
13092
13093 : see if this is a sys/times.h system
13094 set sys/times.h i_systimes
13095 eval $inhdr
13096
13097 : see if times exists
13098 echo " "
13099 if set times val -f d_times; eval $csym; $val; then
13100         echo 'times() found.' >&4
13101         d_times="$define"
13102         inc=''
13103         case "$i_systimes" in
13104         "$define") inc='sys/times.h';;
13105         esac
13106         rp="What is the type returned by times() on this system?"
13107         set clock_t clocktype long stdio.h sys/types.h $inc
13108         eval $typedef_ask
13109 else
13110         echo 'times() NOT found, hope that will do.' >&4
13111         d_times="$undef"
13112         clocktype='int'
13113 fi
13114
13115 : see if truncate exists
13116 set truncate d_truncate
13117 eval $inlibc
13118
13119 : see if tzname[] exists
13120 echo " "
13121 if set tzname val -a d_tzname; eval $csym; $val; then
13122         val="$define"
13123         echo 'tzname[] found.' >&4
13124 else
13125         val="$undef"
13126         echo 'tzname[] NOT found.' >&4
13127 fi
13128 set d_tzname
13129 eval $setvar
13130
13131 case "$osname" in
13132 next|rhapsody|darwin) multiarch="$define" ;;
13133 esac
13134 case "$multiarch" in
13135 ''|[nN]*) multiarch="$undef" ;;
13136 esac
13137
13138 : check for ordering of bytes in a long
13139 echo " "
13140 case "$usecrosscompile$multiarch" in
13141 *$define*)
13142         $cat <<EOM
13143 You seem to be either cross-compiling or doing a multiarchitecture build,
13144 skipping the byteorder check.
13145
13146 EOM
13147         byteorder='ffff'
13148         ;;
13149 *)
13150         case "$byteorder" in
13151         '')
13152                 $cat <<'EOM'
13153 In the following, larger digits indicate more significance.  A big-endian
13154 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
13155 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
13156 machines may have weird orders like 3412.  A Cray will report 87654321,
13157 an Alpha will report 12345678. If the test program works the default is
13158 probably right.
13159 I'm now running the test program...
13160 EOM
13161                 $cat >try.c <<'EOCP'
13162 #include <stdio.h>
13163 int main()
13164 {
13165         int i;
13166         union {
13167                 unsigned long l;
13168                 char c[sizeof(long)];
13169         } u;
13170
13171         if (sizeof(long) > 4)
13172                 u.l = (0x08070605L << 32) | 0x04030201L;
13173         else
13174                 u.l = 0x04030201L;
13175         for (i = 0; i < sizeof(long); i++)
13176                 printf("%c", u.c[i]+'0');
13177         printf("\n");
13178         exit(0);
13179 }
13180 EOCP
13181                 xxx_prompt=y
13182                 set try
13183                 if eval $compile && ./try > /dev/null; then
13184                         dflt=`$run ./try`
13185                         case "$dflt" in
13186                         [1-4][1-4][1-4][1-4]|12345678|87654321)
13187                                 echo "(The test program ran ok.)"
13188                                 echo "byteorder=$dflt"
13189                                 xxx_prompt=n
13190                         ;;
13191                         ????|????????) echo "(The test program ran ok.)" ;;
13192                         *) echo "(The test program didn't run right for some reason.)" ;;
13193                         esac
13194                 else
13195                         dflt='4321'
13196                         cat <<'EOM'
13197 (I can't seem to compile the test program.  Guessing big-endian...)
13198 EOM
13199                 fi
13200                 case "$xxx_prompt" in
13201                 y)
13202                         rp="What is the order of bytes in a long?"
13203                         . ./myread
13204                         byteorder="$ans"
13205                         ;;
13206                 *)      byteorder=$dflt
13207                         ;;
13208                 esac
13209                 ;;
13210         esac
13211         $rm -f try.c try
13212         ;;
13213 esac
13214
13215
13216 $cat <<EOM
13217
13218 Checking to see whether you can access character data unalignedly...
13219 EOM
13220 $cat >try.c <<EOCP
13221 #include <stdio.h>
13222 #define U32 $u32type
13223 #define BYTEORDER $byteorder
13224 int main() {
13225 #if BYTEORDER == 0x1234 || BYTEORDER == 0x4321
13226     U8 buf[] = "\0\0\0\1\0\0\0\0";
13227     U32 *up;
13228     int i;
13229
13230     if (sizeof(U32) != 4) {
13231         printf("sizeof(U32) is not 4, but %d\n", sizeof(U32));
13232         exit(1);
13233     }
13234
13235     fflush(stdout);
13236
13237     for (i = 0; i < 4; i++) {
13238         up = (U32*)(buf + i);
13239         if (! ((*up == 1 << (8*i)) ||   /* big-endian */
13240                (*up == 1 << (8*(3-i)))  /* little-endian */
13241               )
13242            )
13243         {
13244             printf("read failed (%x)\n", *up);
13245             exit(2);
13246         }
13247     }
13248
13249     /* write test */
13250     for (i = 0; i < 4; i++) {
13251         up = (U32*)(buf + i);
13252         *up = 0xBeef;
13253         if (*up != 0xBeef) {
13254             printf("write failed (%x)\n", *up);
13255             exit(3);
13256         }
13257     }
13258
13259     exit(0);
13260 #else
13261     printf("1\n");
13262     exit(1);
13263 #endif
13264     return 0;
13265 }
13266 EOCP
13267 set try
13268 if eval $compile_ok; then
13269         echo "(Testing for character data alignment may dump core.)" >&4
13270         $run ./try 2>&1 >/dev/null
13271         case "$?" in
13272         0)      cat >&4 <<EOM
13273 You can access character data pretty unalignedly.
13274 EOM
13275                 d_u32align="$undef"
13276                 ;;
13277         *)      cat >&4 <<EOM
13278 It seems that you must access character data in an aligned manner.
13279 EOM
13280                 d_u32align="$define"
13281                 ;;
13282         esac
13283         $rm -f core core.try.* try.core
13284 else
13285         rp='Can you access character data at unaligned addresses?'
13286         dflt='n'
13287         . ./myread
13288         case "$ans" in
13289         [yY]*)  d_u32align="$undef"  ;;
13290         *)      d_u32align="$define" ;;
13291         esac
13292 fi
13293
13294 : see if ualarm exists
13295 set ualarm d_ualarm
13296 eval $inlibc
13297
13298 : see if umask exists
13299 set umask d_umask
13300 eval $inlibc
13301
13302 : see if usleep exists
13303 set usleep d_usleep
13304 eval $inlibc
13305
13306 : see if prototype for usleep is available
13307 echo " "
13308 set d_usleepproto usleep $i_unistd unistd.h
13309 eval $hasproto
13310
13311 : see if ustat exists
13312 set ustat d_ustat
13313 eval $inlibc
13314
13315 : backward compatibility for d_hvfork
13316 if test X$d_hvfork != X; then
13317         d_vfork="$d_hvfork"
13318         d_hvfork=''
13319 fi
13320 : see if there is a vfork
13321 val=''
13322 set vfork val
13323 eval $inlibc
13324
13325 : Ok, but do we want to use it. vfork is reportedly unreliable in 
13326 : perl on Solaris 2.x, and probably elsewhere.
13327 case "$val" in
13328 $define)
13329         echo " "
13330         case "$usevfork" in
13331         false) dflt='n';;
13332         *) dflt='y';;
13333         esac
13334         cat <<'EOM'
13335  
13336 Perl can only use a vfork() that doesn't suffer from strict
13337 restrictions on calling functions or modifying global data in
13338 the child.  For example, glibc-2.1 contains such a vfork()
13339 that is unsuitable.  If your system provides a proper fork()
13340 call, chances are that you do NOT want perl to use vfork().
13341
13342 EOM
13343         rp="Do you still want to use vfork()?"
13344         . ./myread
13345         case "$ans" in
13346         y|Y) ;;
13347         *)
13348                 echo "Ok, we won't use vfork()."
13349                 val="$undef"
13350                 ;;
13351         esac
13352         ;;
13353 esac
13354 set d_vfork
13355 eval $setvar
13356 case "$d_vfork" in
13357 $define) usevfork='true';;
13358 *) usevfork='false';;
13359 esac
13360
13361 : see if this is an sysdir system
13362 set sys/dir.h i_sysdir
13363 eval $inhdr
13364
13365 : see if this is an sysndir system
13366 set sys/ndir.h i_sysndir
13367 eval $inhdr
13368
13369 : see if closedir exists
13370 set closedir d_closedir
13371 eval $inlibc
13372
13373 case "$d_closedir" in
13374 "$define")
13375         echo " "
13376         echo "Checking whether closedir() returns a status..." >&4
13377         cat > try.c <<EOM
13378 #$i_dirent I_DIRENT             /**/
13379 #$i_sysdir I_SYS_DIR            /**/
13380 #$i_sysndir I_SYS_NDIR          /**/
13381 #$i_systypes I_SYS_TYPES        /**/
13382
13383 #if defined(I_SYS_TYPES)
13384 #include <sys/types.h>
13385 #endif
13386 #if defined(I_DIRENT)
13387 #include <dirent.h>
13388 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
13389 #include <sys/dir.h>
13390 #endif
13391 #else
13392 #ifdef I_SYS_NDIR
13393 #include <sys/ndir.h>
13394 #else
13395 #ifdef I_SYS_DIR
13396 #ifdef hp9000s500
13397 #include <ndir.h>       /* may be wrong in the future */
13398 #else
13399 #include <sys/dir.h>
13400 #endif
13401 #endif
13402 #endif
13403 #endif 
13404 int main() { return closedir(opendir(".")); }
13405 EOM
13406         set try
13407         if eval $compile_ok; then
13408                 if $run ./try > /dev/null 2>&1 ; then
13409                         echo "Yes, it does."
13410                         val="$undef"
13411                 else
13412                         echo "No, it doesn't."
13413                         val="$define"
13414                 fi
13415         else
13416                 echo "(I can't seem to compile the test program--assuming it doesn't)"
13417                 val="$define"
13418         fi
13419         ;;
13420 *)
13421         val="$undef";
13422         ;;
13423 esac
13424 set d_void_closedir
13425 eval $setvar
13426 $rm -f try try.*
13427 : see if there is a wait4
13428 set wait4 d_wait4
13429 eval $inlibc
13430
13431 : see if waitpid exists
13432 set waitpid d_waitpid
13433 eval $inlibc
13434
13435 : see if wcstombs exists
13436 set wcstombs d_wcstombs
13437 eval $inlibc
13438
13439 : see if wctomb exists
13440 set wctomb d_wctomb
13441 eval $inlibc
13442
13443 : see if writev exists
13444 set writev d_writev
13445 eval $inlibc
13446
13447 : preserve RCS keywords in files with variable substitution, grrr
13448 Date='$Date'
13449 Id='$Id'
13450 Log='$Log'
13451 RCSfile='$RCSfile'
13452 Revision='$Revision'
13453
13454 : check for alignment requirements
13455 echo " "
13456 case "$usecrosscompile$multiarch" in
13457 *$define*)
13458         $cat <<EOM
13459 You seem to be either cross-compiling or doing a multiarchitecture build,
13460 skipping the memory alignment check.
13461
13462 EOM
13463         case "$alignbytes" in
13464         '') alignbytes=8 ;;
13465         esac
13466         ;;
13467 *)
13468         case "$alignbytes" in
13469         '') echo "Checking alignment constraints..." >&4
13470                 if $test "X$uselongdouble" = Xdefine -a "X$d_longdbl" = Xdefine; then
13471                         $cat >try.c <<'EOCP'
13472 typedef long double NV;
13473 EOCP
13474                 else
13475                         $cat >try.c <<'EOCP'
13476 typedef double NV;
13477 EOCP
13478                 fi
13479                 $cat >>try.c <<'EOCP'
13480 #include <stdio.h>
13481 struct foobar {
13482         char foo;
13483         NV bar;
13484 } try_algn;
13485 int main()
13486 {
13487     printf("%d\n", (int)((char *)&try_algn.bar - (char *)&try_algn.foo));
13488     return(0);
13489 }
13490 EOCP
13491                 set try
13492                 if eval $compile_ok; then
13493                         dflt=`$run ./try`
13494                 else
13495                         dflt='8'
13496                         echo "(I can't seem to compile the test program...)"
13497                 fi
13498                 ;;
13499         *) dflt="$alignbytes"
13500                 ;;
13501         esac
13502         rp="Doubles must be aligned on a how-many-byte boundary?"
13503         . ./myread
13504         alignbytes="$ans"
13505         $rm -f try.c try
13506         ;;
13507 esac
13508
13509
13510 : set the base revision
13511 baserev=5.0
13512
13513 : how do we catenate cpp tokens here?
13514 echo " "
13515 echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
13516 $cat >cpp_stuff.c <<'EOCP'
13517 #define RCAT(a,b)a/**/b
13518 #define ACAT(a,b)a ## b
13519 RCAT(Rei,ser)
13520 ACAT(Cir,cus)
13521 EOCP
13522 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
13523 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
13524         echo "Oh!  Smells like ANSI's been here." >&4
13525         echo "We can catify or stringify, separately or together!"
13526         cpp_stuff=42
13527 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
13528         echo "Ah, yes!  The good old days!" >&4
13529         echo "However, in the good old days we don't know how to stringify and"
13530         echo "catify at the same time."
13531         cpp_stuff=1
13532 else
13533         $cat >&4 <<EOM
13534 Hmm, I don't seem to be able to catenate tokens with your cpp.  You're going
13535 to have to edit the values of CAT[2-5] in config.h...
13536 EOM
13537         cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
13538 fi
13539 $rm -f cpp_stuff.*
13540
13541 : see if this is a db.h system
13542 set db.h i_db
13543 eval $inhdr
13544
13545 case "$i_db" in
13546 $define)
13547         : Check db version.
13548         echo " "
13549         echo "Checking Berkeley DB version ..." >&4
13550         $cat >try.c <<EOCP
13551 #$d_const HASCONST
13552 #ifndef HASCONST
13553 #define const
13554 #endif
13555 #include <sys/types.h>
13556 #include <stdio.h>
13557 #include <db.h>
13558 int main(int argc, char *argv[])
13559 {
13560 #ifdef DB_VERSION_MAJOR /* DB version >= 2 */
13561     int Major, Minor, Patch ;
13562     unsigned long Version ;
13563     (void)db_version(&Major, &Minor, &Patch) ;
13564     if (argc == 2) {
13565         printf("%d %d %d %d %d %d\n",
13566                DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH,
13567                Major, Minor, Patch);
13568         exit(0);
13569     }
13570     printf("You have Berkeley DB Version 2 or greater.\n");
13571
13572     printf("db.h is from Berkeley DB Version %d.%d.%d\n",
13573                 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
13574     printf("libdb is from Berkeley DB Version %d.%d.%d\n",
13575                 Major, Minor, Patch) ;
13576
13577     /* check that db.h & libdb are compatible */
13578     if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
13579         printf("db.h and libdb are incompatible.\n") ;
13580         exit(3);        
13581     }
13582
13583     printf("db.h and libdb are compatible.\n") ;
13584
13585     Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
13586                 + DB_VERSION_PATCH ;
13587
13588     /* needs to be >= 2.3.4 */
13589     if (Version < 2003004) {
13590     /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
13591         printf("Perl needs Berkeley DB 2.3.4 or greater.\n") ;
13592         exit(2);        
13593     }
13594
13595     exit(0);
13596 #else
13597 #if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
13598     if (argc == 2) {
13599         printf("1 0 0\n");
13600         exit(0);
13601     }
13602     printf("You have Berkeley DB Version 1.\n");
13603     exit(0);    /* DB version < 2: the coast is clear. */
13604 #else
13605     exit(1);    /* <db.h> not Berkeley DB? */
13606 #endif
13607 #endif
13608 }
13609 EOCP
13610         set try
13611         if eval $compile_ok && $run ./try; then
13612                 echo 'Looks OK.' >&4
13613                 set `$run ./try 1`
13614                 db_version_major=$1
13615                 db_version_minor=$2
13616                 db_version_patch=$3
13617         else
13618                 echo "I can't use Berkeley DB with your <db.h>.  I'll disable Berkeley DB." >&4
13619                 i_db=$undef
13620                 case " $libs " in
13621                 *"-ldb "*)
13622                         : Remove db from list of libraries to use
13623                         echo "Removing unusable -ldb from library list" >&4
13624                         set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
13625                         shift
13626                         libs="$*"
13627                         echo "libs = $libs" >&4
13628                         ;;
13629                 esac
13630         fi
13631         $rm -f try.*
13632         ;;
13633 esac
13634
13635 case "$i_db" in
13636 define)
13637         : Check the return type needed for hash 
13638         echo " "
13639         echo "Checking return type needed for hash for Berkeley DB ..." >&4
13640         $cat >try.c <<EOCP
13641 #$d_const HASCONST
13642 #ifndef HASCONST
13643 #define const
13644 #endif
13645 #include <sys/types.h>
13646 #include <db.h>
13647
13648 #ifndef DB_VERSION_MAJOR
13649 u_int32_t hash_cb (ptr, size)
13650 const void *ptr;
13651 size_t size;
13652 {
13653 }
13654 HASHINFO info;
13655 int main()
13656 {
13657         info.hash = hash_cb;
13658 }
13659 #endif
13660 EOCP
13661         if $cc $ccflags -c try.c >try.out 2>&1 ; then
13662                 if $contains warning try.out >>/dev/null 2>&1 ; then
13663                         db_hashtype='int'
13664                 else
13665                         db_hashtype='u_int32_t'
13666                 fi
13667         else
13668                 : XXX Maybe we should just give up here.
13669                 db_hashtype=u_int32_t
13670                 $cat try.out >&4
13671                 echo "Help:  I can't seem to compile the db test program." >&4
13672                 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
13673         fi
13674         $rm -f try.*
13675         echo "Your version of Berkeley DB uses $db_hashtype for hash."
13676         ;;
13677 *)      db_hashtype=u_int32_t
13678         ;;
13679 esac
13680 case "$i_db" in
13681 define)
13682         : Check the return type needed for prefix 
13683         echo " "
13684         echo "Checking return type needed for prefix for Berkeley DB ..." >&4
13685         cat >try.c <<EOCP
13686 #$d_const HASCONST
13687 #ifndef HASCONST
13688 #define const
13689 #endif
13690 #include <sys/types.h>
13691 #include <db.h>
13692
13693 #ifndef DB_VERSION_MAJOR
13694 size_t prefix_cb (key1, key2)
13695 const DBT *key1;
13696 const DBT *key2;
13697 {
13698 }
13699 BTREEINFO info;
13700 int main()
13701 {
13702         info.prefix = prefix_cb;
13703 }
13704 #endif
13705 EOCP
13706         if $cc $ccflags -c try.c  >try.out 2>&1 ; then
13707                 if $contains warning try.out >>/dev/null 2>&1 ; then
13708                         db_prefixtype='int'
13709                 else
13710                         db_prefixtype='size_t'
13711                 fi
13712         else
13713                 db_prefixtype='size_t'
13714                 : XXX Maybe we should just give up here.
13715                 $cat try.out >&4
13716                 echo "Help:  I can't seem to compile the db test program." >&4
13717                 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
13718         fi
13719         $rm -f try.*
13720         echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
13721         ;;
13722 *)      db_prefixtype='size_t'
13723         ;;
13724 esac
13725
13726
13727 : How can we generate normalized random numbers ?
13728 echo " "
13729 echo "Looking for a random number function..." >&4
13730 case "$randfunc" in
13731 '')
13732         if set drand48 val -f; eval $csym; $val; then
13733                 dflt="drand48"
13734                 echo "Good, found drand48()." >&4
13735         elif set random val -f; eval $csym; $val; then
13736                 dflt="random"
13737                 echo "OK, found random()." >&4
13738         else
13739                 dflt="rand"
13740                 echo "Yick, looks like I have to use rand()." >&4
13741         fi
13742         echo " "
13743         ;;
13744 *)
13745         dflt="$randfunc"
13746         ;;
13747 esac
13748 cont=true
13749
13750 case "$ccflags" in
13751 *-Dmy_rand=*|*-Dmy_srand=*)
13752         echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
13753         ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
13754         ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
13755         ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
13756         ;;
13757 esac
13758
13759 while $test "$cont"; do
13760         rp="Use which function to generate random numbers?"
13761         . ./myread
13762         if $test "$ans" = "$dflt"; then
13763                 : null
13764         else
13765                 randbits=''
13766         fi
13767         randfunc="$ans"
13768         if set $ans val -f; eval $csym; $val; then
13769                 cont=''
13770         else
13771                 dflt=y
13772                 rp="I cannot find function $ans. Use that name anyway?"
13773                 . ./myread
13774                 dflt=rand
13775                 case "$ans" in
13776                         [yY]*) cont='';;
13777                 esac
13778         fi
13779         case "$cont" in
13780         '')
13781                 case "$randfunc" in
13782                 drand48)
13783                         drand01="drand48()"
13784                         seedfunc="srand48"
13785                         randbits=48
13786                         randseedtype=long
13787                         ;;
13788                 rand|random)
13789                         case "$randbits" in
13790                         '')
13791 echo "Checking to see how many bits your $randfunc() function produces..." >&4
13792                                 $cat >try.c <<EOCP
13793 #$i_unistd I_UNISTD
13794 #$i_stdlib I_STDLIB
13795 #include <stdio.h>
13796 #ifdef I_UNISTD
13797 #  include <unistd.h>
13798 #endif
13799 #ifdef I_STDLIB
13800 #  include <stdlib.h>
13801 #endif
13802 int main()
13803 {
13804         register int i;
13805         register unsigned long tmp;
13806         register unsigned long max = 0L;
13807
13808         for (i = 1000; i; i--) {
13809                 tmp = (unsigned long) $randfunc();
13810                 if (tmp > max) max = tmp;
13811         }
13812         for (i = 0; max; i++)
13813                 max /= 2;
13814         printf("%d\n",i);
13815 }
13816 EOCP
13817                                 set try
13818                                 if eval $compile_ok; then
13819                                         dflt=`try`
13820                                 else
13821                                         dflt='?'
13822                                         echo "(I can't seem to compile the test program...)"
13823                                 fi
13824                                 ;;
13825                         *)
13826                                 dflt="$randbits"
13827                                 ;;
13828                         esac
13829                         rp="How many bits does your $randfunc() function produce?"
13830                         . ./myread
13831                         randbits="$ans"
13832                         $rm -f try.c try
13833                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
13834                         seedfunc="s$randfunc"
13835                         randseedtype=unsigned
13836                         ;;
13837                 *)
13838                         dflt="31"
13839                         rp="How many bits does your $randfunc() function produce?"
13840                         . ./myread
13841                         randbits="$ans"
13842                         seedfunc="s$randfunc"
13843                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
13844                         if set $seedfunc val -f; eval $csym; $val; then
13845                                 echo "(Using $seedfunc() to seed random generator)"
13846                         else
13847                                 echo "(Warning: no $seedfunc() to seed random generator)"
13848                                 seedfunc=rand
13849                         fi
13850                         randseedtype=unsigned
13851                         ;;
13852                 esac
13853                 ;;
13854         esac
13855 done
13856
13857 echo " "
13858 echo "Determining whether or not we are on an EBCDIC system..." >&4
13859 $cat >try.c <<'EOM'
13860 int main()
13861 {
13862   if ('M'==0xd4) return 0;
13863   return 1;
13864 }
13865 EOM
13866
13867 val=$undef
13868 set try
13869 if eval $compile_ok; then
13870         if $run ./try; then
13871                 echo "You seem to speak EBCDIC." >&4
13872                 val="$define"
13873         else
13874                 echo "Nope, no EBCDIC, probably ASCII or some ISO Latin. Or UTF-8." >&4
13875         fi
13876 else
13877         echo "I'm unable to compile the test program." >&4
13878         echo "I'll assume ASCII or some ISO Latin. Or UTF8." >&4
13879 fi
13880 $rm -f try try.*
13881 set ebcdic
13882 eval $setvar
13883
13884 echo " "
13885 $cat >&4 <<EOM
13886 Checking how to flush all pending stdio output...
13887 EOM
13888 # I only know how to find the first 32 possibly open files on SunOS.
13889 # See also hints/sunos_4_1.sh and util.c  --AD
13890 case "$osname" in
13891 sunos) $echo '#define PERL_FFLUSH_ALL_FOPEN_MAX 32' > try.c ;;
13892 esac
13893 $cat >>try.c <<EOCP
13894 #include <stdio.h>
13895 #$i_unistd I_UNISTD
13896 #ifdef I_UNISTD
13897 # include <unistd.h>
13898 #endif
13899 #$d_sysconf HAS_SYSCONF
13900 #$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY
13901 #ifdef HAS_STDIO_STREAM_ARRAY
13902 # define STDIO_STREAM_ARRAY $stdio_stream_array
13903 #endif
13904 int main() {
13905   FILE* p;
13906   unlink("try.out");
13907   p = fopen("try.out", "w");
13908 #ifdef TRY_FPUTC
13909   fputc('x', p);
13910 #else
13911 # ifdef TRY_FPRINTF
13912   fprintf(p, "x");
13913 # endif
13914 #endif
13915 #ifdef TRY_FFLUSH_NULL
13916   fflush(NULL);
13917 #endif
13918 #ifdef TRY_FFLUSH_ALL
13919   {
13920     long open_max = -1;
13921 # ifdef PERL_FFLUSH_ALL_FOPEN_MAX
13922     open_max = PERL_FFLUSH_ALL_FOPEN_MAX;
13923 # else
13924 #  if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
13925     open_max = sysconf(_SC_OPEN_MAX);
13926 #  else
13927 #   ifdef FOPEN_MAX
13928     open_max = FOPEN_MAX;
13929 #   else
13930 #    ifdef OPEN_MAX
13931     open_max = OPEN_MAX;
13932 #    else
13933 #     ifdef _NFILE
13934     open_max = _NFILE;
13935 #     endif
13936 #    endif
13937 #   endif
13938 #  endif
13939 # endif 
13940 # ifdef HAS_STDIO_STREAM_ARRAY
13941     if (open_max > 0) {
13942       long i;
13943       for (i = 0; i < open_max; i++)
13944             if (STDIO_STREAM_ARRAY[i]._file >= 0 &&
13945                 STDIO_STREAM_ARRAY[i]._file < open_max &&
13946                 STDIO_STREAM_ARRAY[i]._flag)
13947                 fflush(&STDIO_STREAM_ARRAY[i]);
13948     }   
13949   }
13950 # endif
13951 #endif
13952   _exit(42);
13953 }
13954 EOCP
13955 : first we have to find out how _not_ to flush
13956 $to try.c
13957 if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
13958     output=''
13959     set try -DTRY_FPUTC
13960     if eval $compile; then
13961             $run ./try 2>/dev/null
13962             code="$?"
13963             $from try.out
13964             if $test ! -s try.out -a "X$code" = X42; then
13965                 output=-DTRY_FPUTC
13966             fi
13967     fi
13968     case "$output" in
13969     '')
13970             set try -DTRY_FPRINTF
13971             if eval $compile; then
13972                     $run ./try 2>/dev/null
13973                     code="$?"
13974                     $from try.out
13975                     if $test ! -s try.out -a "X$code" = X42; then
13976                         output=-DTRY_FPRINTF
13977                     fi
13978             fi
13979         ;;
13980     esac
13981 fi
13982 : check for fflush NULL behaviour
13983 case "$fflushNULL" in
13984 '')     set try -DTRY_FFLUSH_NULL $output
13985         if eval $compile; then
13986                 $run ./try 2>/dev/null
13987                 code="$?"
13988                 $from try.out
13989                 if $test -s try.out -a "X$code" = X42; then
13990                         fflushNULL="`$cat try.out`"
13991                 else
13992                         if $test "X$code" != X42; then
13993                                 $cat >&4 <<EOM
13994 (If this test failed, don't worry, we'll try another method shortly.)
13995 EOM
13996                         fi
13997                 fi
13998         fi
13999         $rm -f core try.core core.try.*
14000         case "$fflushNULL" in
14001         x)      $cat >&4 <<EOM
14002 Your fflush(NULL) works okay for output streams.
14003 Let's see if it clobbers input pipes...
14004 EOM
14005 # As of mid-March 2000 all versions of Solaris appear to have a stdio
14006 # bug that improperly flushes the input end of pipes.  So we avoid the
14007 # autoflush on fork/system/exec support for now. :-(
14008 $cat >tryp.c <<EOCP
14009 #include <stdio.h>
14010 int
14011 main(int argc, char **argv)
14012 {
14013     char buf[1024];
14014     int i;
14015     char *bp = buf;
14016     while (1) {
14017         while ((i = getc(stdin)) != -1
14018                && (*bp++ = i) != '\n'
14019                && bp < &buf[1024])
14020         /* DO NOTHING */ ;
14021         *bp = '\0';
14022         fprintf(stdout, "%s", buf);
14023         fflush(NULL);
14024         if (i == -1)
14025             return 0;
14026         bp = buf;
14027     }
14028 }
14029 EOCP
14030                 fflushNULL="$define"
14031                 set tryp
14032                 if eval $compile; then
14033                     $rm -f tryp.out
14034                     $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
14035                     if cmp tryp.c tryp.out >/dev/null 2>&1; then
14036                        $cat >&4 <<EOM
14037 fflush(NULL) seems to behave okay with input streams.
14038 EOM
14039                         fflushNULL="$define"
14040                     else
14041                         $cat >&4 <<EOM
14042 Ouch, fflush(NULL) clobbers input pipes!  We will not use it.
14043 EOM
14044                         fflushNULL="$undef"
14045                     fi
14046                 fi
14047                 $rm -f core tryp.c tryp.core core.tryp.*
14048                 ;;
14049         '')     $cat >&4 <<EOM
14050 Your fflush(NULL) isn't working (contrary to ANSI C).
14051 EOM
14052                 fflushNULL="$undef"
14053                 ;;
14054         *)      $cat >&4 <<EOM
14055 Cannot figure out whether your fflush(NULL) works or not.
14056 I'm assuming it doesn't (contrary to ANSI C).
14057 EOM
14058                 fflushNULL="$undef"
14059                 ;;
14060         esac
14061         ;;
14062 $define|true|[yY]*)
14063         fflushNULL="$define"
14064         ;;
14065 *)
14066         fflushNULL="$undef"
14067         ;;
14068 esac
14069 : check explicit looping only if NULL did not work, and if the pipe
14070 : bug does not show up on an explicit flush too
14071 case "$fflushNULL" in
14072 "$undef")
14073         $cat >tryp.c <<EOCP
14074 #include <stdio.h>
14075 int
14076 main(int argc, char **argv)
14077 {
14078     char buf[1024];
14079     int i;
14080     char *bp = buf;
14081     while (1) {
14082         while ((i = getc(stdin)) != -1
14083                && (*bp++ = i) != '\n'
14084                && bp < &buf[1024])
14085         /* DO NOTHING */ ;
14086         *bp = '\0';
14087         fprintf(stdout, "%s", buf);
14088         fflush(stdin);
14089         if (i == -1)
14090             return 0;
14091         bp = buf;
14092     }
14093 }
14094 EOCP
14095         set tryp
14096         if eval $compile; then
14097             $rm -f tryp.out
14098             $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
14099             if cmp tryp.c tryp.out >/dev/null 2>&1; then
14100                $cat >&4 <<EOM
14101 Good, at least fflush(stdin) seems to behave okay when stdin is a pipe.
14102 EOM
14103                 : now check for fflushall behaviour
14104                 case "$fflushall" in
14105                 '')     set try -DTRY_FFLUSH_ALL $output
14106                         if eval $compile; then
14107                                 $cat >&4 <<EOM
14108 (Now testing the other method--but note that this also may fail.)
14109 EOM
14110                                 $run ./try 2>/dev/null
14111                                 code=$?
14112                                 $from try.out
14113                                 if $test -s try.out -a "X$code" = X42; then
14114                                         fflushall="`$cat try.out`"
14115                                 fi
14116                         fi
14117                         $rm -f core try.core core.try.*
14118                         case "$fflushall" in
14119                         x)      $cat >&4 <<EOM
14120 Whew. Flushing explicitly all the stdio streams works.
14121 EOM
14122                                 fflushall="$define"
14123                                 ;;
14124                         '')     $cat >&4 <<EOM
14125 Sigh. Flushing explicitly all the stdio streams doesn't work.
14126 EOM
14127                                 fflushall="$undef"
14128                                 ;;
14129                         *)      $cat >&4 <<EOM
14130 Cannot figure out whether flushing stdio streams explicitly works or not.
14131 I'm assuming it doesn't.
14132 EOM
14133                                 fflushall="$undef"
14134                                 ;;
14135                         esac
14136                         ;;
14137                 "$define"|true|[yY]*)
14138                         fflushall="$define"
14139                         ;;
14140                 *)
14141                         fflushall="$undef"
14142                         ;;
14143                 esac
14144             else
14145                 $cat >&4 <<EOM
14146 All is futile.  Even fflush(stdin) clobbers input pipes!
14147 EOM
14148                 fflushall="$undef"
14149             fi
14150         else
14151             fflushall="$undef"
14152         fi
14153         $rm -f core tryp.c tryp.core core.tryp.*
14154         ;;
14155 *)      fflushall="$undef"
14156         ;;
14157 esac
14158
14159 case "$fflushNULL$fflushall" in
14160 undefundef)
14161         $cat <<EOM
14162 OK, I give up.  I cannot figure out how to flush pending stdio output.
14163 We won't be flushing handles at all before fork/exec/popen.
14164 EOM
14165         ;;
14166 esac
14167 $rm -f try.* try$exe_ext
14168
14169 : Store the full pathname to the ar program for use in the C program
14170 : Respect a hint or command line value for full_ar.
14171 case "$full_ar" in
14172 '') full_ar=$ar ;;
14173 esac
14174
14175 : Store the full pathname to the sed program for use in the C program
14176 full_sed=$sed
14177
14178 : see what type gids are declared as in the kernel
14179 echo " "
14180 echo "Looking for the type for group ids returned by getgid()."
14181 set gid_t gidtype xxx stdio.h sys/types.h
14182 eval $typedef
14183 case "$gidtype" in
14184 xxx)
14185         xxx=`./findhdr sys/user.h`
14186         set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
14187         case $1 in
14188         unsigned) dflt="$1 $2" ;;
14189         *) dflt="$1" ;;
14190         esac
14191         ;;
14192 *) dflt="$gidtype";;
14193 esac
14194 case "$gidtype" in
14195 gid_t) echo "gid_t found." ;;
14196 *)      rp="What is the type for group ids returned by getgid()?"
14197         . ./myread
14198         gidtype="$ans"
14199         ;;
14200 esac
14201
14202 echo " "
14203 case "$gidtype" in
14204 *_t) zzz="$gidtype"     ;;
14205 *)   zzz="gid"          ;;
14206 esac
14207 echo "Checking the size of $zzz..." >&4 
14208 cat > try.c <<EOCP
14209 #include <sys/types.h>
14210 #include <stdio.h>
14211 int main() {
14212     printf("%d\n", (int)sizeof($gidtype));
14213     exit(0);
14214 }
14215 EOCP
14216 set try
14217 if eval $compile_ok; then
14218         yyy=`$run ./try`
14219         case "$yyy" in
14220         '')     gidsize=4
14221                 echo "(I can't execute the test program--guessing $gidsize.)" >&4
14222                 ;;
14223         *)      gidsize=$yyy
14224                 echo "Your $zzz is $gidsize bytes long."
14225                 ;;
14226         esac
14227 else
14228         gidsize=4
14229         echo "(I can't compile the test program--guessing $gidsize.)" >&4
14230 fi
14231
14232
14233 echo " "
14234 case "$gidtype" in
14235 *_t) zzz="$gidtype"     ;;
14236 *)   zzz="gid"          ;;
14237 esac
14238 echo "Checking the sign of $zzz..." >&4 
14239 cat > try.c <<EOCP
14240 #include <sys/types.h>
14241 #include <stdio.h>
14242 int main() {
14243         $gidtype foo = -1;
14244         if (foo < 0)
14245                 printf("-1\n");
14246         else
14247                 printf("1\n");
14248 }
14249 EOCP
14250 set try
14251 if eval $compile; then
14252         yyy=`$run ./try`
14253         case "$yyy" in
14254         '')     gidsign=1
14255                 echo "(I can't execute the test program--guessing unsigned.)" >&4
14256                 ;;
14257         *)      gidsign=$yyy
14258                 case "$gidsign" in
14259                  1) echo "Your $zzz is unsigned." ;;
14260                 -1) echo "Your $zzz is signed."   ;;
14261                 esac
14262                 ;;
14263         esac
14264 else
14265         gidsign=1
14266         echo "(I can't compile the test program--guessing unsigned.)" >&4
14267 fi
14268
14269
14270 echo " "
14271
14272 if $test X"$quadtype" != X; then
14273
14274 echo "Checking how to print 64-bit integers..." >&4
14275
14276 if $test X"$sPRId64" = X -a X"$quadtype" = Xint; then
14277         $cat >try.c <<'EOCP'
14278 #include <sys/types.h>
14279 #include <stdio.h>
14280 int main() {
14281   int q = 12345678901;
14282   printf("%ld\n", q);
14283 }
14284 EOCP
14285         set try
14286         if eval $compile; then
14287                 yyy=`$run ./try`
14288                 case "$yyy" in
14289                 12345678901)
14290                         sPRId64='"d"'; sPRIi64='"i"'; sPRIu64='"u"';
14291                         sPRIo64='"o"'; sPRIx64='"x"'; sPRIXU64='"X"';
14292                         echo "We will use %d."
14293                         ;;
14294                 esac
14295         fi
14296 fi
14297
14298 if $test X"$sPRId64" = X -a X"$quadtype" = Xlong; then
14299         $cat >try.c <<'EOCP'
14300 #include <sys/types.h>
14301 #include <stdio.h>
14302 int main() {
14303   long q = 12345678901;
14304   printf("%ld\n", q);
14305 }
14306 EOCP
14307         set try
14308         if eval $compile; then
14309                 yyy=`$run ./try`
14310                 case "$yyy" in
14311                 12345678901)
14312                         sPRId64='"ld"'; sPRIi64='"li"'; sPRIu64='"lu"';
14313                         sPRIo64='"lo"'; sPRIx64='"lx"'; sPRIXU64='"lX"';
14314                         echo "We will use %ld."
14315                         ;;
14316                 esac
14317         fi
14318 fi
14319
14320 if $test X"$sPRId64" = X -a X"$i_inttypes" = X"$define" -a X"$quadtype" = Xint64_t; then
14321         $cat >try.c <<'EOCP'
14322 #include <sys/types.h>
14323 #include <inttypes.h>
14324 #include <stdio.h>
14325 int main() {
14326   int64_t q = 12345678901;
14327   printf("%" PRId64 "\n", q);
14328 }
14329 EOCP
14330         set try
14331         if eval $compile; then
14332                 yyy=`$run ./try`
14333                 case "$yyy" in
14334                 12345678901)
14335                         sPRId64=PRId64; sPRIi64=PRIi64; sPRIu64=PRIu64;
14336                         sPRIo64=PRIo64; sPRIx64=PRIx64; sPRIXU64=PRIXU64;
14337                         echo "We will use the C9X style."
14338                         ;;
14339                 esac
14340         fi
14341 fi
14342
14343 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
14344         $cat >try.c <<EOCP
14345 #include <sys/types.h>
14346 #include <stdio.h>
14347 int main() {
14348   $quadtype q = 12345678901;
14349   printf("%Ld\n", q);
14350 }
14351 EOCP
14352         set try
14353         if eval $compile; then
14354                 yyy=`$run ./try`
14355                 case "$yyy" in
14356                 12345678901)
14357                         sPRId64='"Ld"'; sPRIi64='"Li"'; sPRIu64='"Lu"';
14358                         sPRIo64='"Lo"'; sPRIx64='"Lx"'; sPRIXU64='"LX"';
14359                         echo "We will use %Ld."
14360                         ;;
14361                 esac
14362         fi
14363 fi
14364
14365 if $test X"$sPRId64" = X -a X"$quadtype" = X"long long"; then
14366         $cat >try.c <<'EOCP'
14367 #include <sys/types.h>
14368 #include <stdio.h>
14369 int main() {
14370   long long q = 12345678901LL; /* AIX cc requires the LL suffix. */
14371   printf("%lld\n", q);
14372 }
14373 EOCP
14374         set try
14375         if eval $compile; then
14376                 yyy=`$run ./try`
14377                 case "$yyy" in
14378                 12345678901)
14379                         sPRId64='"lld"'; sPRIi64='"lli"'; sPRIu64='"llu"';
14380                         sPRIo64='"llo"'; sPRIx64='"llx"'; sPRIXU64='"llX"';
14381                         echo "We will use the %lld style."
14382                         ;;
14383                 esac
14384         fi
14385 fi
14386
14387 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
14388         $cat >try.c <<EOCP
14389 #include <sys/types.h>
14390 #include <stdio.h>
14391 int main() {
14392   $quadtype q = 12345678901;
14393   printf("%qd\n", q);
14394 }
14395 EOCP
14396         set try
14397         if eval $compile; then
14398                 yyy=`$run ./try`
14399                 case "$yyy" in
14400                 12345678901)
14401                         sPRId64='"qd"'; sPRIi64='"qi"'; sPRIu64='"qu"';
14402                         sPRIo64='"qo"'; sPRIx64='"qx"'; sPRIXU64='"qX"';
14403                         echo "We will use %qd."
14404                         ;;
14405                 esac
14406         fi
14407 fi
14408
14409 if $test X"$sPRId64" = X; then
14410         echo "Cannot figure out how to print 64-bit integers." >&4
14411 fi
14412
14413 $rm -f try try.*
14414
14415 fi
14416
14417 case "$sPRId64" in
14418 '')     d_PRId64="$undef"; d_PRIi64="$undef"; d_PRIu64="$undef"; 
14419         d_PRIo64="$undef"; d_PRIx64="$undef"; d_PRIXU64="$undef"; 
14420         ;;
14421 *)      d_PRId64="$define"; d_PRIi64="$define"; d_PRIu64="$define"; 
14422         d_PRIo64="$define"; d_PRIx64="$define"; d_PRIXU64="$define"; 
14423         ;;
14424 esac
14425
14426
14427 echo " "
14428 $echo "Checking the format strings to be used for Perl's internal types..." >&4
14429
14430 if $test X"$ivsize" = X8; then
14431         ivdformat="$sPRId64"
14432         uvuformat="$sPRIu64"
14433         uvoformat="$sPRIo64"
14434         uvxformat="$sPRIx64"
14435         uvXUformat="$sPRIXU64"
14436 else
14437         if $test X"$ivsize" = X"$longsize"; then
14438                 ivdformat='"ld"'
14439                 uvuformat='"lu"'
14440                 uvoformat='"lo"'
14441                 uvxformat='"lx"'
14442                 uvXUformat='"lX"'
14443         else
14444                 if $test X"$ivsize" = X"$intsize"; then
14445                         ivdformat='"d"'
14446                         uvuformat='"u"'
14447                         uvoformat='"o"'
14448                         uvxformat='"x"'
14449                         uvXUformat='"X"'
14450                 else
14451                         : far out
14452                         if $test X"$ivsize" = X"$shortsize"; then
14453                                 ivdformat='"hd"'
14454                                 uvuformat='"hu"'
14455                                 uvoformat='"ho"'
14456                                 uvxformat='"hx"'
14457                                 uvXUformat='"hX"'
14458                         fi
14459                 fi
14460         fi
14461 fi
14462
14463 if $test X"$uselongdouble" = X"$define" -a X"$d_longdbl" = X"$define" -a X"$d_PRIgldbl" = X"$define"; then
14464         nveformat="$sPRIeldbl"
14465         nvfformat="$sPRIfldbl"
14466         nvgformat="$sPRIgldbl"
14467         nvEUformat="$sPRIEUldbl"
14468         nvFUformat="$sPRIFUldbl"
14469         nvGUformat="$sPRIGUldbl"
14470 else
14471         nveformat='"e"'
14472         nvfformat='"f"'
14473         nvgformat='"g"'
14474         nvEUformat='"E"'
14475         nvFUformat='"F"'
14476         nvGUformat='"G"'
14477 fi
14478
14479 case "$ivdformat" in
14480 '') echo "$0: Fatal: failed to find format strings, cannot continue." >& 4
14481     exit 1
14482     ;;
14483 esac
14484
14485
14486 echo " "
14487 $echo "Checking the format string to be used for gids..." >&4
14488
14489 case "$gidsign" in
14490 -1)     if $test X"$gidsize" = X"$ivsize"; then
14491                 gidformat="$ivdformat"
14492         else
14493                 if $test X"$gidsize" = X"$longsize"; then
14494                         gidformat='"ld"'
14495                 else
14496                         if $test X"$gidsize" = X"$intsize"; then
14497                                 gidformat='"d"'
14498                         else
14499                                 if $test X"$gidsize" = X"$shortsize"; then
14500                                         gidformat='"hd"'
14501                                 fi
14502                         fi
14503                 fi
14504         fi
14505         ;;
14506 *)      if $test X"$gidsize" = X"$uvsize"; then
14507                 gidformat="$uvuformat"
14508         else
14509                 if $test X"$gidsize" = X"$longsize"; then
14510                         gidformat='"lu"'
14511                 else
14512                         if $test X"$gidsize" = X"$intsize"; then
14513                                 gidformat='"u"'
14514                         else
14515                                 if $test X"$gidsize" = X"$shortsize"; then
14516                                         gidformat='"hu"'
14517                                 fi
14518                         fi
14519                 fi
14520         fi
14521         ;;
14522 esac
14523
14524 : see if getgroups exists
14525 set getgroups d_getgrps
14526 eval $inlibc
14527
14528 : see if setgroups exists
14529 set setgroups d_setgrps
14530 eval $inlibc
14531
14532
14533 : Find type of 2nd arg to 'getgroups()' and 'setgroups()'
14534 echo " "
14535 case "$d_getgrps$d_setgrps" in
14536 *define*)
14537         case "$groupstype" in
14538         '') dflt="$gidtype" ;;
14539         *)  dflt="$groupstype" ;;
14540         esac
14541         $cat <<EOM
14542 What type of pointer is the second argument to getgroups() and setgroups()?
14543 Usually this is the same as group ids, $gidtype, but not always.
14544
14545 EOM
14546         rp='What type pointer is the second argument to getgroups() and setgroups()?'
14547         . ./myread
14548         groupstype="$ans"
14549         ;;
14550 *)  groupstype="$gidtype";;
14551 esac
14552
14553 echo " "
14554 echo "Checking if your $make program sets \$(MAKE)..." >&4
14555 case "$make_set_make" in
14556 '')
14557         $sed 's/^X //' > testmake.mak << 'EOF'
14558 Xall:
14559 X       @echo 'maketemp="$(MAKE)"'
14560 EOF
14561         case "`$make -f testmake.mak 2>/dev/null`" in
14562         *maketemp=*) make_set_make='#' ;;
14563         *)      make_set_make="MAKE=$make" ;;
14564         esac
14565         $rm -f testmake.mak
14566         ;;
14567 esac
14568 case "$make_set_make" in
14569 '#') echo "Yup, it does.";;
14570 *) echo "Nope, it doesn't.";;
14571 esac
14572
14573 : see what type is used for mode_t
14574 rp="What is the type used for file modes for system calls (e.g. fchmod())?"
14575 set mode_t modetype int stdio.h sys/types.h
14576 eval $typedef_ask
14577
14578 : see if stdarg is available
14579 echo " "
14580 if $test `./findhdr stdarg.h`; then
14581         echo "<stdarg.h> found." >&4
14582         valstd="$define"
14583 else
14584         echo "<stdarg.h> NOT found." >&4
14585         valstd="$undef"
14586 fi
14587
14588 : see if varags is available
14589 echo " "
14590 if $test `./findhdr varargs.h`; then
14591         echo "<varargs.h> found." >&4
14592 else
14593         echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
14594 fi
14595
14596 : set up the varargs testing programs
14597 $cat > varargs.c <<EOP
14598 #ifdef I_STDARG
14599 #include <stdarg.h>
14600 #endif
14601 #ifdef I_VARARGS
14602 #include <varargs.h>
14603 #endif
14604
14605 #ifdef I_STDARG
14606 int f(char *p, ...)
14607 #else
14608 int f(va_alist)
14609 va_dcl
14610 #endif
14611 {
14612         va_list ap;
14613 #ifndef I_STDARG
14614         char *p;
14615 #endif
14616 #ifdef I_STDARG
14617         va_start(ap,p);
14618 #else
14619         va_start(ap);
14620         p = va_arg(ap, char *);
14621 #endif
14622         va_end(ap);
14623 }
14624 EOP
14625 $cat > varargs <<EOP
14626 $startsh
14627 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
14628         echo "true"
14629 else
14630         echo "false"
14631 fi
14632 $rm -f varargs$_o
14633 EOP
14634 chmod +x varargs
14635
14636 : now check which varargs header should be included
14637 echo " "
14638 i_varhdr=''
14639 case "$valstd" in
14640 "$define")
14641         if `./varargs I_STDARG`; then
14642                 val='stdarg.h'
14643         elif `./varargs I_VARARGS`; then
14644                 val='varargs.h'
14645         fi
14646         ;;
14647 *)
14648         if `./varargs I_VARARGS`; then
14649                 val='varargs.h'
14650         fi
14651         ;;
14652 esac
14653 case "$val" in
14654 '')
14655 echo "I could not find the definition for va_dcl... You have problems..." >&4
14656         val="$undef"; set i_stdarg; eval $setvar
14657         val="$undef"; set i_varargs; eval $setvar
14658         ;;
14659 *) 
14660         set i_varhdr
14661         eval $setvar
14662         case "$i_varhdr" in
14663         stdarg.h)
14664                 val="$define"; set i_stdarg; eval $setvar
14665                 val="$undef"; set i_varargs; eval $setvar
14666                 ;;
14667         varargs.h)
14668                 val="$undef"; set i_stdarg; eval $setvar
14669                 val="$define"; set i_varargs; eval $setvar
14670                 ;;
14671         esac
14672         echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
14673 esac
14674 $rm -f varargs*
14675
14676 : see if we need va_copy
14677 echo " "
14678 case "$i_stdarg" in
14679 "$define")
14680         $cat >try.c <<EOCP
14681 #include <stdarg.h>
14682 #include <stdio.h>
14683 #$i_stdlib I_STDLIB
14684 #ifdef I_STDLIB
14685 #include <stdlib.h>
14686 #endif
14687 #include <signal.h>
14688
14689 int
14690 ivfprintf(FILE *f, const char *fmt, va_list *valp)
14691 {
14692   return vfprintf(f, fmt, *valp);
14693 }
14694  
14695 int    
14696 myvfprintf(FILE *f, const  char *fmt, va_list val)
14697 {
14698   return ivfprintf(f, fmt, &val);
14699 }
14700       
14701 int
14702 myprintf(char *fmt, ...) 
14703 {
14704   va_list val;
14705   va_start(val, fmt);
14706   return myvfprintf(stdout, fmt, val); 
14707 }         
14708
14709 int
14710 main(int ac, char **av)
14711 {
14712   signal(SIGSEGV, exit);
14713
14714   myprintf("%s%cs all right, then\n", "that", '\'');                            
14715   exit(0);      
14716 }
14717 EOCP
14718         set try
14719         if eval $compile && $run ./try 2>&1 >/dev/null; then
14720                 case "`$run ./try`" in
14721                 "that's all right, then")
14722                         okay=yes
14723                         ;;
14724                 esac
14725         fi
14726         case "$okay" in
14727         yes)    echo "It seems that you don't need va_copy()." >&4
14728                 need_va_copy="$undef"
14729                 ;;
14730         *)      echo "It seems that va_copy() or similar will be needed." >&4
14731                 need_va_copy="$define"
14732                 ;;
14733         esac
14734         $rm -f try.* core core.* *.core *.core.*
14735         ;;
14736 *)      echo "You don't have <stdarg.h>, not checking for va_copy()." >&4
14737         ;;
14738 esac
14739
14740 : define a fucntion to check prototypes
14741 $cat > protochk <<EOSH
14742 $startsh
14743 cc="$cc"
14744 optimize="$optimize"
14745 ccflags="$ccflags"
14746 prototype="$prototype"
14747 define="$define"
14748 rm=$rm
14749 EOSH
14750
14751 $cat >> protochk <<'EOSH'
14752
14753 $rm -f try.c
14754 foo="$1"
14755 shift
14756 while test $# -ge 2; do
14757         case "$1" in
14758                 $define) echo "#include <$2>" >> try.c ;;
14759                 literal) echo "$2" >> try.c ;;
14760         esac
14761     shift 2
14762 done
14763 test "$prototype" = "$define"  && echo '#define CAN_PROTOTYPE' >> try.c
14764 cat >> try.c <<'EOCP'
14765 #ifdef CAN_PROTOTYPE
14766 #define _(args) args
14767 #else
14768 #define _(args) ()
14769 #endif
14770 EOCP
14771 echo "$foo" >> try.c
14772 echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
14773 $cc $optimize $ccflags -c try.c > /dev/null 2>&1
14774 status=$?
14775 $rm -f try.[co]
14776 exit $status
14777 EOSH
14778 chmod +x protochk
14779 $eunicefix protochk
14780
14781 : see what type is used for size_t
14782 rp="What is the type used for the length parameter for string functions?"
14783 set size_t sizetype 'unsigned int' stdio.h sys/types.h
14784 eval $typedef_ask
14785
14786 : check for type of arguments to gethostbyaddr. 
14787 if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
14788         case "$d_gethbyaddr" in
14789         $define)
14790                 $cat <<EOM
14791
14792 Checking to see what type of arguments are accepted by gethostbyaddr().
14793 EOM
14794                 hdrs="$define sys/types.h
14795                         $d_socket sys/socket.h 
14796                         $i_niin netinet/in.h 
14797                         $i_netdb netdb.h
14798                         $i_unistd unistd.h"
14799                 : The first arg can 'char *' or 'void *'
14800                 : The second arg is some of integral type
14801                 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
14802                         for yyy in size_t long int; do
14803                                 case "$netdb_host_type" in
14804                                 '')     try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
14805                                         if ./protochk "$try" $hdrs; then
14806                                                 echo "Your system accepts $xxx for the first arg."
14807                                                 echo "...and $yyy for the second arg."
14808                                                 netdb_host_type="$xxx"
14809                                                 netdb_hlen_type="$yyy"
14810                                         fi
14811                                         ;;
14812                                 esac
14813                         done
14814                 done
14815                 : In case none of those worked, prompt the user.
14816                 case "$netdb_host_type" in
14817                 '')     rp='What is the type for the 1st argument to gethostbyaddr?'
14818                         dflt='char *'
14819                         . ./myread
14820                         netdb_host_type=$ans
14821                         rp='What is the type for the 2nd argument to gethostbyaddr?'
14822                         dflt="$sizetype"
14823                         . ./myread
14824                         netdb_hlen_type=$ans
14825                         ;;
14826                 esac
14827                 ;;
14828         *)      : no gethostbyaddr, so pick harmless defaults
14829                 netdb_host_type='char *'
14830                 netdb_hlen_type="$sizetype"
14831                 ;;
14832         esac
14833         # Remove the "const" if needed. -- but then we'll have a 
14834         # prototype clash!
14835         # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
14836 fi
14837
14838 : check for type of argument to gethostbyname. 
14839 if test "X$netdb_name_type" = X ; then
14840         case "$d_gethbyname" in
14841         $define)
14842                 $cat <<EOM
14843
14844 Checking to see what type of argument is accepted by gethostbyname().
14845 EOM
14846                 hdrs="$define sys/types.h
14847                         $d_socket sys/socket.h 
14848                         $i_niin netinet/in.h 
14849                         $i_netdb netdb.h
14850                         $i_unistd unistd.h"
14851                 for xxx in "const char *" "char *"; do
14852                         case "$netdb_name_type" in
14853                         '')     try="extern struct hostent *gethostbyname($xxx);"
14854                                 if ./protochk "$try" $hdrs; then
14855                                         echo "Your system accepts $xxx."
14856                                         netdb_name_type="$xxx"
14857                                 fi
14858                                 ;;
14859                         esac
14860                 done
14861                 : In case none of those worked, prompt the user.
14862                 case "$netdb_name_type" in
14863                 '')     rp='What is the type for the 1st argument to gethostbyname?'
14864                         dflt='char *'
14865                         . ./myread
14866                         netdb_name_type=$ans
14867                         ;;
14868                 esac
14869                 ;;
14870         *)      : no gethostbyname, so pick harmless default
14871                 netdb_name_type='char *'
14872                 ;;
14873         esac
14874 fi
14875
14876 : check for type of 1st argument to getnetbyaddr. 
14877 if test "X$netdb_net_type" = X ; then
14878         case "$d_getnbyaddr" in
14879         $define)
14880                 $cat <<EOM
14881
14882 Checking to see what type of 1st argument is accepted by getnetbyaddr().
14883 EOM
14884                 hdrs="$define sys/types.h
14885                         $d_socket sys/socket.h 
14886                         $i_niin netinet/in.h 
14887                         $i_netdb netdb.h
14888                         $i_unistd unistd.h"
14889                 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
14890                         case "$netdb_net_type" in
14891                         '')     try="extern struct netent *getnetbyaddr($xxx, int);"
14892                                 if ./protochk "$try" $hdrs; then
14893                                         echo "Your system accepts $xxx."
14894                                         netdb_net_type="$xxx"
14895                                 fi
14896                                 ;;
14897                         esac
14898                 done
14899                 : In case none of those worked, prompt the user.
14900                 case "$netdb_net_type" in
14901                 '')     rp='What is the type for the 1st argument to getnetbyaddr?'
14902                         dflt='long'
14903                         . ./myread
14904                         netdb_net_type=$ans
14905                         ;;
14906                 esac
14907                 ;;
14908         *)      : no getnetbyaddr, so pick harmless default
14909                 netdb_net_type='long'
14910                 ;;
14911         esac
14912 fi
14913 : locate the preferred pager for this system
14914 case "$pager" in
14915 '')
14916         dflt=''
14917         case "$pg" in
14918         /*) dflt=$pg;;
14919         [a-zA-Z]:/*) dflt=$pg;;
14920         esac
14921         case "$more" in
14922         /*) dflt=$more;;
14923         [a-zA-Z]:/*) dflt=$more;;
14924         esac
14925         case "$less" in
14926         /*) dflt=$less;;
14927         [a-zA-Z]:/*) dflt=$less;;
14928         esac
14929         case "$dflt" in
14930         '') dflt=/usr/ucb/more;;
14931         esac
14932         ;;
14933 *) dflt="$pager";;
14934 esac
14935 echo " "
14936 fn=f/
14937 rp='What pager is used on your system?'
14938 . ./getfile
14939 pager="$ans"
14940
14941 : see what type pids are declared as in the kernel
14942 rp="What is the type of process ids on this system?"
14943 set pid_t pidtype int stdio.h sys/types.h
14944 eval $typedef_ask
14945
14946 : Find earliest binary compatible site_perl subdirectory perl can use.
14947 case "$bincompat5005" in
14948 "$define") xs_apiversion='5.005' ;;
14949 *) xs_apiversion=$version ;;   # The current site_perl version.
14950 esac
14951 : Find earliest pure perl site_perl subdirectory perl can use.
14952 : The versioned directories started at 5.005.
14953 pm_apiversion='5.005'
14954
14955 : see if ar generates random libraries by itself
14956 echo " "
14957 echo "Checking how to generate random libraries on your machine..." >&4
14958 echo 'int bar1() { return bar2(); }' > bar1.c
14959 echo 'int bar2() { return 2; }' > bar2.c
14960 $cat > foo.c <<'EOP'
14961 int main() { printf("%d\n", bar1()); exit(0); }
14962 EOP
14963 $cc $ccflags -c bar1.c >/dev/null 2>&1
14964 $cc $ccflags -c bar2.c >/dev/null 2>&1
14965 $cc $ccflags -c foo.c >/dev/null 2>&1
14966 $ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
14967 if $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
14968         $run ./foobar >/dev/null 2>&1; then
14969         echo "$ar appears to generate random libraries itself."
14970         orderlib=false
14971         ranlib=":"
14972 elif $ar ts bar$_a >/dev/null 2>&1 &&
14973         $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
14974         $run ./foobar >/dev/null 2>&1; then
14975                 echo "a table of contents needs to be added with '$ar ts'."
14976                 orderlib=false
14977                 ranlib="$ar ts"
14978 else
14979         case "$ranlib" in
14980         :) ranlib='';;
14981         '')
14982                 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
14983                 $test -f $ranlib || ranlib=''
14984                 ;;
14985         esac
14986         if $test -n "$ranlib"; then
14987                 echo "your system has '$ranlib'; we'll use that."
14988                 orderlib=false
14989         else
14990                 echo "your system doesn't seem to support random libraries"
14991                 echo "so we'll use lorder and tsort to order the libraries."
14992                 orderlib=true
14993                 ranlib=":"
14994         fi
14995 fi
14996 $rm -f foo* bar* 
14997
14998 : check for type of arguments to select. 
14999 case "$selecttype" in
15000 '') case "$d_select" in
15001         $define)
15002                 echo " "
15003                 $cat <<EOM
15004 Checking to see what type of arguments are accepted by select().
15005 EOM
15006                 hdrs="$define sys/types.h
15007                         $i_systime sys/time.h 
15008                         $i_sysselct sys/select.h
15009                         $d_socket sys/socket.h"
15010                 : The first arg can be int, unsigned, or size_t
15011                 : The last arg may or may not be 'const'
15012                 val=''
15013                 : void pointer has been seen but using that
15014                 : breaks the selectminbits test
15015                 for xxx in 'fd_set *' 'int *'; do
15016                         for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
15017                                 for tmo in 'struct timeval *' 'const struct timeval *'; do
15018                                         case "$val" in
15019                                         '')     try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
15020                                                 if ./protochk "$try" $hdrs; then
15021                                                         echo "Your system accepts $xxx."
15022                                                         val="$xxx"
15023                                                 fi
15024                                                 ;;
15025                                         esac
15026                                 done
15027                         done
15028                 done
15029                 case "$val" in
15030                 '')     rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
15031                         case "$d_fd_set" in
15032                                 $define) dflt="fd_set *" ;;
15033                                 *)              dflt="int *" ;;
15034                         esac
15035                         . ./myread
15036                         val=$ans
15037                         ;;
15038                 esac
15039                 selecttype="$val"
15040                 ;;
15041         *)      : no select, so pick a harmless default
15042                 selecttype='int *'
15043                 ;;
15044         esac
15045         ;;
15046 esac
15047
15048 : check for the select 'width'
15049 case "$selectminbits" in
15050 '') case "$d_select" in
15051         $define)
15052                 $cat <<EOM
15053
15054 Checking to see on how many bits at a time your select() operates...
15055 EOM
15056                 $cat >try.c <<EOCP
15057 #include <sys/types.h>
15058 #$i_time I_TIME
15059 #$i_systime I_SYS_TIME
15060 #$i_systimek I_SYS_TIME_KERNEL
15061 #ifdef I_TIME
15062 #   include <time.h>
15063 #endif
15064 #ifdef I_SYS_TIME
15065 #   ifdef I_SYS_TIME_KERNEL
15066 #       define KERNEL
15067 #   endif
15068 #   include <sys/time.h>
15069 #   ifdef I_SYS_TIME_KERNEL
15070 #       undef KERNEL
15071 #   endif
15072 #endif
15073 #$i_sysselct I_SYS_SELECT
15074 #ifdef I_SYS_SELECT
15075 #include <sys/select.h>
15076 #endif
15077 #$d_socket HAS_SOCKET
15078 #ifdef HAS_SOCKET
15079 #   include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
15080 #endif
15081 #include <stdio.h>
15082 $selecttype b;
15083 #define S sizeof(*(b))
15084 #define MINBITS 64
15085 #define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
15086 #define NBITS  (NBYTES * 8)
15087 int main() {
15088     char s[NBYTES];
15089     struct timeval t;
15090     int i;
15091     FILE* fp;
15092     int fd;
15093
15094     fclose(stdin);
15095     fp = fopen("try.c", "r");
15096     if (fp == 0)
15097       exit(1);
15098     fd = fileno(fp);
15099     if (fd < 0)
15100       exit(2);
15101     b = ($selecttype)s;
15102     for (i = 0; i < NBITS; i++)
15103         FD_SET(i, b);
15104     t.tv_sec  = 0;
15105     t.tv_usec = 0;
15106     select(fd + 1, b, 0, 0, &t);
15107     for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
15108     printf("%d\n", i + 1);
15109     return 0;
15110 }
15111 EOCP
15112                 set try
15113                 if eval $compile_ok; then
15114                         selectminbits=`$run ./try`
15115                         case "$selectminbits" in
15116                         '')     cat >&4 <<EOM
15117 Cannot figure out on how many bits at a time your select() operates.
15118 I'll play safe and guess it is 32 bits.
15119 EOM
15120                                 selectminbits=32
15121                                 bits="32 bits"
15122                                 ;;
15123                         1)      bits="1 bit" ;;
15124                         *)      bits="$selectminbits bits" ;;
15125                         esac
15126                         echo "Your select() operates on $bits at a time." >&4
15127                 else
15128                         rp='What is the minimum number of bits your select() operates on?'
15129                         case "$byteorder" in
15130                         1234|12345678)  dflt=32 ;;
15131                         *)              dflt=1  ;;
15132                         esac
15133                         . ./myread
15134                         val=$ans
15135                         selectminbits="$val"
15136                 fi
15137                 $rm -f try.* try
15138                 ;;
15139         *)      : no select, so pick a harmless default
15140                 selectminbits='32'
15141                 ;;
15142         esac
15143         ;;
15144 esac
15145
15146 : Trace out the files included by signal.h, then look for SIGxxx names.
15147 : Remove SIGARRAYSIZE used by HPUX.
15148 : Remove SIGSTKSIZE used by Linux.
15149 : Remove SIGSTKSZ used by Posix.
15150 : Remove SIGTYP void lines used by OS2.
15151 : Some cpps, like os390, dont give the file name anywhere
15152 if [ "X$fieldn" = X ]; then
15153         : Just make some guesses.  We check them later.
15154         xxx='/usr/include/signal.h /usr/include/sys/signal.h'
15155 else
15156         xxx=`echo '#include <signal.h>' |
15157         $cppstdin $cppminus $cppflags 2>/dev/null |
15158         $grep '^[       ]*#.*include' | 
15159         $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sed 's!\\\\\\\\!/!g' | $sort | $uniq`
15160 fi
15161 : Check this list of files to be sure we have parsed the cpp output ok.
15162 : This will also avoid potentially non-existent files, such 
15163 : as ../foo/bar.h
15164 xxxfiles=''
15165 for xx in $xxx /dev/null ; do
15166         $test -f "$xx" && xxxfiles="$xxxfiles $xx"
15167 done
15168 : If we have found no files, at least try signal.h
15169 case "$xxxfiles" in
15170 '')     xxxfiles=`./findhdr signal.h` ;;
15171 esac
15172 xxx=`awk '
15173 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
15174         print substr($2, 4, 20)
15175 }
15176 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
15177         print substr($3, 4, 20)
15178 }' $xxxfiles`
15179 : Append some common names just in case the awk scan failed.
15180 xxx="$xxx ABRT ALRM BUS CANCEL CHLD CLD CONT DIL EMT FPE"
15181 xxx="$xxx FREEZE HUP ILL INT IO IOT KILL LOST LWP PHONE"
15182 xxx="$xxx PIPE POLL PROF PWR QUIT RTMAX RTMIN SEGV STKFLT STOP"
15183 xxx="$xxx SYS TERM THAW TRAP TSTP TTIN TTOU URG USR1 USR2"
15184 xxx="$xxx USR3 USR4 VTALRM WAITING WINCH WIND WINDOW XCPU XFSZ"
15185
15186 : generate a few handy files for later
15187 $cat > signal.c <<'EOCP'
15188 #include <sys/types.h>
15189 #include <signal.h>
15190 #include <stdio.h>
15191 int main() {
15192
15193 /* Strange style to avoid deeply-nested #if/#else/#endif */
15194 #ifndef NSIG
15195 #  ifdef _NSIG
15196 #    define NSIG (_NSIG)
15197 #  endif
15198 #endif
15199
15200 #ifndef NSIG
15201 #  ifdef SIGMAX
15202 #    define NSIG (SIGMAX+1)
15203 #  endif
15204 #endif
15205
15206 #ifndef NSIG
15207 #  ifdef SIG_MAX
15208 #    define NSIG (SIG_MAX+1)
15209 #  endif
15210 #endif
15211
15212 #ifndef NSIG
15213 #  ifdef MAXSIG
15214 #    define NSIG (MAXSIG+1)
15215 #  endif
15216 #endif
15217
15218 #ifndef NSIG
15219 #  ifdef MAX_SIG
15220 #    define NSIG (MAX_SIG+1)
15221 #  endif
15222 #endif
15223
15224 #ifndef NSIG
15225 #  ifdef SIGARRAYSIZE
15226 #    define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
15227 #  endif
15228 #endif
15229
15230 #ifndef NSIG
15231 #  ifdef _sys_nsig
15232 #    define NSIG (_sys_nsig) /* Solaris 2.5 */
15233 #  endif
15234 #endif
15235
15236 /* Default to some arbitrary number that's big enough to get most
15237    of the common signals.
15238 */
15239 #ifndef NSIG
15240 #    define NSIG 50
15241 #endif
15242
15243 printf("NSIG %d\n", NSIG);
15244
15245 #ifndef JUST_NSIG
15246
15247 EOCP
15248
15249 echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
15250 {
15251         printf "#ifdef SIG"; printf $1; printf "\n"
15252         printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
15253         printf $1; printf ");\n"
15254         printf "#endif\n"
15255 }
15256 END {
15257         printf "#endif /* JUST_NSIG */\n";
15258         printf "exit(0);\n}\n";
15259 }
15260 ' >>signal.c
15261 $cat >signal.awk <<'EOP'
15262 BEGIN { ndups = 0 }
15263 $1 ~ /^NSIG$/ { nsig = $2 }
15264 ($1 !~ /^NSIG$/) && (NF == 2) {
15265     if ($2 > maxsig) { maxsig = $2 }
15266     if (sig_name[$2]) {
15267         dup_name[ndups] = $1
15268         dup_num[ndups] = $2
15269         ndups++ 
15270     }
15271     else {
15272         sig_name[$2] = $1
15273         sig_num[$2] = $2
15274     }
15275 }
15276 END { 
15277     if (nsig == 0) {
15278         nsig = maxsig + 1
15279     }
15280     printf("NSIG %d\n", nsig);
15281     for (n = 1; n < nsig; n++) {
15282         if (sig_name[n]) {
15283             printf("%s %d\n", sig_name[n], sig_num[n])
15284         }
15285         else {
15286             printf("NUM%d %d\n", n, n) 
15287         }
15288     }
15289     for (n = 0; n < ndups; n++) {
15290         printf("%s %d\n", dup_name[n], dup_num[n])
15291     }
15292 }
15293 EOP
15294 $cat >signal_cmd <<EOS
15295 $startsh
15296 if $test -s signal.lst; then
15297     echo "Using your existing signal.lst file"
15298         exit 0
15299 fi
15300 xxx="$xxx"
15301 EOS
15302 $cat >>signal_cmd <<'EOS'
15303
15304 set signal
15305 if eval $compile_ok; then
15306         $run ./signal$_exe | $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
15307 else
15308         echo "(I can't seem be able to compile the whole test program)" >&4
15309         echo "(I'll try it in little pieces.)" >&4
15310         set signal -DJUST_NSIG
15311         if eval $compile_ok; then
15312                 $run ./signal$_exe > signal.nsg
15313                 $cat signal.nsg
15314         else
15315                 echo "I can't seem to figure out how many signals you have." >&4
15316                 echo "Guessing 50." >&4
15317                 echo 'NSIG 50' > signal.nsg
15318         fi
15319         : Now look at all the signal names, one at a time.
15320         for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
15321                 $cat > signal.c <<EOCP
15322 #include <sys/types.h>
15323 #include <signal.h>
15324 #include <stdio.h>
15325 int main() {
15326 printf("$xx %d\n", SIG${xx});
15327 return 0;
15328 }
15329 EOCP
15330                 set signal
15331                 if eval $compile; then
15332                         echo "SIG${xx} found."
15333                         $run ./signal$_exe  >> signal.ls1
15334                 else
15335                         echo "SIG${xx} NOT found."
15336                 fi
15337         done
15338         if $test -s signal.ls1; then
15339                 $cat signal.nsg signal.ls1 |
15340                         $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
15341         fi
15342
15343 fi
15344 if $test -s signal.lst; then
15345         :
15346 else
15347         echo "(AAK! I can't compile the test programs -- Guessing)" >&4
15348         echo 'kill -l' >signal
15349         set X `csh -f <signal`
15350         $rm -f signal
15351         shift
15352         case $# in
15353         0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
15354         esac
15355         echo $@ | $tr ' ' $trnl | \
15356             $awk '{ printf "%s %d\n", $1, ++s; }
15357                   END { printf "NSIG %d\n", ++s }' >signal.lst
15358 fi
15359 $rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
15360 EOS
15361 chmod a+x signal_cmd
15362 $eunicefix signal_cmd
15363
15364 : generate list of signal names
15365 echo " "
15366 case "$sig_name_init" in
15367 '') doinit=yes ;;
15368 *)  case "$sig_num_init" in
15369     ''|*,*) doinit=yes ;;
15370     esac ;;
15371 esac
15372 case "$doinit" in
15373 yes)
15374         echo "Generating a list of signal names and numbers..." >&4
15375         . ./signal_cmd
15376         sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
15377         sig_name=`$awk 'BEGIN { printf "ZERO " }
15378                         !/^NSIG/ { printf "%s ", $1 }' signal.lst`
15379         sig_num=`$awk  'BEGIN { printf "0 " }
15380                         !/^NSIG/ { printf "%d ", $2 }' signal.lst`
15381         sig_name_init=`$awk 'BEGIN      { printf "\"ZERO\", " }
15382                              !/^NSIG/   { printf "\"%s\", ", $1 }
15383                              END        { printf "0\n" }' signal.lst`
15384         sig_num_init=`$awk  'BEGIN      { printf "0, " }
15385                              !/^NSIG/   { printf "%d, ", $2}
15386                              END        { printf "0\n"}' signal.lst`
15387         ;;
15388 esac
15389 echo "The following $sig_count signals are available:"
15390 echo " "
15391 echo $sig_name | $awk \
15392 'BEGIN { linelen = 0 }
15393 {
15394         for (i = 1; i <= NF; i++) {
15395                 name = "SIG" $i " "
15396                 linelen = linelen + length(name)
15397                 if (linelen > 70) {
15398                         printf "\n"
15399                         linelen = length(name)
15400                 }
15401                 printf "%s", name
15402         }
15403         printf "\n"
15404 }'
15405 sig_size=`echo $sig_name | awk '{print NF}'`
15406 $rm -f signal signal.c signal.awk signal.lst signal_cmd 
15407
15408 echo " "
15409 case "$sizetype" in
15410 *_t) zzz="$sizetype"    ;;
15411 *)   zzz="filesize"     ;;
15412 esac
15413 echo "Checking the size of $zzz..." >&4 
15414 cat > try.c <<EOCP
15415 #include <sys/types.h>
15416 #include <stdio.h>
15417 int main() {
15418     printf("%d\n", (int)sizeof($sizetype));
15419     exit(0);
15420 }
15421 EOCP
15422 set try
15423 if eval $compile_ok; then
15424         yyy=`$run ./try`
15425         case "$yyy" in
15426         '')     sizesize=4
15427                 echo "(I can't execute the test program--guessing $sizesize.)" >&4
15428                 ;;
15429         *)      sizesize=$yyy
15430                 echo "Your $zzz size is $sizesize bytes."
15431                 ;;
15432         esac
15433 else
15434         sizesize=4
15435         echo "(I can't compile the test program--guessing $sizesize.)" >&4
15436 fi
15437
15438
15439 : check for socklen_t
15440 echo " "
15441 echo "Checking to see if you have socklen_t..." >&4
15442 $cat >try.c <<EOCP
15443 #include <sys/types.h>
15444 #$d_socket HAS_SOCKET
15445 #ifdef HAS_SOCKET
15446 #include <sys/socket.h>
15447 #endif
15448 int main() { socklen_t x = 16; }
15449 EOCP
15450 set try
15451 if eval $compile; then
15452         val="$define"
15453         echo "You have socklen_t."
15454 else
15455         val="$undef"
15456         echo "You do not have socklen_t."
15457         case "$sizetype" in
15458         size_t) echo "(You do have size_t, that might work. Some people are happy with just an int.)" ;;
15459         esac
15460 fi
15461 $rm -f try try.*
15462 set d_socklen_t
15463 eval $setvar
15464
15465 : see if this is a socks.h system
15466 set socks.h i_socks
15467 eval $inhdr
15468
15469 : check for type of the size argument to socket calls
15470 case "$d_socket" in
15471 "$define")
15472         $cat <<EOM
15473
15474 Checking to see what type is the last argument of accept().
15475 EOM
15476         yyy=''
15477         case "$d_socklen_t" in
15478         "$define") yyy="$yyy socklen_t"
15479         esac
15480         yyy="$yyy $sizetype int long unsigned"
15481         for xxx in $yyy; do
15482                 case "$socksizetype" in
15483                 '')     try="extern int accept(int, struct sockaddr *, $xxx *);"
15484                         case "$usesocks" in
15485                         "$define")
15486                                 if ./protochk "$try" $i_systypes sys/types.h $d_socket sys/socket.h literal '#define INCLUDE_PROTOTYPES' $i_socks socks.h.; then
15487                                         echo "Your system accepts '$xxx *' for the last argument of accept()."
15488                                         socksizetype="$xxx"
15489                                 fi
15490                                 ;;
15491                         *)      if ./protochk "$try"  $i_systypes sys/types.h $d_socket sys/socket.h; then
15492                                         echo "Your system accepts '$xxx *' for the last argument of accept()."
15493                                         socksizetype="$xxx"
15494                                 fi
15495                                 ;;
15496                         esac
15497                         ;;
15498                 esac
15499         done
15500 : In case none of those worked, prompt the user.
15501         case "$socksizetype" in
15502         '')     rp='What is the type for socket address structure sizes?'
15503                 dflt='int'
15504                 . ./myread
15505                 socksizetype=$ans
15506                 ;;
15507         esac
15508         ;;
15509 *)      : no sockets, so pick relatively harmless default
15510         socksizetype='int'
15511         ;;
15512 esac
15513
15514 : see what type is used for signed size_t
15515 set ssize_t ssizetype int stdio.h sys/types.h
15516 eval $typedef
15517 dflt="$ssizetype"
15518 $cat > try.c <<EOM
15519 #include <stdio.h>
15520 #include <sys/types.h>
15521 #define Size_t $sizetype
15522 #define SSize_t $dflt
15523 int main()
15524 {
15525         if (sizeof(Size_t) == sizeof(SSize_t))
15526                 printf("$dflt\n");
15527         else if (sizeof(Size_t) == sizeof(int))
15528                 printf("int\n");
15529         else 
15530                 printf("long\n");
15531         exit(0);
15532 }
15533 EOM
15534 echo " "
15535 set try
15536 if eval $compile_ok && $run ./try > /dev/null; then
15537         ssizetype=`$run ./try`
15538         echo "I'll be using $ssizetype for functions returning a byte count." >&4
15539 else
15540         $cat >&4 <<EOM
15541 Help! I can't compile and run the ssize_t test program: please enlighten me!
15542 (This is probably a misconfiguration in your system or libraries, and
15543 you really ought to fix it.  Still, I'll try anyway.)
15544
15545 I need a type that is the same size as $sizetype, but is guaranteed to
15546 be signed.  Common values are ssize_t, int and long.
15547
15548 EOM
15549         rp="What signed type is the same size as $sizetype?"
15550         . ./myread
15551         ssizetype="$ans"
15552 fi
15553 $rm -f try try.*
15554
15555 : see what type of char stdio uses.
15556 echo " "
15557 echo '#include <stdio.h>' | $cppstdin $cppminus > stdioh
15558 if $contains 'unsigned.*char.*_ptr;' stdioh >/dev/null 2>&1 ; then
15559         echo "Your stdio uses unsigned chars." >&4
15560         stdchar="unsigned char"
15561 else
15562         echo "Your stdio uses signed chars." >&4
15563         stdchar="char"
15564 fi
15565 $rm -f stdioh
15566
15567
15568
15569 : see if time exists
15570 echo " "
15571 if test "X$d_time" = X -o X"$timetype" = X; then
15572     if set time val -f d_time; eval $csym; $val; then
15573                 echo 'time() found.' >&4
15574                 val="$define"
15575                 rp="What is the type returned by time() on this system?"
15576                 set time_t timetype long stdio.h sys/types.h
15577                 eval $typedef_ask
15578     else
15579                 echo 'time() not found, hope that will do.' >&4
15580                 val="$undef"
15581                 timetype='int';
15582     fi
15583     set d_time
15584     eval $setvar
15585 fi
15586
15587 : see what type uids are declared as in the kernel
15588 echo " "
15589 echo "Looking for the type for user ids returned by getuid()."
15590 set uid_t uidtype xxx stdio.h sys/types.h
15591 eval $typedef
15592 case "$uidtype" in
15593 xxx)
15594         xxx=`./findhdr sys/user.h`
15595         set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
15596         case $1 in
15597         unsigned) dflt="$1 $2" ;;
15598         *) dflt="$1" ;;
15599         esac
15600         ;;
15601 *) dflt="$uidtype";;
15602 esac
15603 case "$uidtype" in
15604 uid_t)  echo "uid_t found." ;;
15605 *)      rp="What is the type for user ids returned by getuid()?"
15606         . ./myread
15607         uidtype="$ans"
15608         ;;
15609 esac
15610
15611 echo " "
15612 case "$uidtype" in
15613 *_t) zzz="$uidtype"     ;;
15614 *)   zzz="uid"          ;;
15615 esac
15616 echo "Checking the size of $zzz..." >&4 
15617 cat > try.c <<EOCP
15618 #include <sys/types.h>
15619 #include <stdio.h>
15620 int main() {
15621     printf("%d\n", (int)sizeof($uidtype));
15622     exit(0);
15623 }
15624 EOCP
15625 set try
15626 if eval $compile_ok; then
15627         yyy=`$run ./try`
15628         case "$yyy" in
15629         '')     uidsize=4
15630                 echo "(I can't execute the test program--guessing $uidsize.)" >&4
15631                 ;;
15632         *)      uidsize=$yyy
15633                 echo "Your $zzz is $uidsize bytes long."
15634                 ;;
15635         esac
15636 else
15637         uidsize=4
15638         echo "(I can't compile the test program--guessing $uidsize.)" >&4
15639 fi
15640
15641 echo " "
15642 case "$uidtype" in
15643 *_t) zzz="$uidtype"     ;;
15644 *)   zzz="uid"          ;;
15645 esac
15646 echo "Checking the sign of $zzz..." >&4
15647 cat > try.c <<EOCP
15648 #include <sys/types.h>
15649 #include <stdio.h>
15650 int main() {
15651         $uidtype foo = -1;
15652         if (foo < 0)
15653                 printf("-1\n");
15654         else
15655                 printf("1\n");
15656 }
15657 EOCP
15658 set try
15659 if eval $compile; then
15660         yyy=`$run ./try`
15661         case "$yyy" in
15662         '')     uidsign=1
15663                 echo "(I can't execute the test program--guessing unsigned.)" >&4
15664                 ;;
15665         *)      uidsign=$yyy
15666                 case "$uidsign" in
15667                  1) echo "Your $zzz is unsigned." ;;
15668                 -1) echo "Your $zzz is signed."   ;;
15669                 esac
15670                 ;;
15671         esac
15672 else
15673         uidsign=1
15674         echo "(I can't compile the test program--guessing unsigned.)" >&4
15675 fi
15676
15677
15678
15679 echo " "
15680 $echo "Checking the format string to be used for uids..." >&4
15681
15682 case "$uidsign" in
15683 -1)     if $test X"$uidsize" = X"$ivsize"; then
15684                 uidformat="$ivdformat"
15685         else
15686                 if $test X"$uidsize" = X"$longsize"; then
15687                         uidformat='"ld"'
15688                 else
15689                         if $test X"$uidsize" = X"$intsize"; then
15690                                 uidformat='"d"'
15691                         else
15692                                 if $test X"$uidsize" = X"$shortsize"; then
15693                                         uidformat='"hd"'
15694                                 fi
15695                         fi
15696                 fi
15697         fi
15698         ;;
15699 *)      if $test X"$uidsize" = X"$uvsize"; then
15700                 uidformat="$uvuformat"
15701         else
15702                 if $test X"$uidsize" = X"$longsize"; then
15703                         uidformat='"lu"'
15704                 else
15705                         if $test X"$uidsize" = X"$intsize"; then
15706                                 uidformat='"u"'
15707                         else
15708                                 if $test X"$uidsize" = X"$shortsize"; then
15709                                         uidformat='"hu"'
15710                                 fi
15711                         fi
15712                 fi
15713         fi
15714         ;;
15715 esac
15716
15717 : determine compiler compiler
15718 case "$yacc" in
15719 '')
15720         dflt=yacc;;
15721 *)
15722         dflt="$yacc";;
15723 esac
15724 echo " "
15725 comp='yacc'
15726 if $test -f "$byacc"; then
15727         dflt="$byacc"
15728         comp="byacc or $comp"
15729 fi
15730 if $test -f "$bison"; then
15731         comp="$comp or bison -y"
15732 fi
15733 rp="Which compiler compiler ($comp) shall I use?"
15734 . ./myread
15735 yacc="$ans"
15736 case "$yacc" in
15737 *bis*)
15738         case "$yacc" in
15739         *-y*) ;;
15740         *)
15741                 yacc="$yacc -y"
15742                 echo "(Adding -y option to bison to get yacc-compatible behaviour.)"
15743                 ;;
15744         esac
15745         ;;
15746 esac
15747
15748 : see if fcntl.h is there
15749 val=''
15750 set fcntl.h val
15751 eval $inhdr
15752
15753 : see if we can include fcntl.h
15754 case "$val" in
15755 "$define")
15756         echo " "
15757         if $h_fcntl; then
15758                 val="$define"
15759                 echo "We'll be including <fcntl.h>." >&4
15760         else
15761                 val="$undef"
15762                 if $h_sysfile; then
15763         echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
15764                 else
15765                         echo "We won't be including <fcntl.h>." >&4
15766                 fi
15767         fi
15768         ;;
15769 *)
15770         h_fcntl=false
15771         val="$undef"
15772         ;;
15773 esac
15774 set i_fcntl
15775 eval $setvar
15776
15777 : see if this is a iconv.h system
15778 set iconv.h i_iconv
15779 eval $inhdr
15780
15781 : see if this is a ieeefp.h system
15782 set ieeefp.h i_ieeefp
15783 eval $inhdr
15784
15785 : see if this is a libutil.h system
15786 set libutil.h i_libutil
15787 eval $inhdr
15788
15789 : see if locale.h is available
15790 set locale.h i_locale
15791 eval $inhdr
15792
15793 : see if mach cthreads are available
15794 if test "X$usethreads" = "X$define"; then
15795         set mach/cthreads.h i_machcthr
15796         eval $inhdr
15797 else
15798         i_machcthr="$undef"
15799 fi
15800
15801
15802
15803 : see if this is a math.h system
15804 set math.h i_math
15805 eval $inhdr
15806
15807 : see if this is a mntent.h system
15808 set mntent.h i_mntent
15809 eval $inhdr
15810
15811 : see if ndbm.h is available
15812 set ndbm.h t_ndbm
15813 eval $inhdr
15814 case "$t_ndbm" in
15815 $define)
15816         : see if dbm_open exists
15817         set dbm_open d_dbm_open
15818         eval $inlibc
15819         case "$d_dbm_open" in
15820         $undef)
15821                 t_ndbm="$undef"
15822                 echo "We won't be including <ndbm.h>"
15823                 ;;
15824         esac
15825         ;;
15826 esac
15827 val="$t_ndbm"
15828 set i_ndbm
15829 eval $setvar
15830
15831 : see if net/errno.h is available
15832 val=''
15833 set net/errno.h val
15834 eval $inhdr
15835
15836 : Unfortunately, it causes problems on some systems.  Arrgh.
15837 case "$val" in
15838 $define)
15839         cat > try.c <<'EOM'
15840 #include <stdio.h>
15841 #include <errno.h>
15842 #include <net/errno.h>
15843 int func()
15844 {
15845         return ENOTSOCK;
15846 }
15847 EOM
15848         if $cc $ccflags -c try.c >/dev/null 2>&1; then
15849                 echo "We'll be including <net/errno.h>." >&4
15850         else
15851                 echo "We won't be including <net/errno.h>." >&4
15852                 val="$undef"
15853         fi
15854         $rm -f try.* try
15855         ;;
15856 esac
15857 set i_neterrno
15858 eval $setvar
15859
15860 : see if netinet/tcp.h is available
15861 set netinet/tcp.h i_netinettcp
15862 eval $inhdr
15863
15864 : see if this is a poll.h system
15865 set poll.h i_poll
15866 eval $inhdr
15867
15868 : see if this is a prot.h system
15869 set prot.h i_prot
15870 eval $inhdr
15871
15872 echo " "
15873 $echo "Guessing which symbols your C compiler and preprocessor define..." >&4 
15874 $cat <<'EOSH' > Cppsym.know
15875 a29k ABI64 aegis AES_SOURCE AIX AIX32 AIX370
15876 AIX41 AIX42 AIX43 AIX_SOURCE aixpc ALL_SOURCE
15877 alliant alpha am29000 AM29000 AMD64 amiga AMIGAOS AMIX
15878 ansi ANSI_C_SOURCE apollo ardent ARM32 atarist att386 att3b
15879 BeOS BIG_ENDIAN BIT_MSF bsd BSD bsd43 bsd4_2 bsd4_3 BSD4_3 bsd4_4
15880 BSD_4_3 BSD_4_4 BSD_NET2 BSD_TIME BSD_TYPES BSDCOMPAT bsdi
15881 bull c cadmus clipper CMU COFF COMPILER_VERSION
15882 concurrent convex cpu cray CRAY CRAYMPP ctix CX_UX
15883 CYGWIN DGUX DGUX_SOURCE DJGPP dmert DOLPHIN DPX2 DSO
15884 Dynix DynixPTX ELF encore EPI EXTENSIONS FILE_OFFSET_BITS
15885 FreeBSD GCC_NEW_VARARGS gcos gcx gimpel
15886 GNU_SOURCE GNUC GNUC_MINOR GO32 gould GOULD_PN
15887 H3050R H3050RX hbullx20 hcx host_mips
15888 hp200 hp300 hp700 HP700 hp800 hp9000
15889 hp9000s200 hp9000s300 hp9000s400 hp9000s500
15890 hp9000s700 hp9000s800 hp9k8 hp_osf hppa hpux HPUX_SOURCE
15891 i186 i286 i386 i486 i586 i686 i8086 i80960 i860 I960
15892 IA64 iAPX286 ibm ibm032 ibmesa IBMR2 ibmrt ILP32 ILP64
15893 INLINE_INTRINSICS INTRINSICS INT64 interdata is68k ksr1
15894 LANGUAGE_C LARGE_FILE_API LARGEFILE64_SOURCE
15895 LARGEFILE_SOURCE LFS64_LARGEFILE LFS_LARGEFILE
15896 Linux LITTLE_ENDIAN LONG64 LONG_DOUBLE LONG_LONG
15897 LONGDOUBLE LONGLONG LP64 luna luna88k Lynx
15898 M68000 m68k m88100 m88k M88KBCS_TARGET M_COFF
15899 M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM M_SYS3
15900 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX MACH machine MachTen
15901 MATH_HAS_NO_SIDE_EFFECTS
15902 mc300 mc500 mc68000 mc68010 mc68020 mc68030 mc68040
15903 mc68060 mc68k mc68k32 mc700 mc88000 mc88100 merlin
15904 mert MiNT mips MIPS_FPSET MIPS_ISA MIPS_SIM MIPS_SZINT
15905 MIPS_SZLONG MIPS_SZPTR MIPSEB MIPSEL MODERN_C motorola
15906 mpeix MSDOS MTXINU MULTIMAX mvs MVS n16 ncl_el ncl_mr
15907 NetBSD news1500 news1700 news1800 news1900 news3700
15908 news700 news800 news900 NeXT NLS nonstopux ns16000 ns32000
15909 ns32016 ns32332 ns32k nsc32000
15910 OCS88 OEMVS OpenBSD os OS2 OS390 osf OSF1 OSF_SOURCE
15911 pa_risc PA_RISC1_1 PA_RISC2_0 PARAGON parisc
15912 pc532 pdp11 PGC PIC plexus PORTAR posix
15913 POSIX1B_SOURCE POSIX2_SOURCE POSIX4_SOURCE
15914 POSIX_C_SOURCE POSIX_SOURCE POWER
15915 PROTOTYPES PWB pyr QNX R3000 REENTRANT RES Rhapsody RISC6000
15916 riscix riscos RT S390 SA110 scs SCO sequent sgi SGI_SOURCE SH3 sinix
15917 SIZE_INT SIZE_LONG SIZE_PTR SOCKET_SOURCE SOCKETS_SOURCE
15918 sony sony_news sonyrisc sparc sparclite spectrum
15919 stardent stdc STDC_EXT stratos sun sun3 sun386
15920 Sun386i svr3 svr4 SVR4_2 SVR4_SOURCE svr5
15921 SX system SYSTYPE_BSD SYSTYPE_BSD43 SYSTYPE_BSD44
15922 SYSTYPE_SVR4 SYSTYPE_SVR5 SYSTYPE_SYSV SYSV SYSV3 SYSV4 SYSV5
15923 sysV68 sysV88 Tek4132 Tek4300 titan
15924 TM3200 TM5400 TM5600
15925 tower tower32 tower32_200 tower32_600 tower32_700
15926 tower32_800 tower32_850 tss
15927 u370 u3b u3b2 u3b20 u3b200 u3b20d u3b5
15928 ultrix UMAXV UnicomPBB UnicomPBD UNICOS UNICOSMK
15929 unix UNIX95 UNIX99 unixpc unos USGr4 USGr4_2
15930 Utek UTek UTS UWIN uxpm uxps vax venix VMESA vms xenix Xenix286
15931 XOPEN_SOURCE XOPEN_SOURCE_EXTENDED XPG2 XPG2_EXTENDED
15932 XPG3 XPG3_EXTENDED XPG4 XPG4_EXTENDED
15933 z8000
15934 EOSH
15935 # Maybe put other stuff here too.
15936 cat <<EOSH >>Cppsym.know
15937 $osname
15938 EOSH
15939 ./tr '[a-z]' '[A-Z]' < Cppsym.know > Cppsym.a
15940 ./tr '[A-Z]' '[a-z]' < Cppsym.know > Cppsym.b
15941 $cat Cppsym.know > Cppsym.c
15942 $cat Cppsym.a Cppsym.b Cppsym.c | $tr ' ' $trnl | $sort | $uniq > Cppsym.know
15943 $rm -f Cppsym.a Cppsym.b Cppsym.c
15944 cat <<EOSH > Cppsym
15945 $startsh
15946 if $test \$# -gt 0; then
15947     echo \$* | $tr " " "$trnl" | ./Cppsym.try > Cppsym.got
15948     if $test -s Cppsym.got; then
15949         $rm -f Cppsym.got
15950         exit 0
15951     fi
15952     $rm -f Cppsym.got
15953     exit 1
15954 else
15955     $tr " " "$trnl" | ./Cppsym.try
15956     exit 0
15957 fi
15958 EOSH
15959 chmod +x Cppsym
15960 $eunicefix Cppsym
15961 cat <<EOSH > Cppsym.try
15962 $startsh
15963 cat <<'EOCP' > try.c
15964 #include <stdio.h>
15965 int main() {
15966 EOCP
15967 $awk \\
15968 EOSH
15969 cat <<'EOSH' >> Cppsym.try
15970 'length($1) > 0 {
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     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
15975 }'       >> try.c
15976 echo 'return 0;}' >> try.c
15977 EOSH
15978 cat <<EOSH >> Cppsym.try
15979 ccflags="$ccflags"
15980 case "$osname-$gccversion" in
15981 irix-) ccflags="\$ccflags -woff 1178" ;;
15982 os2-*) ccflags="\$ccflags -Zlinker /PM:VIO" ;;
15983 esac
15984 $cc -o try $optimize \$ccflags $ldflags try.c $libs && $run ./try
15985 EOSH
15986 chmod +x Cppsym.try
15987 $eunicefix Cppsym.try
15988 ./Cppsym < Cppsym.know > Cppsym.true
15989 : now check the C compiler for additional symbols
15990 postprocess_cc_v=''
15991 case "$osname" in
15992 aix) postprocess_cc_v="|$tr , ' '" ;;
15993 esac
15994 $cat >ccsym <<EOS
15995 $startsh
15996 $cat >tmp.c <<EOF
15997 extern int foo;
15998 EOF
15999 for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
16000 do
16001         case "\$i" in
16002         -D*) echo "\$i" | $sed 's/^-D//';;
16003         -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A\(.*\)(\(.*\))/\1=\2/';;
16004         esac
16005 done
16006 $rm -f try.c
16007 EOS
16008 postprocess_cc_v=''
16009 chmod +x ccsym
16010 $eunicefix ccsym
16011 ./ccsym > ccsym1.raw
16012 if $test -s ccsym1.raw; then
16013        $sort ccsym1.raw | $uniq >ccsym.raw
16014 else
16015        mv ccsym1.raw ccsym.raw
16016 fi
16017
16018 $awk '/\=/ { print $0; next }
16019         { print $0"=1" }' ccsym.raw >ccsym.list
16020 $awk '/\=/ { print $0; next }
16021         { print $0"=1" }' Cppsym.true >ccsym.true
16022 $comm -13 ccsym.true ccsym.list >ccsym.own
16023 $comm -12 ccsym.true ccsym.list >ccsym.com
16024 $comm -23 ccsym.true ccsym.list >ccsym.cpp
16025 also=''
16026 if $test -z ccsym.raw; then
16027         echo "Your C compiler doesn't seem to define any symbols!" >&4
16028         echo " "
16029         echo "However, your C preprocessor defines the following symbols:"
16030         $cat Cppsym.true
16031         ccsymbols=''
16032         cppsymbols=`$cat Cppsym.true`
16033         cppsymbols=`echo $cppsymbols`
16034         cppccsymbols="$cppsymbols"
16035 else
16036         if $test -s ccsym.com; then
16037                 echo "Your C compiler and pre-processor define these symbols:"
16038                 $sed -e 's/\(..*\)=.*/\1/' ccsym.com
16039                 also='also '
16040                 symbols='ones'
16041                 cppccsymbols=`$cat ccsym.com`
16042                 cppccsymbols=`echo $cppccsymbols`
16043                 $test "$silent" || sleep 1
16044         fi
16045         if $test -s ccsym.cpp; then
16046                 $test "$also" && echo " "
16047                 echo "Your C pre-processor ${also}defines the following symbols:"
16048                 $sed -e 's/\(..*\)=.*/\1/' ccsym.cpp
16049                 also='further '
16050                 cppsymbols=`$cat ccsym.cpp`
16051                 cppsymbols=`echo $cppsymbols`
16052                 $test "$silent" || sleep 1
16053         fi
16054         if $test -s ccsym.own; then
16055                 $test "$also" && echo " "
16056                 echo "Your C compiler ${also}defines the following cpp symbols:"
16057                 $sed -e 's/\(..*\)=1/\1/' ccsym.own
16058                 $sed -e 's/\(..*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
16059                 ccsymbols=`$cat ccsym.own`
16060                 ccsymbols=`echo $ccsymbols`
16061                 $test "$silent" || sleep 1
16062         fi
16063 fi
16064
16065 : see if this is a termio system
16066 val="$undef"
16067 val2="$undef"
16068 val3="$undef"
16069 if $test `./findhdr termios.h`; then
16070         set tcsetattr i_termios
16071         eval $inlibc
16072         val3="$i_termios"
16073 fi
16074 echo " "
16075 case "$val3" in
16076 "$define") echo "You have POSIX termios.h... good!" >&4;;
16077 *) if ./Cppsym pyr; then
16078                 case "`/bin/universe`" in
16079                 ucb) if $test `./findhdr sgtty.h`; then
16080                                 val2="$define"
16081                                 echo "<sgtty.h> found." >&4
16082                         else
16083                                 echo "System is pyramid with BSD universe."
16084                                 echo "<sgtty.h> not found--you could have problems." >&4
16085                         fi;;
16086                 *) if $test `./findhdr termio.h`; then
16087                                 val="$define"
16088                                 echo "<termio.h> found." >&4
16089                         else
16090                                 echo "System is pyramid with USG universe."
16091                                 echo "<termio.h> not found--you could have problems." >&4
16092                         fi;;
16093                 esac
16094         elif ./usg; then
16095                 if $test `./findhdr termio.h`; then
16096                         echo "<termio.h> found." >&4
16097                         val="$define"
16098                 elif $test `./findhdr sgtty.h`; then
16099                         echo "<sgtty.h> found." >&4
16100                         val2="$define"
16101                 else
16102 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
16103                 fi
16104         else
16105                 if $test `./findhdr sgtty.h`; then
16106                         echo "<sgtty.h> found." >&4
16107                         val2="$define"
16108                 elif $test `./findhdr termio.h`; then
16109                         echo "<termio.h> found." >&4
16110                         val="$define"
16111                 else
16112 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
16113                 fi
16114         fi;;
16115 esac
16116 set i_termio; eval $setvar
16117 val=$val2; set i_sgtty; eval $setvar
16118 val=$val3; set i_termios; eval $setvar
16119
16120 : see if this is a shadow.h system
16121 set shadow.h i_shadow
16122 eval $inhdr
16123
16124 : see if stddef is available
16125 set stddef.h i_stddef
16126 eval $inhdr
16127
16128 : see if this is a sunmath.h system
16129 set sunmath.h i_sunmath
16130 eval $inhdr
16131
16132 : see if sys/access.h is available
16133 set sys/access.h i_sysaccess
16134 eval $inhdr
16135
16136 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
16137 set sys/filio.h i_sysfilio
16138 eval $inhdr
16139 echo " "
16140 if $test `./findhdr sys/ioctl.h`; then
16141         val="$define"
16142         echo '<sys/ioctl.h> found.' >&4
16143 else
16144         val="$undef"
16145         if $test $i_sysfilio = "$define"; then
16146             echo '<sys/ioctl.h> NOT found.' >&4
16147         else
16148                 $test $i_sgtty = "$define" && xxx="sgtty.h"
16149                 $test $i_termio = "$define" && xxx="termio.h"
16150                 $test $i_termios = "$define" && xxx="termios.h"
16151 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
16152         fi
16153 fi
16154 set i_sysioctl
16155 eval $setvar
16156
16157 : see if socket ioctl defs are in sys/sockio.h
16158 echo " "
16159 xxx=`./findhdr sys/sockio.h`
16160 if $test "$xxx"; then
16161         if $contains SIOCATMARK $xxx >/dev/null 2>&1; then
16162                 val="$define"
16163                 echo "You have socket ioctls defined in <sys/sockio.h>." >&4
16164         else
16165                 val="$undef"
16166                 echo "No socket ioctls found in <sys/sockio.h>." >&4
16167         fi
16168 else
16169         val="$undef"
16170         $cat <<EOM
16171 <sys/sockio.h> not found, assuming socket ioctls are in <sys/ioctl.h>.
16172 EOM
16173 fi
16174 set i_syssockio
16175 eval $setvar
16176
16177
16178 : see if this is a syslog.h system
16179 set syslog.h i_syslog
16180 eval $inhdr
16181
16182
16183 : see if this is a sys/mode.h system
16184 set sys/mode.h i_sysmode
16185 eval $inhdr
16186
16187 : see if sys/resource.h has to be included
16188 set sys/resource.h i_sysresrc
16189 eval $inhdr
16190
16191 : see if sys/security.h is available
16192 set sys/security.h i_syssecrt
16193 eval $inhdr
16194
16195 : see if this is a sys/statvfs.h system
16196 set sys/statvfs.h i_sysstatvfs
16197 eval $inhdr
16198
16199 : see if this is a sys/un.h system
16200 set sys/un.h i_sysun
16201 eval $inhdr
16202
16203
16204 : see if this is a sys/utsname.h system
16205 set sys/utsname.h i_sysutsname
16206 eval $inhdr
16207
16208 : see if this is a syswait system
16209 set sys/wait.h i_syswait
16210 eval $inhdr
16211
16212 : see if this is a ustat.h system
16213 set ustat.h i_ustat
16214 eval $inhdr
16215
16216 : see if this is an utime system
16217 set utime.h i_utime
16218 eval $inhdr
16219
16220 : see if this is a values.h system
16221 set values.h i_values
16222 eval $inhdr
16223
16224 : see if this is a vfork system
16225 case "$d_vfork" in
16226 "$define")
16227         set vfork.h i_vfork
16228         eval $inhdr
16229         ;;
16230 *)
16231         i_vfork="$undef"
16232         ;;
16233 esac
16234
16235 : see if gdbm.h is available
16236 set gdbm.h t_gdbm
16237 eval $inhdr
16238 case "$t_gdbm" in
16239 $define)
16240         : see if gdbm_open exists
16241         set gdbm_open d_gdbm_open
16242         eval $inlibc
16243         case "$d_gdbm_open" in
16244         $undef)
16245                 t_gdbm="$undef"
16246                 echo "We won't be including <gdbm.h>"
16247                 ;;
16248         esac
16249         ;;
16250 esac
16251 val="$t_gdbm"
16252 set i_gdbm
16253 eval $setvar
16254
16255 echo " "
16256 echo "Looking for extensions..." >&4
16257 : If we are using the old config.sh, known_extensions may contain
16258 : old or inaccurate or duplicate values.
16259 known_extensions=''
16260 nonxs_extensions=''
16261 : We do not use find because it might not be available.
16262 : We do not just use MANIFEST because the user may have dropped
16263 : some additional extensions into the source tree and expect them
16264 : to be built.
16265
16266 : Function to recursively find available extensions, ignoring DynaLoader
16267 : NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
16268 find_extensions='
16269     for xxx in *; do
16270        case "$xxx" in
16271            DynaLoader|dynaload) ;;
16272            *)
16273            if $test -f $xxx/$xxx.xs; then
16274                known_extensions="$known_extensions $1$xxx";
16275            elif $test -f $xxx/Makefile.PL; then
16276                nonxs_extensions="$nonxs_extensions $1$xxx";
16277            else
16278                if $test -d $xxx -a $# -lt 10; then
16279                    set $1$xxx/ $*;
16280                    cd $xxx;
16281                    eval $find_extensions;
16282                    cd ..;
16283                    shift;
16284                fi;
16285            fi
16286            ;;
16287        esac;
16288     done'
16289 tdir=`pwd`
16290 cd $rsrc/ext
16291 set X
16292 shift
16293 eval $find_extensions
16294 set X $nonxs_extensions
16295 shift
16296 nonxs_extensions="$*"
16297 set X $known_extensions
16298 shift
16299 known_extensions="$*"
16300 cd $tdir
16301
16302 : Now see which are supported on this system.
16303 avail_ext=''
16304 for xxx in $known_extensions ; do
16305         case "$xxx" in
16306         DB_File|db_file)
16307                 case "$i_db" in
16308                 $define) avail_ext="$avail_ext $xxx" ;;
16309                 esac
16310                 ;;
16311         GDBM_File|gdbm_fil)
16312                 case "$i_gdbm" in 
16313                 $define) avail_ext="$avail_ext $xxx" ;;
16314                 esac
16315                 ;;
16316         I18N/Langinfo|i18n_lan)
16317                 case "$i_langinfo$d_nl_langinfo" in 
16318                 $define$define) avail_ext="$avail_ext $xxx" ;;
16319                 esac
16320                 ;;
16321         NDBM_File|ndbm_fil)
16322                 case "$i_ndbm" in
16323                 $define)
16324                     case "$osname-$use64bitint" in
16325                     cygwin-*|hpux-define)
16326                         case "$libs" in
16327                         *-lndbm*) avail_ext="$avail_ext $xxx" ;;
16328                         esac
16329                         ;;
16330                     *) avail_ext="$avail_ext $xxx" ;;
16331                     esac
16332                     ;;
16333                 esac
16334                 ;;
16335         ODBM_File|odbm_fil) 
16336                 case "${i_dbm}${i_rpcsvcdbm}" in
16337                 *"${define}"*)
16338                     case "$osname-$use64bitint" in
16339                     cygwin-*|hpux-define)
16340                         case "$libs" in
16341                         *-ldbm*) avail_ext="$avail_ext $xxx" ;;
16342                         esac
16343                         ;;
16344                     *) avail_ext="$avail_ext $xxx" ;;
16345                     esac
16346                     ;;
16347                 esac
16348                 ;;
16349         POSIX|posix)
16350                 case "$useposix" in
16351                 true|define|y) avail_ext="$avail_ext $xxx" ;;
16352                 esac
16353                 ;;
16354         Opcode|opcode)
16355                 case "$useopcode" in
16356                 true|define|y) avail_ext="$avail_ext $xxx" ;;
16357                 esac
16358                 ;;
16359         Socket|socket)
16360                 case "$d_socket" in 
16361                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
16362                 esac
16363                 ;;
16364         Sys/Syslog|sys/syslog)
16365                 : XXX syslog requires socket
16366                 case "$d_socket" in 
16367                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
16368                 esac
16369                 ;;
16370         Thread|thread)
16371                 case "$usethreads" in
16372                 true|$define|y)
16373                         case "$useithreads" in
16374                         $undef|false|[nN]*) avail_ext="$avail_ext $xxx" ;;
16375                         esac
16376                 esac
16377                 ;;
16378         IPC/SysV|ipc/sysv)
16379                 : XXX Do we need a useipcsysv variable here
16380                 case "${d_msg}${d_sem}${d_shm}" in 
16381                 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
16382                 esac
16383                 ;;
16384         *)      avail_ext="$avail_ext $xxx"
16385                 ;;
16386         esac
16387 done
16388
16389 set X $avail_ext
16390 shift
16391 avail_ext="$*"
16392
16393 : Now see which nonxs extensions are supported on this system.
16394 : For now assume all are.
16395 nonxs_ext=''
16396 for xxx in $nonxs_extensions ; do
16397         case "$xxx" in
16398         *)      nonxs_ext="$nonxs_ext $xxx"
16399                 ;;
16400         esac
16401 done
16402
16403 set X $nonxs_ext
16404 shift
16405 nonxs_ext="$*"
16406
16407 case $usedl in
16408 $define)
16409         $cat <<EOM
16410 A number of extensions are supplied with $package.  You may choose to
16411 compile these extensions for dynamic loading (the default), compile
16412 them into the $package executable (static loading), or not include
16413 them at all.  Answer "none" to include no extensions.
16414 Note that DynaLoader is always built and need not be mentioned here.
16415
16416 EOM
16417         case "$dynamic_ext" in
16418         '') dflt="$avail_ext" ;;
16419         *)      dflt="$dynamic_ext"
16420                 # Perhaps we are reusing an old out-of-date config.sh.
16421                 case "$hint" in
16422                 previous)
16423                         if test X"$dynamic_ext" != X"$avail_ext"; then
16424                                 $cat <<EOM
16425 NOTICE:  Your previous config.sh list may be incorrect. 
16426 The extensions now available to you are 
16427         ${avail_ext}
16428 but the default list from your previous config.sh is
16429         ${dynamic_ext} 
16430
16431 EOM
16432                         fi
16433                         ;;
16434                 esac
16435                 ;;
16436         esac
16437         case "$dflt" in
16438         '')     dflt=none;;
16439         esac
16440         rp="What extensions do you wish to load dynamically?"
16441         . ./myread
16442         case "$ans" in
16443         none) dynamic_ext=' ' ;;
16444         *) dynamic_ext="$ans" ;;
16445         esac
16446
16447         case "$static_ext" in
16448         '')
16449                 : Exclude those already listed in dynamic linking
16450                 dflt=''
16451                 for xxx in $avail_ext; do
16452                         case " $dynamic_ext " in
16453                         *" $xxx "*) ;;
16454                         *) dflt="$dflt $xxx" ;;
16455                         esac
16456                 done
16457                 set X $dflt
16458                 shift
16459                 dflt="$*"
16460                 ;;
16461         *)  dflt="$static_ext" 
16462                 ;;
16463         esac
16464
16465         case "$dflt" in
16466         '')     dflt=none;;
16467         esac
16468         rp="What extensions do you wish to load statically?"
16469         . ./myread
16470         case "$ans" in
16471         none) static_ext=' ' ;;
16472         *) static_ext="$ans" ;;
16473         esac
16474         ;;
16475 *)
16476         $cat <<EOM
16477 A number of extensions are supplied with $package.  Answer "none" 
16478 to include no extensions. 
16479 Note that DynaLoader is always built and need not be mentioned here.
16480
16481 EOM
16482         case "$static_ext" in
16483         '') dflt="$avail_ext" ;;
16484         *)      dflt="$static_ext"
16485                 # Perhaps we are reusing an old out-of-date config.sh.
16486                 case "$hint" in
16487                 previous)
16488                         if test X"$static_ext" != X"$avail_ext"; then
16489                                 $cat <<EOM
16490 NOTICE:  Your previous config.sh list may be incorrect. 
16491 The extensions now available to you are 
16492         ${avail_ext}
16493 but the default list from your previous config.sh is
16494         ${static_ext} 
16495
16496 EOM
16497                         fi
16498                         ;;
16499                 esac
16500                 ;;
16501         esac
16502         : Exclude those that are not xs extensions
16503         case "$dflt" in
16504         '')     dflt=none;;
16505         esac
16506         rp="What extensions do you wish to include?"
16507         . ./myread
16508         case "$ans" in
16509         none) static_ext=' ' ;;
16510         *) static_ext="$ans" ;;
16511         esac
16512         ;;
16513 esac
16514
16515 set X $dynamic_ext $static_ext $nonxs_ext
16516 shift
16517 extensions="$*"
16518
16519 : Remove libraries needed only for extensions
16520 : The appropriate ext/Foo/Makefile.PL will add them back in, if necessary.
16521 : The exception is SunOS 4.x, which needs them.
16522 case "${osname}X${osvers}" in
16523 sunos*X4*)
16524     perllibs="$libs"
16525     ;;
16526 *) case "$usedl" in
16527     $define|true|[yY]*)
16528             set X `echo " $libs " | sed -e 's@ -lndbm @ @' -e 's@ -lgdbm @ @' -e 's@ -ldbm @ @' -e 's@ -ldb @ @'` 
16529             shift
16530             perllibs="$*"
16531             ;;
16532     *)  perllibs="$libs"
16533             ;;
16534     esac
16535     ;;
16536 esac
16537
16538 : Remove build directory name from cppstdin so it can be used from
16539 : either the present location or the final installed location.
16540 echo " "
16541 : Get out of the UU directory to get correct path name.
16542 cd ..
16543 case "$cppstdin" in
16544 `pwd`/cppstdin)
16545         echo "Stripping down cppstdin path name"
16546         cppstdin=cppstdin
16547         ;;
16548 esac
16549 cd UU
16550
16551 : end of configuration questions
16552 echo " "
16553 echo "End of configuration questions."
16554 echo " "
16555
16556 : back to where it started
16557 if test -d ../UU; then
16558         cd ..
16559 fi
16560
16561 : configuration may be patched via a 'config.over' file
16562 if $test -f config.over; then
16563         echo " "
16564         dflt=y
16565         rp='I see a config.over file.  Do you wish to load it?'
16566         . UU/myread
16567         case "$ans" in
16568         n*) echo "OK, I'll ignore it.";;
16569         *)      . ./config.over
16570                 echo "Configuration override changes have been loaded."
16571                 ;;
16572         esac
16573 fi
16574
16575 : in case they want portability, strip down executable paths
16576 case "$d_portable" in
16577 "$define")
16578         echo " "
16579         echo "Stripping down executable paths..." >&4
16580         for file in $loclist $trylist; do
16581                 eval temp=\$$file
16582                 eval $file=`basename $temp`
16583         done
16584         ;;
16585 esac
16586
16587 : create config.sh file
16588 echo " "
16589 echo "Creating config.sh..." >&4
16590 $spitshell <<EOT >config.sh
16591 $startsh
16592 #
16593 # This file was produced by running the Configure script. It holds all the
16594 # definitions figured out by Configure. Should you modify one of these values,
16595 # do not forget to propagate your changes by running "Configure -der". You may
16596 # instead choose to run each of the .SH files by yourself, or "Configure -S".
16597 #
16598
16599 # Package name      : $package
16600 # Source directory  : $src
16601 # Configuration time: $cf_time
16602 # Configured by     : $cf_by
16603 # Target system     : $myuname
16604
16605 Author='$Author'
16606 Date='$Date'
16607 Header='$Header'
16608 Id='$Id'
16609 Locker='$Locker'
16610 Log='$Log'
16611 Mcc='$Mcc'
16612 RCSfile='$RCSfile'
16613 Revision='$Revision'
16614 Source='$Source'
16615 State='$State'
16616 _a='$_a'
16617 _exe='$_exe'
16618 _o='$_o'
16619 afs='$afs'
16620 afsroot='$afsroot'
16621 alignbytes='$alignbytes'
16622 ansi2knr='$ansi2knr'
16623 aphostname='$aphostname'
16624 api_revision='$api_revision'
16625 api_subversion='$api_subversion'
16626 api_version='$api_version'
16627 api_versionstring='$api_versionstring'
16628 ar='$ar'
16629 archlib='$archlib'
16630 archlibexp='$archlibexp'
16631 archname64='$archname64'
16632 archname='$archname'
16633 archobjs='$archobjs'
16634 awk='$awk'
16635 baserev='$baserev'
16636 bash='$bash'
16637 bin='$bin'
16638 bincompat5005='$bincompat5005'
16639 binexp='$binexp'
16640 bison='$bison'
16641 byacc='$byacc'
16642 byteorder='$byteorder'
16643 c='$c'
16644 castflags='$castflags'
16645 cat='$cat'
16646 cc='$cc'
16647 cccdlflags='$cccdlflags'
16648 ccdlflags='$ccdlflags'
16649 ccflags='$ccflags'
16650 ccflags_uselargefiles='$ccflags_uselargefiles'
16651 ccname='$ccname'
16652 ccsymbols='$ccsymbols'
16653 ccversion='$ccversion'
16654 cf_by='$cf_by'
16655 cf_email='$cf_email'
16656 cf_time='$cf_time'
16657 charsize='$charsize'
16658 chgrp='$chgrp'
16659 chmod='$chmod'
16660 chown='$chown'
16661 clocktype='$clocktype'
16662 comm='$comm'
16663 compress='$compress'
16664 contains='$contains'
16665 cp='$cp'
16666 cpio='$cpio'
16667 cpp='$cpp'
16668 cpp_stuff='$cpp_stuff'
16669 cppccsymbols='$cppccsymbols'
16670 cppflags='$cppflags'
16671 cpplast='$cpplast'
16672 cppminus='$cppminus'
16673 cpprun='$cpprun'
16674 cppstdin='$cppstdin'
16675 cppsymbols='$cppsymbols'
16676 cryptlib='$cryptlib'
16677 csh='$csh'
16678 d_Gconvert='$d_Gconvert'
16679 d_PRIEUldbl='$d_PRIEUldbl'
16680 d_PRIFUldbl='$d_PRIFUldbl'
16681 d_PRIGUldbl='$d_PRIGUldbl'
16682 d_PRIXU64='$d_PRIXU64'
16683 d_PRId64='$d_PRId64'
16684 d_PRIeldbl='$d_PRIeldbl'
16685 d_PRIfldbl='$d_PRIfldbl'
16686 d_PRIgldbl='$d_PRIgldbl'
16687 d_PRIi64='$d_PRIi64'
16688 d_PRIo64='$d_PRIo64'
16689 d_PRIu64='$d_PRIu64'
16690 d_PRIx64='$d_PRIx64'
16691 d_SCNfldbl='$d_SCNfldbl'
16692 d__fwalk='$d__fwalk'
16693 d_access='$d_access'
16694 d_accessx='$d_accessx'
16695 d_alarm='$d_alarm'
16696 d_archlib='$d_archlib'
16697 d_atolf='$d_atolf'
16698 d_atoll='$d_atoll'
16699 d_attribut='$d_attribut'
16700 d_bcmp='$d_bcmp'
16701 d_bcopy='$d_bcopy'
16702 d_bincompat5005='$d_bincompat5005'
16703 d_bsd='$d_bsd'
16704 d_bsdgetpgrp='$d_bsdgetpgrp'
16705 d_bsdsetpgrp='$d_bsdsetpgrp'
16706 d_bzero='$d_bzero'
16707 d_casti32='$d_casti32'
16708 d_castneg='$d_castneg'
16709 d_charvspr='$d_charvspr'
16710 d_chown='$d_chown'
16711 d_chroot='$d_chroot'
16712 d_chsize='$d_chsize'
16713 d_closedir='$d_closedir'
16714 d_cmsghdr_s='$d_cmsghdr_s'
16715 d_const='$d_const'
16716 d_crypt='$d_crypt'
16717 d_csh='$d_csh'
16718 d_cuserid='$d_cuserid'
16719 d_dbl_dig='$d_dbl_dig'
16720 d_dbminitproto='$d_dbminitproto'
16721 d_difftime='$d_difftime'
16722 d_dirnamlen='$d_dirnamlen'
16723 d_dlerror='$d_dlerror'
16724 d_dlopen='$d_dlopen'
16725 d_dlsymun='$d_dlsymun'
16726 d_dosuid='$d_dosuid'
16727 d_drand48proto='$d_drand48proto'
16728 d_dup2='$d_dup2'
16729 d_eaccess='$d_eaccess'
16730 d_endgrent='$d_endgrent'
16731 d_endhent='$d_endhent'
16732 d_endnent='$d_endnent'
16733 d_endpent='$d_endpent'
16734 d_endpwent='$d_endpwent'
16735 d_endsent='$d_endsent'
16736 d_eofnblk='$d_eofnblk'
16737 d_eunice='$d_eunice'
16738 d_fchdir='$d_fchdir'
16739 d_fchmod='$d_fchmod'
16740 d_fchown='$d_fchown'
16741 d_fcntl='$d_fcntl'
16742 d_fcntl_can_lock='$d_fcntl_can_lock'
16743 d_fd_macros='$d_fd_macros'
16744 d_fd_set='$d_fd_set'
16745 d_fds_bits='$d_fds_bits'
16746 d_fgetpos='$d_fgetpos'
16747 d_flexfnam='$d_flexfnam'
16748 d_flock='$d_flock'
16749 d_flockproto='$d_flockproto'
16750 d_fork='$d_fork'
16751 d_fpathconf='$d_fpathconf'
16752 d_fpos64_t='$d_fpos64_t'
16753 d_frexpl='$d_frexpl'
16754 d_fs_data_s='$d_fs_data_s'
16755 d_fseeko='$d_fseeko'
16756 d_fsetpos='$d_fsetpos'
16757 d_fstatfs='$d_fstatfs'
16758 d_fstatvfs='$d_fstatvfs'
16759 d_fsync='$d_fsync'
16760 d_ftello='$d_ftello'
16761 d_ftime='$d_ftime'
16762 d_getcwd='$d_getcwd'
16763 d_getespwnam='$d_getespwnam'
16764 d_getfsstat='$d_getfsstat'
16765 d_getgrent='$d_getgrent'
16766 d_getgrps='$d_getgrps'
16767 d_gethbyaddr='$d_gethbyaddr'
16768 d_gethbyname='$d_gethbyname'
16769 d_gethent='$d_gethent'
16770 d_gethname='$d_gethname'
16771 d_gethostprotos='$d_gethostprotos'
16772 d_getitimer='$d_getitimer'
16773 d_getlogin='$d_getlogin'
16774 d_getmnt='$d_getmnt'
16775 d_getmntent='$d_getmntent'
16776 d_getnbyaddr='$d_getnbyaddr'
16777 d_getnbyname='$d_getnbyname'
16778 d_getnent='$d_getnent'
16779 d_getnetprotos='$d_getnetprotos'
16780 d_getpagsz='$d_getpagsz'
16781 d_getpbyname='$d_getpbyname'
16782 d_getpbynumber='$d_getpbynumber'
16783 d_getpent='$d_getpent'
16784 d_getpgid='$d_getpgid'
16785 d_getpgrp2='$d_getpgrp2'
16786 d_getpgrp='$d_getpgrp'
16787 d_getppid='$d_getppid'
16788 d_getprior='$d_getprior'
16789 d_getprotoprotos='$d_getprotoprotos'
16790 d_getprpwnam='$d_getprpwnam'
16791 d_getpwent='$d_getpwent'
16792 d_getsbyname='$d_getsbyname'
16793 d_getsbyport='$d_getsbyport'
16794 d_getsent='$d_getsent'
16795 d_getservprotos='$d_getservprotos'
16796 d_getspnam='$d_getspnam'
16797 d_gettimeod='$d_gettimeod'
16798 d_gnulibc='$d_gnulibc'
16799 d_grpasswd='$d_grpasswd'
16800 d_hasmntopt='$d_hasmntopt'
16801 d_htonl='$d_htonl'
16802 d_iconv='$d_iconv'
16803 d_index='$d_index'
16804 d_inetaton='$d_inetaton'
16805 d_int64_t='$d_int64_t'
16806 d_isascii='$d_isascii'
16807 d_isnan='$d_isnan'
16808 d_isnanl='$d_isnanl'
16809 d_killpg='$d_killpg'
16810 d_lchown='$d_lchown'
16811 d_ldbl_dig='$d_ldbl_dig'
16812 d_link='$d_link'
16813 d_locconv='$d_locconv'
16814 d_lockf='$d_lockf'
16815 d_longdbl='$d_longdbl'
16816 d_longlong='$d_longlong'
16817 d_lseekproto='$d_lseekproto'
16818 d_lstat='$d_lstat'
16819 d_madvise='$d_madvise'
16820 d_mblen='$d_mblen'
16821 d_mbstowcs='$d_mbstowcs'
16822 d_mbtowc='$d_mbtowc'
16823 d_memchr='$d_memchr'
16824 d_memcmp='$d_memcmp'
16825 d_memcpy='$d_memcpy'
16826 d_memmove='$d_memmove'
16827 d_memset='$d_memset'
16828 d_mkdir='$d_mkdir'
16829 d_mkdtemp='$d_mkdtemp'
16830 d_mkfifo='$d_mkfifo'
16831 d_mkstemp='$d_mkstemp'
16832 d_mkstemps='$d_mkstemps'
16833 d_mktime='$d_mktime'
16834 d_mmap='$d_mmap'
16835 d_modfl='$d_modfl'
16836 d_modfl_pow32_bug='$d_modfl_pow32_bug'
16837 d_mprotect='$d_mprotect'
16838 d_msg='$d_msg'
16839 d_msg_ctrunc='$d_msg_ctrunc'
16840 d_msg_dontroute='$d_msg_dontroute'
16841 d_msg_oob='$d_msg_oob'
16842 d_msg_peek='$d_msg_peek'
16843 d_msg_proxy='$d_msg_proxy'
16844 d_msgctl='$d_msgctl'
16845 d_msgget='$d_msgget'
16846 d_msghdr_s='$d_msghdr_s'
16847 d_msgrcv='$d_msgrcv'
16848 d_msgsnd='$d_msgsnd'
16849 d_msync='$d_msync'
16850 d_munmap='$d_munmap'
16851 d_mymalloc='$d_mymalloc'
16852 d_nice='$d_nice'
16853 d_nl_langinfo='$d_nl_langinfo'
16854 d_nv_preserves_uv='$d_nv_preserves_uv'
16855 d_nv_preserves_uv_bits='$d_nv_preserves_uv_bits'
16856 d_off64_t='$d_off64_t'
16857 d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
16858 d_oldpthreads='$d_oldpthreads'
16859 d_oldsock='$d_oldsock'
16860 d_open3='$d_open3'
16861 d_pathconf='$d_pathconf'
16862 d_pause='$d_pause'
16863 d_perl_otherlibdirs='$d_perl_otherlibdirs'
16864 d_phostname='$d_phostname'
16865 d_pipe='$d_pipe'
16866 d_poll='$d_poll'
16867 d_portable='$d_portable'
16868 d_pthread_atfork='$d_pthread_atfork'
16869 d_pthread_yield='$d_pthread_yield'
16870 d_pwage='$d_pwage'
16871 d_pwchange='$d_pwchange'
16872 d_pwclass='$d_pwclass'
16873 d_pwcomment='$d_pwcomment'
16874 d_pwexpire='$d_pwexpire'
16875 d_pwgecos='$d_pwgecos'
16876 d_pwpasswd='$d_pwpasswd'
16877 d_pwquota='$d_pwquota'
16878 d_qgcvt='$d_qgcvt'
16879 d_quad='$d_quad'
16880 d_readdir='$d_readdir'
16881 d_readlink='$d_readlink'
16882 d_readv='$d_readv'
16883 d_recvmsg='$d_recvmsg'
16884 d_rename='$d_rename'
16885 d_rewinddir='$d_rewinddir'
16886 d_rmdir='$d_rmdir'
16887 d_safebcpy='$d_safebcpy'
16888 d_safemcpy='$d_safemcpy'
16889 d_sanemcmp='$d_sanemcmp'
16890 d_sbrkproto='$d_sbrkproto'
16891 d_sched_yield='$d_sched_yield'
16892 d_scm_rights='$d_scm_rights'
16893 d_seekdir='$d_seekdir'
16894 d_select='$d_select'
16895 d_sem='$d_sem'
16896 d_semctl='$d_semctl'
16897 d_semctl_semid_ds='$d_semctl_semid_ds'
16898 d_semctl_semun='$d_semctl_semun'
16899 d_semget='$d_semget'
16900 d_semop='$d_semop'
16901 d_sendmsg='$d_sendmsg'
16902 d_setegid='$d_setegid'
16903 d_seteuid='$d_seteuid'
16904 d_setgrent='$d_setgrent'
16905 d_setgrps='$d_setgrps'
16906 d_sethent='$d_sethent'
16907 d_setitimer='$d_setitimer'
16908 d_setlinebuf='$d_setlinebuf'
16909 d_setlocale='$d_setlocale'
16910 d_setnent='$d_setnent'
16911 d_setpent='$d_setpent'
16912 d_setpgid='$d_setpgid'
16913 d_setpgrp2='$d_setpgrp2'
16914 d_setpgrp='$d_setpgrp'
16915 d_setprior='$d_setprior'
16916 d_setproctitle='$d_setproctitle'
16917 d_setpwent='$d_setpwent'
16918 d_setregid='$d_setregid'
16919 d_setresgid='$d_setresgid'
16920 d_setresuid='$d_setresuid'
16921 d_setreuid='$d_setreuid'
16922 d_setrgid='$d_setrgid'
16923 d_setruid='$d_setruid'
16924 d_setsent='$d_setsent'
16925 d_setsid='$d_setsid'
16926 d_setvbuf='$d_setvbuf'
16927 d_sfio='$d_sfio'
16928 d_shm='$d_shm'
16929 d_shmat='$d_shmat'
16930 d_shmatprototype='$d_shmatprototype'
16931 d_shmctl='$d_shmctl'
16932 d_shmdt='$d_shmdt'
16933 d_shmget='$d_shmget'
16934 d_sigaction='$d_sigaction'
16935 d_sigprocmask='$d_sigprocmask'
16936 d_sigsetjmp='$d_sigsetjmp'
16937 d_sockatmark='$d_sockatmark'
16938 d_sockatmarkproto='$d_sockatmarkproto'
16939 d_socket='$d_socket'
16940 d_socklen_t='$d_socklen_t'
16941 d_sockpair='$d_sockpair'
16942 d_socks5_init='$d_socks5_init'
16943 d_sqrtl='$d_sqrtl'
16944 d_sresgproto='$d_sresgproto'
16945 d_sresuproto='$d_sresuproto'
16946 d_statblks='$d_statblks'
16947 d_statfs_f_flags='$d_statfs_f_flags'
16948 d_statfs_s='$d_statfs_s'
16949 d_statvfs='$d_statvfs'
16950 d_stdio_cnt_lval='$d_stdio_cnt_lval'
16951 d_stdio_ptr_lval='$d_stdio_ptr_lval'
16952 d_stdio_ptr_lval_nochange_cnt='$d_stdio_ptr_lval_nochange_cnt'
16953 d_stdio_ptr_lval_sets_cnt='$d_stdio_ptr_lval_sets_cnt'
16954 d_stdio_stream_array='$d_stdio_stream_array'
16955 d_stdiobase='$d_stdiobase'
16956 d_stdstdio='$d_stdstdio'
16957 d_strchr='$d_strchr'
16958 d_strcoll='$d_strcoll'
16959 d_strctcpy='$d_strctcpy'
16960 d_strerrm='$d_strerrm'
16961 d_strerror='$d_strerror'
16962 d_strftime='$d_strftime'
16963 d_strtod='$d_strtod'
16964 d_strtol='$d_strtol'
16965 d_strtold='$d_strtold'
16966 d_strtoll='$d_strtoll'
16967 d_strtoq='$d_strtoq'
16968 d_strtoul='$d_strtoul'
16969 d_strtoull='$d_strtoull'
16970 d_strtouq='$d_strtouq'
16971 d_strxfrm='$d_strxfrm'
16972 d_suidsafe='$d_suidsafe'
16973 d_symlink='$d_symlink'
16974 d_syscall='$d_syscall'
16975 d_syscallproto='$d_syscallproto'
16976 d_sysconf='$d_sysconf'
16977 d_sysernlst='$d_sysernlst'
16978 d_syserrlst='$d_syserrlst'
16979 d_system='$d_system'
16980 d_tcgetpgrp='$d_tcgetpgrp'
16981 d_tcsetpgrp='$d_tcsetpgrp'
16982 d_telldir='$d_telldir'
16983 d_telldirproto='$d_telldirproto'
16984 d_time='$d_time'
16985 d_times='$d_times'
16986 d_truncate='$d_truncate'
16987 d_tzname='$d_tzname'
16988 d_u32align='$d_u32align'
16989 d_ualarm='$d_ualarm'
16990 d_umask='$d_umask'
16991 d_uname='$d_uname'
16992 d_union_semun='$d_union_semun'
16993 d_usleep='$d_usleep'
16994 d_usleepproto='$d_usleepproto'
16995 d_ustat='$d_ustat'
16996 d_vendorarch='$d_vendorarch'
16997 d_vendorbin='$d_vendorbin'
16998 d_vendorlib='$d_vendorlib'
16999 d_vfork='$d_vfork'
17000 d_void_closedir='$d_void_closedir'
17001 d_voidsig='$d_voidsig'
17002 d_voidtty='$d_voidtty'
17003 d_volatile='$d_volatile'
17004 d_vprintf='$d_vprintf'
17005 d_wait4='$d_wait4'
17006 d_waitpid='$d_waitpid'
17007 d_wcstombs='$d_wcstombs'
17008 d_wctomb='$d_wctomb'
17009 d_writev='$d_writev'
17010 d_xenix='$d_xenix'
17011 date='$date'
17012 db_hashtype='$db_hashtype'
17013 db_prefixtype='$db_prefixtype'
17014 db_version_major='$db_version_major'
17015 db_version_minor='$db_version_minor'
17016 db_version_patch='$db_version_patch'
17017 defvoidused='$defvoidused'
17018 direntrytype='$direntrytype'
17019 dlext='$dlext'
17020 dlsrc='$dlsrc'
17021 doublesize='$doublesize'
17022 drand01='$drand01'
17023 dynamic_ext='$dynamic_ext'
17024 eagain='$eagain'
17025 ebcdic='$ebcdic'
17026 echo='$echo'
17027 egrep='$egrep'
17028 emacs='$emacs'
17029 eunicefix='$eunicefix'
17030 exe_ext='$exe_ext'
17031 expr='$expr'
17032 extensions='$extensions'
17033 extras='$extras'
17034 fflushNULL='$fflushNULL'
17035 fflushall='$fflushall'
17036 find='$find'
17037 firstmakefile='$firstmakefile'
17038 flex='$flex'
17039 fpossize='$fpossize'
17040 fpostype='$fpostype'
17041 freetype='$freetype'
17042 from='$from'
17043 full_ar='$full_ar'
17044 full_csh='$full_csh'
17045 full_sed='$full_sed'
17046 gccosandvers='$gccosandvers'
17047 gccversion='$gccversion'
17048 gidformat='$gidformat'
17049 gidsign='$gidsign'
17050 gidsize='$gidsize'
17051 gidtype='$gidtype'
17052 glibpth='$glibpth'
17053 grep='$grep'
17054 groupcat='$groupcat'
17055 groupstype='$groupstype'
17056 gzip='$gzip'
17057 h_fcntl='$h_fcntl'
17058 h_sysfile='$h_sysfile'
17059 hint='$hint'
17060 hostcat='$hostcat'
17061 i16size='$i16size'
17062 i16type='$i16type'
17063 i32size='$i32size'
17064 i32type='$i32type'
17065 i64size='$i64size'
17066 i64type='$i64type'
17067 i8size='$i8size'
17068 i8type='$i8type'
17069 i_arpainet='$i_arpainet'
17070 i_bsdioctl='$i_bsdioctl'
17071 i_db='$i_db'
17072 i_dbm='$i_dbm'
17073 i_dirent='$i_dirent'
17074 i_dld='$i_dld'
17075 i_dlfcn='$i_dlfcn'
17076 i_fcntl='$i_fcntl'
17077 i_float='$i_float'
17078 i_gdbm='$i_gdbm'
17079 i_grp='$i_grp'
17080 i_iconv='$i_iconv'
17081 i_ieeefp='$i_ieeefp'
17082 i_inttypes='$i_inttypes'
17083 i_langinfo='$i_langinfo'
17084 i_libutil='$i_libutil'
17085 i_limits='$i_limits'
17086 i_locale='$i_locale'
17087 i_machcthr='$i_machcthr'
17088 i_malloc='$i_malloc'
17089 i_math='$i_math'
17090 i_memory='$i_memory'
17091 i_mntent='$i_mntent'
17092 i_ndbm='$i_ndbm'
17093 i_netdb='$i_netdb'
17094 i_neterrno='$i_neterrno'
17095 i_netinettcp='$i_netinettcp'
17096 i_niin='$i_niin'
17097 i_poll='$i_poll'
17098 i_prot='$i_prot'
17099 i_pthread='$i_pthread'
17100 i_pwd='$i_pwd'
17101 i_rpcsvcdbm='$i_rpcsvcdbm'
17102 i_sfio='$i_sfio'
17103 i_sgtty='$i_sgtty'
17104 i_shadow='$i_shadow'
17105 i_socks='$i_socks'
17106 i_stdarg='$i_stdarg'
17107 i_stddef='$i_stddef'
17108 i_stdlib='$i_stdlib'
17109 i_string='$i_string'
17110 i_sunmath='$i_sunmath'
17111 i_sysaccess='$i_sysaccess'
17112 i_sysdir='$i_sysdir'
17113 i_sysfile='$i_sysfile'
17114 i_sysfilio='$i_sysfilio'
17115 i_sysin='$i_sysin'
17116 i_sysioctl='$i_sysioctl'
17117 i_syslog='$i_syslog'
17118 i_sysmman='$i_sysmman'
17119 i_sysmode='$i_sysmode'
17120 i_sysmount='$i_sysmount'
17121 i_sysndir='$i_sysndir'
17122 i_sysparam='$i_sysparam'
17123 i_sysresrc='$i_sysresrc'
17124 i_syssecrt='$i_syssecrt'
17125 i_sysselct='$i_sysselct'
17126 i_syssockio='$i_syssockio'
17127 i_sysstat='$i_sysstat'
17128 i_sysstatfs='$i_sysstatfs'
17129 i_sysstatvfs='$i_sysstatvfs'
17130 i_systime='$i_systime'
17131 i_systimek='$i_systimek'
17132 i_systimes='$i_systimes'
17133 i_systypes='$i_systypes'
17134 i_sysuio='$i_sysuio'
17135 i_sysun='$i_sysun'
17136 i_sysutsname='$i_sysutsname'
17137 i_sysvfs='$i_sysvfs'
17138 i_syswait='$i_syswait'
17139 i_termio='$i_termio'
17140 i_termios='$i_termios'
17141 i_time='$i_time'
17142 i_unistd='$i_unistd'
17143 i_ustat='$i_ustat'
17144 i_utime='$i_utime'
17145 i_values='$i_values'
17146 i_varargs='$i_varargs'
17147 i_varhdr='$i_varhdr'
17148 i_vfork='$i_vfork'
17149 ignore_versioned_solibs='$ignore_versioned_solibs'
17150 inc_version_list='$inc_version_list'
17151 inc_version_list_init='$inc_version_list_init'
17152 incpath='$incpath'
17153 inews='$inews'
17154 installarchlib='$installarchlib'
17155 installbin='$installbin'
17156 installman1dir='$installman1dir'
17157 installman3dir='$installman3dir'
17158 installprefix='$installprefix'
17159 installprefixexp='$installprefixexp'
17160 installprivlib='$installprivlib'
17161 installscript='$installscript'
17162 installsitearch='$installsitearch'
17163 installsitebin='$installsitebin'
17164 installsitelib='$installsitelib'
17165 installstyle='$installstyle'
17166 installusrbinperl='$installusrbinperl'
17167 installvendorarch='$installvendorarch'
17168 installvendorbin='$installvendorbin'
17169 installvendorlib='$installvendorlib'
17170 intsize='$intsize'
17171 issymlink='$issymlink'
17172 ivdformat='$ivdformat'
17173 ivsize='$ivsize'
17174 ivtype='$ivtype'
17175 known_extensions='$known_extensions'
17176 ksh='$ksh'
17177 ld='$ld'
17178 lddlflags='$lddlflags'
17179 ldflags='$ldflags'
17180 ldflags_uselargefiles='$ldflags_uselargefiles'
17181 ldlibpthname='$ldlibpthname'
17182 less='$less'
17183 lib_ext='$lib_ext'
17184 libc='$libc'
17185 libperl='$libperl'
17186 libpth='$libpth'
17187 libs='$libs'
17188 libsdirs='$libsdirs'
17189 libsfiles='$libsfiles'
17190 libsfound='$libsfound'
17191 libspath='$libspath'
17192 libswanted='$libswanted'
17193 libswanted_uselargefiles='$libswanted_uselargefiles'
17194 line='$line'
17195 lint='$lint'
17196 lkflags='$lkflags'
17197 ln='$ln'
17198 lns='$lns'
17199 locincpth='$locincpth'
17200 loclibpth='$loclibpth'
17201 longdblsize='$longdblsize'
17202 longlongsize='$longlongsize'
17203 longsize='$longsize'
17204 lp='$lp'
17205 lpr='$lpr'
17206 ls='$ls'
17207 lseeksize='$lseeksize'
17208 lseektype='$lseektype'
17209 mail='$mail'
17210 mailx='$mailx'
17211 make='$make'
17212 make_set_make='$make_set_make'
17213 mallocobj='$mallocobj'
17214 mallocsrc='$mallocsrc'
17215 malloctype='$malloctype'
17216 man1dir='$man1dir'
17217 man1direxp='$man1direxp'
17218 man1ext='$man1ext'
17219 man3dir='$man3dir'
17220 man3direxp='$man3direxp'
17221 man3ext='$man3ext'
17222 mips_type='$mips_type'
17223 mkdir='$mkdir'
17224 mmaptype='$mmaptype'
17225 modetype='$modetype'
17226 more='$more'
17227 multiarch='$multiarch'
17228 mv='$mv'
17229 myarchname='$myarchname'
17230 mydomain='$mydomain'
17231 myhostname='$myhostname'
17232 myuname='$myuname'
17233 n='$n'
17234 need_va_copy='$need_va_copy'
17235 netdb_hlen_type='$netdb_hlen_type'
17236 netdb_host_type='$netdb_host_type'
17237 netdb_name_type='$netdb_name_type'
17238 netdb_net_type='$netdb_net_type'
17239 nm='$nm'
17240 nm_opt='$nm_opt'
17241 nm_so_opt='$nm_so_opt'
17242 nonxs_ext='$nonxs_ext'
17243 nroff='$nroff'
17244 nvEUformat='$nvEUformat'
17245 nvFUformat='$nvFUformat'
17246 nvGUformat='$nvGUformat'
17247 nveformat='$nveformat'
17248 nvfformat='$nvfformat'
17249 nvgformat='$nvgformat'
17250 nvsize='$nvsize'
17251 nvtype='$nvtype'
17252 o_nonblock='$o_nonblock'
17253 obj_ext='$obj_ext'
17254 old_pthread_create_joinable='$old_pthread_create_joinable'
17255 optimize='$optimize'
17256 orderlib='$orderlib'
17257 osname='$osname'
17258 osvers='$osvers'
17259 otherlibdirs='$otherlibdirs'
17260 package='$package'
17261 pager='$pager'
17262 passcat='$passcat'
17263 patchlevel='$patchlevel'
17264 path_sep='$path_sep'
17265 perl5='$perl5'
17266 perl='$perl'
17267 perl_patchlevel='$perl_patchlevel'
17268 perladmin='$perladmin'
17269 perllibs='$perllibs'
17270 perlpath='$perlpath'
17271 pg='$pg'
17272 phostname='$phostname'
17273 pidtype='$pidtype'
17274 plibpth='$plibpth'
17275 pm_apiversion='$pm_apiversion'
17276 pmake='$pmake'
17277 pr='$pr'
17278 prefix='$prefix'
17279 prefixexp='$prefixexp'
17280 privlib='$privlib'
17281 privlibexp='$privlibexp'
17282 prototype='$prototype'
17283 ptrsize='$ptrsize'
17284 quadkind='$quadkind'
17285 quadtype='$quadtype'
17286 randbits='$randbits'
17287 randfunc='$randfunc'
17288 randseedtype='$randseedtype'
17289 ranlib='$ranlib'
17290 rd_nodata='$rd_nodata'
17291 revision='$revision'
17292 rm='$rm'
17293 rmail='$rmail'
17294 run='$run'
17295 runnm='$runnm'
17296 sPRIEUldbl='$sPRIEUldbl'
17297 sPRIFUldbl='$sPRIFUldbl'
17298 sPRIGUldbl='$sPRIGUldbl'
17299 sPRIXU64='$sPRIXU64'
17300 sPRId64='$sPRId64'
17301 sPRIeldbl='$sPRIeldbl'
17302 sPRIfldbl='$sPRIfldbl'
17303 sPRIgldbl='$sPRIgldbl'
17304 sPRIi64='$sPRIi64'
17305 sPRIo64='$sPRIo64'
17306 sPRIu64='$sPRIu64'
17307 sPRIx64='$sPRIx64'
17308 sSCNfldbl='$sSCNfldbl'
17309 sched_yield='$sched_yield'
17310 scriptdir='$scriptdir'
17311 scriptdirexp='$scriptdirexp'
17312 sed='$sed'
17313 seedfunc='$seedfunc'
17314 selectminbits='$selectminbits'
17315 selecttype='$selecttype'
17316 sendmail='$sendmail'
17317 sh='$sh'
17318 shar='$shar'
17319 sharpbang='$sharpbang'
17320 shmattype='$shmattype'
17321 shortsize='$shortsize'
17322 shrpenv='$shrpenv'
17323 shsharp='$shsharp'
17324 sig_count='$sig_count'
17325 sig_name='$sig_name'
17326 sig_name_init='$sig_name_init'
17327 sig_num='$sig_num'
17328 sig_num_init='$sig_num_init'
17329 sig_size='$sig_size'
17330 signal_t='$signal_t'
17331 sitearch='$sitearch'
17332 sitearchexp='$sitearchexp'
17333 sitebin='$sitebin'
17334 sitebinexp='$sitebinexp'
17335 sitelib='$sitelib'
17336 sitelib_stem='$sitelib_stem'
17337 sitelibexp='$sitelibexp'
17338 siteprefix='$siteprefix'
17339 siteprefixexp='$siteprefixexp'
17340 sizesize='$sizesize'
17341 sizetype='$sizetype'
17342 sleep='$sleep'
17343 smail='$smail'
17344 so='$so'
17345 sockethdr='$sockethdr'
17346 socketlib='$socketlib'
17347 socksizetype='$socksizetype'
17348 sort='$sort'
17349 spackage='$spackage'
17350 spitshell='$spitshell'
17351 src='$src'
17352 ssizetype='$ssizetype'
17353 startperl='$startperl'
17354 startsh='$startsh'
17355 static_ext='$static_ext'
17356 stdchar='$stdchar'
17357 stdio_base='$stdio_base'
17358 stdio_bufsiz='$stdio_bufsiz'
17359 stdio_cnt='$stdio_cnt'
17360 stdio_filbuf='$stdio_filbuf'
17361 stdio_ptr='$stdio_ptr'
17362 stdio_stream_array='$stdio_stream_array'
17363 strings='$strings'
17364 submit='$submit'
17365 subversion='$subversion'
17366 sysman='$sysman'
17367 tail='$tail'
17368 tar='$tar'
17369 targetarch='$targetarch'
17370 tbl='$tbl'
17371 tee='$tee'
17372 test='$test'
17373 timeincl='$timeincl'
17374 timetype='$timetype'
17375 to='$to'
17376 touch='$touch'
17377 tr='$tr'
17378 trnl='$trnl'
17379 troff='$troff'
17380 u16size='$u16size'
17381 u16type='$u16type'
17382 u32size='$u32size'
17383 u32type='$u32type'
17384 u64size='$u64size'
17385 u64type='$u64type'
17386 u8size='$u8size'
17387 u8type='$u8type'
17388 uidformat='$uidformat'
17389 uidsign='$uidsign'
17390 uidsize='$uidsize'
17391 uidtype='$uidtype'
17392 uname='$uname'
17393 uniq='$uniq'
17394 uquadtype='$uquadtype'
17395 use5005threads='$use5005threads'
17396 use64bitall='$use64bitall'
17397 use64bitint='$use64bitint'
17398 usecrosscompile='$usecrosscompile'
17399 usedl='$usedl'
17400 useithreads='$useithreads'
17401 uselargefiles='$uselargefiles'
17402 uselongdouble='$uselongdouble'
17403 usemorebits='$usemorebits'
17404 usemultiplicity='$usemultiplicity'
17405 usemymalloc='$usemymalloc'
17406 usenm='$usenm'
17407 useopcode='$useopcode'
17408 useperlio='$useperlio'
17409 useposix='$useposix'
17410 usereentrant='$usereentrant'
17411 usesfio='$usesfio'
17412 useshrplib='$useshrplib'
17413 usesocks='$usesocks'
17414 usethreads='$usethreads'
17415 usevendorprefix='$usevendorprefix'
17416 usevfork='$usevfork'
17417 usrinc='$usrinc'
17418 uuname='$uuname'
17419 uvXUformat='$uvXUformat'
17420 uvoformat='$uvoformat'
17421 uvsize='$uvsize'
17422 uvtype='$uvtype'
17423 uvuformat='$uvuformat'
17424 uvxformat='$uvxformat'
17425 vendorarch='$vendorarch'
17426 vendorarchexp='$vendorarchexp'
17427 vendorbin='$vendorbin'
17428 vendorbinexp='$vendorbinexp'
17429 vendorlib='$vendorlib'
17430 vendorlib_stem='$vendorlib_stem'
17431 vendorlibexp='$vendorlibexp'
17432 vendorprefix='$vendorprefix'
17433 vendorprefixexp='$vendorprefixexp'
17434 version='$version'
17435 version_patchlevel_string='$version_patchlevel_string'
17436 versiononly='$versiononly'
17437 vi='$vi'
17438 voidflags='$voidflags'
17439 xlibpth='$xlibpth'
17440 xs_apiversion='$xs_apiversion'
17441 yacc='$yacc'
17442 yaccflags='$yaccflags'
17443 zcat='$zcat'
17444 zip='$zip'
17445 EOT
17446
17447 : Add in command line options if available
17448 $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
17449
17450 : add special variables
17451 $test -f $src/patchlevel.h && \
17452 awk '/^#define[         ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
17453 echo "PERL_PATCHLEVEL=$perl_patchlevel" >>config.sh
17454 echo "PERL_CONFIG_SH=true" >>config.sh
17455
17456 : propagate old symbols
17457 if $test -f UU/config.sh; then
17458         <UU/config.sh $sort | $uniq >UU/oldconfig.sh
17459         sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
17460         $sort | $uniq -u >UU/oldsyms
17461         set X `cat UU/oldsyms`
17462         shift
17463         case $# in
17464         0) ;;
17465         *)
17466                 cat <<EOM
17467 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
17468 EOM
17469                 echo "# Variables propagated from previous config.sh file." >>config.sh
17470                 for sym in `cat UU/oldsyms`; do
17471                         echo "    Propagating $hint variable "'$'"$sym..."
17472                         eval 'tmp="$'"${sym}"'"'
17473                         echo "$tmp" | \
17474                                 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
17475                 done
17476                 ;;
17477         esac
17478 fi
17479
17480 : Finish up by extracting the .SH files
17481 case "$alldone" in
17482 exit)
17483         $rm -rf UU
17484         echo "Extraction done."
17485         exit 0
17486         ;;
17487 cont)
17488         ;;
17489 '')
17490         dflt=''
17491         nostick=true
17492         $cat <<EOM
17493
17494 If you'd like to make any changes to the config.sh file before I begin
17495 to configure things, do it as a shell escape now (e.g. !vi config.sh).
17496
17497 EOM
17498         rp="Press return or use a shell escape to edit config.sh:"
17499         . UU/myread
17500         nostick=''
17501         case "$ans" in
17502         '') ;;
17503         *) : in case they cannot read
17504                 sh 1>&4 -c "$ans";;
17505         esac
17506         ;;
17507 esac
17508
17509 : if this fails, just run all the .SH files by hand
17510 . ./config.sh
17511
17512 echo " "
17513 exec 1>&4
17514 pwd=`pwd`
17515 . ./UU/extract
17516 cd $pwd
17517
17518 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
17519         dflt=y
17520         case "$silent" in
17521         true) ;;
17522         *)
17523                 $cat <<EOM
17524
17525 Now you need to generate make dependencies by running "$make depend".
17526 You might prefer to run it in background: "$make depend > makedepend.out &"
17527 It can take a while, so you might not want to run it right now.
17528
17529 EOM
17530                 ;;
17531         esac
17532         rp="Run $make depend now?"
17533         . UU/myread
17534         case "$ans" in
17535         y*)
17536                 $make depend && echo "Now you must run '$make'."
17537                 ;;
17538         *)
17539                 echo "You must run '$make depend' then '$make'."
17540                 ;;
17541         esac
17542 elif test -f [Mm]akefile; then
17543         echo " "
17544         echo "Now you must run a $make."
17545 else
17546         echo "Configure done."
17547 fi
17548
17549 if $test -f Policy.sh; then
17550     $cat <<EOM
17551
17552 If you compile $package on a different machine or from a different object
17553 directory, copy the Policy.sh file from this object directory to the
17554 new one before you run Configure -- this will help you with most of
17555 the policy defaults.
17556
17557 EOM
17558 fi
17559 if $test -f config.msg; then
17560     echo "Hmm.  I also noted the following information while running:"
17561     echo " "
17562     $cat config.msg >&4
17563     $rm -f config.msg
17564 fi
17565 $rm -f kit*isdone ark*isdone
17566 $rm -rf UU
17567
17568 : End of Configure
17569