Fix the sys/fcntl.h problem reported by Peter Prymmer.
[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 Wed Feb 21 17:01:28 EET 2001 [metaconfig 3.0 PL70]
24 # (with additional metaconfig patches by perlbug@perl.org)
25
26 cat >c1$$ <<EOF
27 ARGGGHHHH!!!!!
28
29 SCO csh still thinks true is false.  Write to SCO today and tell them that next
30 year Configure ought to "rm /bin/csh" unless they fix their blasted shell. :-)
31
32 (Actually, Configure ought to just patch csh in place.  Hmm.  Hmmmmm.  All
33 we'd have to do is go in and swap the && and || tokens, wherever they are.)
34
35 [End of diatribe. We now return you to your regularly scheduled programming...]
36 EOF
37 cat >c2$$ <<EOF
38
39 OOPS!  You naughty creature!  You didn't run Configure with sh!
40 I will attempt to remedy the situation by running sh for you...
41 EOF
42
43 true || cat c1$$ c2$$
44 true || exec sh $0 $argv:q
45
46 (exit $?0) || cat c2$$
47 (exit $?0) || exec sh $0 $argv:q
48 rm -f c1$$ c2$$
49
50 : compute my invocation name
51 me=$0
52 case "$0" in
53 */*)
54         me=`echo $0 | sed -e 's!.*/\(.*\)!\1!' 2>/dev/null`
55         test "$me" || me=$0
56         ;;
57 esac
58
59 : Proper separator for the PATH environment variable
60 p_=:
61 : On OS/2 this directory should exist if this is not floppy only system :-]
62 if test -d c:/. ; then
63     if test -n "$OS2_SHELL"; then
64                 p_=\;
65                 PATH=`cmd /c "echo %PATH%" | tr '\\\\' / `
66                 OS2_SHELL=`cmd /c "echo %OS2_SHELL%" | tr '\\\\' / | tr '[A-Z]' '[a-z]'`
67         elif test -n "$DJGPP"; then
68                 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 perllibs=''
169 dynamic_ext=''
170 extensions=''
171 known_extensions=''
172 nonxs_ext=''
173 static_ext=''
174 useopcode=''
175 useposix=''
176 d_bsd=''
177 d_eunice=''
178 d_xenix=''
179 eunicefix=''
180 Mcc=''
181 ar=''
182 awk=''
183 bash=''
184 bison=''
185 byacc=''
186 cat=''
187 chgrp=''
188 chmod=''
189 chown=''
190 comm=''
191 compress=''
192 cp=''
193 cpio=''
194 cpp=''
195 csh=''
196 date=''
197 echo=''
198 egrep=''
199 emacs=''
200 expr=''
201 find=''
202 flex=''
203 grep=''
204 gzip=''
205 inews=''
206 ksh=''
207 less=''
208 line=''
209 lint=''
210 ln=''
211 lp=''
212 lpr=''
213 ls=''
214 mail=''
215 mailx=''
216 make=''
217 mkdir=''
218 more=''
219 mv=''
220 nm=''
221 nroff=''
222 perl=''
223 pg=''
224 pmake=''
225 pr=''
226 rm=''
227 rmail=''
228 sed=''
229 sendmail=''
230 shar=''
231 sleep=''
232 smail=''
233 sort=''
234 submit=''
235 tail=''
236 tar=''
237 tbl=''
238 tee=''
239 test=''
240 touch=''
241 tr=''
242 troff=''
243 uname=''
244 uniq=''
245 uuname=''
246 vi=''
247 zcat=''
248 zip=''
249 full_ar=''
250 full_sed=''
251 libswanted=''
252 hint=''
253 myuname=''
254 osname=''
255 osvers=''
256 Author=''
257 Date=''
258 Header=''
259 Id=''
260 Locker=''
261 Log=''
262 RCSfile=''
263 Revision=''
264 Source=''
265 State=''
266 _a=''
267 _exe=''
268 _o=''
269 archobjs=''
270 exe_ext=''
271 firstmakefile=''
272 lib_ext=''
273 obj_ext=''
274 path_sep=''
275 afs=''
276 alignbytes=''
277 ansi2knr=''
278 archlib=''
279 archlibexp=''
280 d_archlib=''
281 installarchlib=''
282 archname=''
283 myarchname=''
284 d_atolf=''
285 d_atoll=''
286 baserev=''
287 bin=''
288 binexp=''
289 installbin=''
290 bincompat5005=''
291 d_bincompat5005=''
292 byteorder=''
293 cc=''
294 ccflags=''
295 cppflags=''
296 ldflags=''
297 lkflags=''
298 locincpth=''
299 optimize=''
300 cf_email=''
301 cf_by=''
302 cf_time=''
303 charsize=''
304 contains=''
305 cpp_stuff=''
306 cpplast=''
307 cppminus=''
308 cpprun=''
309 cppstdin=''
310 crosscompile=''
311 d__fwalk=''
312 d_access=''
313 d_accessx=''
314 d_alarm=''
315 d_attribut=''
316 d_bcmp=''
317 d_bcopy=''
318 d_bzero=''
319 d_casti32=''
320 castflags=''
321 d_castneg=''
322 d_chown=''
323 d_chroot=''
324 d_chsize=''
325 d_closedir=''
326 d_void_closedir=''
327 d_const=''
328 cryptlib=''
329 d_crypt=''
330 d_csh=''
331 full_csh=''
332 d_cuserid=''
333 d_dbl_dig=''
334 d_difftime=''
335 d_dlerror=''
336 d_dlopen=''
337 d_dlsymun=''
338 d_dosuid=''
339 d_suidsafe=''
340 d_drand48proto=''
341 d_dup2=''
342 d_eaccess=''
343 d_endgrent=''
344 d_endhent=''
345 d_endnent=''
346 d_endpent=''
347 d_endpwent=''
348 d_endsent=''
349 d_fchmod=''
350 d_fchown=''
351 d_fcntl=''
352 d_fcntl_can_lock=''
353 d_fd_macros=''
354 d_fd_set=''
355 d_fds_bits=''
356 d_fgetpos=''
357 d_flexfnam=''
358 d_flock=''
359 d_fork=''
360 d_fpos64_t=''
361 d_frexpl=''
362 d_fs_data_s=''
363 d_fseeko=''
364 d_fsetpos=''
365 d_fstatfs=''
366 d_fsync=''
367 d_ftello=''
368 d_ftime=''
369 d_gettimeod=''
370 d_Gconvert=''
371 d_getcwd=''
372 d_getespwnam=''
373 d_getfsstat=''
374 d_getgrent=''
375 d_getgrps=''
376 d_gethbyaddr=''
377 d_gethbyname=''
378 d_gethent=''
379 aphostname=''
380 d_gethname=''
381 d_phostname=''
382 d_uname=''
383 d_gethostprotos=''
384 d_getlogin=''
385 d_getmnt=''
386 d_getmntent=''
387 d_getnbyaddr=''
388 d_getnbyname=''
389 d_getnent=''
390 d_getnetprotos=''
391 d_getpagsz=''
392 d_getpent=''
393 d_getpgid=''
394 d_getpgrp2=''
395 d_bsdgetpgrp=''
396 d_getpgrp=''
397 d_getppid=''
398 d_getprior=''
399 d_getpbyname=''
400 d_getpbynumber=''
401 d_getprotoprotos=''
402 d_getprpwnam=''
403 d_getpwent=''
404 d_getsent=''
405 d_getservprotos=''
406 d_getspnam=''
407 d_getsbyname=''
408 d_getsbyport=''
409 d_gnulibc=''
410 d_hasmntopt=''
411 d_htonl=''
412 d_iconv=''
413 d_inetaton=''
414 d_int64_t=''
415 d_isascii=''
416 d_isnan=''
417 d_isnanl=''
418 d_killpg=''
419 d_lchown=''
420 d_ldbl_dig=''
421 d_link=''
422 d_locconv=''
423 d_lockf=''
424 d_longdbl=''
425 longdblsize=''
426 d_longlong=''
427 longlongsize=''
428 d_lseekproto=''
429 d_lstat=''
430 d_madvise=''
431 d_mblen=''
432 d_mbstowcs=''
433 d_mbtowc=''
434 d_memchr=''
435 d_memcmp=''
436 d_memcpy=''
437 d_memmove=''
438 d_memset=''
439 d_mkdir=''
440 d_mkdtemp=''
441 d_mkfifo=''
442 d_mkstemp=''
443 d_mkstemps=''
444 d_mktime=''
445 d_mmap=''
446 mmaptype=''
447 d_modfl=''
448 d_mprotect=''
449 d_msg=''
450 d_msgctl=''
451 d_msgget=''
452 d_msgrcv=''
453 d_msgsnd=''
454 d_msync=''
455 d_munmap=''
456 d_nice=''
457 d_off64_t=''
458 d_open3=''
459 d_fpathconf=''
460 d_pathconf=''
461 d_pause=''
462 d_pipe=''
463 d_poll=''
464 d_portable=''
465 d_old_pthread_create_joinable=''
466 old_pthread_create_joinable=''
467 d_pthread_yield=''
468 d_sched_yield=''
469 sched_yield=''
470 d_qgcvt=''
471 d_readdir=''
472 d_rewinddir=''
473 d_seekdir=''
474 d_telldir=''
475 d_readlink=''
476 d_rename=''
477 d_rmdir=''
478 d_safebcpy=''
479 d_safemcpy=''
480 d_sanemcmp=''
481 d_sbrkproto=''
482 d_select=''
483 d_sem=''
484 d_semctl=''
485 d_semget=''
486 d_semop=''
487 d_setegid=''
488 d_seteuid=''
489 d_setgrent=''
490 d_setgrps=''
491 d_sethent=''
492 d_setlinebuf=''
493 d_setlocale=''
494 d_setnent=''
495 d_setpent=''
496 d_setpgid=''
497 d_setpgrp2=''
498 d_bsdsetpgrp=''
499 d_setpgrp=''
500 d_setprior=''
501 d_setproctitle=''
502 d_setpwent=''
503 d_setregid=''
504 d_setresgid=''
505 d_setresuid=''
506 d_setreuid=''
507 d_setrgid=''
508 d_setruid=''
509 d_setsent=''
510 d_setsid=''
511 d_setvbuf=''
512 d_sfio=''
513 usesfio=''
514 d_shm=''
515 d_shmat=''
516 d_shmatprototype=''
517 shmattype=''
518 d_shmctl=''
519 d_shmdt=''
520 d_shmget=''
521 d_sigaction=''
522 d_sigprocmask=''
523 d_sigsetjmp=''
524 d_msg_ctrunc=''
525 d_msg_dontroute=''
526 d_msg_oob=''
527 d_msg_peek=''
528 d_msg_proxy=''
529 d_oldsock=''
530 d_scm_rights=''
531 d_socket=''
532 d_sockpair=''
533 sockethdr=''
534 socketlib=''
535 d_socklen_t=''
536 d_socks5_init=''
537 d_sqrtl=''
538 d_statblks=''
539 d_statfs_f_flags=''
540 d_statfs_s=''
541 d_fstatvfs=''
542 d_statvfs=''
543 d_stdio_cnt_lval=''
544 d_stdio_ptr_lval=''
545 d_stdio_ptr_lval_nochange_cnt=''
546 d_stdio_ptr_lval_sets_cnt=''
547 d_stdiobase=''
548 d_stdstdio=''
549 stdio_base=''
550 stdio_bufsiz=''
551 stdio_cnt=''
552 stdio_filbuf=''
553 stdio_ptr=''
554 d_index=''
555 d_strchr=''
556 d_strcoll=''
557 d_strctcpy=''
558 d_strerrm=''
559 d_strerror=''
560 d_sysernlst=''
561 d_syserrlst=''
562 d_strtod=''
563 d_strtol=''
564 d_strtold=''
565 d_strtoll=''
566 d_strtoq=''
567 d_strtoul=''
568 d_strtoull=''
569 d_strtouq=''
570 d_strxfrm=''
571 d_symlink=''
572 d_syscall=''
573 d_sysconf=''
574 d_system=''
575 d_tcgetpgrp=''
576 d_tcsetpgrp=''
577 d_telldirproto=''
578 d_time=''
579 timetype=''
580 clocktype=''
581 d_times=''
582 d_truncate=''
583 d_tzname=''
584 d_umask=''
585 d_semctl_semid_ds=''
586 d_semctl_semun=''
587 d_union_semun=''
588 d_ustat=''
589 d_vfork=''
590 usevfork=''
591 d_voidsig=''
592 signal_t=''
593 d_volatile=''
594 d_charvspr=''
595 d_vprintf=''
596 d_wait4=''
597 d_waitpid=''
598 d_wcstombs=''
599 d_wctomb=''
600 dlext=''
601 cccdlflags=''
602 ccdlflags=''
603 dlsrc=''
604 ld=''
605 lddlflags=''
606 usedl=''
607 doublesize=''
608 ebcdic=''
609 fflushNULL=''
610 fflushall=''
611 fpossize=''
612 fpostype=''
613 gccosandvers=''
614 gccversion=''
615 gidformat=''
616 gidsign=''
617 gidsize=''
618 gidtype=''
619 groupstype=''
620 h_fcntl=''
621 h_sysfile=''
622 i_arpainet=''
623 db_hashtype=''
624 db_prefixtype=''
625 i_db=''
626 i_dbm=''
627 i_rpcsvcdbm=''
628 d_dirnamlen=''
629 direntrytype=''
630 i_dirent=''
631 i_dld=''
632 i_dlfcn=''
633 i_fcntl=''
634 i_float=''
635 i_gdbm=''
636 d_grpasswd=''
637 i_grp=''
638 i_iconv=''
639 i_ieeefp=''
640 i_inttypes=''
641 i_libutil=''
642 i_limits=''
643 i_locale=''
644 i_machcthr=''
645 i_malloc=''
646 i_math=''
647 i_memory=''
648 i_mntent=''
649 i_ndbm=''
650 i_netdb=''
651 i_neterrno=''
652 i_netinettcp=''
653 i_niin=''
654 i_sysin=''
655 i_poll=''
656 i_prot=''
657 i_pthread=''
658 d_pwage=''
659 d_pwchange=''
660 d_pwclass=''
661 d_pwcomment=''
662 d_pwexpire=''
663 d_pwgecos=''
664 d_pwpasswd=''
665 d_pwquota=''
666 i_pwd=''
667 i_sfio=''
668 i_shadow=''
669 i_socks=''
670 i_stddef=''
671 i_stdlib=''
672 i_string=''
673 strings=''
674 i_sunmath=''
675 i_sysaccess=''
676 i_sysdir=''
677 i_sysfile=''
678 d_voidtty=''
679 i_bsdioctl=''
680 i_sysfilio=''
681 i_sysioctl=''
682 i_syssockio=''
683 i_syslog=''
684 i_sysmman=''
685 i_sysmode=''
686 i_sysmount=''
687 i_sysndir=''
688 i_sysparam=''
689 i_sysresrc=''
690 i_syssecrt=''
691 i_sysselct=''
692 i_sysstat=''
693 i_sysstatfs=''
694 i_sysstatvfs=''
695 i_systimes=''
696 i_systypes=''
697 i_sysuio=''
698 i_sysun=''
699 i_sysutsname=''
700 i_sysvfs=''
701 i_syswait=''
702 i_sgtty=''
703 i_termio=''
704 i_termios=''
705 i_systime=''
706 i_systimek=''
707 i_time=''
708 timeincl=''
709 i_unistd=''
710 i_ustat=''
711 i_utime=''
712 i_values=''
713 i_stdarg=''
714 i_varargs=''
715 i_varhdr=''
716 i_vfork=''
717 inc_version_list=''
718 inc_version_list_init=''
719 installprefix=''
720 installprefixexp=''
721 installstyle=''
722 installusrbinperl=''
723 intsize=''
724 longsize=''
725 shortsize=''
726 issymlink=''
727 libc=''
728 ldlibpthname=''
729 libperl=''
730 shrpenv=''
731 useshrplib=''
732 glibpth=''
733 libpth=''
734 loclibpth=''
735 plibpth=''
736 xlibpth=''
737 ignore_versioned_solibs=''
738 libs=''
739 libsdirs=''
740 libsfiles=''
741 libsfound=''
742 libspath=''
743 lns=''
744 d_PRIEUldbl=''
745 d_PRIFUldbl=''
746 d_PRIGUldbl=''
747 d_PRIeldbl=''
748 d_PRIfldbl=''
749 d_PRIgldbl=''
750 d_SCNfldbl=''
751 sPRIEUldbl=''
752 sPRIFUldbl=''
753 sPRIGUldbl=''
754 sPRIeldbl=''
755 sPRIfldbl=''
756 sPRIgldbl=''
757 sSCNfldbl=''
758 lseeksize=''
759 lseektype=''
760 make_set_make=''
761 d_mymalloc=''
762 freetype=''
763 mallocobj=''
764 mallocsrc=''
765 malloctype=''
766 usemymalloc=''
767 installman1dir=''
768 man1dir=''
769 man1direxp=''
770 man1ext=''
771 installman3dir=''
772 man3dir=''
773 man3direxp=''
774 man3ext=''
775 modetype=''
776 multiarch=''
777 mydomain=''
778 myhostname=''
779 phostname=''
780 c=''
781 n=''
782 d_eofnblk=''
783 eagain=''
784 o_nonblock=''
785 rd_nodata=''
786 need_va_copy=''
787 netdb_hlen_type=''
788 netdb_host_type=''
789 netdb_name_type=''
790 netdb_net_type=''
791 groupcat=''
792 hostcat=''
793 passcat=''
794 orderlib=''
795 ranlib=''
796 d_perl_otherlibdirs=''
797 otherlibdirs=''
798 package=''
799 spackage=''
800 pager=''
801 api_revision=''
802 api_subversion=''
803 api_version=''
804 api_versionstring=''
805 patchlevel=''
806 revision=''
807 subversion=''
808 version=''
809 perl5=''
810 perladmin=''
811 perlpath=''
812 d_nv_preserves_uv=''
813 d_nv_preserves_uv_bits=''
814 i16size=''
815 i16type=''
816 i32size=''
817 i32type=''
818 i64size=''
819 i64type=''
820 i8size=''
821 i8type=''
822 ivsize=''
823 ivtype=''
824 nvsize=''
825 nvtype=''
826 u16size=''
827 u16type=''
828 u32size=''
829 u32type=''
830 u64size=''
831 u64type=''
832 u8size=''
833 u8type=''
834 uvsize=''
835 uvtype=''
836 ivdformat=''
837 nvEUformat=''
838 nvFUformat=''
839 nvGUformat=''
840 nveformat=''
841 nvfformat=''
842 nvgformat=''
843 uvXUformat=''
844 uvoformat=''
845 uvuformat=''
846 uvxformat=''
847 pidtype=''
848 prefix=''
849 prefixexp=''
850 installprivlib=''
851 privlib=''
852 privlibexp=''
853 prototype=''
854 ptrsize=''
855 d_PRIXU64=''
856 d_PRId64=''
857 d_PRIi64=''
858 d_PRIo64=''
859 d_PRIu64=''
860 d_PRIx64=''
861 sPRIXU64=''
862 sPRId64=''
863 sPRIi64=''
864 sPRIo64=''
865 sPRIu64=''
866 sPRIx64=''
867 d_quad=''
868 quadkind=''
869 quadtype=''
870 uquadtype=''
871 drand01=''
872 randbits=''
873 randfunc=''
874 randseedtype=''
875 seedfunc=''
876 installscript=''
877 scriptdir=''
878 scriptdirexp=''
879 selectminbits=''
880 selecttype=''
881 sh=''
882 sig_count=''
883 sig_name=''
884 sig_name_init=''
885 sig_num=''
886 sig_num_init=''
887 sig_size=''
888 installsitearch=''
889 sitearch=''
890 sitearchexp=''
891 installsitebin=''
892 sitebin=''
893 sitebinexp=''
894 installsitelib=''
895 sitelib=''
896 sitelib_stem=''
897 sitelibexp=''
898 siteprefix=''
899 siteprefixexp=''
900 sizesize=''
901 sizetype=''
902 so=''
903 socksizetype=''
904 sharpbang=''
905 shsharp=''
906 spitshell=''
907 src=''
908 ssizetype=''
909 startperl=''
910 startsh=''
911 stdchar=''
912 d_stdio_stream_array=''
913 stdio_stream_array=''
914 sysman=''
915 trnl=''
916 uidformat=''
917 uidsign=''
918 uidsize=''
919 uidtype=''
920 archname64=''
921 use64bitall=''
922 use64bitint=''
923 ccflags_uselargefiles=''
924 ldflags_uselargefiles=''
925 libswanted_uselargefiles=''
926 uselargefiles=''
927 uselongdouble=''
928 usemorebits=''
929 usemultiplicity=''
930 nm_opt=''
931 nm_so_opt=''
932 runnm=''
933 usenm=''
934 useperlio=''
935 usesocks=''
936 d_oldpthreads=''
937 use5005threads=''
938 useithreads=''
939 usethreads=''
940 incpath=''
941 mips_type=''
942 usrinc=''
943 d_vendorarch=''
944 installvendorarch=''
945 vendorarch=''
946 vendorarchexp=''
947 d_vendorbin=''
948 installvendorbin=''
949 vendorbin=''
950 vendorbinexp=''
951 d_vendorlib=''
952 installvendorlib=''
953 vendorlib=''
954 vendorlib_stem=''
955 vendorlibexp=''
956 usevendorprefix=''
957 vendorprefix=''
958 vendorprefixexp=''
959 versiononly=''
960 defvoidused=''
961 voidflags=''
962 pm_apiversion=''
963 xs_apiversion=''
964 yacc=''
965 yaccflags=''
966 CONFIG=''
967
968 define='define'
969 undef='undef'
970 smallmach='pdp11 i8086 z8000 i80286 iAPX286'
971 rmlist=''
972
973 : We must find out about Eunice early
974 eunicefix=':'
975 if test -f /etc/unixtovms; then
976         eunicefix=/etc/unixtovms
977 fi
978 if test -f /etc/unixtovms.exe; then
979         eunicefix=/etc/unixtovms.exe
980 fi
981
982 i_whoami=''
983 ccname=''
984 ccversion=''
985 perllibs=''
986 : set useposix=false in your hint file to disable the POSIX extension.
987 useposix=true
988 : set useopcode=false in your hint file to disable the Opcode extension.
989 useopcode=true
990 : Trailing extension.  Override this in a hint file, if needed.
991 _exe=''
992 : Extra object files, if any, needed on this platform.
993 archobjs=''
994 archname=''
995 : Possible local include directories to search.
996 : Set locincpth to "" in a hint file to defeat local include searches.
997 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
998 locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
999 :
1000 : no include file wanted by default
1001 inclwanted=''
1002
1003 groupstype=''
1004 : change the next line if compiling for Xenix/286 on Xenix/386
1005 xlibpth='/usr/lib/386 /lib/386'
1006 : Possible local library directories to search.
1007 loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
1008 loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
1009
1010 : general looking path for locating libraries
1011 glibpth="/lib /usr/lib $xlibpth"
1012 glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
1013 test -f /usr/shlib/libc.so && glibpth="/usr/shlib $glibpth"
1014 test -f /shlib/libc.so     && glibpth="/shlib $glibpth"
1015
1016 : Private path used by Configure to find libraries.  Its value
1017 : is prepended to libpth. This variable takes care of special
1018 : machines, like the mips.  Usually, it should be empty.
1019 plibpth=''
1020
1021 : default library list
1022 libswanted=''
1023 : some systems want to use only the non-versioned libso:s
1024 ignore_versioned_solibs=''
1025 archname64=''
1026 ccflags_uselargefiles=''
1027 ldflags_uselargefiles=''
1028 libswanted_uselargefiles=''
1029 : set usemultiplicity on the Configure command line to enable multiplicity.
1030 : set usesocks on the Configure command line to enable socks.
1031 : set usethreads on the Configure command line to enable threads.
1032 : full support for void wanted by default
1033 defvoidused=15
1034
1035 : List of libraries we want.
1036 : If anyone needs -lnet, put it in a hint file.
1037 libswanted='sfio socket bind inet nsl nm ndbm gdbm dbm db malloc dl'
1038 libswanted="$libswanted dld ld sun m c cposix posix"
1039 libswanted="$libswanted ndir dir crypt sec"
1040 libswanted="$libswanted ucb bsd BSD PW x iconv util"
1041 : We probably want to search /usr/shlib before most other libraries.
1042 : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
1043 glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
1044 glibpth="/usr/shlib $glibpth"
1045 : Do not use vfork unless overridden by a hint file.
1046 usevfork=false
1047
1048 : Find the basic shell for Bourne shell scripts
1049 case "$sh" in
1050 '')
1051         case "$SYSTYPE" in
1052         *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
1053         *) xxx='/bin/sh';;
1054         esac
1055         if test -f "$xxx"; then
1056                 sh="$xxx"
1057         else
1058                 : Build up a list and do a single loop so we can 'break' out.
1059                 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1060                 for xxx in sh bash ksh pdksh ash; do
1061                         for p in $pth; do
1062                                 try="$try ${p}/${xxx}"
1063                         done
1064                 done
1065                 for xxx in $try; do
1066                         if test -f "$xxx"; then
1067                                 sh="$xxx";
1068                                 break
1069                         elif test -f "$xxx.exe"; then
1070                                 sh="$xxx";
1071                                 break
1072                         fi
1073                 done
1074         fi
1075         ;;
1076 esac
1077
1078 case "$sh" in
1079 '')     cat <<EOM >&2
1080 $me:  Fatal Error:  I can't find a Bourne Shell anywhere.  
1081
1082 Usually it's in /bin/sh.  How did you even get this far?
1083 Please contact me (Perl Maintainers) at perlbug@perl.org and 
1084 we'll try to straighten this all out.
1085 EOM
1086         exit 1
1087         ;;
1088 esac
1089
1090 : see if sh knows # comments
1091 if `$sh -c '#' >/dev/null 2>&1`; then
1092         shsharp=true
1093         spitshell=cat
1094         xcat=/bin/cat
1095         test -f $xcat || xcat=/usr/bin/cat
1096         echo "#!$xcat" >try
1097         $eunicefix try
1098         chmod +x try
1099         ./try > today
1100         if test -s today; then
1101                 sharpbang='#!'
1102         else
1103                 echo "#! $xcat" > try
1104                 $eunicefix try
1105                 chmod +x try
1106                 ./try > today
1107                 if test -s today; then
1108                         sharpbang='#! '
1109                 else
1110                         sharpbang=': use '
1111                 fi
1112         fi
1113 else
1114         echo " "
1115         echo "Your $sh doesn't grok # comments--I will strip them later on."
1116         shsharp=false
1117         cd ..
1118         echo "exec grep -v '^[  ]*#'" >spitshell
1119         chmod +x spitshell
1120         $eunicefix spitshell
1121         spitshell=`pwd`/spitshell
1122         cd UU
1123         echo "I presume that if # doesn't work, #! won't work either!"
1124         sharpbang=': use '
1125 fi
1126 rm -f try today
1127
1128 : figure out how to guarantee sh startup
1129 case "$startsh" in
1130 '') startsh=${sharpbang}${sh} ;;
1131 *)
1132 esac
1133 cat >try <<EOSS
1134 $startsh
1135 set abc
1136 test "$?abc" != 1
1137 EOSS
1138
1139 chmod +x try
1140 $eunicefix try
1141 if ./try; then
1142         : echo "Yup, it does."
1143 else
1144         echo "Hmm... '$startsh' does not guarantee sh startup..."
1145         echo "You may have to fix up the shell scripts to make sure $sh runs them."
1146 fi
1147 rm -f try
1148
1149
1150 : Save command line options in file UU/cmdline.opt for later use in
1151 : generating config.sh.
1152 cat > cmdline.opt <<EOSH
1153 # Configure command line arguments.
1154 config_arg0='$0'
1155 config_args='$*'
1156 config_argc=$#
1157 EOSH
1158 argn=1
1159 for arg in "$@"; do
1160         cat >>cmdline.opt <<EOSH
1161 config_arg$argn='$arg'
1162 EOSH
1163         argn=`expr $argn + 1`
1164 done
1165
1166 : produce awk script to parse command line options
1167 cat >options.awk <<'EOF'
1168 BEGIN {
1169         optstr = "A:dD:eEf:hKOrsSU:V";  # getopt-style specification
1170
1171         len = length(optstr);
1172         for (i = 1; i <= len; i++) {
1173                 c = substr(optstr, i, 1);
1174                 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
1175                 if (a == ":") {
1176                         arg[c] = 1;
1177                         i++;
1178                 }
1179                 opt[c] = 1;
1180         }
1181 }
1182 {
1183         expect = 0;
1184         str = $0;
1185         if (substr(str, 1, 1) != "-") {
1186                 printf("'%s'\n", str);
1187                 next;
1188         }
1189         len = length($0);
1190         for (i = 2; i <= len; i++) {
1191                 c = substr(str, i, 1);
1192                 if (!opt[c]) {
1193                         printf("-%s\n", substr(str, i));
1194                         next;
1195                 }
1196                 printf("-%s\n", c);
1197                 if (arg[c]) {
1198                         if (i < len)
1199                                 printf("'%s'\n", substr(str, i + 1));
1200                         else
1201                                 expect = 1;
1202                         next;
1203                 }
1204         }
1205 }
1206 END {
1207         if (expect)
1208                 print "?";
1209 }
1210 EOF
1211
1212 : process the command line options
1213 set X `for arg in "$@"; do echo "X$arg"; done |
1214         sed -e s/X// | awk -f options.awk`
1215 eval "set $*"
1216 shift
1217 rm -f options.awk
1218
1219 : set up default values
1220 fastread=''
1221 reuseval=false
1222 config_sh=''
1223 alldone=''
1224 error=''
1225 silent=''
1226 extractsh=''
1227 override=''
1228 knowitall=''
1229 rm -f optdef.sh posthint.sh
1230 cat >optdef.sh <<EOS
1231 $startsh
1232 EOS
1233
1234
1235 : option parsing
1236 while test $# -gt 0; do
1237         case "$1" in
1238         -d) shift; fastread=yes;;
1239         -e) shift; alldone=cont;;
1240         -f)
1241                 shift
1242                 cd ..
1243                 if test -r "$1"; then
1244                         config_sh="$1"
1245                 else
1246                         echo "$me: cannot read config file $1." >&2
1247                         error=true
1248                 fi
1249                 cd UU
1250                 shift;;
1251         -h) shift; error=true;;
1252         -r) shift; reuseval=true;;
1253         -s) shift; silent=true; realsilent=true;;
1254         -E) shift; alldone=exit;;
1255         -K) shift; knowitall=true;;
1256         -O) shift; override=true;;
1257         -S) shift; silent=true; extractsh=true;;
1258         -D)
1259                 shift
1260                 case "$1" in
1261                 *=)
1262                         echo "$me: use '-U symbol=', not '-D symbol='." >&2
1263                         echo "$me: ignoring -D $1" >&2
1264                         ;;
1265                 *=*) echo "$1" | \
1266                                 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1267                 *) echo "$1='define'" >> optdef.sh;;
1268                 esac
1269                 shift
1270                 ;;
1271         -U)
1272                 shift
1273                 case "$1" in
1274                 *=) echo "$1" >> optdef.sh;;
1275                 *=*)
1276                         echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1277                         echo "$me: ignoring -U $1" >&2
1278                         ;;
1279                 *) echo "$1='undef'" >> optdef.sh;;
1280                 esac
1281                 shift
1282                 ;;
1283         -A)
1284             shift
1285             xxx=''
1286             yyy="$1"
1287             zzz=''
1288             uuu=undef
1289             case "$yyy" in
1290             *=*) zzz=`echo $yyy|sed 's!=.*!!'`
1291                  case "$zzz" in
1292                  *:*) zzz='' ;;
1293                  *)   xxx=append
1294                       zzz=" "`echo $yyy|sed 's!^[^=]*=!!'` 
1295                       yyy=`echo $yyy|sed 's!=.*!!'` ;;
1296                  esac
1297                  ;;
1298             esac
1299             case "$xxx" in
1300             '')  case "$yyy" in
1301                  *:*) xxx=`echo $yyy|sed 's!:.*!!'`
1302                       yyy=`echo $yyy|sed 's!^[^:]*:!!'`
1303                       zzz=`echo $yyy|sed 's!^[^=]*=!!'`
1304                       yyy=`echo $yyy|sed 's!=.*!!'` ;;
1305                  *)   xxx=`echo $yyy|sed 's!:.*!!'`
1306                       yyy=`echo $yyy|sed 's!^[^:]*:!!'` ;;
1307                  esac
1308                  ;;       
1309             esac
1310             case "$xxx" in
1311             append)
1312                 echo "$yyy=\"\${$yyy}$zzz\""    >> posthint.sh ;;
1313             clear)
1314                 echo "$yyy=''"                  >> posthint.sh ;;
1315             define)
1316                 case "$zzz" in
1317                 '') zzz=define ;;
1318                 esac
1319                 echo "$yyy='$zzz'"              >> posthint.sh ;;
1320             eval)
1321                 echo "eval \"$yyy=$zzz\""       >> posthint.sh ;;
1322             prepend)
1323                 echo "$yyy=\"$zzz\${$yyy}\""    >> posthint.sh ;;
1324             undef)
1325                 case "$zzz" in
1326                 '') zzz="$uuu" ;;
1327                 esac
1328                 echo "$yyy=$zzz"                >> posthint.sh ;;
1329             *)  echo "$me: unknown -A command '$xxx', ignoring -A $1" >&2 ;;
1330             esac
1331             shift
1332             ;;
1333         -V) echo "$me generated by metaconfig 3.0 PL70." >&2
1334             exit 0;;
1335         --) break;;
1336         -*) echo "$me: unknown option $1" >&2; shift; error=true;;
1337         *) break;;
1338         esac
1339 done
1340
1341 case "$error" in
1342 true)
1343         cat >&2 <<EOM
1344 Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
1345                  [-U symbol] [-U symbol=] [-A command:symbol...]
1346   -d : use defaults for all answers.
1347   -e : go on without questioning past the production of config.sh.
1348   -f : specify an alternate default configuration file.
1349   -h : print this help message and exit (with an error status).
1350   -r : reuse C symbols value if possible (skips costly nm extraction).
1351   -s : silent mode, only echoes questions and essential information.
1352   -D : define symbol to have some value:
1353          -D symbol         symbol gets the value 'define'
1354          -D symbol=value   symbol gets the value 'value'
1355   -E : stop at the end of questions, after having produced config.sh.
1356   -K : do not use unless you know what you are doing.
1357   -O : let -D and -U override definitions from loaded configuration file.
1358   -S : perform variable substitutions on all .SH files (can mix with -f)
1359   -U : undefine symbol:
1360          -U symbol    symbol gets the value 'undef'
1361          -U symbol=   symbol gets completely empty
1362   -A : manipulate symbol after the platform specific hints have been applied:
1363          -A symbol=value                append " "value to symbol
1364          -A append:symbol=value         append value to symbol
1365          -A define:symbol=value         define symbol to have value
1366          -A clear:symbol                define symbol to be ''
1367          -A define:symbol               define symbol to be 'define'
1368          -A eval:symbol=value           define symbol to be eval of value
1369          -A prepend:symbol=value        prepend value to symbol
1370          -A undef:symbol                define symbol to be 'undef'
1371          -A undef:symbol=               define symbol to be ''
1372   -V : print version number and exit (with a zero status).
1373 EOM
1374         exit 1
1375         ;;
1376 esac
1377
1378 : Sanity checks
1379 case "$fastread$alldone" in
1380 yescont|yesexit) ;;
1381 *)
1382         case "$extractsh" in
1383         true) ;;
1384         *)
1385                 if test ! -t 0; then
1386                         echo "Say 'sh Configure', not 'sh <Configure'"
1387                         exit 1
1388                 fi
1389                 ;;
1390         esac
1391         ;;
1392 esac
1393
1394 exec 4>&1
1395 case "$silent" in
1396 true) exec 1>/dev/null;;
1397 esac
1398
1399 : run the defines and the undefines, if any, but leave the file out there...
1400 touch optdef.sh
1401 . ./optdef.sh
1402 : create the posthint manipulation script and leave the file out there...
1403 touch posthint.sh
1404
1405 : set package name
1406 package=perl5
1407 first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1408 last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1409 case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1410 ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1411 *) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1412 esac
1413
1414 : Some greps do not return status, grrr.
1415 echo "grimblepritz" >grimble
1416 if grep blurfldyick grimble >/dev/null 2>&1 ; then
1417         contains=contains
1418 elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1419         contains=grep
1420 else
1421         contains=contains
1422 fi
1423 rm -f grimble
1424 : the following should work in any shell
1425 case "$contains" in
1426 contains*)
1427         echo " "
1428         echo "AGH!  Grep doesn't return a status.  Attempting remedial action."
1429         cat >contains <<'EOSS'
1430 grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1431 EOSS
1432 chmod +x contains
1433 esac
1434
1435 : Find the path to the source tree
1436 case "$src" in
1437 '') case "$0" in
1438     */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`
1439          case "$src" in
1440          /*)    ;;
1441          .)     ;;
1442          *)     src=`cd ../$src && pwd` ;;
1443          esac
1444          ;;
1445     *)   src='.';;
1446     esac;;
1447 esac
1448 case "$src" in
1449 '')     src=/
1450         rsrc=/
1451         ;;
1452 /*) rsrc="$src";;
1453 *) rsrc="../$src";;
1454 esac
1455 if test -f $rsrc/Configure && \
1456         $contains "^package=$package$" $rsrc/Configure >/dev/null 2>&1
1457 then
1458    : found it, so we are ok.
1459 else
1460         rsrc=''
1461         for src in . .. ../.. ../../.. ../../../..; do
1462                 if test -f ../$src/Configure && \
1463                         $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1464                 then
1465                         rsrc=../$src
1466                         break
1467                 fi
1468         done
1469 fi
1470 case "$rsrc" in
1471 '')
1472         cat <<EOM >&4
1473
1474 Sorry, I can't seem to locate the source dir for $package.  Please start
1475 Configure with an explicit path -- i.e. /some/path/Configure.
1476
1477 EOM
1478         exit 1
1479         ;;
1480 ../.)   rsrc='..';;
1481 *)
1482         echo " "
1483         echo "Sources for $package found in \"$src\"." >&4
1484         ;;
1485 esac
1486
1487 : script used to extract .SH files with variable substitutions
1488 cat >extract <<'EOS'
1489 CONFIGDOTSH=true
1490 echo "Doing variable substitutions on .SH files..."
1491 if test -f $src/MANIFEST; then
1492         set x `awk '{print $1}' <$src/MANIFEST | grep '\.SH$'`
1493 else
1494         echo "(Looking for .SH files under the source directory.)"
1495         set x `(cd $src; find . -name "*.SH" -print)`
1496 fi
1497 shift
1498 case $# in
1499 0) set x `(cd $src; echo *.SH)`; shift;;
1500 esac
1501 if test ! -f $src/$1; then
1502         shift
1503 fi
1504 mkdir_p='
1505 name=$1;
1506 create="";
1507 while test $name; do
1508         if test ! -d "$name"; then
1509                 create="$name $create";
1510                 name=`echo $name | sed -e "s|^[^/]*$||"`;
1511                 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
1512         else
1513                 name="";
1514         fi;
1515 done;
1516 for file in $create; do
1517         mkdir $file;
1518 done
1519 '
1520 for file in $*; do
1521         case "$src" in
1522         ".")
1523                 case "$file" in
1524                 */*)
1525                         dir=`expr X$file : 'X\(.*\)/'`
1526                         file=`expr X$file : 'X.*/\(.*\)'`
1527                         (cd $dir && . ./$file)
1528                         ;;
1529                 *)
1530                         . ./$file
1531                         ;;
1532                 esac
1533                 ;;
1534         *)
1535                 case "$file" in
1536                 */*)
1537                         dir=`expr X$file : 'X\(.*\)/'`
1538                         file=`expr X$file : 'X.*/\(.*\)'`
1539                         (set x $dir; shift; eval $mkdir_p)
1540                         sh <$src/$dir/$file
1541                         ;;
1542                 *)
1543                         sh <$src/$file
1544                         ;;
1545                 esac
1546                 ;;
1547         esac
1548 done
1549 if test -f $src/config_h.SH; then
1550         if test ! -f config.h; then
1551         : oops, they left it out of MANIFEST, probably, so do it anyway.
1552         . $src/config_h.SH
1553         fi
1554 fi
1555 EOS
1556
1557 : extract files and exit if asked to do so
1558 case "$extractsh" in
1559 true)
1560         case "$realsilent" in
1561         true) ;;
1562         *) exec 1>&4;;
1563         esac
1564         case "$config_sh" in
1565         '') config_sh='config.sh';;
1566         esac
1567         echo " "
1568         echo "Fetching answers from $config_sh..."
1569         cd ..
1570         . $config_sh
1571         test "$override" && . ./optdef.sh
1572         echo " "
1573         . UU/extract
1574         rm -rf UU
1575         echo "Done."
1576         exit 0
1577         ;;
1578 esac
1579
1580 : Eunice requires " " instead of "", can you believe it
1581 echo " "
1582 : Here we go...
1583 echo "Beginning of configuration questions for $package."
1584
1585 trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1586
1587 : first determine how to suppress newline on echo command
1588 echo " "
1589 echo "Checking echo to see how to suppress newlines..."
1590 (echo "hi there\c" ; echo " ") >.echotmp
1591 if $contains c .echotmp >/dev/null 2>&1 ; then
1592         echo "...using -n."
1593         n='-n'
1594         c=''
1595 else
1596         cat <<'EOM'
1597 ...using \c
1598 EOM
1599         n=''
1600         c='\c'
1601 fi
1602 echo $n "The star should be here-->$c"
1603 echo '*'
1604 rm -f .echotmp
1605
1606 : Now test for existence of everything in MANIFEST
1607 echo " "
1608 if test -f $rsrc/MANIFEST; then
1609         echo "First let's make sure your kit is complete.  Checking..." >&4
1610         awk '$1 !~ /PACK[A-Z]+/ {print $1}' $rsrc/MANIFEST | split -50
1611         rm -f missing
1612         tmppwd=`pwd`
1613         for filelist in x??; do
1614                 (cd $rsrc; ls `cat $tmppwd/$filelist` >/dev/null 2>>$tmppwd/missing)
1615         done
1616         if test -s missing; then
1617                 cat missing >&4
1618                 cat >&4 <<'EOM'
1619
1620 THIS PACKAGE SEEMS TO BE INCOMPLETE.
1621
1622 You have the option of continuing the configuration process, despite the
1623 distinct possibility that your kit is damaged, by typing 'y'es.  If you
1624 do, don't blame me if something goes wrong.  I advise you to type 'n'o
1625 and contact the author (perlbug@perl.org).
1626
1627 EOM
1628                 echo $n "Continue? [n] $c" >&4
1629                 read ans
1630                 case "$ans" in
1631                 y*)
1632                         echo "Continuing..." >&4
1633                         rm -f missing
1634                         ;;
1635                 *)
1636                         echo "ABORTING..." >&4
1637                         kill $$
1638                         ;;
1639                 esac
1640         else
1641                 echo "Looks good..."
1642         fi
1643 else
1644         echo "There is no MANIFEST file.  I hope your kit is complete !"
1645 fi
1646 rm -f missing x??
1647
1648 echo " "
1649 : Find the appropriate value for a newline for tr
1650 if test -n "$DJGPP"; then
1651        trnl='\012'
1652 fi
1653 if test X"$trnl" = X; then
1654         case "`echo foo|tr '\n' x 2>/dev/null`" in
1655         foox) trnl='\n' ;;
1656         esac
1657 fi
1658 if test X"$trnl" = X; then
1659         case "`echo foo|tr '\012' x 2>/dev/null`" in
1660         foox) trnl='\012' ;;
1661         esac
1662 fi
1663 if test X"$trnl" = X; then
1664         cat <<EOM >&2
1665
1666 $me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
1667
1668 EOM
1669         exit 1
1670 fi
1671
1672 : compute the number of columns on the terminal for proper question formatting
1673 case "$COLUMNS" in
1674 '') COLUMNS='80';;
1675 esac
1676
1677 : set up the echo used in my read
1678 myecho="case \"\$xxxm\" in
1679 '') echo $n \"\$rp $c\" >&4;;
1680 *) case \"\$rp\" in
1681         '') echo $n \"[\$xxxm] $c\";;
1682         *)
1683                 if test \`echo \"\$rp [\$xxxm]  \" | wc -c\` -ge $COLUMNS; then
1684                         echo \"\$rp\" >&4
1685                         echo $n \"[\$xxxm] $c\" >&4
1686                 else
1687                         echo $n \"\$rp [\$xxxm] $c\" >&4
1688                 fi
1689                 ;;
1690         esac;;
1691 esac"
1692
1693 : now set up to do reads with possible shell escape and default assignment
1694 cat <<EOSC >myread
1695 $startsh
1696 xxxm=\$dflt
1697 $myecho
1698 ans='!'
1699 case "\$fastread" in
1700 yes) case "\$dflt" in
1701         '') ;;
1702         *) ans='';
1703                 case "\$silent-\$rp" in
1704                 true-) ;;
1705                 *) echo " " >&4;;
1706                 esac;;
1707         esac;;
1708 *) case "\$silent" in
1709         true) case "\$rp" in
1710                 '') ans='';;
1711                 esac;;
1712         esac;;
1713 esac
1714 while expr "X\$ans" : "X!" >/dev/null; do
1715         read answ
1716         set x \$xxxm
1717         shift
1718         aok=''; eval "ans=\\"\$answ\\"" && aok=y
1719         case  "\$answ" in
1720         "!")
1721                 sh 1>&4
1722                 echo " "
1723                 $myecho
1724                 ;;
1725         !*)
1726                 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
1727                 shift
1728                 sh 1>&4 -c "\$*"
1729                 echo " "
1730                 $myecho
1731                 ;;
1732         "\$ans")
1733                 case "\$ans" in
1734                 \\&*)
1735                         set x \`expr "X\$ans" : "X&\(.*\)\$"\`
1736                         shift
1737                         case "\$1" in
1738                         -d)
1739                                 fastread=yes
1740                                 echo "(OK, I'll run with -d after this question.)" >&4
1741                                 ;;
1742                         -*)
1743                                 echo "*** Sorry, \$1 not supported yet." >&4
1744                                 ;;
1745                         esac
1746                         $myecho
1747                         ans=!
1748                         ;;
1749                 esac;;
1750         *)
1751                 case "\$aok" in
1752                 y)
1753                         echo "*** Substitution done -- please confirm."
1754                         xxxm="\$ans"
1755                         ans=\`echo $n "\$ans$c" | tr '$trnl' ' '\`
1756                         xxxm="\$ans"
1757                         ans=!
1758                         ;;
1759                 *)
1760                         echo "*** Error -- try again."
1761                         ans=!
1762                         ;;
1763                 esac
1764                 $myecho
1765                 ;;
1766         esac
1767         case "\$ans\$xxxm\$nostick" in
1768         '')
1769                 ans=!
1770                 $myecho
1771                 ;;
1772         esac
1773 done
1774 case "\$ans" in
1775 '') ans="\$xxxm";;
1776 esac
1777 EOSC
1778
1779 : create .config dir to save info across Configure sessions
1780 test -d ../.config || mkdir ../.config
1781 cat >../.config/README <<EOF
1782 This directory created by Configure to save information that should
1783 persist across sessions for $package.
1784
1785 You may safely delete it if you wish.
1786 EOF
1787
1788 xversion=`awk '/define[         ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
1789 case "$usedevel" in
1790 $define|true|[yY]*) ;;
1791 *) case "$xversion" in
1792    *[13579])
1793         cat >&4 <<EOH
1794 *** WHOA THERE!!! ***
1795
1796     This is an UNSTABLE DEVELOPMENT release.
1797     The version of this $package distribution is $xversion, that is, odd,
1798     (as opposed to even) and that signifies a development release.
1799     If you want a maintenance release, you want an even-numbered version.
1800
1801     Do ***NOT*** install this into production use.
1802     Data corruption and crashes are possible.
1803
1804     It is most seriously suggested that you do not continue any further
1805     unless you want to help in developing and debugging Perl.
1806
1807 EOH
1808         rp='Do you really want to continue?'
1809         dflt='n'
1810         . ./myread
1811         case "$ans" in
1812         [yY]) echo >&4 "Okay, continuing."
1813               usedevel="$define" ;;
1814         *) echo >&4 "Okay, bye."
1815            exit 1
1816            ;;
1817         esac
1818         ;;
1819     esac
1820     ;;
1821 esac
1822 case "$usedevel" in
1823 $define|true|[yY]*)
1824         case "$versiononly" in
1825         '') versiononly="$define" ;;
1826         esac
1827         case "$installusrbinperl" in
1828         '') installusrbinperl="$undef" ;;
1829         esac
1830         ;;
1831 esac
1832
1833 : general instructions
1834 needman=true
1835 firsttime=true
1836 user=`(logname) 2>/dev/null`
1837 case "$user" in
1838 '') user=`whoami 2>&1`;;
1839 esac
1840 if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
1841         firsttime=false
1842         echo " "
1843         rp='Would you like to see the instructions?'
1844         dflt=n
1845         . ./myread
1846         case "$ans" in
1847         [yY]*) ;;
1848         *) needman=false;;
1849         esac
1850 fi
1851 if $needman; then
1852         cat <<EOH
1853
1854 This installation shell script will examine your system and ask you questions
1855 to determine how the perl5 package should be installed. If you get
1856 stuck on a question, you may use a ! shell escape to start a subshell or
1857 execute a command.  Many of the questions will have default answers in square
1858 brackets; typing carriage return will give you the default.
1859
1860 On some of the questions which ask for file or directory names you are allowed
1861 to use the ~name construct to specify the login directory belonging to "name",
1862 even if you don't have a shell which knows about that.  Questions where this is
1863 allowed will be marked "(~name ok)".
1864
1865 EOH
1866         rp=''
1867         dflt='Type carriage return to continue'
1868         . ./myread
1869         cat <<'EOH'
1870
1871 The prompter used in this script allows you to use shell variables and
1872 backticks in your answers.  You may use $1, $2, etc...  to refer to the words
1873 in the default answer, as if the default line was a set of arguments given to a
1874 script shell.  This means you may also use $* to repeat the whole default line,
1875 so you do not have to re-type everything to add something to the default.
1876
1877 Everytime there is a substitution, you will have to confirm.  If there is an
1878 error (e.g. an unmatched backtick), the default answer will remain unchanged
1879 and you will be prompted again.
1880
1881 If you are in a hurry, you may run 'Configure -d'.  This will bypass nearly all
1882 the questions and use the computed defaults (or the previous answers if there
1883 was already a config.sh file). Type 'Configure -h' for a list of options.
1884 You may also start interactively and then answer '& -d' at any prompt to turn
1885 on the non-interactive behaviour for the remainder of the execution.
1886
1887 EOH
1888         . ./myread
1889         cat <<EOH
1890
1891 Much effort has been expended to ensure that this shell script will run on any
1892 Unix system.  If despite that it blows up on yours, your best bet is to edit
1893 Configure and run it again.  If you can't run Configure for some reason,
1894 you'll have to generate a config.sh file by hand.  Whatever problems you
1895 have, let me (perlbug@perl.org) know how I blew it.
1896
1897 This installation script affects things in two ways:
1898
1899 1) it may do direct variable substitutions on some of the files included
1900    in this kit.
1901 2) it builds a config.h file for inclusion in C programs.  You may edit
1902    any of these files as the need arises after running this script.
1903
1904 If you make a mistake on a question, there is no easy way to back up to it
1905 currently.  The easiest thing to do is to edit config.sh and rerun all the SH
1906 files.  Configure will offer to let you do this before it runs the SH files.
1907
1908 EOH
1909         dflt='Type carriage return to continue'
1910         . ./myread
1911         case "$firsttime" in
1912         true) echo $user >>../.config/instruct;;
1913         esac
1914 fi
1915
1916 : find out where common programs are
1917 echo " "
1918 echo "Locating common programs..." >&4
1919 cat <<EOSC >loc
1920 $startsh
1921 case \$# in
1922 0) exit 1;;
1923 esac
1924 thing=\$1
1925 shift
1926 dflt=\$1
1927 shift
1928 for dir in \$*; do
1929         case "\$thing" in
1930         .)
1931         if test -d \$dir/\$thing; then
1932                 echo \$dir
1933                 exit 0
1934         fi
1935         ;;
1936         *)
1937         for thisthing in \$dir/\$thing; do
1938                 : just loop through to pick last item
1939         done
1940         if test -f \$thisthing; then
1941                 echo \$thisthing
1942                 exit 0
1943         elif test -f \$dir/\$thing.exe; then
1944                 if test -n "$DJGPP"; then
1945                         echo \$dir/\$thing.exe
1946                 else
1947                         : on Eunice apparently
1948                         echo \$dir/\$thing
1949                 fi
1950                 exit 0
1951         fi
1952         ;;
1953         esac
1954 done
1955 echo \$dflt
1956 exit 1
1957 EOSC
1958 chmod +x loc
1959 $eunicefix loc
1960 loclist="
1961 awk
1962 cat
1963 comm
1964 cp
1965 echo
1966 expr
1967 grep
1968 ls
1969 make
1970 mkdir
1971 rm
1972 sed
1973 sort
1974 touch
1975 tr
1976 uniq
1977 "
1978 trylist="
1979 Mcc
1980 ar
1981 bison
1982 byacc
1983 cpp
1984 csh
1985 date
1986 egrep
1987 gzip
1988 less
1989 ln
1990 more
1991 nm
1992 nroff
1993 pg
1994 test
1995 uname
1996 zip
1997 "
1998 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1999 pth="$pth /lib /usr/lib"
2000 for file in $loclist; do
2001         eval xxx=\$$file
2002         case "$xxx" in
2003         /*|?:[\\/]*)
2004                 if test -f "$xxx"; then
2005                         : ok
2006                 else
2007                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2008                         xxx=`./loc $file $file $pth`
2009                 fi
2010                 ;;
2011         '') xxx=`./loc $file $file $pth`;;
2012         *) xxx=`./loc $xxx $xxx $pth`;;
2013         esac
2014         eval $file=$xxx
2015         eval _$file=$xxx
2016         case "$xxx" in
2017         /*)
2018                 echo $file is in $xxx.
2019                 ;;
2020         ?:[\\/]*)
2021                 echo $file is in $xxx.
2022                 ;;
2023         *)
2024                 echo "I don't know where '$file' is, and my life depends on it." >&4
2025                 echo "Go find a public domain implementation or fix your PATH setting!" >&4
2026                 exit 1
2027                 ;;
2028         esac
2029 done
2030 echo " "
2031 echo "Don't worry if any of the following aren't found..."
2032 say=offhand
2033 for file in $trylist; do
2034         eval xxx=\$$file
2035         case "$xxx" in
2036         /*|?:[\\/]*)
2037                 if test -f "$xxx"; then
2038                         : ok
2039                 else
2040                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2041                         xxx=`./loc $file $file $pth`
2042                 fi
2043                 ;;
2044         '') xxx=`./loc $file $file $pth`;;
2045         *) xxx=`./loc $xxx $xxx $pth`;;
2046         esac
2047         eval $file=$xxx
2048         eval _$file=$xxx
2049         case "$xxx" in
2050         /*)
2051                 echo $file is in $xxx.
2052                 ;;
2053         ?:[\\/]*)
2054                 echo $file is in $xxx.
2055                 ;;
2056         *)
2057                 echo "I don't see $file out there, $say."
2058                 say=either
2059                 ;;
2060         esac
2061 done
2062 case "$egrep" in
2063 egrep)
2064         echo "Substituting grep for egrep."
2065         egrep=$grep
2066         ;;
2067 esac
2068 case "$ln" in
2069 ln)
2070         echo "Substituting cp for ln."
2071         ln=$cp
2072         ;;
2073 esac
2074 case "$test" in
2075 test)
2076         echo "Hopefully test is built into your sh."
2077         ;;
2078 *)
2079         if `sh -c "PATH= test true" >/dev/null 2>&1`; then
2080                 echo "Using the test built into your sh."
2081                 test=test
2082                 _test=test
2083         fi
2084         ;;
2085 esac
2086 case "$echo" in
2087 echo)
2088         echo "Hopefully echo is built into your sh."
2089         ;;
2090 '') ;;
2091 *)
2092         echo " "
2093 echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
2094         $echo $n "hi there$c" >foo1
2095         echo $n "hi there$c" >foo2
2096         if cmp foo1 foo2 >/dev/null 2>&1; then
2097                 echo "They are compatible.  In fact, they may be identical."
2098         else
2099                 case "$n" in
2100                 '-n') n='' c='\c';;
2101                 *) n='-n' c='';;
2102                 esac
2103                 cat <<FOO
2104 They are not compatible!  You are probably running ksh on a non-USG system.
2105 I'll have to use $echo instead of the builtin, since Bourne shell doesn't
2106 have echo built in and we may have to run some Bourne shell scripts.  That
2107 means I'll have to use '$n$c' to suppress newlines now.  Life is ridiculous.
2108
2109 FOO
2110                 $echo $n "The star should be here-->$c"
2111                 $echo "*"
2112         fi
2113         $rm -f foo1 foo2
2114         ;;
2115 esac
2116
2117 cat <<EOS >checkcc
2118 $startsh
2119 EOS
2120 cat <<'EOSC' >>checkcc
2121 case "$cc" in
2122 '') ;;
2123 *)  $rm -f try try.*
2124     $cat >try.c <<EOM
2125 int main(int argc, char *argv[]) {
2126   return 0;
2127 }
2128 EOM
2129     if $cc -o try $ccflags try.c; then
2130        :
2131     else
2132         echo "Uh-oh, the C compiler '$cc' doesn't seem to be working." >&4
2133         despair=yes
2134         trygcc=yes
2135         case "$cc" in
2136         *gcc*) trygcc=no ;;
2137         esac
2138         case "`$cc -v -c try.c 2>&1`" in
2139         *gcc*) trygcc=no ;;
2140         esac
2141         if $test X"$trygcc" = Xyes; then
2142             if gcc -o try -c try.c; then
2143                 echo " "
2144                 echo "You seem to have a working gcc, though." >&4
2145                 rp="Would you like to use it?"
2146                 dflt=y
2147                 if $test -f myread; then
2148                     . ./myread
2149                 else
2150                     if $test -f UU/myread; then
2151                         . ./UU/myread
2152                     else
2153                         echo "Cannot find myread, sorry.  Aborting." >&2
2154                         exit 1
2155                     fi
2156                 fi  
2157                 case "$ans" in
2158                 [yY]*) cc=gcc; ccname=gcc; ccflags=''; despair=no ;;
2159                 esac
2160             fi
2161         fi
2162         if $test X"$despair" = Xyes; then
2163             $cat >&4 <<EOM
2164 You need to find a working C compiler.
2165 Either (purchase and) install the C compiler supplied by your OS vendor,
2166 or for a free C compiler try http://gcc.gnu.org/
2167 I cannot continue any further, aborting.
2168 EOM
2169             exit 1
2170         fi
2171     fi
2172     $rm -f try try.*
2173     ;;
2174 esac
2175 EOSC
2176
2177 : determine whether symbolic links are supported
2178 echo " "
2179 $touch blurfl
2180 if $ln -s blurfl sym > /dev/null 2>&1 ; then
2181         echo "Symbolic links are supported." >&4
2182         lns="$ln -s"
2183 else
2184         echo "Symbolic links are NOT supported." >&4
2185         lns="$ln"
2186 fi
2187 $rm -f blurfl sym
2188
2189 : determine whether symbolic links are supported
2190 echo " "
2191 case "$lns" in
2192 *"ln -s")
2193         echo "Checking how to test for symbolic links..." >&4
2194         $lns blurfl sym
2195         if $test "X$issymlink" = X; then
2196                 sh -c "PATH= test -h sym" >/dev/null 2>&1
2197                 if test $? = 0; then
2198                         issymlink="test -h"
2199                 fi              
2200         fi
2201         if $test "X$issymlink" = X; then
2202                 if  $test -h >/dev/null 2>&1; then
2203                         issymlink="$test -h"
2204                         echo "Your builtin 'test -h' may be broken, I'm using external '$test -h'." >&4
2205                 fi              
2206         fi
2207         if $test "X$issymlink" = X; then
2208                 if $test -L sym 2>/dev/null; then
2209                         issymlink="$test -L"
2210                 fi
2211         fi
2212         if $test "X$issymlink" != X; then
2213                 echo "You can test for symbolic links with '$issymlink'." >&4
2214         else
2215                 echo "I do not know how you can test for symbolic links." >&4
2216         fi
2217         $rm -f blurfl sym
2218         ;;
2219 *)      echo "No symbolic links, so not testing for their testing..." >&4
2220         ;;
2221 esac
2222 echo " "
2223
2224
2225 case "$mksymlinks" in
2226 $define|true|[yY]*)
2227         case "$src" in
2228         ''|'.') echo "Cannot create symlinks in the original directory." >&4
2229                 exit 1
2230                 ;;
2231         *)      case "$lns:$issymlink" in
2232                 *"ln -s:"*"test -"?)
2233                         echo "Creating the symbolic links..." >&4
2234                         echo "(First creating the subdirectories...)" >&4
2235                         cd ..
2236                         awk '{print $1}' $src/MANIFEST | grep / | sed 's:/[^/]*$::' | sort -u | while true; do
2237                                 read directory
2238                                 test -z "$directory" && break
2239                                 mkdir -p $directory
2240                         done
2241                         # Sanity check 1.
2242                         if test ! -d t/base; then
2243                                 echo "Failed to create the subdirectories.  Aborting." >&4
2244                                 exit 1
2245                         fi
2246                         echo "(Then creating the symlinks...)" >&4
2247                         awk '{print $1}' $src/MANIFEST | while true; do
2248                                 read filename
2249                                 test -z "$filename" && break
2250                                 if test -f $filename; then
2251                                         if $issymlink $filename; then
2252                                                 rm -f $filename
2253                                         fi
2254                                 fi
2255                                 if test -f $filename; then
2256                                         echo "$filename already exists, not symlinking."
2257                                 else
2258                                         ln -s $src/$filename $filename
2259                                 fi
2260                         done
2261                         # Sanity check 2.
2262                         if test ! -f t/base/commonsense.t; then
2263                                 echo "Failed to create the symlinks.  Aborting." >&4
2264                                 exit 1
2265                         fi
2266                         cd UU
2267                         ;;
2268                 *)      echo "(I cannot figure out how to do symbolic links, ignoring mksymlinks)." >&4
2269                         ;;
2270                 esac
2271                 ;;
2272         esac
2273         ;;
2274 esac
2275
2276 : see whether [:lower:] and [:upper:] are supported character classes
2277 echo " "
2278 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
2279 ABYZ)
2280         echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
2281         up='[:upper:]'
2282         low='[:lower:]'
2283         ;;
2284 *)      # There is a discontinuity in EBCDIC between 'I' and 'J'
2285         # (0xc9 and 0xd1), therefore that is a nice testing point.
2286         if test "X$up" = X -o "X$low" = X; then
2287             case "`echo IJ | $tr '[I-J]' '[i-j]' 2>/dev/null`" in
2288             ij) up='[A-Z]'
2289                 low='[a-z]'
2290                 ;;
2291             esac
2292         fi
2293         if test "X$up" = X -o "X$low" = X; then
2294             case "`echo IJ | $tr I-J i-j 2>/dev/null`" in
2295             ij) up='A-Z'
2296                 low='a-z'
2297                 ;;
2298             esac
2299         fi
2300         if test "X$up" = X -o "X$low" = X; then
2301             case "`echo IJ | od -x 2>/dev/null`" in
2302             *C9D1*|*c9d1*)
2303                 echo "Hey, this might be EBCDIC." >&4
2304                 if test "X$up" = X -o "X$low" = X; then
2305                     case "`echo IJ | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
2306                     ij) up='[A-IJ-RS-Z]'
2307                         low='[a-ij-rs-z]'
2308                         ;;
2309                     esac
2310                 fi
2311                 if test "X$up" = X -o "X$low" = X; then
2312                     case "`echo IJ | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
2313                     ij) up='A-IJ-RS-Z'
2314                         low='a-ij-rs-z'
2315                         ;;
2316                     esac
2317                 fi
2318                 ;;
2319             esac
2320         fi
2321 esac
2322 case "`echo IJ | $tr \"$up\" \"$low\" 2>/dev/null`" in
2323 ij)
2324     echo "Using $up and $low to convert case." >&4
2325     ;;
2326 *)
2327     echo "I don't know how to translate letters from upper to lower case." >&4
2328     echo "Your tr is not acting any way I know of." >&4
2329     exit 1
2330     ;;
2331 esac
2332 : set up the translation script tr, must be called with ./tr of course
2333 cat >tr <<EOSC
2334 $startsh
2335 case "\$1\$2" in
2336 '[A-Z][a-z]') exec $tr '$up' '$low';;
2337 '[a-z][A-Z]') exec $tr '$low' '$up';;
2338 esac
2339 exec $tr "\$@"
2340 EOSC
2341 chmod +x tr
2342 $eunicefix tr
2343
2344 : Try to determine whether config.sh was made on this system
2345 case "$config_sh" in
2346 '')
2347 myuname=`$uname -a 2>/dev/null`
2348 $test -z "$myuname" && myuname=`hostname 2>/dev/null`
2349 # tr '[A-Z]' '[a-z]' would not work in EBCDIC
2350 # because the A-Z/a-z are not consecutive.
2351 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
2352         ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
2353 newmyuname="$myuname"
2354 dflt=n
2355 case "$knowitall" in
2356 '')
2357         if test -f ../config.sh; then
2358                 if $contains myuname= ../config.sh >/dev/null 2>&1; then
2359                         eval "`grep myuname= ../config.sh`"
2360                 fi
2361                 if test "X$myuname" = "X$newmyuname"; then
2362                         dflt=y
2363                 fi
2364         fi
2365         ;;
2366 *) dflt=y;;
2367 esac
2368
2369 : Get old answers from old config file if Configure was run on the
2370 : same system, otherwise use the hints.
2371 hint=default
2372 cd ..
2373 if test -f config.sh; then
2374         echo " "
2375         rp="I see a config.sh file.  Shall I use it to set the defaults?"
2376         . UU/myread
2377         case "$ans" in
2378         n*|N*) echo "OK, I'll ignore it."
2379                 mv config.sh config.sh.old
2380                 myuname="$newmyuname"
2381                 ;;
2382         *)  echo "Fetching default answers from your old config.sh file..." >&4
2383                 tmp_n="$n"
2384                 tmp_c="$c"
2385                 tmp_sh="$sh"
2386                 . ./config.sh
2387                 cp config.sh UU
2388                 n="$tmp_n"
2389                 c="$tmp_c"
2390                 : Older versions did not always set $sh.  Catch re-use of such
2391                 : an old config.sh.
2392                 case "$sh" in
2393                 '') sh="$tmp_sh" ;;
2394                 esac
2395                 hint=previous
2396                 ;;
2397         esac
2398 fi
2399 . ./UU/checkcc
2400 if test ! -f config.sh; then
2401         $cat <<EOM
2402
2403 First time through, eh?  I have some defaults handy for some systems
2404 that need some extra help getting the Configure answers right:
2405
2406 EOM
2407         (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/   /g' >&4
2408         dflt=''
2409         : Half the following guesses are probably wrong... If you have better
2410         : tests or hints, please send them to perlbug@perl.org
2411         : The metaconfig authors would also appreciate a copy...
2412         $test -f /irix && osname=irix
2413         $test -f /xenix && osname=sco_xenix
2414         $test -f /dynix && osname=dynix
2415         $test -f /dnix && osname=dnix
2416         $test -f /lynx.os && osname=lynxos
2417         $test -f /unicos && osname=unicos && osvers=`$uname -r`
2418         $test -f /unicosmk && osname=unicosmk && osvers=`$uname -r`
2419         $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
2420         $test -f /bin/mips && /bin/mips && osname=mips
2421         $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
2422                 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
2423         $test -d /usr/apollo/bin && osname=apollo
2424         $test -f /etc/saf/_sactab && osname=svr4
2425         $test -d /usr/include/minix && osname=minix
2426         if $test -d /MachTen -o -d /MachTen_Folder; then
2427                 osname=machten
2428                 if $test -x /sbin/version; then
2429                         osvers=`/sbin/version | $awk '{print $2}' |
2430                         $sed -e 's/[A-Za-z]$//'`
2431                 elif $test -x /usr/etc/version; then
2432                         osvers=`/usr/etc/version | $awk '{print $2}' |
2433                         $sed -e 's/[A-Za-z]$//'`
2434                 else
2435                         osvers="$2.$3"
2436                 fi
2437         fi
2438
2439         $test -f /sys/posix.dll &&
2440                 $test -f /usr/bin/what &&
2441                 set X `/usr/bin/what /sys/posix.dll` &&
2442                 $test "$3" = UWIN &&
2443                 osname=uwin &&
2444                 osvers="$5"
2445
2446         if $test -f $uname; then
2447                 set X $myuname
2448                 shift
2449
2450                 case "$5" in
2451                 fps*) osname=fps ;;
2452                 mips*)
2453                         case "$4" in
2454                         umips) osname=umips ;;
2455                         *) osname=mips ;;
2456                         esac;;
2457                 [23]100) osname=mips ;;
2458                 next*) osname=next ;;
2459                 i386*)
2460                         tmp=`/bin/uname -X 2>/dev/null|awk '/3\.2v[45]/{ print $(NF) }'`
2461                         if $test "$tmp" != "" -a "$3" = "3.2" -a -f '/etc/systemid'; then
2462                                 osname='sco'
2463                                 osvers=$tmp
2464                         elif $test -f /etc/kconfig; then
2465                                 osname=isc
2466                                 if test "$lns" = "$ln -s"; then
2467                                         osvers=4
2468                                 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
2469                                         osvers=3
2470                                 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
2471                                         osvers=2
2472                                 fi
2473                         fi
2474                         tmp=''
2475                         ;;
2476                 pc*)
2477                         if test -n "$DJGPP"; then
2478                                 osname=dos
2479                                 osvers=djgpp
2480                         fi
2481                         ;;
2482                 esac
2483
2484                 case "$1" in
2485                 aix) osname=aix
2486                         tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
2487                         case "$tmp" in
2488                         'not found') osvers="$4"."$3" ;;
2489                         '<3240'|'<>3240') osvers=3.2.0 ;;
2490                         '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
2491                         '=3250'|'>3250') osvers=3.2.5 ;;
2492                         *) osvers=$tmp;;
2493                         esac
2494                         ;;
2495                 bsd386) osname=bsd386
2496                         osvers=`$uname -r`
2497                         ;;
2498                 cygwin*) osname=cygwin
2499                         osvers="$3"
2500                         ;;
2501                 *dc.osx) osname=dcosx
2502                         osvers="$3"
2503                         ;;
2504                 dnix) osname=dnix
2505                         osvers="$3"
2506                         ;;
2507                 domainos) osname=apollo
2508                         osvers="$3"
2509                         ;;
2510                 dgux) osname=dgux 
2511                         osvers="$3"
2512                         ;;
2513                 dynixptx*) osname=dynixptx
2514                         osvers=`echo "$4"|sed 's/^v//'`
2515                         ;;
2516                 freebsd) osname=freebsd 
2517                         osvers="$3" ;;
2518                 genix) osname=genix ;;
2519                 hp*) osname=hpux 
2520                         osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
2521                         ;;
2522                 irix*) osname=irix
2523                         case "$3" in
2524                         4*) osvers=4 ;;
2525                         5*) osvers=5 ;;
2526                         *)      osvers="$3" ;;
2527                         esac
2528                         ;;
2529                 linux) osname=linux
2530                         case "$3" in
2531                         *)      osvers="$3" ;;
2532                         esac
2533                         ;;
2534                 MiNT) osname=mint
2535                         ;;
2536                 netbsd*) osname=netbsd
2537                         osvers="$3"
2538                         ;;
2539                 news-os) osvers="$3"
2540                         case "$3" in
2541                         4*) osname=newsos4 ;;
2542                         *) osname=newsos ;;
2543                         esac
2544                         ;;
2545                 next*) osname=next ;;
2546                 nonstop-ux) osname=nonstopux ;;
2547                 POSIX-BC | posix-bc ) osname=posix-bc
2548                         osvers="$3"
2549                         ;;
2550                 powerux | power_ux | powermax_os | powermaxos | \
2551                 powerunix | power_unix) osname=powerux
2552                         osvers="$3"
2553                         ;;
2554                 qnx) osname=qnx
2555                         osvers="$4"
2556                         ;;
2557                 solaris) osname=solaris
2558                         case "$3" in
2559                         5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2560                         *)      osvers="$3" ;;
2561                         esac
2562                         ;;
2563                 sunos) osname=sunos
2564                         case "$3" in
2565                         5*) osname=solaris
2566                                 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2567                         *)      osvers="$3" ;;
2568                         esac
2569                         ;;
2570                 titanos) osname=titanos
2571                         case "$3" in
2572                         1*) osvers=1 ;;
2573                         2*) osvers=2 ;;
2574                         3*) osvers=3 ;;
2575                         4*) osvers=4 ;;
2576                         *)      osvers="$3" ;;
2577                         esac
2578                         ;;
2579                 ultrix) osname=ultrix
2580                         osvers="$3"
2581                         ;;
2582                 osf1|mls+)      case "$5" in
2583                                 alpha)
2584                                         osname=dec_osf
2585                                         osvers=`sizer -v | awk '{print $3}' |  tr '[A-Z]' '[a-z]' | sed 's/^[xvt]//'`
2586                                         case "$osvers" in
2587                                         [1-9].[0-9]*) ;;
2588                                         *) osvers=`echo "$3" | sed 's/^[xvt]//'` ;;
2589                                         esac
2590                                         ;;
2591                         hp*)    osname=hp_osf1  ;;
2592                         mips)   osname=mips_osf1 ;;
2593                         esac
2594                         ;;
2595                 unixware) osname=svr5
2596                         osvers="$4"
2597                         ;;
2598                 uts) osname=uts
2599                         osvers="$3"
2600                         ;;
2601                 $2) case "$osname" in
2602                         *isc*) ;;
2603                         *freebsd*) ;;
2604                         svr*)
2605                                 : svr4.x or possibly later
2606                                 case "svr$3" in 
2607                                 ${osname}*)
2608                                         osname=svr$3
2609                                         osvers=$4
2610                                         ;;
2611                                 esac
2612                                 case "$osname" in
2613                                 svr4.0)
2614                                         : Check for ESIX
2615                                         if test -f /stand/boot ; then
2616                                                 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
2617                                                 if test -n "$INITPROG" -a -f "$INITPROG"; then
2618                         isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
2619                                                         if test -n "$isesix"; then
2620                                                                 osname=esix4
2621                                                         fi
2622                                                 fi
2623                                         fi
2624                                         ;;
2625                                 esac
2626                                 ;;
2627                         *)      if test -f /etc/systemid; then
2628                                         osname=sco
2629                                         set `echo $3 | $sed 's/\./ /g'` $4
2630                                         if $test -f $src/hints/sco_$1_$2_$3.sh; then
2631                                                 osvers=$1.$2.$3
2632                                         elif $test -f $src/hints/sco_$1_$2.sh; then
2633                                                 osvers=$1.$2
2634                                         elif $test -f $src/hints/sco_$1.sh; then
2635                                                 osvers=$1
2636                                         fi
2637                                 else
2638                                         case "$osname" in
2639                                         '') : Still unknown.  Probably a generic Sys V.
2640                                                 osname="sysv"
2641                                                 osvers="$3"
2642                                                 ;;
2643                                         esac
2644                                 fi
2645                                 ;;
2646                         esac
2647                         ;;
2648                 *)      case "$osname" in
2649                         '') : Still unknown.  Probably a generic BSD.
2650                                 osname="$1"
2651                                 osvers="$3"
2652                                 ;;
2653                         esac
2654                         ;;
2655                 esac
2656         else
2657                 if test -f /vmunix -a -f $src/hints/news_os.sh; then
2658                         (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
2659                         if $contains news-os UU/kernel.what >/dev/null 2>&1; then
2660                                 osname=news_os
2661                         fi
2662                         $rm -f UU/kernel.what
2663                 elif test -d c:/.; then
2664                         set X $myuname
2665                         osname=os2
2666                         osvers="$5"
2667                 fi
2668         fi
2669         
2670         : Now look for a hint file osname_osvers, unless one has been
2671         : specified already.
2672         case "$hintfile" in
2673         ''|' ')
2674                 file=`echo "${osname}_${osvers}" | $sed -e 's%\.%_%g' -e 's%_$%%'`
2675                 : Also try without trailing minor version numbers.
2676                 xfile=`echo $file | $sed -e 's%_[^_]*$%%'`
2677                 xxfile=`echo $xfile | $sed -e 's%_[^_]*$%%'`
2678                 xxxfile=`echo $xxfile | $sed -e 's%_[^_]*$%%'`
2679                 xxxxfile=`echo $xxxfile | $sed -e 's%_[^_]*$%%'`
2680                 case "$file" in
2681                 '') dflt=none ;;
2682                 *)  case "$osvers" in
2683                         '') dflt=$file
2684                                 ;;
2685                         *)  if $test -f $src/hints/$file.sh ; then
2686                                         dflt=$file
2687                                 elif $test -f $src/hints/$xfile.sh ; then
2688                                         dflt=$xfile
2689                                 elif $test -f $src/hints/$xxfile.sh ; then
2690                                         dflt=$xxfile
2691                                 elif $test -f $src/hints/$xxxfile.sh ; then
2692                                         dflt=$xxxfile
2693                                 elif $test -f $src/hints/$xxxxfile.sh ; then
2694                                         dflt=$xxxxfile
2695                                 elif $test -f "$src/hints/${osname}.sh" ; then
2696                                         dflt="${osname}"
2697                                 else
2698                                         dflt=none
2699                                 fi
2700                                 ;;
2701                         esac
2702                         ;;
2703                 esac
2704                 if $test -f Policy.sh ; then
2705                         case "$dflt" in
2706                         *Policy*) ;;
2707                         none) dflt="Policy" ;;
2708                         *) dflt="Policy $dflt" ;;
2709                         esac
2710                 fi
2711                 ;;
2712         *)
2713                 dflt=`echo $hintfile | $sed 's/\.sh$//'`
2714                 ;;
2715         esac
2716
2717         if $test -f Policy.sh ; then
2718                 $cat <<EOM
2719
2720 There's also a Policy hint file available, which should make the
2721 site-specific (policy) questions easier to answer.
2722 EOM
2723
2724         fi
2725
2726         $cat <<EOM
2727
2728 You may give one or more space-separated answers, or "none" if appropriate.
2729 A well-behaved OS will have no hints, so answering "none" or just "Policy"
2730 is a good thing.  DO NOT give a wrong version or a wrong OS.
2731
2732 EOM
2733
2734         rp="Which of these apply, if any?"
2735         . UU/myread
2736         tans=$ans
2737         for file in $tans; do
2738                 if $test X$file = XPolicy -a -f Policy.sh; then
2739                         . Policy.sh
2740                         $cat Policy.sh >> UU/config.sh
2741                 elif $test -f $src/hints/$file.sh; then
2742                         . $src/hints/$file.sh
2743                         $cat $src/hints/$file.sh >> UU/config.sh
2744                 elif $test X$tans = X -o X$tans = Xnone ; then
2745                         : nothing
2746                 else
2747                         : Give one chance to correct a possible typo.
2748                         echo "$file.sh does not exist"
2749                         dflt=$file
2750                         rp="hint to use instead?"
2751                         . UU/myread
2752                         for file in $ans; do
2753                                 if $test -f "$src/hints/$file.sh"; then
2754                                         . $src/hints/$file.sh
2755                                         $cat $src/hints/$file.sh >> UU/config.sh
2756                                 elif $test X$ans = X -o X$ans = Xnone ; then
2757                                         : nothing
2758                                 else
2759                                         echo "$file.sh does not exist -- ignored."
2760                                 fi
2761                         done
2762                 fi
2763         done
2764
2765         hint=recommended
2766         : Remember our hint file for later.
2767         if $test -f "$src/hints/$file.sh" ; then
2768                 hintfile="$file"
2769         else
2770                 hintfile=''
2771         fi
2772 fi
2773 cd UU
2774 ;;
2775 *)
2776         echo " "
2777         echo "Fetching default answers from $config_sh..." >&4
2778         tmp_n="$n"
2779         tmp_c="$c"
2780         cd ..
2781         cp $config_sh config.sh 2>/dev/null
2782         chmod +w config.sh
2783         . ./config.sh
2784         cd UU
2785         cp ../config.sh .
2786         n="$tmp_n"
2787         c="$tmp_c"
2788         hint=previous
2789         ;;
2790 esac
2791 test "$override" && . ./optdef.sh
2792
2793 : Restore computed paths
2794 for file in $loclist $trylist; do
2795         eval $file="\$_$file"
2796 done
2797
2798 cat << EOM
2799
2800 Configure uses the operating system name and version to set some defaults.
2801 The default value is probably right if the name rings a bell. Otherwise,
2802 since spelling matters for me, either accept the default or answer "none"
2803 to leave it blank.
2804
2805 EOM
2806 case "$osname" in
2807         ''|' ')
2808                 case "$hintfile" in
2809                 ''|' '|none) dflt=none ;;
2810                 *)  dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
2811                 esac
2812                 ;;
2813         *) dflt="$osname" ;;
2814 esac
2815 rp="Operating system name?"
2816 . ./myread
2817 case "$ans" in
2818 none)  osname='' ;;
2819 *) osname=`echo "$ans" | $sed -e 's/[   ][      ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
2820 esac
2821 echo " "
2822 case "$osvers" in
2823         ''|' ')
2824                 case "$hintfile" in
2825                 ''|' '|none) dflt=none ;;
2826                 *)      dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
2827                         dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
2828                         case "$dflt" in
2829                         ''|' ') dflt=none ;;
2830                         esac
2831                         ;;
2832                 esac
2833                 ;;
2834         *) dflt="$osvers" ;;
2835 esac
2836 rp="Operating system version?"
2837 . ./myread
2838 case "$ans" in
2839 none)  osvers='' ;;
2840 *) osvers="$ans" ;;
2841 esac
2842
2843
2844 . ./posthint.sh
2845
2846 : who configured the system
2847 cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
2848 cf_by=`(logname) 2>/dev/null`
2849 case "$cf_by" in
2850 "")
2851         cf_by=`(whoami) 2>/dev/null`
2852         case "$cf_by" in
2853         "") cf_by=unknown ;;
2854         esac ;;
2855 esac
2856
2857 : set up the script used to warn in case of inconsistency
2858 cat <<EOS >whoa
2859 $startsh
2860 EOS
2861 cat <<'EOSC' >>whoa
2862 dflt=y
2863 echo " "
2864 echo "*** WHOA THERE!!! ***" >&4
2865 echo "    The $hint value for \$$var on this machine was \"$was\"!" >&4
2866 rp="    Keep the $hint value?"
2867 . ./myread
2868 case "$ans" in
2869 y) td=$was; tu=$was;;
2870 esac
2871 EOSC
2872
2873 : function used to set $1 to $val
2874 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
2875 case "$val$was" in
2876 $define$undef) . ./whoa; eval "$var=\$td";;
2877 $undef$define) . ./whoa; eval "$var=\$tu";;
2878 *) eval "$var=$val";;
2879 esac'
2880
2881 case "$usethreads" in
2882 $define|true|[yY]*)     dflt='y';;
2883 *) dflt='n';;
2884 esac
2885 cat <<EOM
2886
2887 Perl can be built to take advantage of threads on some systems.
2888 To do so, Configure can be run with -Dusethreads.
2889
2890 Note that threading is a highly experimental feature, and
2891 some known race conditions still remain.  If you choose to try
2892 it, be very sure to not actually deploy it for production
2893 purposes.  README.threads has more details, and is required
2894 reading if you enable threads.
2895
2896 If this doesn't make any sense to you, just accept the default '$dflt'.
2897 EOM
2898 rp='Build a threading Perl?'
2899 . ./myread
2900 case "$ans" in
2901 y|Y)    val="$define" ;;
2902 *)      val="$undef" ;;
2903 esac
2904 set usethreads
2905 eval $setvar
2906
2907 case "$usethreads" in
2908 $define)
2909         $cat <<EOM
2910
2911 As of 5.5.640, Perl has two different internal threading implementations,
2912 the 5.005 version (5005threads) and an interpreter-based version
2913 (ithreads) that has one interpreter per thread.  Both are very 
2914 experimental.  This arrangement exists to help developers work out
2915 which one is better.
2916
2917 If you're a casual user, you probably don't want interpreter-threads
2918 at this time.  There doesn't yet exist a way to create threads from
2919 within Perl in this model, i.e., "use Thread;" will NOT work.
2920 EOM
2921         : Default to ithreads unless overridden on command line or with
2922         : old config.sh
2923         dflt='y'
2924         case "$use5005threads" in
2925                 $define|true|[yY]*) dflt='n';;
2926         esac
2927         case "$useithreads" in
2928                 $undef|false|[nN]*) dflt='n';;
2929         esac
2930         rp='Use interpreter-based ithreads?'
2931         . ./myread
2932         case "$ans" in
2933         y|Y)    val="$define" ;;
2934         *)      val="$undef" ;;
2935         esac
2936         set useithreads
2937         eval $setvar
2938         : Now set use5005threads to the opposite value.
2939         case "$useithreads" in
2940         $define) val="$undef" ;;
2941         *) val="$define" ;;
2942         esac
2943         set use5005threads
2944         eval $setvar
2945         ;;
2946 *)
2947         useithreads="$undef"
2948         use5005threads="$undef"
2949         ;;
2950 esac
2951
2952 case "$useithreads$use5005threads" in
2953 "$define$define")
2954         $cat >&4 <<EOM
2955
2956 You cannot have both the ithreads and the 5.005 threads enabled
2957 at the same time.  Disabling the 5.005 threads since they are
2958 much less stable than the ithreads.
2959
2960 EOM
2961         use5005threads="$undef"
2962         ;;
2963 esac
2964
2965 case "$d_oldpthreads" in
2966 '')     : Configure tests would be welcome here.  For now, assume undef.
2967         val="$undef" ;;
2968 *)      val="$d_oldpthreads" ;;
2969 esac
2970 set d_oldpthreads
2971 eval $setvar
2972
2973
2974 case "$usethreads" in
2975 "$define"|true|[yY]*)
2976 : Look for a hint-file generated 'call-back-unit'.  If the
2977 : user has specified that a threading perl is to be built,
2978 : we may need to set or change some other defaults.
2979         if $test -f usethreads.cbu; then
2980                 echo "Your platform has some specific hints for threaded builds, using them..."
2981                 . ./usethreads.cbu
2982         else
2983                 $cat <<EOM
2984 (Your platform doesn't have any specific hints for threaded builds.
2985  Assuming POSIX threads, then.)
2986 EOM
2987         fi
2988         ;;
2989 esac
2990
2991 cat <<EOM
2992
2993 Perl can be built so that multiple Perl interpreters can coexist
2994 within the same Perl executable.
2995 EOM
2996
2997 case "$useithreads" in
2998 $define)
2999         cat <<EOM
3000 This multiple interpreter support is required for interpreter-based threads.
3001 EOM
3002         val="$define"
3003         ;;
3004 *)      case "$usemultiplicity" in
3005         $define|true|[yY]*)     dflt='y';;
3006         *) dflt='n';;
3007         esac
3008         echo " "
3009         echo "If this doesn't make any sense to you, just accept the default '$dflt'."
3010         rp='Build Perl for multiplicity?'
3011         . ./myread
3012         case "$ans" in
3013         y|Y)    val="$define" ;;
3014         *)      val="$undef" ;;
3015         esac
3016         ;;
3017 esac
3018 set usemultiplicity
3019 eval $setvar
3020
3021 : make some quick guesses about what we are up against
3022 echo " "
3023 $echo $n "Hmm...  $c"
3024 echo exit 1 >bsd
3025 echo exit 1 >usg
3026 echo exit 1 >v7
3027 echo exit 1 >osf1
3028 echo exit 1 >eunice
3029 echo exit 1 >xenix
3030 echo exit 1 >venix
3031 echo exit 1 >os2
3032 d_bsd="$undef"
3033 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
3034 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
3035 then
3036         echo "Looks kind of like an OSF/1 system, but we'll see..."
3037         echo exit 0 >osf1
3038 elif test `echo abc | $tr a-z A-Z` = Abc ; then
3039         xxx=`./loc addbib blurfl $pth`
3040         if $test -f $xxx; then
3041         echo "Looks kind of like a USG system with BSD features, but we'll see..."
3042                 echo exit 0 >bsd
3043                 echo exit 0 >usg
3044         else
3045                 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
3046                         echo "Looks kind of like an extended USG system, but we'll see..."
3047                 else
3048                         echo "Looks kind of like a USG system, but we'll see..."
3049                 fi
3050                 echo exit 0 >usg
3051         fi
3052 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
3053         echo "Looks kind of like a BSD system, but we'll see..."
3054         d_bsd="$define"
3055         echo exit 0 >bsd
3056 else
3057         echo "Looks kind of like a Version 7 system, but we'll see..."
3058         echo exit 0 >v7
3059 fi
3060 case "$eunicefix" in
3061 *unixtovms*)
3062         $cat <<'EOI'
3063 There is, however, a strange, musty smell in the air that reminds me of
3064 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
3065 EOI
3066         echo exit 0 >eunice
3067         d_eunice="$define"
3068 : it so happens the Eunice I know will not run shell scripts in Unix format
3069         ;;
3070 *)
3071         echo " "
3072         echo "Congratulations.  You aren't running Eunice."
3073         d_eunice="$undef"
3074         ;;
3075 esac
3076 : Detect OS2.  The p_ variable is set above in the Head.U unit.
3077 : Note that this also -- wrongly -- detects e.g. dos-djgpp, which also uses
3078 : semicolon as a patch separator
3079 case "$p_" in
3080 :) ;;
3081 *)
3082         $cat <<'EOI'
3083 I have the feeling something is not exactly right, however...don't tell me...
3084 lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
3085 (Or you may be running DOS with DJGPP.)
3086 EOI
3087         echo exit 0 >os2
3088         ;;
3089 esac
3090 if test -f /xenix; then
3091         echo "Actually, this looks more like a XENIX system..."
3092         echo exit 0 >xenix
3093         d_xenix="$define"
3094 else
3095         echo " "
3096         echo "It's not Xenix..."
3097         d_xenix="$undef"
3098 fi
3099 chmod +x xenix
3100 $eunicefix xenix
3101 if test -f /venix; then
3102         echo "Actually, this looks more like a VENIX system..."
3103         echo exit 0 >venix
3104 else
3105         echo " "
3106         if ./xenix; then
3107                 : null
3108         else
3109                 echo "Nor is it Venix..."
3110         fi
3111 fi
3112 chmod +x bsd usg v7 osf1 eunice xenix venix os2
3113 $eunicefix bsd usg v7 osf1 eunice xenix venix os2
3114 $rm -f foo
3115
3116 case "$cc" in
3117 '') dflt=cc;;
3118 *) dflt="$cc";;
3119 esac
3120 rp="Use which C compiler?"
3121 . ./myread
3122 cc="$ans"
3123 : Look for a hint-file generated 'call-back-unit'.  Now that the
3124 : user has specified the compiler, we may need to set or change some
3125 : other defaults.
3126 if $test -f cc.cbu; then
3127     . ./cc.cbu
3128 fi
3129 . ./checkcc
3130
3131 echo " "
3132 echo "Checking for GNU cc in disguise and/or its version number..." >&4
3133 $cat >gccvers.c <<EOM
3134 #include <stdio.h>
3135 int main() {
3136 #ifdef __GNUC__
3137 #ifdef __VERSION__
3138         printf("%s\n", __VERSION__);
3139 #else
3140         printf("%s\n", "1");
3141 #endif
3142 #endif
3143         exit(0);
3144 }
3145 EOM
3146 if $cc -o gccvers $ldflags gccvers.c; then
3147         gccversion=`./gccvers`
3148         case "$gccversion" in
3149         '') echo "You are not using GNU cc." ;;
3150         *)  echo "You are using GNU cc $gccversion."
3151             ccname=gcc  
3152             ;;
3153         esac
3154 else
3155         echo " "
3156         echo "*** WHOA THERE!!! ***" >&4
3157         echo "    Your C compiler \"$cc\" doesn't seem to be working!" >&4
3158         case "$knowitall" in
3159         '')
3160         echo "    You'd better start hunting for one and let me know about it." >&4
3161                 exit 1
3162                 ;;
3163         esac
3164 fi
3165 $rm -f gccvers*
3166 case "$gccversion" in
3167 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3168 esac
3169 case "$gccversion" in
3170 '') gccosandvers='' ;;
3171 *) gccshortvers=`echo "$gccversion"|sed 's/ .*//'`
3172    gccosandvers=`$cc -v 2>&1|grep '/specs$'|sed "s!.*/[^-/]*-[^-/]*-\([^-/]*\)/$gccshortvers/specs!\1!"`
3173    gccshortvers=''
3174    case "$gccosandvers" in
3175    $osname) gccosandvers='' ;; # linux gccs seem to have no linux osvers, grr
3176    $osname$osvers) ;; # looking good
3177    $osname*) cat <<EOM >&4
3178
3179 *** WHOA THERE!!! ***
3180
3181     Your gcc has not been compiled for the exact release of
3182     your operating system ($gccosandvers versus $osname$osvers).
3183
3184     In general it is a good idea to keep gcc synchronized with
3185     the operating system because otherwise serious problems
3186     may ensue when trying to compile software, like Perl.
3187
3188     I'm trying to be optimistic here, though, and will continue.
3189     If later during the configuration and build icky compilation
3190     problems appear (headerfile conflicts being the most common
3191     manifestation), I suggest reinstalling the gcc to match
3192     your operating system release.
3193
3194 EOM
3195       ;;
3196    *) gccosandvers='' ;; # failed to parse, better be silent
3197    esac
3198    ;;
3199 esac
3200 case "$ccname" in
3201 '') ccname="$cc" ;;
3202 esac
3203
3204 : see how we invoke the C preprocessor
3205 echo " "
3206 echo "Now, how can we feed standard input to your C preprocessor..." >&4
3207 cat <<'EOT' >testcpp.c
3208 #define ABC abc
3209 #define XYZ xyz
3210 ABC.XYZ
3211 EOT
3212 cd ..
3213 if test ! -f cppstdin; then
3214         if test "X$osname" = "Xaix" -a "X$gccversion" = X; then
3215                 # AIX cc -E doesn't show the absolute headerfile
3216                 # locations but we'll cheat by using the -M flag.
3217                 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
3218         else
3219                 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
3220         fi
3221 else
3222         echo "Keeping your $hint cppstdin wrapper."
3223 fi
3224 chmod 755 cppstdin
3225 wrapper=`pwd`/cppstdin
3226 ok='false'
3227 cd UU
3228
3229 if $test "X$cppstdin" != "X" && \
3230         $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
3231         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3232 then
3233         echo "You used to use $cppstdin $cppminus so we'll use that again."
3234         case "$cpprun" in
3235         '') echo "But let's see if we can live without a wrapper..." ;;
3236         *)
3237                 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
3238                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3239                 then
3240                         echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
3241                         ok='true'
3242                 else
3243                         echo "(However, $cpprun $cpplast does not work, let's see...)"
3244                 fi
3245                 ;;
3246         esac
3247 else
3248         case "$cppstdin" in
3249         '') ;;
3250         *)
3251                 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
3252                 ;;
3253         esac
3254 fi
3255
3256 if $ok; then
3257         : nothing
3258 elif echo 'Maybe "'"$cc"' -E" will work...'; \
3259         $cc -E <testcpp.c >testcpp.out 2>&1; \
3260         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3261         echo "Yup, it does."
3262         x_cpp="$cc -E"
3263         x_minus='';
3264 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
3265         $cc -E - <testcpp.c >testcpp.out 2>&1; \
3266         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3267         echo "Yup, it does."
3268         x_cpp="$cc -E"
3269         x_minus='-';
3270 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
3271         $cc -P <testcpp.c >testcpp.out 2>&1; \
3272         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3273         echo "Yipee, that works!"
3274         x_cpp="$cc -P"
3275         x_minus='';
3276 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
3277         $cc -P - <testcpp.c >testcpp.out 2>&1; \
3278         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3279         echo "At long last!"
3280         x_cpp="$cc -P"
3281         x_minus='-';
3282 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
3283         $cpp <testcpp.c >testcpp.out 2>&1; \
3284         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3285         echo "It works!"
3286         x_cpp="$cpp"
3287         x_minus='';
3288 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
3289         $cpp - <testcpp.c >testcpp.out 2>&1; \
3290         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3291         echo "Hooray, it works!  I was beginning to wonder."
3292         x_cpp="$cpp"
3293         x_minus='-';
3294 elif echo 'Uh-uh.  Time to get fancy.  Trying a wrapper...'; \
3295         $wrapper <testcpp.c >testcpp.out 2>&1; \
3296         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3297         x_cpp="$wrapper"
3298         x_minus=''
3299         echo "Eureka!"
3300 else
3301         dflt=''
3302         rp="No dice.  I can't find a C preprocessor.  Name one:"
3303         . ./myread
3304         x_cpp="$ans"
3305         x_minus=''
3306         $x_cpp <testcpp.c >testcpp.out 2>&1
3307         if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3308                 echo "OK, that will do." >&4
3309         else
3310 echo "Sorry, I can't get that to work.  Go find one and rerun Configure." >&4
3311                 exit 1
3312         fi
3313 fi
3314
3315 case "$ok" in
3316 false)
3317         cppstdin="$x_cpp"
3318         cppminus="$x_minus"
3319         cpprun="$x_cpp"
3320         cpplast="$x_minus"
3321         set X $x_cpp
3322         shift
3323         case "$1" in
3324         "$cpp")
3325                 echo "Perhaps can we force $cc -E using a wrapper..."
3326                 if $wrapper <testcpp.c >testcpp.out 2>&1; \
3327                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3328                 then
3329                         echo "Yup, we can."
3330                         cppstdin="$wrapper"
3331                         cppminus='';
3332                 else
3333                         echo "Nope, we'll have to live without it..."
3334                 fi
3335                 ;;
3336         esac
3337         case "$cpprun" in
3338         "$wrapper")
3339                 cpprun=''
3340                 cpplast=''
3341                 ;;
3342         esac
3343         ;;
3344 esac
3345
3346 case "$cppstdin" in
3347 "$wrapper"|'cppstdin') ;;
3348 *) $rm -f $wrapper;;
3349 esac
3350 $rm -f testcpp.c testcpp.out
3351
3352 : decide how portable to be.  Allow command line overrides.
3353 case "$d_portable" in
3354 "$undef") ;;
3355 *)      d_portable="$define" ;;
3356 esac
3357
3358 : set up shell script to do ~ expansion
3359 cat >filexp <<EOSS
3360 $startsh
3361 : expand filename
3362 case "\$1" in
3363  ~/*|~)
3364         echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
3365         ;;
3366  ~*)
3367         if $test -f /bin/csh; then
3368                 /bin/csh -f -c "glob \$1"
3369                 failed=\$?
3370                 echo ""
3371                 exit \$failed
3372         else
3373                 name=\`$expr x\$1 : '..\([^/]*\)'\`
3374                 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
3375                 if $test ! -d "\$dir"; then
3376                         me=\`basename \$0\`
3377                         echo "\$me: can't locate home directory for: \$name" >&2
3378                         exit 1
3379                 fi
3380                 case "\$1" in
3381                 */*)
3382                         echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
3383                         ;;
3384                 *)
3385                         echo \$dir
3386                         ;;
3387                 esac
3388         fi
3389         ;;
3390 *)
3391         echo \$1
3392         ;;
3393 esac
3394 EOSS
3395 chmod +x filexp
3396 $eunicefix filexp
3397
3398 : now set up to get a file name
3399 cat <<EOS >getfile
3400 $startsh
3401 EOS
3402 cat <<'EOSC' >>getfile
3403 tilde=''
3404 fullpath=''
3405 already=''
3406 skip=''
3407 none_ok=''
3408 exp_file=''
3409 nopath_ok=''
3410 orig_rp="$rp"
3411 orig_dflt="$dflt"
3412 case "$gfpth" in
3413 '') gfpth='.' ;;
3414 esac
3415
3416 case "$fn" in
3417 *\(*)
3418         expr $fn : '.*(\(.*\)).*' | $tr ',' $trnl >getfile.ok
3419         fn=`echo $fn | sed 's/(.*)//'`
3420         ;;
3421 esac
3422
3423 case "$fn" in
3424 *:*)
3425         loc_file=`expr $fn : '.*:\(.*\)'`
3426         fn=`expr $fn : '\(.*\):.*'`
3427         ;;
3428 esac
3429
3430 case "$fn" in
3431 *~*) tilde=true;;
3432 esac
3433 case "$fn" in
3434 */*) fullpath=true;;
3435 esac
3436 case "$fn" in
3437 *+*) skip=true;;
3438 esac
3439 case "$fn" in
3440 *n*) none_ok=true;;
3441 esac
3442 case "$fn" in
3443 *e*) exp_file=true;;
3444 esac
3445 case "$fn" in
3446 *p*) nopath_ok=true;;
3447 esac
3448
3449 case "$fn" in
3450 *f*) type='File';;
3451 *d*) type='Directory';;
3452 *l*) type='Locate';;
3453 esac
3454
3455 what="$type"
3456 case "$what" in
3457 Locate) what='File';;
3458 esac
3459
3460 case "$exp_file" in
3461 '')
3462         case "$d_portable" in
3463         "$define") ;;
3464         *) exp_file=true;;
3465         esac
3466         ;;
3467 esac
3468
3469 cd ..
3470 while test "$type"; do
3471         redo=''
3472         rp="$orig_rp"
3473         dflt="$orig_dflt"
3474         case "$tilde" in
3475         true) rp="$rp (~name ok)";;
3476         esac
3477         . UU/myread
3478         if test -f UU/getfile.ok && \
3479                 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
3480         then
3481                 value="$ans"
3482                 ansexp="$ans"
3483                 break
3484         fi
3485         case "$ans" in
3486         none)
3487                 value=''
3488                 ansexp=''
3489                 case "$none_ok" in
3490                 true) type='';;
3491                 esac
3492                 ;;
3493         *)
3494                 case "$tilde" in
3495                 '') value="$ans"
3496                         ansexp="$ans";;
3497                 *)
3498                         value=`UU/filexp $ans`
3499                         case $? in
3500                         0)
3501                                 if test "$ans" != "$value"; then
3502                                         echo "(That expands to $value on this system.)"
3503                                 fi
3504                                 ;;
3505                         *) value="$ans";;
3506                         esac
3507                         ansexp="$value"
3508                         case "$exp_file" in
3509                         '') value="$ans";;
3510                         esac
3511                         ;;
3512                 esac
3513                 case "$fullpath" in
3514                 true)
3515                         case "$ansexp" in
3516                         /*) value="$ansexp" ;;
3517                         [a-zA-Z]:/*) value="$ansexp" ;;
3518                         *)
3519                                 redo=true
3520                                 case "$already" in
3521                                 true)
3522                                 echo "I shall only accept a full path name, as in /bin/ls." >&4
3523                                 echo "Use a ! shell escape if you wish to check pathnames." >&4
3524                                         ;;
3525                                 *)
3526                                 echo "Please give a full path name, starting with slash." >&4
3527                                         case "$tilde" in
3528                                         true)
3529                                 echo "Note that using ~name is ok provided it expands well." >&4
3530                                                 already=true
3531                                                 ;;
3532                                         esac
3533                                 esac
3534                                 ;;
3535                         esac
3536                         ;;
3537                 esac
3538                 case "$redo" in
3539                 '')
3540                         case "$type" in
3541                         File)
3542                                 for fp in $gfpth; do
3543                                         if test "X$fp" = X.; then
3544                                             pf="$ansexp"
3545                                         else    
3546                                             pf="$fp/$ansexp"
3547                                         fi
3548                                         if test -f "$pf"; then
3549                                                 type=''
3550                                         elif test -r "$pf" || (test -h "$pf") >/dev/null 2>&1
3551                                         then
3552                                                 echo "($value is not a plain file, but that's ok.)"
3553                                                 type=''
3554                                         fi
3555                                         if test X"$type" = X; then
3556                                             value="$pf"
3557                                             break
3558                                         fi
3559                                 done
3560                                 ;;
3561                         Directory)
3562                                 for fp in $gfpth; do
3563                                         if test "X$fp" = X.; then
3564                                             dir="$ans"
3565                                             direxp="$ansexp"
3566                                         else    
3567                                             dir="$fp/$ansexp"
3568                                             direxp="$fp/$ansexp"
3569                                         fi
3570                                         if test -d "$direxp"; then
3571                                                 type=''
3572                                                 value="$dir"
3573                                                 break
3574                                         fi
3575                                 done
3576                                 ;;
3577                         Locate)
3578                                 if test -d "$ansexp"; then
3579                                         echo "(Looking for $loc_file in directory $value.)"
3580                                         value="$value/$loc_file"
3581                                         ansexp="$ansexp/$loc_file"
3582                                 fi
3583                                 if test -f "$ansexp"; then
3584                                         type=''
3585                                 fi
3586                                 case "$nopath_ok" in
3587                                 true)   case "$value" in
3588                                         */*) ;;
3589                                         *)      echo "Assuming $value will be in people's path."
3590                                                 type=''
3591                                                 ;;
3592                                         esac
3593                                         ;;
3594                                 esac
3595                                 ;;
3596                         esac
3597
3598                         case "$skip" in
3599                         true) type='';
3600                         esac
3601
3602                         case "$type" in
3603                         '') ;;
3604                         *)
3605                                 if test "$fastread" = yes; then
3606                                         dflt=y
3607                                 else
3608                                         dflt=n
3609                                 fi
3610                                 rp="$what $value doesn't exist.  Use that name anyway?"
3611                                 . UU/myread
3612                                 dflt=''
3613                                 case "$ans" in
3614                                 y*) type='';;
3615                                 *) echo " ";;
3616                                 esac
3617                                 ;;
3618                         esac
3619                         ;;
3620                 esac
3621                 ;;
3622         esac
3623 done
3624 cd UU
3625 ans="$value"
3626 rp="$orig_rp"
3627 dflt="$orig_dflt"
3628 rm -f getfile.ok
3629 test "X$gfpthkeep" != Xy && gfpth=""
3630 EOSC
3631
3632 : What should the include directory be ?
3633 echo " "
3634 $echo $n "Hmm...  $c"
3635 dflt='/usr/include'
3636 incpath=''
3637 mips_type=''
3638 if $test -f /bin/mips && /bin/mips; then
3639         echo "Looks like a MIPS system..."
3640         $cat >usr.c <<'EOCP'
3641 #ifdef SYSTYPE_BSD43
3642 /bsd43
3643 #endif
3644 EOCP
3645         if cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
3646                 dflt='/bsd43/usr/include'
3647                 incpath='/bsd43'
3648                 mips_type='BSD 4.3'
3649         else
3650                 mips_type='System V'
3651         fi
3652         $rm -f usr.c usr.out
3653         echo "and you're compiling with the $mips_type compiler and libraries."
3654         xxx_prompt=y
3655         echo "exit 0" >mips
3656 else
3657         echo "Doesn't look like a MIPS system."
3658         xxx_prompt=n
3659         echo "exit 1" >mips
3660 fi
3661 chmod +x mips
3662 $eunicefix mips
3663 case "$usrinc" in
3664 '') ;;
3665 *) dflt="$usrinc";;
3666 esac
3667 case "$xxx_prompt" in
3668 y)      fn=d/
3669         echo " "
3670         rp='Where are the include files you want to use?'
3671         . ./getfile
3672         usrinc="$ans"
3673         ;;
3674 *)      usrinc="$dflt"
3675         ;;
3676 esac
3677
3678 : Set private lib path
3679 case "$plibpth" in
3680 '') if ./mips; then
3681                 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
3682         fi;;
3683 esac
3684 case "$libpth" in
3685 ' ') dlist='';;
3686 '') dlist="$loclibpth $plibpth $glibpth";;
3687 *) dlist="$libpth";;
3688 esac
3689
3690 : Now check and see which directories actually exist, avoiding duplicates
3691 libpth=''
3692 for xxx in $dlist
3693 do
3694     if $test -d $xxx; then
3695                 case " $libpth " in
3696                 *" $xxx "*) ;;
3697                 *) libpth="$libpth $xxx";;
3698                 esac
3699     fi
3700 done
3701 $cat <<'EOM'
3702
3703 Some systems have incompatible or broken versions of libraries.  Among
3704 the directories listed in the question below, please remove any you
3705 know not to be holding relevant libraries, and add any that are needed.
3706 Say "none" for none.
3707
3708 EOM
3709 case "$libpth" in
3710 '') dflt='none';;
3711 *)
3712         set X $libpth
3713         shift
3714         dflt=${1+"$@"}
3715         ;;
3716 esac
3717 rp="Directories to use for library searches?"
3718 . ./myread
3719 case "$ans" in
3720 none) libpth=' ';;
3721 *) libpth="$ans";;
3722 esac
3723
3724 : compute shared library extension
3725 case "$so" in
3726 '')
3727         if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
3728                 dflt='sl'
3729         else
3730                 dflt='so'
3731         fi
3732         ;;
3733 *) dflt="$so";;
3734 esac
3735 $cat <<EOM
3736
3737 On some systems, shared libraries may be available.  Answer 'none' if
3738 you want to suppress searching of shared libraries for the remainder
3739 of this configuration.
3740
3741 EOM
3742 rp='What is the file extension used for shared libraries?'
3743 . ./myread
3744 so="$ans"
3745
3746 : Define several unixisms.
3747 : Hints files or command line option can be used to override them.
3748 : The convoluted testing is in case hints files set either the old
3749 : or the new name.
3750 case "$_exe" in
3751 '')     case "$exe_ext" in
3752     '') ;;
3753         *)      _exe="$exe_ext" ;;
3754         esac
3755         ;;
3756 esac
3757 case "$_a" in
3758 '')     case "$lib_ext" in
3759     '') _a='.a';;
3760         *)      _a="$lib_ext" ;;
3761         esac
3762         ;;
3763 esac
3764 case "$_o" in
3765 '') case "$obj_ext" in
3766         '')     _o='.o';;
3767         *)      _o="$obj_ext";;
3768         esac
3769         ;;
3770 esac
3771 case "$p_" in
3772 '') case "$path_sep" in
3773         '')     p_=':';;
3774         *)      p_="$path_sep";;
3775         esac
3776         ;;
3777 esac
3778 exe_ext=$_exe
3779 lib_ext=$_a
3780 obj_ext=$_o
3781 path_sep=$p_
3782
3783 : Which makefile gets called first.  This is used by make depend.
3784 case "$firstmakefile" in
3785 '') firstmakefile='makefile';;
3786 esac
3787
3788 case "$usesocks" in
3789 $define|true|[yY]*)     dflt='y';;
3790 *) dflt='n';;
3791 esac
3792 cat <<EOM
3793
3794 Perl can be built to use the SOCKS proxy protocol library.  To do so,
3795 Configure must be run with -Dusesocks.  If you use SOCKS you also need
3796 to use the PerlIO abstraction layer, this will be implicitly selected.
3797
3798 If this doesn't make any sense to you, just accept the default '$dflt'.
3799 EOM
3800 rp='Build Perl for SOCKS?'
3801 . ./myread
3802 case "$ans" in
3803 y|Y)    val="$define" ;;     
3804 *)      val="$undef" ;;
3805 esac
3806 set usesocks
3807 eval $setvar
3808
3809 case "$usesocks" in
3810 $define|true|[yY]*) useperlio="$define";;
3811 esac
3812
3813 : Looking for optional libraries
3814 echo " "
3815 echo "Checking for optional libraries..." >&4
3816 case "$libs" in
3817 ' '|'') dflt='';;
3818 *) dflt="$libs";;
3819 esac
3820 case "$libswanted" in
3821 '') libswanted='c_s';;
3822 esac
3823 case "$usesocks" in
3824 "$define") libswanted="$libswanted socks5 socks5_sh" ;;
3825 esac
3826 libsfound=''
3827 libsfiles=''
3828 libsdirs=''
3829 libspath=''
3830 for thisdir in $libpth $xlibpth; do
3831   test -d $thisdir && libspath="$libspath $thisdir"
3832 done
3833 for thislib in $libswanted; do
3834         for thisdir in $libspath; do
3835             xxx=''
3836             if $test ! -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
3837                 xxx=`ls $thisdir/lib$thislib.$so.[0-9] 2>/dev/null|tail -1`
3838                 $test -f "$xxx" && eval $libscheck
3839                 $test -f "$xxx" && libstyle=shared
3840             fi
3841             if test ! -f "$xxx"; then
3842                 xxx=$thisdir/lib$thislib.$so
3843                 $test -f "$xxx" && eval $libscheck
3844                 $test -f "$xxx" && libstyle=shared
3845             fi  
3846             if test ! -f "$xxx"; then
3847                 xxx=$thisdir/lib$thislib$_a
3848                 $test -f "$xxx" && eval $libscheck
3849                 $test -f "$xxx" && libstyle=static
3850             fi
3851             if test ! -f "$xxx"; then
3852                 xxx=$thisdir/$thislib$_a
3853                 $test -f "$xxx" && eval $libscheck
3854                 $test -f "$xxx" && libstyle=static
3855             fi
3856             if test ! -f "$xxx"; then
3857                 xxx=$thisdir/lib${thislib}_s$_a
3858                 $test -f "$xxx" && eval $libscheck
3859                 $test -f "$xxx" && libstyle=static
3860                 $test -f "$xxx" && thislib=${thislib}_s
3861             fi
3862             if test ! -f "$xxx"; then
3863                 xxx=$thisdir/Slib$thislib$_a
3864                 $test -f "$xxx" && eval $libscheck
3865                 $test -f "$xxx" && libstyle=static
3866             fi
3867             if $test -f "$xxx"; then
3868                 case "$libstyle" in
3869                 shared) echo "Found -l$thislib (shared)." ;;
3870                 static) echo "Found -l$thislib." ;;
3871                 *)      echo "Found -l$thislib ($libstyle)." ;;
3872                 esac
3873                 case " $dflt " in
3874                 *"-l$thislib "*);;
3875                 *) dflt="$dflt -l$thislib"
3876                    libsfound="$libsfound $xxx"
3877                    yyy=`basename $xxx`
3878                    libsfiles="$libsfiles $yyy"
3879                    yyy=`echo $xxx|$sed -e "s%/$yyy\\$%%"`
3880                    case " $libsdirs " in
3881                    *" $yyy "*) ;;
3882                    *) libsdirs="$libsdirs $yyy" ;;
3883                    esac
3884                    ;;
3885                 esac
3886                 break
3887             fi  
3888         done
3889         if $test ! -f "$xxx"; then
3890             echo "No -l$thislib."
3891         fi
3892 done
3893 set X $dflt
3894 shift
3895 dflt="$*"
3896 case "$libs" in
3897 '') dflt="$dflt";;
3898 *) dflt="$libs";;
3899 esac
3900 case "$dflt" in
3901 ' '|'') dflt='none';;
3902 esac
3903
3904 $cat <<EOM
3905
3906 In order to compile $package on your machine, a number of libraries
3907 are usually needed.  Include any other special libraries here as well.
3908 Say "none" for none.  The default list is almost always right.
3909 EOM
3910
3911 echo " "
3912 rp="What libraries to use?"
3913 . ./myread
3914 case "$ans" in
3915 none) libs=' ';;
3916 *) libs="$ans";;
3917 esac
3918
3919 : determine optimization, if desired, or use for debug flag also
3920 case "$optimize" in
3921 ' '|$undef) dflt='none';;
3922 '') dflt='-O';;
3923 *) dflt="$optimize";;
3924 esac
3925 $cat <<EOH
3926
3927 By default, $package compiles with the -O flag to use the optimizer.
3928 Alternately, you might want to use the symbolic debugger, which uses
3929 the -g flag (on traditional Unix systems).  Either flag can be
3930 specified here.  To use neither flag, specify the word "none".
3931
3932 EOH
3933 rp="What optimizer/debugger flag should be used?"
3934 . ./myread
3935 optimize="$ans"
3936 case "$optimize" in
3937 'none') optimize=" ";;
3938 esac
3939
3940 dflt=''
3941 : We will not override a previous value, but we might want to
3942 : augment a hint file
3943 case "$hint" in
3944 default|recommended)
3945         case "$gccversion" in
3946         1*) dflt='-fpcc-struct-return' ;;
3947         esac
3948         case "$optimize" in
3949         *-g*) dflt="$dflt -DDEBUGGING";;
3950         esac
3951         case "$gccversion" in
3952         2*) if test -d /etc/conf/kconfig.d &&
3953                         $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
3954                 then
3955                         dflt="$dflt -posix"
3956                 fi
3957                 ;;
3958         esac
3959         case "$gccversion" in
3960         1*) ;;
3961         2.[0-8]*) ;;
3962         ?*)     echo " "
3963                 echo "Checking if your compiler accepts -fno-strict-aliasing" 2>&1
3964                 echo 'int main(void) { return 0; }' > gcctest.c
3965                 if $cc -O2 -fno-strict-aliasing -o gcctest gcctest.c; then
3966                         echo "Yes, it does." 2>&1
3967                         case "$ccflags" in
3968                         *strict-aliasing*) 
3969                                 echo "Leaving current flags $ccflags alone." 2>&1
3970                                 ;;
3971                         *) dflt="$dflt -fno-strict-aliasing" ;;
3972                         esac
3973                 else
3974                         echo "Nope, it doesn't, but that's ok." 2>&1
3975                 fi
3976                 ;;
3977         esac
3978         ;;
3979 esac
3980
3981 case "$mips_type" in
3982 *BSD*|'') inclwanted="$locincpth $usrinc";;
3983 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
3984 esac
3985 for thisincl in $inclwanted; do
3986         if $test -d $thisincl; then
3987                 if $test x$thisincl != x$usrinc; then
3988                         case "$dflt" in
3989                         *" -I$thisincl "*);;
3990                         *) dflt="$dflt -I$thisincl ";;
3991                         esac
3992                 fi
3993         fi
3994 done
3995
3996 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
3997         xxx=true;
3998 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
3999         xxx=true;
4000 else
4001         xxx=false;
4002 fi;
4003 if $xxx; then
4004         case "$dflt" in
4005         *$2*);;
4006         *) dflt="$dflt -D$2";;
4007         esac;
4008 fi'
4009
4010 set signal.h LANGUAGE_C; eval $inctest
4011
4012 case "$usesocks" in
4013 $define)
4014         ccflags="$ccflags -DSOCKS"
4015         ;;
4016 esac
4017
4018 case "$hint" in
4019 default|recommended) dflt="$ccflags $dflt" ;;
4020 *) dflt="$ccflags";;
4021 esac
4022
4023 case "$dflt" in
4024 ''|' ') dflt=none;;
4025 esac
4026
4027 $cat <<EOH
4028
4029 Your C compiler may want other flags.  For this question you should include
4030 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
4031 but you should NOT include libraries or ld flags like -lwhatever.  If you
4032 want $package to honor its debug switch, you should include -DDEBUGGING here.
4033 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
4034
4035 To use no flags, specify the word "none".
4036
4037 EOH
4038 set X $dflt
4039 shift
4040 dflt=${1+"$@"}
4041 rp="Any additional cc flags?"
4042 . ./myread
4043 case "$ans" in
4044 none) ccflags='';;
4045 *) ccflags="$ans";;
4046 esac
4047
4048 : the following weeds options from ccflags that are of no interest to cpp
4049 cppflags="$ccflags"
4050 case "$gccversion" in
4051 1*) cppflags="$cppflags -D__GNUC__"
4052 esac
4053 case "$mips_type" in
4054 '');;
4055 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
4056 esac
4057 case "$cppflags" in
4058 '');;
4059 *)
4060         echo " "
4061         echo "Let me guess what the preprocessor flags are..." >&4
4062         set X $cppflags
4063         shift
4064         cppflags=''
4065         $cat >cpp.c <<'EOM'
4066 #define BLURFL foo
4067
4068 BLURFL xx LFRULB
4069 EOM
4070         previous=''
4071         for flag in $*
4072         do
4073                 case "$flag" in
4074                 -*) ftry="$flag";;
4075                 *) ftry="$previous $flag";;
4076                 esac
4077                 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
4078                         >cpp1.out 2>/dev/null && \
4079                         $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
4080                         >cpp2.out 2>/dev/null && \
4081                         $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
4082                         $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
4083                 then
4084                         cppflags="$cppflags $ftry"
4085                         previous=''
4086                 else
4087                         previous="$flag"
4088                 fi
4089         done
4090         set X $cppflags
4091         shift
4092         cppflags=${1+"$@"}
4093         case "$cppflags" in
4094         *-*)  echo "They appear to be: $cppflags";;
4095         esac
4096         $rm -f cpp.c cpp?.out
4097         ;;
4098 esac
4099
4100 : flags used in final linking phase
4101 case "$ldflags" in
4102 '') if ./venix; then
4103                 dflt='-i -z'
4104         else
4105                 dflt=''
4106         fi
4107         case "$ccflags" in
4108         *-posix*) dflt="$dflt -posix" ;;
4109         esac
4110         ;;
4111 *) dflt="$ldflags";;
4112 esac
4113
4114 : Try to guess additional flags to pick up local libraries.
4115 for thislibdir in $libpth; do
4116         case " $loclibpth " in
4117         *" $thislibdir "*)
4118                 case "$dflt " in 
4119                 *"-L$thislibdir "*) ;;
4120                 *)  dflt="$dflt -L$thislibdir" ;;
4121                 esac
4122                 ;;
4123         esac
4124 done
4125
4126 case "$dflt" in
4127 '') dflt='none' ;;
4128 esac
4129
4130 $cat <<EOH
4131
4132 Your C linker may need flags.  For this question you should
4133 include -L/whatever and any other flags used by the C linker, but you
4134 should NOT include libraries like -lwhatever.
4135
4136 Make sure you include the appropriate -L/path flags if your C linker
4137 does not normally search all of the directories you specified above,
4138 namely
4139         $libpth
4140 To use no flags, specify the word "none".
4141
4142 EOH
4143
4144 rp="Any additional ld flags (NOT including libraries)?"
4145 . ./myread
4146 case "$ans" in
4147 none) ldflags='';;
4148 *) ldflags="$ans";;
4149 esac
4150 rmlist="$rmlist pdp11"
4151
4152 : coherency check
4153 echo " "
4154 echo "Checking your choice of C compiler and flags for coherency..." >&4
4155 $cat > try.c <<'EOF'
4156 #include <stdio.h>
4157 int main() { printf("Ok\n"); exit(0); }
4158 EOF
4159 set X $cc -o try $optimize $ccflags $ldflags try.c $libs
4160 shift
4161 $cat >try.msg <<'EOM'
4162 I've tried to compile and run the following simple program:
4163
4164 EOM
4165 $cat try.c >> try.msg
4166
4167 $cat >> try.msg <<EOM
4168
4169 I used the command:
4170
4171         $*
4172         ./try
4173
4174 and I got the following output:
4175
4176 EOM
4177 dflt=y
4178 if $sh -c "$cc -o try $optimize $ccflags $ldflags try.c $libs" >>try.msg 2>&1; then
4179         if $sh -c './try' >>try.msg 2>&1; then
4180                 xxx=`./try`
4181                 case "$xxx" in
4182                 "Ok") dflt=n ;;
4183                 *)      echo 'The program compiled OK, but produced no output.' >> try.msg
4184                         case " $libs " in
4185                         *" -lsfio "*)
4186                                 cat >> try.msg <<'EOQS'
4187 If $libs contains -lsfio, and sfio is mis-configured, then it
4188 sometimes (apparently) runs and exits with a 0 status, but with no
4189 output!  It may have to do with sfio's use of _exit vs. exit.
4190
4191 EOQS
4192                                 rp="You have a big problem.  Shall I abort Configure"
4193                                 dflt=y
4194                                 ;;
4195                         esac
4196                         ;;
4197                 esac
4198         else
4199                 echo "The program compiled OK, but exited with status $?." >>try.msg
4200                 rp="You have a problem.  Shall I abort Configure"
4201                 dflt=y
4202         fi
4203 else
4204         echo "I can't compile the test program." >>try.msg
4205         rp="You have a BIG problem.  Shall I abort Configure"
4206         dflt=y
4207 fi
4208 case "$dflt" in
4209 y)
4210         $cat try.msg >&4
4211         case "$knowitall" in
4212         '')
4213                 echo "(The supplied flags or libraries might be incorrect.)"
4214                 ;;
4215         *) dflt=n;;
4216         esac
4217         echo " "
4218         . ./myread
4219         case "$ans" in
4220         n*|N*) ;;
4221         *)      echo "Ok.  Stopping Configure." >&4
4222                 exit 1
4223                 ;;
4224         esac
4225         ;;
4226 n) echo "OK, that should do.";;
4227 esac
4228 $rm -f try try.* core
4229
4230 : define an is-a-typedef? function
4231 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
4232 case "$inclist" in
4233 "") inclist="sys/types.h";;
4234 esac;
4235 eval "varval=\$$var";
4236 case "$varval" in
4237 "")
4238         $rm -f temp.c;
4239         for inc in $inclist; do
4240                 echo "#include <$inc>" >>temp.c;
4241         done;
4242         echo "#ifdef $type" >> temp.c;
4243         echo "printf(\"We have $type\");" >> temp.c;
4244         echo "#endif" >> temp.c;
4245         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
4246         if $contains $type temp.E >/dev/null 2>&1; then
4247                 eval "$var=\$type";
4248         else
4249                 eval "$var=\$def";
4250         fi;
4251         $rm -f temp.?;;
4252 *) eval "$var=\$varval";;
4253 esac'
4254
4255 : define an is-a-typedef? function that prompts if the type is not available.
4256 typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
4257 case "$inclist" in
4258 "") inclist="sys/types.h";;
4259 esac;
4260 eval "varval=\$$var";
4261 case "$varval" in
4262 "")
4263         $rm -f temp.c;
4264         for inc in $inclist; do
4265                 echo "#include <$inc>" >>temp.c;
4266         done;
4267         echo "#ifdef $type" >> temp.c;
4268         echo "printf(\"We have $type\");" >> temp.c;
4269         echo "#endif" >> temp.c;
4270         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
4271         echo " " ;
4272         echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
4273         if $contains $type temp.E >/dev/null 2>&1; then
4274                 echo "$type found." >&4;
4275                 eval "$var=\$type";
4276         else
4277                 echo "$type NOT found." >&4;
4278                 dflt="$def";
4279                 . ./myread ;
4280                 eval "$var=\$ans";
4281         fi;
4282         $rm -f temp.?;;
4283 *) eval "$var=\$varval";;
4284 esac'
4285
4286 : define a shorthand compile call
4287 compile='
4288 mc_file=$1;
4289 shift;
4290 $cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs > /dev/null 2>&1;'
4291 : define a shorthand compile call for compilations that should be ok.
4292 compile_ok='
4293 mc_file=$1;
4294 shift;
4295 $cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs;'
4296
4297 : check for lengths of integral types
4298 echo " "
4299 case "$intsize" in
4300 '')
4301         echo "Checking to see how big your integers are..." >&4
4302         $cat >intsize.c <<'EOCP'
4303 #include <stdio.h>
4304 int main()
4305 {
4306         printf("intsize=%d;\n", (int)sizeof(int));
4307         printf("longsize=%d;\n", (int)sizeof(long));
4308         printf("shortsize=%d;\n", (int)sizeof(short));
4309         exit(0);
4310 }
4311 EOCP
4312         set intsize
4313         if eval $compile_ok && ./intsize > /dev/null; then
4314                 eval `./intsize`
4315                 echo "Your integers are $intsize bytes long."
4316                 echo "Your long integers are $longsize bytes long."
4317                 echo "Your short integers are $shortsize bytes long."
4318         else
4319                 $cat >&4 <<EOM
4320 !
4321 Help! I can't compile and run the intsize test program: please enlighten me!
4322 (This is probably a misconfiguration in your system or libraries, and
4323 you really ought to fix it.  Still, I'll try anyway.)
4324 !
4325 EOM
4326                 dflt=4
4327                 rp="What is the size of an integer (in bytes)?"
4328                 . ./myread
4329                 intsize="$ans"
4330                 dflt=$intsize
4331                 rp="What is the size of a long integer (in bytes)?"
4332                 . ./myread
4333                 longsize="$ans"
4334                 dflt=2
4335                 rp="What is the size of a short integer (in bytes)?"
4336                 . ./myread
4337                 shortsize="$ans"
4338         fi
4339         ;;
4340 esac
4341 $rm -f intsize intsize.*
4342
4343 : see what type lseek is declared as in the kernel
4344 rp="What is the type used for lseek's offset on this system?"
4345 set off_t lseektype long stdio.h sys/types.h
4346 eval $typedef_ask
4347
4348 echo " "
4349 echo "Checking to see how big your file offsets are..." >&4
4350 $cat >try.c <<EOCP
4351 #include <sys/types.h>
4352 #include <stdio.h>
4353 int main()
4354 {
4355     printf("%d\n", (int)sizeof($lseektype));
4356     return(0); 
4357 }
4358 EOCP
4359 set try
4360 if eval $compile_ok; then
4361         lseeksize=`./try`
4362         echo "Your file offsets are $lseeksize bytes long."
4363 else
4364         dflt=$longsize
4365         echo " "
4366         echo "(I can't seem to compile the test program.  Guessing...)"
4367         rp="What is the size of your file offsets (in bytes)?"
4368         . ./myread
4369         lseeksize="$ans"
4370 fi
4371 $rm -f try.c try
4372
4373 : see what type file positions are declared as in the library
4374 rp="What is the type for file position used by fsetpos()?"
4375 set fpos_t fpostype long stdio.h sys/types.h
4376 eval $typedef_ask
4377
4378 echo " "
4379 case "$fpostype" in
4380 *_t) zzz="$fpostype"    ;;
4381 *)   zzz="fpos_t"       ;;
4382 esac
4383 echo "Checking the size of $zzz..." >&4 
4384 cat > try.c <<EOCP
4385 #include <sys/types.h>
4386 #include <stdio.h>
4387 int main() {
4388     printf("%d\n", (int)sizeof($fpostype));
4389     exit(0);
4390 }
4391 EOCP
4392 set try
4393 if eval $compile_ok; then
4394         yyy=`./try`
4395         case "$yyy" in
4396         '')     fpossize=4
4397                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
4398                 ;;
4399         *)      fpossize=$yyy
4400                 echo "Your $zzz is $fpossize bytes long."
4401                 ;;
4402         esac
4403 else
4404         dflt="$longsize"
4405         echo " " >&4
4406         echo "(I can't compile the test program.  Guessing...)" >&4
4407         rp="What is the size of your file positions (in bytes)?"
4408         . ./myread
4409         fpossize="$ans"
4410 fi
4411
4412
4413
4414 # Backward compatibility (uselfs is deprecated).
4415 case "$uselfs" in
4416 "$define"|true|[yY]*)
4417         cat <<EOM >&4
4418
4419 *** Configure -Duselfs is deprecated, using -Duselargefiles instead.
4420 EOM
4421         uselargefiles="$define"
4422         ;;
4423 esac                          
4424
4425 case "$lseeksize:$fpossize" in
4426 8:8) cat <<EOM
4427
4428 You can have files larger than 2 gigabytes.
4429 EOM
4430    val="$define" ;;
4431 *)    case "$uselargefiles" in
4432    "$undef"|false|[nN]*) dflt='n' ;;
4433    *)   dflt='y' ;;
4434    esac
4435    cat <<EOM
4436
4437 Perl can be built to understand large files (files larger than 2 gigabytes)
4438 on some systems.  To do so, Configure can be run with -Duselargefiles.
4439
4440 If this doesn't make any sense to you, just accept the default '$dflt'.
4441 EOM
4442    rp='Try to understand large files, if available?'
4443    . ./myread
4444    case "$ans" in
4445    y|Y)         val="$define" ;;
4446    *)           val="$undef"  ;;
4447    esac
4448    ;;
4449 esac
4450 set uselargefiles
4451 eval $setvar
4452 case "$uselargefiles" in
4453 "$define")
4454 : Look for a hint-file generated 'call-back-unit'.  If the
4455 : user has specified that a large files perl is to be built,
4456 : we may need to set or change some other defaults.
4457         if $test -f uselargefiles.cbu; then
4458                 echo "Your platform has some specific hints for large file builds, using them..."
4459                 . ./uselargefiles.cbu
4460                 echo " "
4461                 echo "Rechecking to see how big your file offsets are..." >&4
4462                 $cat >try.c <<EOCP
4463 #include <sys/types.h>
4464 #include <stdio.h>
4465 int main()
4466 {
4467     printf("%d\n", (int)sizeof($lseektype));
4468     return(0); 
4469 }
4470 EOCP
4471                 set try
4472                 if eval $compile_ok; then
4473                         lseeksize=`./try`
4474                         $echo "Your file offsets are now $lseeksize bytes long."
4475                 else
4476                         dflt="$lseeksize"
4477                         echo " "
4478                         echo "(I can't seem to compile the test program.  Guessing...)"
4479                         rp="What is the size of your file offsets (in bytes)?"
4480                         . ./myread
4481                         lseeksize="$ans"
4482                 fi
4483                 case "$fpostype" in
4484                 *_t) zzz="$fpostype"    ;;
4485                 *)   zzz="fpos_t"       ;;
4486                 esac
4487                 $echo $n "Rechecking the size of $zzz...$c" >&4 
4488                 $cat > try.c <<EOCP
4489 #include <sys/types.h>
4490 #include <stdio.h>
4491 int main() {
4492     printf("%d\n", (int)sizeof($fpostype));
4493     exit(0);
4494 }
4495 EOCP
4496                 set try
4497                 if eval $compile_ok; then
4498                         yyy=`./try`
4499                         dflt="$lseeksize"
4500                         case "$yyy" in
4501                         '')     echo " "
4502                                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
4503                                 ;;
4504                         *)      fpossize=$yyy
4505                                 echo " $fpossize bytes." >&4
4506                                 ;;
4507                         esac
4508                 else
4509                         dflt="$fpossize"
4510                         echo " "
4511                         echo "(I can't compile the test program.  Guessing...)" >&4
4512                         rp="What is the size of your file positions (in bytes)?"
4513                         . ./myread
4514                         fpossize="$ans"
4515                 fi
4516                 $rm -f try.c try
4517         fi
4518         ;;
4519 esac
4520
4521
4522 case "$usemorebits" in
4523 "$define"|true|[yY]*)
4524         use64bitint="$define"
4525         uselongdouble="$define"
4526         usemorebits="$define"
4527         ;;
4528 *)      usemorebits="$undef"
4529         ;;
4530 esac
4531
4532
4533 case "$uselonglong" in
4534 "$define"|true|[yY]*)
4535         cat <<EOM >&4
4536
4537 *** Configure -Duselonglong is deprecated, using -Duse64bitint instead.
4538 EOM
4539         use64bitint="$define"
4540         ;;
4541 esac                          
4542 case "$use64bits" in
4543 "$define"|true|[yY]*)
4544         cat <<EOM >&4
4545
4546 *** Configure -Duse64bits is deprecated, using -Duse64bitint instead.
4547 EOM
4548         use64bitint="$define"
4549         ;;
4550 esac                          
4551 case "$use64bitints" in
4552 "$define"|true|[yY]*)
4553         cat <<EOM >&4
4554
4555 *** There is no Configure -Duse64bitints, using -Duse64bitint instead.
4556 EOM
4557         use64bitint="$define"
4558         ;;
4559 esac                          
4560 case "$use64bitsint" in
4561 "$define"|true|[yY]*)
4562         cat <<EOM >&4
4563
4564 *** There is no Configure -Duse64bitsint, using -Duse64bitint instead.
4565 EOM
4566         use64bitint="$define"
4567         ;;
4568 esac                          
4569 case "$uselonglongs" in
4570 "$define"|true|[yY]*)
4571         cat <<EOM >&4
4572
4573 *** There is no Configure -Duselonglongs, using -Duse64bitint instead.
4574 EOM
4575         use64bitint="$define"
4576         ;;
4577 esac                          
4578 case "$use64bitsall" in
4579 "$define"|true|[yY]*)
4580         cat <<EOM >&4
4581
4582 *** There is no Configure -Duse64bitsall, using -Duse64bitall instead.
4583 EOM
4584         use64bitall="$define"
4585         ;;
4586 esac                          
4587
4588 case "$ccflags" in
4589 *-DUSE_LONG_LONG*|*-DUSE_64_BIT_INT*|*-DUSE_64_BIT_ALL*) use64bitint="$define";;
4590 esac
4591 case "$use64bitall" in
4592 "$define"|true|[yY]*) use64bitint="$define" ;;
4593 esac
4594
4595 case "$longsize" in
4596 8) cat <<EOM
4597
4598 You have natively 64-bit long integers.
4599 EOM
4600    val="$define"
4601    ;;
4602 *) case "$use64bitint" in
4603    "$define"|true|[yY]*) dflt='y';;
4604    *) dflt='n';;
4605    esac
4606    cat <<EOM
4607
4608 Perl can be built to take advantage of 64-bit integer types
4609 on some systems.  To do so, Configure can be run with -Duse64bitint.
4610 Choosing this option will most probably introduce binary incompatibilities.
4611
4612 If this doesn't make any sense to you, just accept the default '$dflt'.
4613 EOM
4614    rp='Try to use 64-bit integers, if available?'
4615    . ./myread
4616    case "$ans" in
4617    [yY]*) val="$define" ;;
4618    *)     val="$undef"  ;;
4619    esac
4620    ;;
4621 esac
4622 set use64bitint
4623 eval $setvar
4624
4625 case "$use64bitall" in
4626 "$define"|true|[yY]*) dflt='y' ;;
4627 *) case "$longsize" in
4628    8) dflt='y' ;;
4629    *) dflt='n' ;;
4630    esac
4631    ;;
4632 esac    
4633 cat <<EOM
4634
4635 You may also choose to try maximal 64-bitness.  It means using as much
4636 64-bitness as possible on the platform.  This in turn means even more
4637 binary incompatibilities.  On the other hand, your platform may not
4638 have any more 64-bitness available than what you already have chosen.
4639
4640 If this doesn't make any sense to you, just accept the default '$dflt'.
4641 EOM
4642 rp='Try to use maximal 64-bit support, if available?'
4643 . ./myread
4644 case "$ans" in
4645 [yY]*) val="$define" ;;
4646 *)     val="$undef"  ;;
4647 esac
4648 set use64bitall
4649 eval $setvar
4650 case "$use64bitall" in
4651 "$define")
4652         case "$use64bitint" in
4653         "$undef")
4654                 cat <<EOM
4655
4656 Since you have chosen a maximally 64-bit build, I'm also turning on
4657 the use of 64-bit integers.
4658 EOM
4659                 use64bitint="$define" ;;
4660         esac
4661         ;;
4662 esac
4663
4664 case "$use64bitint" in
4665 "$define"|true|[yY]*)
4666 : Look for a hint-file generated 'call-back-unit'.  If the
4667 : user has specified that a 64-bit perl is to be built,
4668 : we may need to set or change some other defaults.
4669         if $test -f use64bitint.cbu; then
4670                 echo "Your platform has some specific hints for 64-bit integers, using them..."
4671                 . ./use64bitint.cbu
4672         fi
4673         case "$longsize" in
4674         4) case "$archname64" in
4675            '') archname64=64int ;;
4676            esac
4677            ;;
4678         esac
4679         ;;
4680 esac
4681
4682 case "$use64bitall" in
4683 "$define"|true|[yY]*)
4684 : Look for a hint-file generated 'call-back-unit'.  If the
4685 : user has specified that a maximally 64-bit perl is to be built,
4686 : we may need to set or change some other defaults.
4687         if $test -f use64bitall.cbu; then
4688                 echo "Your platform has some specific hints for 64-bit builds, using them..."
4689                 . ./use64bitall.cbu
4690         fi
4691         case "$longsize" in
4692         4) case "$archname64" in
4693            ''|64int) archname64=64all ;;
4694            esac
4695            ;;
4696         esac
4697         ;;
4698 esac
4699
4700 echo " "
4701 echo "Checking for GNU C Library..." >&4
4702 cat >gnulibc.c <<EOM
4703 #include <stdio.h>
4704 int main()
4705 {
4706 #ifdef __GLIBC__
4707     exit(0);
4708 #else
4709     exit(1);
4710 #endif
4711 }
4712 EOM
4713 set gnulibc
4714 if eval $compile_ok && ./gnulibc; then
4715         val="$define"
4716         echo "You are using the GNU C Library"
4717 else
4718         val="$undef"
4719         echo "You are not using the GNU C Library"
4720 fi
4721 $rm -f gnulibc*
4722 set d_gnulibc
4723 eval $setvar
4724
4725 : see if nm is to be used to determine whether a symbol is defined or not
4726 case "$usenm" in
4727 '')
4728         dflt=''
4729         case "$d_gnulibc" in
4730         "$define")
4731                 echo " "
4732                 echo "nm probably won't work on the GNU C Library." >&4
4733                 dflt=n
4734                 ;;
4735         esac
4736         case "$dflt" in
4737         '') 
4738                 if $test "$osname" = aix -a ! -f /lib/syscalls.exp; then
4739                         echo " "
4740                         echo "Whoops!  This is an AIX system without /lib/syscalls.exp!" >&4
4741                         echo "'nm' won't be sufficient on this sytem." >&4
4742                         dflt=n
4743                 fi
4744                 ;;
4745         esac
4746         case "$dflt" in
4747         '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
4748                 if $test $dflt -gt 20; then
4749                         dflt=y
4750                 else
4751                         dflt=n
4752                 fi
4753                 ;;
4754         esac
4755         ;;
4756 *)
4757         case "$usenm" in
4758         true|$define) dflt=y;;
4759         *) dflt=n;;
4760         esac
4761         ;;
4762 esac
4763 $cat <<EOM
4764
4765 I can use $nm to extract the symbols from your C libraries. This
4766 is a time consuming task which may generate huge output on the disk (up
4767 to 3 megabytes) but that should make the symbols extraction faster. The
4768 alternative is to skip the 'nm' extraction part and to compile a small
4769 test program instead to determine whether each symbol is present. If
4770 you have a fast C compiler and/or if your 'nm' output cannot be parsed,
4771 this may be the best solution.
4772
4773 You probably shouldn't let me use 'nm' if you are using the GNU C Library.
4774
4775 EOM
4776 rp="Shall I use $nm to extract C symbols from the libraries?"
4777 . ./myread
4778 case "$ans" in
4779 [Nn]*) usenm=false;;
4780 *) usenm=true;;
4781 esac
4782
4783 runnm=$usenm
4784 case "$reuseval" in
4785 true) runnm=false;;
4786 esac
4787
4788 : nm options which may be necessary
4789 case "$nm_opt" in
4790 '') if $test -f /mach_boot; then
4791                 nm_opt=''       # Mach
4792         elif $test -d /usr/ccs/lib; then
4793                 nm_opt='-p'     # Solaris (and SunOS?)
4794         elif $test -f /dgux; then
4795                 nm_opt='-p'     # DG-UX
4796         elif $test -f /lib64/rld; then
4797                 nm_opt='-p'     # 64-bit Irix
4798         else
4799                 nm_opt=''
4800         fi;;
4801 esac
4802
4803 : nm options which may be necessary for shared libraries but illegal
4804 : for archive libraries.  Thank you, Linux.
4805 case "$nm_so_opt" in
4806 '')     case "$myuname" in
4807         *linux*)
4808                 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
4809                         nm_so_opt='--dynamic'
4810                 fi
4811                 ;;
4812         esac
4813         ;;
4814 esac
4815
4816 case "$runnm" in
4817 true)
4818 : get list of predefined functions in a handy place
4819 echo " "
4820 case "$libc" in
4821 '') libc=unknown
4822         case "$libs" in
4823         *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
4824         esac
4825         ;;
4826 esac
4827 libnames='';
4828 case "$libs" in
4829 '') ;;
4830 *)  for thislib in $libs; do
4831         case "$thislib" in
4832         -lc|-lc_s)
4833                 : Handle C library specially below.
4834                 ;;
4835         -l*)
4836                 thislib=`echo $thislib | $sed -e 's/^-l//'`
4837                 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
4838                         :
4839                 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
4840                         :
4841                 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
4842                         :
4843                 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
4844                         :
4845                 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
4846                         :
4847                 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
4848                         :
4849                 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
4850                         :
4851                 else
4852                         try=''
4853                 fi
4854                 libnames="$libnames $try"
4855                 ;;
4856         *) libnames="$libnames $thislib" ;;
4857         esac
4858         done
4859         ;;
4860 esac
4861 xxx=normal
4862 case "$libc" in
4863 unknown)
4864         set /lib/libc.$so
4865         for xxx in $libpth; do
4866                 $test -r $1 || set $xxx/libc.$so
4867                 : The messy sed command sorts on library version numbers.
4868                 $test -r $1 || \
4869                         set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
4870                         tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
4871                                 h
4872                                 s/[0-9][0-9]*/0000&/g
4873                                 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
4874                                 G
4875                                 s/\n/ /' | \
4876                          $sort | $sed -e 's/^.* //'`
4877                 eval set \$$#
4878         done
4879         $test -r $1 || set /usr/ccs/lib/libc.$so
4880         $test -r $1 || set /lib/libsys_s$_a
4881         ;;
4882 *)
4883         set blurfl
4884         ;;
4885 esac
4886 if $test -r "$1"; then
4887         echo "Your (shared) C library seems to be in $1."
4888         libc="$1"
4889 elif $test -r /lib/libc && $test -r /lib/clib; then
4890         echo "Your C library seems to be in both /lib/clib and /lib/libc."
4891         xxx=apollo
4892         libc='/lib/clib /lib/libc'
4893         if $test -r /lib/syslib; then
4894                 echo "(Your math library is in /lib/syslib.)"
4895                 libc="$libc /lib/syslib"
4896         fi
4897 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
4898         echo "Your C library seems to be in $libc, as you said before."
4899 elif $test -r $incpath/usr/lib/libc$_a; then
4900         libc=$incpath/usr/lib/libc$_a;
4901         echo "Your C library seems to be in $libc.  That's fine."
4902 elif $test -r /lib/libc$_a; then
4903         libc=/lib/libc$_a;
4904         echo "Your C library seems to be in $libc.  You're normal."
4905 else
4906         if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
4907                 :
4908         elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
4909                 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
4910         elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
4911                 :
4912         elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
4913                 :
4914         elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
4915                 :
4916         else
4917                 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
4918         fi
4919         if $test -r "$tans"; then
4920                 echo "Your C library seems to be in $tans, of all places."
4921                 libc=$tans
4922         else
4923                 libc='blurfl'
4924         fi
4925 fi
4926 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
4927         dflt="$libc"
4928         cat <<EOM
4929
4930 If the guess above is wrong (which it might be if you're using a strange
4931 compiler, or your machine supports multiple models), you can override it here.
4932
4933 EOM
4934 else
4935         dflt=''
4936         echo $libpth | $tr ' ' $trnl | $sort | $uniq > libpath
4937         cat >&4 <<EOM
4938 I can't seem to find your C library.  I've looked in the following places:
4939
4940 EOM
4941         $sed 's/^/      /' libpath
4942         cat <<EOM
4943
4944 None of these seems to contain your C library. I need to get its name...
4945
4946 EOM
4947 fi
4948 fn=f
4949 rp='Where is your C library?'
4950 . ./getfile
4951 libc="$ans"
4952
4953 echo " "
4954 echo $libc $libnames | $tr ' ' $trnl | $sort | $uniq > libnames
4955 set X `cat libnames`
4956 shift
4957 xxx=files
4958 case $# in 1) xxx=file; esac
4959 echo "Extracting names from the following $xxx for later perusal:" >&4
4960 echo " "
4961 $sed 's/^/      /' libnames >&4
4962 echo " "
4963 $echo $n "This may take a while...$c" >&4
4964
4965 for file in $*; do
4966         case $file in
4967         *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
4968         *) $nm $nm_opt $file 2>/dev/null;;
4969         esac
4970 done >libc.tmp
4971
4972 $echo $n ".$c"
4973 $grep fprintf libc.tmp > libc.ptf
4974 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
4975 xrun='eval "<libc.tmp $com >libc.list"; echo "done" >&4'
4976 xxx='[ADTSIW]'
4977 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx  *_[_.]*//p' -e 's/^.* $xxx  *//p'";\
4978         eval $xscan;\
4979         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4980                 eval $xrun
4981 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
4982         eval $xscan;\
4983         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4984                 eval $xrun
4985 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
4986         eval $xscan;\
4987         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4988                 eval $xrun
4989 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
4990         eval $xscan;\
4991         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4992                 eval $xrun
4993 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
4994         eval $xscan;\
4995         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4996                 eval $xrun
4997 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
4998         eval $xscan;\
4999         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5000                 eval $xrun
5001 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
5002                                 -e '/ file/d' -e 's/^\([^       ]*\).*/\1/p'";\
5003         eval $xscan;\
5004         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5005                 eval $xrun
5006 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
5007         eval $xscan;\
5008         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5009                 eval $xrun
5010 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
5011         eval $xscan;\
5012         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5013                 eval $xrun
5014 elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
5015         eval $xscan;\
5016         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5017                 eval $xrun
5018 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
5019         eval $xscan;\
5020         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5021                 eval $xrun
5022 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
5023         eval $xscan;\
5024         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5025                 eval $xrun
5026 elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
5027         eval $xscan;\
5028         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5029                 eval $xrun
5030 elif com="sed -n -e 's/^__.*//' -e 's/[       ]*D[    ]*[0-9]*.*//p'";\
5031         eval $xscan;\
5032         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5033                 eval $xrun
5034 else
5035         $nm -p $* 2>/dev/null >libc.tmp
5036         $grep fprintf libc.tmp > libc.ptf
5037         if com="$sed -n -e 's/^.* [ADTSIW]  *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
5038                 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
5039         then
5040                 nm_opt='-p'
5041                 eval $xrun
5042         else
5043                 echo " "
5044                 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
5045                 com=''
5046                 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
5047                         for thisname in $libnames $libc; do
5048                                 $ar t $thisname >>libc.tmp
5049                         done
5050                         $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
5051                         echo "Ok." >&4
5052                 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
5053                         # Repeat libc to extract forwarders to DLL entries too
5054                         for thisname in $libnames $libc; do
5055                                 $ar tv $thisname >>libc.tmp
5056                                 # Revision 50 of EMX has bug in $ar.
5057                                 # it will not extract forwarders to DLL entries
5058                                 # Use emximp which will extract exactly them.
5059                                 emximp -o tmp.imp $thisname \
5060                                     2>/dev/null && \
5061                                     $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
5062                                     < tmp.imp >>libc.tmp
5063                                 $rm tmp.imp
5064                         done
5065                         $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
5066                         echo "Ok." >&4
5067                 else
5068                         echo "$ar didn't seem to work right." >&4
5069                         echo "Maybe this is a Cray...trying bld instead..." >&4
5070                         if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
5071                         then
5072                                 for thisname in $libnames; do
5073                                         bld t $libnames | \
5074                                         $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
5075                                         $ar t $thisname >>libc.tmp
5076                                 done
5077                                 echo "Ok." >&4
5078                         else
5079                                 echo "That didn't work either.  Giving up." >&4
5080                                 exit 1
5081                         fi
5082                 fi
5083         fi
5084 fi
5085 nm_extract="$com"
5086 if $test -f /lib/syscalls.exp; then
5087         echo " "
5088         echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
5089         $sed -n 's/^\([^        ]*\)[   ]*syscall[0-9]*$/\1/p' /lib/syscalls.exp >>libc.list
5090 fi
5091 ;;
5092 esac
5093 $rm -f libnames libpath
5094
5095 : is a C symbol defined?
5096 csym='tlook=$1;
5097 case "$3" in
5098 -v) tf=libc.tmp; tc=""; tdc="";;
5099 -a) tf=libc.tmp; tc="[0]"; tdc="[]";;
5100 *) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";;
5101 esac;
5102 tx=yes;
5103 case "$reuseval-$4" in
5104 true-) ;;
5105 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
5106 esac;
5107 case "$tx" in
5108 yes)
5109         case "$runnm" in
5110         true)
5111                 if $contains $tlook $tf >/dev/null 2>&1;
5112                 then tval=true;
5113                 else tval=false;
5114                 fi;;
5115         *)
5116                 echo "int main() { extern short $1$tdc; printf(\"%hd\", $1$tc); }" > t.c;
5117                 if $cc -o t $optimize $ccflags $ldflags t.c $libs >/dev/null 2>&1;
5118                 then tval=true;
5119                 else tval=false;
5120                 fi;
5121                 $rm -f t t.c;;
5122         esac;;
5123 *)
5124         case "$tval" in
5125         $define) tval=true;;
5126         *) tval=false;;
5127         esac;;
5128 esac;
5129 eval "$2=$tval"'
5130
5131 : define an is-in-libc? function
5132 inlibc='echo " "; td=$define; tu=$undef;
5133 sym=$1; var=$2; eval "was=\$$2";
5134 tx=yes;
5135 case "$reuseval$was" in
5136 true) ;;
5137 true*) tx=no;;
5138 esac;
5139 case "$tx" in
5140 yes)
5141         set $sym tres -f;
5142         eval $csym;
5143         case "$tres" in
5144         true)
5145                 echo "$sym() found." >&4;
5146                 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
5147         *)
5148                 echo "$sym() NOT found." >&4;
5149                 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
5150         esac;;
5151 *)
5152         case "$was" in
5153         $define) echo "$sym() found." >&4;;
5154         *) echo "$sym() NOT found." >&4;;
5155         esac;;
5156 esac'
5157
5158 : see if sqrtl exists
5159 set sqrtl d_sqrtl
5160 eval $inlibc
5161
5162 case "$ccflags" in
5163 *-DUSE_LONG_DOUBLE*|*-DUSE_MORE_BITS*) uselongdouble="$define" ;;
5164 esac
5165
5166 case "$uselongdouble" in
5167 $define|true|[yY]*)     dflt='y';;
5168 *) dflt='n';;
5169 esac
5170 cat <<EOM
5171
5172 Perl can be built to take advantage of long doubles which
5173 (if available) may give more accuracy and range for floating point numbers.
5174
5175 If this doesn't make any sense to you, just accept the default '$dflt'.
5176 EOM
5177 rp='Try to use long doubles if available?'
5178 . ./myread
5179 case "$ans" in
5180 y|Y)    val="$define"   ;;
5181 *)      val="$undef"    ;;
5182 esac
5183 set uselongdouble
5184 eval $setvar
5185
5186 case "$uselongdouble" in
5187 true|[yY]*) uselongdouble="$define" ;;
5188 esac
5189
5190 case "$uselongdouble" in
5191 $define)
5192 : Look for a hint-file generated 'call-back-unit'.  If the
5193 : user has specified that long doubles should be used,
5194 : we may need to set or change some other defaults.
5195         if $test -f uselongdouble.cbu; then
5196                 echo "Your platform has some specific hints for long doubles, using them..."
5197                 . ./uselongdouble.cbu
5198         else
5199                 $cat <<EOM
5200 (Your platform doesn't have any specific hints for long doubles.)
5201 EOM
5202         fi
5203         ;;
5204 esac
5205
5206 case "$uselongdouble:$d_sqrtl" in
5207 $define:$undef)
5208                 $cat <<EOM >&4
5209
5210 *** You requested the use of long doubles but you do not seem to have
5211 *** the mathematic functions for long doubles.  I'm disabling the use
5212 *** of long doubles.
5213
5214 EOM
5215         uselongdouble=$undef
5216         ;;
5217 esac
5218
5219 : check for length of double
5220 echo " "
5221 case "$doublesize" in
5222 '')
5223         echo "Checking to see how big your double precision numbers are..." >&4
5224         $cat >try.c <<'EOCP'
5225 #include <stdio.h>
5226 int main()
5227 {
5228     printf("%d\n", (int)sizeof(double));
5229     exit(0);
5230 }
5231 EOCP
5232         set try
5233         if eval $compile_ok; then
5234                 doublesize=`./try`
5235                 echo "Your double is $doublesize bytes long."
5236         else
5237                 dflt='8'
5238                 echo "(I can't seem to compile the test program.  Guessing...)"
5239                 rp="What is the size of a double precision number (in bytes)?"
5240                 . ./myread
5241                 doublesize="$ans"
5242         fi
5243         ;;
5244 esac
5245 $rm -f try.c try
5246
5247 : check for long doubles
5248 echo " "
5249 echo "Checking to see if you have long double..." >&4
5250 echo 'int main() { long double x = 7.0; }' > try.c
5251 set try
5252 if eval $compile; then
5253         val="$define"
5254         echo "You have long double."
5255 else
5256         val="$undef"
5257         echo "You do not have long double."
5258 fi
5259 $rm try.*
5260 set d_longdbl
5261 eval $setvar
5262
5263 : check for length of long double
5264 case "${d_longdbl}${longdblsize}" in
5265 $define)
5266         echo " "
5267         echo "Checking to see how big your long doubles are..." >&4
5268         $cat >try.c <<'EOCP'
5269 #include <stdio.h>
5270 int main()
5271 {
5272         printf("%d\n", sizeof(long double));
5273 }
5274 EOCP
5275         set try
5276         set try
5277         if eval $compile; then
5278                 longdblsize=`./try$exe_ext`
5279                 echo "Your long doubles are $longdblsize bytes long."
5280         else
5281                 dflt='8'
5282                 echo " "
5283                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
5284                 rp="What is the size of a long double (in bytes)?"
5285                 . ./myread
5286                 longdblsize="$ans"
5287         fi
5288         if $test "X$doublesize" = "X$longdblsize"; then
5289                 echo "(That isn't any different from an ordinary double.)"
5290         fi      
5291         ;;
5292 esac
5293 $rm -f try.* try
5294
5295 case "$useperlio" in
5296 $define|true|[yY]*)     dflt='y';;
5297 *) dflt='n';;
5298 esac
5299 cat <<EOM
5300
5301 Previous version of $package used the standard IO mechanisms as
5302 defined in <stdio.h>.  Versions 5.003_02 and later of perl allow
5303 alternate IO mechanisms via the PerlIO abstraction layer, but the
5304 stdio mechanism is still the default.  This abstraction layer can
5305 use AT&T's sfio (if you already have sfio installed) or regular stdio.
5306 Using PerlIO with sfio may cause problems with some extension modules.
5307
5308 If this doesn't make any sense to you, just accept the default '$dflt'.
5309 EOM
5310 rp='Use the experimental PerlIO abstraction layer?'
5311 . ./myread
5312 case "$ans" in
5313 y|Y) 
5314         val="$define"
5315         ;;     
5316 *)      
5317         echo "Ok, doing things the stdio way."
5318         val="$undef"
5319         ;;
5320 esac
5321 set useperlio
5322 eval $setvar 
5323
5324 case "$usesocks" in
5325 $define|true|[yY]*)
5326         case "$useperlio" in
5327         $define|true|[yY]*) ;;
5328         *)      cat >&4 <<EOM
5329
5330 You are using the SOCKS proxy protocol library which means that you
5331 should also use the PerlIO layer.  You may be headed for trouble.
5332
5333 EOM
5334                 ;;
5335         esac
5336         ;;
5337 esac
5338
5339         
5340 : determine the architecture name
5341 echo " "
5342 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
5343         tarch=`arch`"-$osname"
5344 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
5345         if uname -m > tmparch 2>&1 ; then
5346                 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
5347                         -e 's/$/'"-$osname/" tmparch`
5348         else
5349                 tarch="$osname"
5350         fi
5351         $rm -f tmparch
5352 else
5353         tarch="$osname"
5354 fi
5355 case "$myarchname" in
5356 ''|"$tarch") ;;
5357 *)
5358         echo "(Your architecture name used to be $myarchname.)"
5359         archname=''
5360         ;;
5361 esac
5362 myarchname="$tarch"
5363 case "$archname" in
5364 '') dflt="$tarch";;
5365 *) dflt="$archname";;
5366 esac
5367 rp='What is your architecture name'
5368 . ./myread
5369 archname="$ans"
5370 case "$usethreads" in
5371 $define)
5372         echo "Threads selected." >&4
5373         case "$archname" in
5374         *-thread*) echo "...and architecture name already has -thread." >&4
5375                 ;;
5376         *)      archname="$archname-thread"
5377                 echo "...setting architecture name to $archname." >&4
5378                 ;;
5379         esac
5380         ;;
5381 esac
5382 case "$usemultiplicity" in
5383 $define)
5384         echo "Multiplicity selected." >&4
5385         case "$archname" in
5386         *-multi*) echo "...and architecture name already has -multi." >&4
5387                 ;;
5388         *)      archname="$archname-multi"
5389                 echo "...setting architecture name to $archname." >&4
5390                 ;;
5391         esac
5392         ;;
5393 esac
5394 case "$use64bitint$use64bitall" in
5395 *"$define"*)
5396         case "$archname64" in
5397         '')
5398                 echo "This architecture is naturally 64-bit, not changing architecture name." >&4
5399                 ;;
5400         *)
5401                 case "$use64bitint" in
5402                 "$define") echo "64 bit integers selected." >&4 ;;
5403                 esac
5404                 case "$use64bitall" in
5405                 "$define") echo "Maximal 64 bitness selected." >&4 ;;
5406                 esac
5407                 case "$archname" in
5408                 *-$archname64*) echo "...and architecture name already has $archname64." >&4
5409                         ;;
5410                 *)      archname="$archname-$archname64"
5411                         echo "...setting architecture name to $archname." >&4
5412                         ;;
5413                 esac
5414                 ;;
5415         esac
5416 esac
5417 case "$uselongdouble" in
5418 $define)
5419         echo "Long doubles selected." >&4
5420         case "$longdblsize" in
5421         $doublesize)
5422                 "...but long doubles are equal to doubles, not changing architecture name." >&4
5423                 ;;
5424         *)
5425                 case "$archname" in
5426                 *-ld*) echo "...and architecture name already has -ld." >&4
5427                         ;;
5428                 *)      archname="$archname-ld"
5429                         echo "...setting architecture name to $archname." >&4
5430                         ;;
5431                 esac
5432                 ;;
5433         esac
5434         ;;
5435 esac
5436 case "$useperlio" in
5437 $define)
5438         echo "Perlio selected." >&4
5439         case "$archname" in
5440         *-perlio*) echo "...and architecture name already has -perlio." >&4
5441                 ;;
5442         *)      archname="$archname-perlio"
5443                 echo "...setting architecture name to $archname." >&4
5444                 ;;
5445         esac
5446         ;;
5447 esac
5448
5449 : determine root of directory hierarchy where package will be installed.
5450 case "$prefix" in
5451 '')
5452         dflt=`./loc . /usr/local /usr/local /local /opt /usr`
5453         ;;
5454 *)
5455         dflt="$prefix"
5456         ;;
5457 esac
5458 $cat <<EOM
5459
5460 By default, $package will be installed in $dflt/bin, manual pages
5461 under $dflt/man, etc..., i.e. with $dflt as prefix for all
5462 installation directories. Typically this is something like /usr/local.
5463 If you wish to have binaries under /usr/bin but other parts of the
5464 installation under /usr/local, that's ok: you will be prompted
5465 separately for each of the installation directories, the prefix being
5466 only used to set the defaults.
5467
5468 EOM
5469 fn=d~
5470 rp='Installation prefix to use?'
5471 . ./getfile
5472 oldprefix=''
5473 case "$prefix" in
5474 '') ;;
5475 *)
5476         case "$ans" in
5477         "$prefix") ;;
5478         *) oldprefix="$prefix";;
5479         esac
5480         ;;
5481 esac
5482 prefix="$ans"
5483 prefixexp="$ansexp"
5484
5485 : is AFS running?
5486 echo " "
5487 case "$afs" in
5488 $define|true)   afs=true ;;
5489 $undef|false)   afs=false ;;
5490 *)      if test -d /afs; then
5491                 afs=true
5492         else
5493                 afs=false
5494         fi
5495         ;;
5496 esac
5497 if $afs; then
5498         echo "AFS may be running... I'll be extra cautious then..." >&4
5499 else
5500         echo "AFS does not seem to be running..." >&4
5501 fi
5502
5503 : determine installation prefix for where package is to be installed.
5504 if $afs; then 
5505 $cat <<EOM
5506
5507 Since you are running AFS, I need to distinguish the directory in which
5508 files will reside from the directory in which they are installed (and from
5509 which they are presumably copied to the former directory by occult means).
5510
5511 EOM
5512         case "$installprefix" in
5513         '') dflt=`echo $prefix | sed 's#^/afs/#/afs/.#'`;;
5514         *) dflt="$installprefix";;
5515         esac
5516 else
5517 $cat <<EOM
5518
5519 In some special cases, particularly when building $package for distribution,
5520 it is convenient to distinguish between the directory in which files should 
5521 be installed from the directory ($prefix) in which they 
5522 will eventually reside.  For most users, these two directories are the same.
5523
5524 EOM
5525         case "$installprefix" in
5526         '') dflt=$prefix ;;
5527         *) dflt=$installprefix;;
5528         esac
5529 fi
5530 fn=d~
5531 rp='What installation prefix should I use for installing files?'
5532 . ./getfile
5533 installprefix="$ans"
5534 installprefixexp="$ansexp"
5535
5536 : set the prefixit variable, to compute a suitable default value
5537 prefixit='case "$3" in
5538 ""|none)
5539         case "$oldprefix" in
5540         "") eval "$1=\"\$$2\"";;
5541         *)
5542                 case "$3" in
5543                 "") eval "$1=";;
5544                 none)
5545                         eval "tp=\"\$$2\"";
5546                         case "$tp" in
5547                         ""|" ") eval "$1=\"\$$2\"";;
5548                         *) eval "$1=";;
5549                         esac;;
5550                 esac;;
5551         esac;;
5552 *)
5553         eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
5554         case "$tp" in
5555         --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
5556         /*-$oldprefix/*|\~*-$oldprefix/*)
5557                 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
5558         *) eval "$1=\"\$$2\"";;
5559         esac;;
5560 esac'
5561
5562
5563 : get the patchlevel
5564 echo " "
5565 echo "Getting the current patchlevel..." >&4
5566 if $test -r $rsrc/patchlevel.h;then
5567         revision=`awk '/define[         ]+PERL_REVISION/ {print $3}' $rsrc/patchlevel.h`
5568         patchlevel=`awk '/define[       ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
5569         subversion=`awk '/define[       ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
5570         api_revision=`awk '/define[     ]+PERL_API_REVISION/ {print $3}' $rsrc/patchlevel.h`
5571         api_version=`awk '/define[      ]+PERL_API_VERSION/ {print $3}' $rsrc/patchlevel.h`
5572         api_subversion=`awk '/define[   ]+PERL_API_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
5573 else
5574         revision=0
5575         patchlevel=0
5576         subversion=0
5577         api_revision=0
5578         api_version=0
5579         api_subversion=0
5580 fi
5581 $echo "(You have $package version $patchlevel subversion $subversion.)"
5582 case "$osname" in
5583 dos|vms)
5584         : XXX Should be a Configure test for double-dots in filenames.
5585         version=`echo $revision $patchlevel $subversion | \
5586                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
5587         api_versionstring=`echo $api_revision $api_version $api_subversion | \
5588                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
5589         ;;
5590 *)
5591         version=`echo $revision $patchlevel $subversion | \
5592                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
5593         api_versionstring=`echo $api_revision $api_version $api_subversion | \
5594                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
5595         ;;
5596 esac
5597 : Special case the 5.005_xx maintenance series, which used 5.005
5598 : without any subversion label as a subdirectory in $sitelib
5599 if test "${api_revision}${api_version}${api_subversion}" = "550"; then
5600         api_versionstring='5.005'
5601 fi
5602
5603 : determine installation style
5604 : For now, try to deduce it from prefix unless it is already set.
5605 : Reproduce behavior of 5.005 and earlier, maybe drop that in 5.7.
5606 case "$installstyle" in
5607 '')     case "$prefix" in
5608                 *perl*) dflt='lib';;
5609                 *) dflt='lib/perl5' ;;
5610         esac
5611         ;;
5612 *)      dflt="$installstyle" ;;
5613 esac
5614 : Probably not worth prompting for this since we prompt for all
5615 : the directories individually, and the prompt would be too long and
5616 : confusing anyway.
5617 installstyle=$dflt
5618
5619 : determine where private library files go
5620 : Usual default is /usr/local/lib/perl5/$version.
5621 : Also allow things like /opt/perl/lib/$version, since 
5622 : /opt/perl/lib/perl5... would be redundant.
5623 : The default "style" setting is made in installstyle.U
5624 case "$installstyle" in
5625 *lib/perl5*) set dflt privlib lib/$package/$version ;;
5626 *)       set dflt privlib lib/$version ;;
5627 esac
5628 eval $prefixit
5629 $cat <<EOM
5630
5631 There are some auxiliary files for $package that need to be put into a
5632 private library directory that is accessible by everyone.
5633
5634 EOM
5635 fn=d~+
5636 rp='Pathname where the private library files will reside?'
5637 . ./getfile
5638 privlib="$ans"
5639 privlibexp="$ansexp"
5640 : Change installation prefix, if necessary.
5641 if $test X"$prefix" != X"$installprefix"; then
5642         installprivlib=`echo $privlibexp | sed "s#^$prefix#$installprefix#"`
5643 else
5644         installprivlib="$privlibexp"
5645 fi
5646
5647 : set the prefixup variable, to restore leading tilda escape
5648 prefixup='case "$prefixexp" in
5649 "$prefix") ;;
5650 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
5651 esac'
5652
5653 : determine where public architecture dependent libraries go
5654 set archlib archlib
5655 eval $prefixit
5656 : privlib default is /usr/local/lib/$package/$version
5657 : archlib default is /usr/local/lib/$package/$version/$archname
5658 : privlib may have an optional trailing /share.
5659 tdflt=`echo $privlib | $sed 's,/share$,,'`
5660 tdflt=$tdflt/$archname
5661 case "$archlib" in
5662 '')     dflt=$tdflt
5663         ;;
5664 *)      dflt="$archlib"
5665     ;;
5666 esac
5667 $cat <<EOM
5668
5669 $spackage contains architecture-dependent library files.  If you are
5670 sharing libraries in a heterogeneous environment, you might store
5671 these files in a separate location.  Otherwise, you can just include
5672 them with the rest of the public library files.
5673
5674 EOM
5675 fn=d+~
5676 rp='Where do you want to put the public architecture-dependent libraries?'
5677 . ./getfile
5678 archlib="$ans"
5679 archlibexp="$ansexp"
5680 if $test X"$archlib" = X"$privlib"; then
5681         d_archlib="$undef"
5682 else
5683         d_archlib="$define"
5684 fi
5685 : Change installation prefix, if necessary.
5686 if $test X"$prefix" != X"$installprefix"; then
5687         installarchlib=`echo $archlibexp | sed "s#^$prefix#$installprefix#"`
5688 else
5689         installarchlib="$archlibexp"
5690 fi
5691
5692
5693 : Binary compatibility with 5.005 is not possible for builds
5694 : with advanced features
5695 case "$usethreads$usemultiplicity" in
5696 *define*)
5697         bincompat5005="$undef"
5698         d_bincompat5005="$undef"
5699         ;;
5700 *)      $cat <<EOM
5701
5702 This version of Perl can be compiled for binary compatibility with 5.005.
5703 If you decide to do so, you will be able to continue using most of the
5704 extensions that were compiled for Perl 5.005.
5705
5706 EOM
5707         case "$bincompat5005$d_bincompat5005" in
5708         *"$undef"*) dflt=n ;;
5709         *) dflt=y ;;
5710         esac
5711         rp='Binary compatibility with Perl 5.005?'
5712         . ./myread
5713         case "$ans" in
5714         y*) val="$define" ;;
5715         *)  val="$undef" ;;
5716         esac
5717         set d_bincompat5005
5718         eval $setvar
5719         case "$d_bincompat5005" in
5720         "$define")
5721                 bincompat5005="$define"
5722                 ;;
5723         *)      bincompat5005="$undef"
5724                 d_bincompat5005="$undef"
5725                 ;;
5726         esac
5727         ;;
5728 esac
5729
5730
5731 : see if setuid scripts can be secure
5732 $cat <<EOM
5733
5734 Some kernels have a bug that prevents setuid #! scripts from being
5735 secure.  Some sites have disabled setuid #! scripts because of this.
5736
5737 First let's decide if your kernel supports secure setuid #! scripts.
5738 (If setuid #! scripts would be secure but have been disabled anyway,
5739 don't say that they are secure if asked.)
5740
5741 EOM
5742
5743 val="$undef"
5744 if $test -d /dev/fd; then
5745         echo "#!$ls" >reflect
5746         chmod +x,u+s reflect
5747         ./reflect >flect 2>&1
5748         if $contains "/dev/fd" flect >/dev/null; then
5749                 echo "Congratulations, your kernel has secure setuid scripts!" >&4
5750                 val="$define"
5751         else
5752                 $cat <<EOM
5753 If you are not sure if they are secure, I can check but I'll need a
5754 username and password different from the one you are using right now.
5755 If you don't have such a username or don't want me to test, simply
5756 enter 'none'.
5757
5758 EOM
5759                 rp='Other username to test security of setuid scripts with?'
5760                 dflt='none'
5761                 . ./myread
5762                 case "$ans" in
5763                 n|none)
5764                         case "$d_suidsafe" in
5765                         '')     echo "I'll assume setuid scripts are *not* secure." >&4
5766                                 dflt=n;;
5767                         "$undef")
5768                                 echo "Well, the $hint value is *not* secure." >&4
5769                                 dflt=n;;
5770                         *)      echo "Well, the $hint value *is* secure." >&4
5771                                 dflt=y;;
5772                         esac
5773                         ;;
5774                 *)
5775                         $rm -f reflect flect
5776                         echo "#!$ls" >reflect
5777                         chmod +x,u+s reflect
5778                         echo >flect
5779                         chmod a+w flect
5780                         echo '"su" will (probably) prompt you for '"$ans's password."
5781                         su $ans -c './reflect >flect'
5782                         if $contains "/dev/fd" flect >/dev/null; then
5783                                 echo "Okay, it looks like setuid scripts are secure." >&4
5784                                 dflt=y
5785                         else
5786                                 echo "I don't think setuid scripts are secure." >&4
5787                                 dflt=n
5788                         fi
5789                         ;;
5790                 esac
5791                 rp='Does your kernel have *secure* setuid scripts?'
5792                 . ./myread
5793                 case "$ans" in
5794                 [yY]*)  val="$define";;
5795                 *)      val="$undef";;
5796                 esac
5797         fi
5798 else
5799         echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
5800         echo "(That's for file descriptors, not floppy disks.)"
5801         val="$undef"
5802 fi
5803 set d_suidsafe
5804 eval $setvar
5805
5806 $rm -f reflect flect
5807
5808 : now see if they want to do setuid emulation
5809 echo " "
5810 val="$undef"
5811 case "$d_suidsafe" in
5812 "$define")
5813         val="$undef"
5814         echo "No need to emulate SUID scripts since they are secure here." >& 4
5815         ;;
5816 *)
5817         $cat <<EOM
5818 Some systems have disabled setuid scripts, especially systems where
5819 setuid scripts cannot be secure.  On systems where setuid scripts have
5820 been disabled, the setuid/setgid bits on scripts are currently
5821 useless.  It is possible for $package to detect those bits and emulate
5822 setuid/setgid in a secure fashion.  This emulation will only work if
5823 setuid scripts have been disabled in your kernel.
5824
5825 EOM
5826         case "$d_dosuid" in
5827         "$define") dflt=y ;;
5828         *) dflt=n ;;
5829         esac
5830         rp="Do you want to do setuid/setgid emulation?"
5831         . ./myread
5832         case "$ans" in
5833         [yY]*)  val="$define";;
5834         *)      val="$undef";;
5835         esac
5836         ;;
5837 esac
5838 set d_dosuid
5839 eval $setvar
5840
5841 : determine filename position in cpp output
5842 echo " "
5843 echo "Computing filename position in cpp output for #include directives..." >&4
5844 echo '#include <stdio.h>' > foo.c
5845 $cat >fieldn <<EOF
5846 $startsh
5847 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
5848 $grep '^[       ]*#.*stdio\.h' | \
5849 while read cline; do
5850         pos=1
5851         set \$cline
5852         while $test \$# -gt 0; do
5853                 if $test -r \`echo \$1 | $tr -d '"'\`; then
5854                         echo "\$pos"
5855                         exit 0
5856                 fi
5857                 shift
5858                 pos=\`expr \$pos + 1\`
5859         done
5860 done
5861 EOF
5862 chmod +x fieldn
5863 fieldn=`./fieldn`
5864 $rm -f foo.c fieldn
5865 case $fieldn in
5866 '') pos='???';;
5867 1) pos=first;;
5868 2) pos=second;;
5869 3) pos=third;;
5870 *) pos="${fieldn}th";;
5871 esac
5872 echo "Your cpp writes the filename in the $pos field of the line."
5873
5874 : locate header file
5875 $cat >findhdr <<EOF
5876 $startsh
5877 wanted=\$1
5878 name=''
5879 for usrincdir in $usrinc
5880 do
5881         if test -f \$usrincdir/\$wanted; then
5882                 echo "\$usrincdir/\$wanted"
5883                 exit 0
5884         fi
5885 done
5886 awkprg='{ print \$$fieldn }'
5887 echo "#include <\$wanted>" > foo\$\$.c
5888 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
5889 $grep "^[       ]*#.*\$wanted" | \
5890 while read cline; do
5891         name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
5892         case "\$name" in
5893         *[/\\\\]\$wanted) echo "\$name"; exit 1;;
5894         *[\\\\/]\$wanted) echo "\$name"; exit 1;;
5895         *) exit 2;;
5896         esac;
5897 done;
5898 #
5899 # status = 0: grep returned 0 lines, case statement not executed
5900 # status = 1: headerfile found
5901 # status = 2: while loop executed, no headerfile found
5902 #
5903 status=\$?
5904 $rm -f foo\$\$.c;
5905 if test \$status -eq 1; then
5906         exit 0;
5907 fi
5908 exit 1
5909 EOF
5910 chmod +x findhdr
5911
5912 : define an alternate in-header-list? function
5913 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
5914 cont=true; xxf="echo \"<\$1> found.\" >&4";
5915 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
5916 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
5917 esac;
5918 case $# in 4) instead=instead;; *) instead="at last";; esac;
5919 while $test "$cont"; do
5920         xxx=`./findhdr $1`
5921         var=$2; eval "was=\$$2";
5922         if $test "$xxx" && $test -r "$xxx";
5923         then eval $xxf;
5924         eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
5925                 cont="";
5926         else eval $xxnf;
5927         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
5928         set $yyy; shift; shift; yyy=$@;
5929         case $# in 0) cont="";;
5930         2) xxf="echo \"but I found <\$1> $instead.\" >&4";
5931                 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
5932         *) xxf="echo \"but I found <\$1\> instead.\" >&4";
5933                 xxnf="echo \"there is no <\$1>, ...\" >&4";;
5934         esac;
5935 done;
5936 while $test "$yyy";
5937 do set $yyy; var=$2; eval "was=\$$2";
5938         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
5939         set $yyy; shift; shift; yyy=$@;
5940 done'
5941
5942 : see if this is a malloc.h system
5943 set malloc.h i_malloc
5944 eval $inhdr
5945
5946 : see if stdlib is available
5947 set stdlib.h i_stdlib
5948 eval $inhdr
5949
5950 : determine which malloc to compile in
5951 echo " "
5952 case "$usemymalloc" in
5953 ''|[yY]*|true|$define)  dflt='y' ;;
5954 *)      dflt='n' ;;
5955 esac
5956 rp="Do you wish to attempt to use the malloc that comes with $package?"
5957 . ./myread
5958 usemymalloc="$ans"
5959 case "$ans" in
5960 y*|true)
5961         usemymalloc='y'
5962         mallocsrc='malloc.c'
5963         mallocobj="malloc$_o"
5964         d_mymalloc="$define"
5965         case "$libs" in
5966         *-lmalloc*)
5967                 : Remove malloc from list of libraries to use
5968                 echo "Removing unneeded -lmalloc from library list" >&4
5969                 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
5970                 shift
5971                 libs="$*"
5972                 echo "libs = $libs" >&4
5973                 ;;
5974         esac
5975         ;;
5976 *)
5977         usemymalloc='n'
5978         mallocsrc=''
5979         mallocobj=''
5980         d_mymalloc="$undef"
5981         ;;
5982 esac
5983
5984 : compute the return types of malloc and free
5985 echo " "
5986 $cat >malloc.c <<END
5987 #$i_malloc I_MALLOC
5988 #$i_stdlib I_STDLIB
5989 #include <stdio.h>
5990 #include <sys/types.h>
5991 #ifdef I_MALLOC
5992 #include <malloc.h>
5993 #endif
5994 #ifdef I_STDLIB
5995 #include <stdlib.h>
5996 #endif
5997 #ifdef TRY_MALLOC
5998 void *malloc();
5999 #endif
6000 #ifdef TRY_FREE
6001 void free();
6002 #endif
6003 END
6004 case "$malloctype" in
6005 '')
6006         if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
6007                 malloctype='void *'
6008         else
6009                 malloctype='char *'
6010         fi
6011         ;;
6012 esac
6013 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
6014
6015 case "$freetype" in
6016 '')
6017         if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
6018                 freetype='void'
6019         else
6020                 freetype='int'
6021         fi
6022         ;;
6023 esac
6024 echo "Your system uses $freetype free(), it would seem." >&4
6025 $rm -f malloc.[co]
6026 $cat <<EOM
6027
6028 After $package is installed, you may wish to install various
6029 add-on modules and utilities.  Typically, these add-ons will
6030 be installed under $prefix with the rest
6031 of this package.  However, you may wish to install such add-ons
6032 elsewhere under a different prefix.
6033
6034 If you do not wish to put everything under a single prefix, that's
6035 ok.  You will be prompted for the individual locations; this siteprefix
6036 is only used to suggest the defaults.
6037
6038 The default should be fine for most people.
6039
6040 EOM
6041 fn=d~+
6042 rp='Installation prefix to use for add-on modules and utilities?'
6043 : XXX Here might be another good place for an installstyle setting.
6044 case "$siteprefix" in
6045 '') dflt=$prefix ;;
6046 *)  dflt=$siteprefix ;;
6047 esac
6048 . ./getfile
6049 : XXX Prefixit unit does not yet support siteprefix and vendorprefix
6050 oldsiteprefix=''
6051 case "$siteprefix" in
6052 '') ;;
6053 *)      case "$ans" in
6054         "$prefix") ;;
6055         *) oldsiteprefix="$prefix";;
6056         esac
6057         ;;
6058 esac
6059 siteprefix="$ans"
6060 siteprefixexp="$ansexp"
6061
6062 : determine where site specific libraries go.
6063 : Usual default is /usr/local/lib/perl5/site_perl/$version
6064 : The default "style" setting is made in installstyle.U
6065 : XXX No longer works with Prefixit stuff.
6066 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6067 case "$sitelib" in
6068 '') case "$installstyle" in
6069         *lib/perl5*) dflt=$siteprefix/lib/$package/site_$prog/$version ;;
6070         *)       dflt=$siteprefix/lib/site_$prog/$version ;;
6071         esac
6072         ;;
6073 *)      dflt="$sitelib"
6074         ;;
6075 esac
6076 $cat <<EOM
6077
6078 The installation process will create a directory for
6079 site-specific extensions and modules.  Most users find it convenient
6080 to place all site-specific files in this directory rather than in the
6081 main distribution directory.
6082
6083 EOM
6084 fn=d~+
6085 rp='Pathname for the site-specific library files?'
6086 . ./getfile
6087 sitelib="$ans"
6088 sitelibexp="$ansexp"
6089 sitelib_stem=`echo "$sitelibexp" | sed "s,/$version$,,"`
6090 : Change installation prefix, if necessary.
6091 if $test X"$prefix" != X"$installprefix"; then
6092         installsitelib=`echo $sitelibexp | $sed "s#^$prefix#$installprefix#"`
6093 else
6094         installsitelib="$sitelibexp"
6095 fi
6096
6097 : determine where site specific architecture-dependent libraries go.
6098 : sitelib  default is /usr/local/lib/perl5/site_perl/$version
6099 : sitearch default is /usr/local/lib/perl5/site_perl/$version/$archname
6100 : sitelib may have an optional trailing /share.
6101 case "$sitearch" in
6102 '')     dflt=`echo $sitelib | $sed 's,/share$,,'`
6103         dflt="$dflt/$archname"
6104         ;;
6105 *)      dflt="$sitearch"
6106         ;;
6107 esac
6108 set sitearch sitearch none
6109 eval $prefixit
6110 $cat <<EOM
6111
6112 The installation process will also create a directory for
6113 architecture-dependent site-specific extensions and modules.
6114
6115 EOM
6116 fn=d~+
6117 rp='Pathname for the site-specific architecture-dependent library files?'
6118 . ./getfile
6119 sitearch="$ans"
6120 sitearchexp="$ansexp"
6121 : Change installation prefix, if necessary.
6122 if $test X"$prefix" != X"$installprefix"; then
6123         installsitearch=`echo $sitearchexp | sed "s#^$prefix#$installprefix#"`
6124 else
6125         installsitearch="$sitearchexp"
6126 fi
6127
6128 $cat <<EOM
6129
6130 The installation process will also create a directory for
6131 vendor-supplied add-ons.  Vendors who supply perl with their system
6132 may find it convenient to place all vendor-supplied files in this
6133 directory rather than in the main distribution directory.  This will
6134 ease upgrades between binary-compatible maintenance versions of perl.
6135
6136 Of course you may also use these directories in whatever way you see
6137 fit.  For example, you might use them to access modules shared over a
6138 company-wide network.
6139
6140 The default answer should be fine for most people.
6141 This causes further questions about vendor add-ons to be skipped
6142 and no vendor-specific directories will be configured for perl.
6143
6144 EOM
6145 rp='Do you want to configure vendor-specific add-on directories?'
6146 case "$usevendorprefix" in
6147 define|true|[yY]*) dflt=y ;;
6148 *)      : User may have set vendorprefix directly on Configure command line.
6149         case "$vendorprefix" in
6150         ''|' ') dflt=n ;;
6151         *)      dflt=y ;;
6152         esac
6153         ;;
6154 esac
6155 . ./myread
6156 case "$ans" in
6157 [yY]*)  fn=d~+
6158         rp='Installation prefix to use for vendor-supplied add-ons?'
6159         case "$vendorprefix" in
6160         '') dflt='' ;;
6161         *)  dflt=$vendorprefix ;;
6162         esac
6163         . ./getfile
6164         : XXX Prefixit unit does not yet support siteprefix and vendorprefix
6165         oldvendorprefix=''
6166         case "$vendorprefix" in
6167         '') ;;
6168         *)      case "$ans" in
6169                 "$prefix") ;;
6170                 *) oldvendorprefix="$prefix";;
6171                 esac
6172                 ;;
6173         esac
6174         usevendorprefix="$define"
6175         vendorprefix="$ans"
6176         vendorprefixexp="$ansexp"
6177         ;;
6178 *)      usevendorprefix="$undef"
6179         vendorprefix=''
6180         vendorprefixexp=''
6181         ;;
6182 esac
6183
6184 case "$vendorprefix" in
6185 '')     d_vendorlib="$undef"
6186         vendorlib=''
6187         vendorlibexp=''
6188         ;;
6189 *)      d_vendorlib="$define"
6190         : determine where vendor-supplied modules go.
6191         : Usual default is /usr/local/lib/perl5/vendor_perl/$version
6192         case "$vendorlib" in
6193         '')
6194                 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6195                 case "$installstyle" in
6196                 *lib/perl5*) dflt=$vendorprefix/lib/$package/vendor_$prog/$version ;;
6197                 *)           dflt=$vendorprefix/lib/vendor_$prog/$version ;;
6198                 esac
6199                 ;;
6200         *)      dflt="$vendorlib"
6201                 ;;
6202         esac
6203         fn=d~+
6204         rp='Pathname for the vendor-supplied library files?'
6205         . ./getfile
6206         vendorlib="$ans"
6207         vendorlibexp="$ansexp"
6208         ;;
6209 esac
6210 vendorlib_stem=`echo "$vendorlibexp" | sed "s,/$version$,,"`
6211 : Change installation prefix, if necessary.
6212 if $test X"$prefix" != X"$installprefix"; then
6213         installvendorlib=`echo $vendorlibexp | $sed "s#^$prefix#$installprefix#"`
6214 else
6215         installvendorlib="$vendorlibexp"
6216 fi
6217
6218 case "$vendorprefix" in
6219 '')     d_vendorarch="$undef"
6220         vendorarch=''
6221         vendorarchexp=''
6222         ;;
6223 *)      d_vendorarch="$define"
6224         : determine where vendor-supplied architecture-dependent libraries go.
6225         : vendorlib  default is /usr/local/lib/perl5/vendor_perl/$version
6226         : vendorarch default is /usr/local/lib/perl5/vendor_perl/$version/$archname
6227         : vendorlib may have an optional trailing /share.
6228         case "$vendorarch" in
6229         '')     dflt=`echo $vendorlib | $sed 's,/share$,,'`
6230                 dflt="$dflt/$archname"
6231                 ;;
6232         *)      dflt="$vendorarch" ;;
6233         esac
6234         fn=d~+
6235         rp='Pathname for vendor-supplied architecture-dependent files?'
6236         . ./getfile
6237         vendorarch="$ans"
6238         vendorarchexp="$ansexp"
6239         ;;
6240 esac
6241 : Change installation prefix, if necessary.
6242 if $test X"$prefix" != X"$installprefix"; then
6243         installvendorarch=`echo $vendorarchexp | sed "s#^$prefix#$installprefix#"`
6244 else
6245         installvendorarch="$vendorarchexp"
6246 fi
6247
6248 : Final catch-all directories to search
6249 $cat <<EOM
6250
6251 Lastly, you can have perl look in other directories for extensions and
6252 modules in addition to those already specified.
6253 These directories will be searched after 
6254         $sitearch 
6255         $sitelib 
6256 EOM
6257 test X"$vendorlib" != "X" && echo '     ' $vendorlib
6258 test X"$vendorarch" != "X" && echo '    ' $vendorarch
6259 echo ' '
6260 case "$otherlibdirs" in
6261 ''|' ') dflt='none' ;;
6262 *)      dflt="$otherlibdirs" ;;
6263 esac
6264 $cat <<EOM
6265 Enter a colon-separated set of extra paths to include in perl's @INC
6266 search path, or enter 'none' for no extra paths.
6267
6268 EOM
6269
6270 rp='Colon-separated list of additional directories for perl to search?'
6271 . ./myread
6272 case "$ans" in
6273 ' '|''|none)    otherlibdirs=' ' ;;     
6274 *)      otherlibdirs="$ans" ;;
6275 esac
6276 case "$otherlibdirs" in
6277 ' ') val=$undef ;;
6278 *)      val=$define ;;
6279 esac
6280 set d_perl_otherlibdirs
6281 eval $setvar
6282
6283 : Cruising for prototypes
6284 echo " "
6285 echo "Checking out function prototypes..." >&4
6286 $cat >prototype.c <<'EOCP'
6287 int main(int argc, char *argv[]) {
6288         exit(0);}
6289 EOCP
6290 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
6291         echo "Your C compiler appears to support function prototypes."
6292         val="$define"
6293 else
6294         echo "Your C compiler doesn't seem to understand function prototypes."
6295         val="$undef"
6296 fi
6297 set prototype
6298 eval $setvar
6299 $rm -f prototype*
6300
6301 case "$prototype" in
6302 "$define") ;;
6303 *)      ansi2knr='ansi2knr'
6304         echo " "
6305         cat <<EOM >&4
6306
6307 $me:  FATAL ERROR:
6308 This version of $package can only be compiled by a compiler that 
6309 understands function prototypes.  Unfortunately, your C compiler 
6310         $cc $ccflags
6311 doesn't seem to understand them.  Sorry about that.
6312
6313 If GNU cc is available for your system, perhaps you could try that instead.  
6314
6315 Eventually, we hope to support building Perl with pre-ANSI compilers.
6316 If you would like to help in that effort, please contact <perlbug@perl.org>.
6317
6318 Aborting Configure now.
6319 EOM
6320         exit 2
6321         ;;
6322 esac
6323
6324 : determine where public executables go
6325 echo " "
6326 set dflt bin bin
6327 eval $prefixit
6328 fn=d~
6329 rp='Pathname where the public executables will reside?'
6330 . ./getfile
6331 if $test "X$ansexp" != "X$binexp"; then
6332         installbin=''
6333 fi
6334 bin="$ans"
6335 binexp="$ansexp"
6336 : Change installation prefix, if necessary.
6337 : XXX Bug? -- ignores Configure -Dinstallprefix setting.
6338 if $test X"$prefix" != X"$installprefix"; then
6339         installbin=`echo $binexp | sed "s#^$prefix#$installprefix#"`
6340 else
6341         installbin="$binexp"
6342 fi
6343
6344 : Find perl5.005 or later.
6345 echo "Looking for a previously installed perl5.005 or later... "
6346 case "$perl5" in
6347 '')     for tdir in `echo "$binexp:$PATH" | $sed "s/$path_sep/ /g"`; do
6348                 : Check if this perl is recent and can load a simple module
6349                 if $test -x $tdir/perl && $tdir/perl -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6350                         perl5=$tdir/perl
6351                         break;
6352                 elif $test -x $tdir/perl5 && $tdir/perl5 -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6353                         perl5=$tdir/perl
6354                         break;
6355                 fi
6356         done
6357         ;;
6358 *)      perl5="$perl5"
6359         ;;
6360 esac
6361 case "$perl5" in
6362 '')     echo "None found.  That's ok.";;
6363 *)      echo "Using $perl5." ;;
6364 esac
6365
6366 : Determine list of previous versions to include in @INC
6367 $cat > getverlist <<EOPL
6368 #!$perl5 -w
6369 use File::Basename;
6370 \$api_versionstring = "$api_versionstring";
6371 \$version = "$version";
6372 \$stem = "$sitelib_stem";
6373 \$archname = "$archname";
6374 EOPL
6375         $cat >> getverlist <<'EOPL'
6376 # Can't have leading @ because metaconfig interprets it as a command!
6377 ;@inc_version_list=();
6378 # XXX Redo to do opendir/readdir? 
6379 if (-d $stem) {
6380     chdir($stem);
6381     ;@candidates = glob("5.*");
6382 }
6383 else {
6384     ;@candidates = ();
6385 }
6386
6387 # XXX ToDo:  These comparisons must be reworked when two-digit
6388 # subversions come along, so that 5.7.10 compares as greater than
6389 # 5.7.3!  By that time, hope that 5.6.x is sufficiently
6390 # widespread that we can use the built-in version vectors rather
6391 # than reinventing them here.  For 5.6.0, however, we must
6392 # assume this script will likely be run by 5.005_0x.  --AD 1/2000.
6393 foreach $d (@candidates) {
6394     if ($d lt $version) {
6395         if ($d ge $api_versionstring) {
6396             unshift(@inc_version_list, grep { -d } "$d/$archname", $d);
6397         }
6398         elsif ($d ge "5.005") {
6399             unshift(@inc_version_list, grep { -d } $d);
6400         }
6401     }
6402     else {
6403         # Skip newer version.  I.e. don't look in
6404         # 5.7.0 if we're installing 5.6.1.
6405     }
6406 }
6407
6408 if (@inc_version_list) {
6409     print join(' ', @inc_version_list);
6410 }
6411 else {
6412     # Blank space to preserve value for next Configure run.
6413     print " ";
6414 }
6415 EOPL
6416 chmod +x getverlist
6417 case "$inc_version_list" in
6418 '')     if test -x "$perl5"; then
6419                 dflt=`$perl5 getverlist`
6420         else
6421                 dflt='none'
6422         fi
6423         ;;
6424 $undef) dflt='none' ;;
6425 *)  dflt="$inc_version_list" ;;
6426 esac
6427 case "$dflt" in
6428 ''|' ') dflt=none ;;
6429 esac
6430 case "$dflt" in
6431 5.005) case "$bincompat5005" in
6432        $define|true|[yY]*) ;;
6433        *) dflt=none ;;
6434        esac
6435        ;;
6436 esac
6437 $cat <<'EOM'
6438
6439 In order to ease the process of upgrading, this version of perl 
6440 can be configured to use modules built and installed with earlier 
6441 versions of perl that were installed under $prefix.  Specify here
6442 the list of earlier versions that this version of perl should check.
6443 If Configure detected no earlier versions of perl installed under
6444 $prefix, then the list will be empty.  Answer 'none' to tell perl
6445 to not search earlier versions.
6446
6447 The default should almost always be sensible, so if you're not sure,
6448 just accept the default.
6449 EOM
6450
6451 rp='List of earlier versions to include in @INC?'
6452 . ./myread
6453 case "$ans" in
6454 [Nn]one|''|' ') inc_version_list=' ' ;;
6455 *) inc_version_list="$ans" ;;
6456 esac
6457 case "$inc_version_list" in
6458 ''|' ') 
6459         inc_version_list_init='0';;
6460 *)      inc_version_list_init=`echo $inc_version_list |
6461                 $sed -e 's/^/"/' -e 's/ /","/g' -e 's/$/",0/'`
6462         ;;
6463 esac
6464 $rm -f getverlist
6465
6466 : determine whether to install perl also as /usr/bin/perl
6467
6468 echo " "
6469 if $test -d /usr/bin -a "X$installbin" != X/usr/bin; then
6470         $cat <<EOM
6471 Many scripts expect perl to be installed as /usr/bin/perl.
6472 I can install the perl you are about to compile also as /usr/bin/perl
6473 (in addition to $installbin/perl).
6474 EOM
6475         case "$installusrbinperl" in
6476         "$undef"|[nN]*) dflt='n';;
6477         *)              dflt='y';;
6478         esac
6479         rp="Do you want to install perl as /usr/bin/perl?"
6480         . ./myread
6481         case "$ans" in
6482         [yY]*)  val="$define";;
6483         *)      val="$undef" ;;
6484         esac
6485 else
6486         val="$undef"
6487 fi
6488 set installusrbinperl
6489 eval $setvar
6490
6491 : see if dld is available
6492 set dld.h i_dld
6493 eval $inhdr
6494
6495 : see if dlopen exists
6496 xxx_runnm="$runnm"
6497 runnm=false
6498 set dlopen d_dlopen
6499 eval $inlibc
6500 runnm="$xxx_runnm"
6501
6502 : determine which dynamic loading, if any, to compile in
6503 echo " "
6504 dldir="ext/DynaLoader"
6505 case "$usedl" in
6506 $define|y|true)
6507         dflt='y'
6508         usedl="$define"
6509         ;;
6510 $undef|n|false)
6511         dflt='n'
6512         usedl="$undef"
6513         ;;
6514 *) 
6515         dflt='n'
6516         case "$d_dlopen" in
6517             $define) dflt='y' ;;
6518         esac
6519         case "$i_dld" in
6520             $define) dflt='y' ;;
6521         esac
6522         : Does a dl_xxx.xs file exist for this operating system
6523         $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
6524         ;;
6525 esac
6526 rp="Do you wish to use dynamic loading?"
6527 . ./myread
6528 usedl="$ans"
6529 case "$ans" in
6530 y*) usedl="$define"
6531         case "$dlsrc" in
6532         '')
6533                 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
6534                         dflt="$dldir/dl_${osname}.xs"
6535                 elif $test "$d_dlopen" = "$define" ; then
6536                         dflt="$dldir/dl_dlopen.xs"
6537                 elif $test "$i_dld" = "$define" ; then
6538                         dflt="$dldir/dl_dld.xs"
6539                 else
6540                         dflt=''
6541                 fi
6542                 ;;
6543         *)      dflt="$dldir/$dlsrc"
6544                 ;;
6545         esac
6546     echo "The following dynamic loading files are available:"
6547         : Can not go over to $dldir because getfile has path hard-coded in.
6548         tdir=`pwd`; cd $rsrc; $ls -C $dldir/dl*.xs; cd $tdir
6549         rp="Source file to use for dynamic loading"
6550         fn="fne"
6551         gfpth="$src"
6552         . ./getfile
6553         usedl="$define"
6554         : emulate basename
6555         dlsrc=`echo $ans | $sed -e 's%.*/\([^/]*\)$%\1%'`
6556
6557         $cat << EOM
6558
6559 Some systems may require passing special flags to $cc -c to
6560 compile modules that will be used to create a shared library.
6561 To use no flags, say "none".
6562
6563 EOM
6564     case "$cccdlflags" in
6565     '') case "$gccversion" in
6566                 '') case "$osname" in
6567                         hpux)   dflt='+z' ;;
6568                         next)   dflt='none' ;;
6569                         irix*)  dflt='-KPIC' ;;
6570                         svr4*|esix*|solaris|nonstopux) dflt='-KPIC' ;;
6571                         sunos)  dflt='-pic' ;;
6572                         *)      dflt='none' ;;
6573                     esac
6574                         ;;
6575                 *)  case "$osname" in
6576                         svr4*|esix*|solaris|nonstopux) dflt='-fPIC' ;;
6577                         *)      dflt='-fpic' ;;
6578                     esac ;;
6579             esac ;;
6580         ' ') dflt='none' ;;
6581     *)  dflt="$cccdlflags" ;;
6582     esac
6583     rp="Any special flags to pass to $cc -c to compile shared library modules?"
6584     . ./myread
6585     case "$ans" in
6586     none) cccdlflags=' ' ;;
6587     *) cccdlflags="$ans" ;;
6588     esac
6589
6590     cat << EOM
6591
6592 Some systems use ld to create libraries that can be dynamically loaded,
6593 while other systems (such as those using ELF) use $cc.
6594
6595 EOM
6596         case "$ld" in
6597         '')     $cat >try.c <<'EOM'
6598 /* Test for whether ELF binaries are produced */
6599 #include <fcntl.h>
6600 #include <stdlib.h>
6601 int main() {
6602         char b[4];
6603         int i = open("a.out",O_RDONLY);
6604         if(i == -1) 
6605                 exit(1); /* fail */
6606         if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
6607                 exit(0); /* succeed (yes, it's ELF) */
6608         else
6609                 exit(1); /* fail */
6610 }
6611 EOM
6612                 if $cc $ccflags try.c >/dev/null 2>&1 && ./a.out; then
6613                         cat <<EOM
6614 You appear to have ELF support.  I'll use $cc to build dynamic libraries.
6615 EOM
6616                         dflt="$cc"
6617                 else
6618                         echo "I'll use ld to build dynamic libraries."
6619                         dflt='ld'
6620                 fi
6621                 rm -f try.c a.out
6622                 ;;
6623         *)      dflt="$ld"
6624                 ;;
6625         esac
6626
6627     rp="What command should be used to create dynamic libraries?"
6628     . ./myread
6629         ld="$ans"
6630
6631     cat << EOM
6632
6633 Some systems may require passing special flags to $ld to create a
6634 library that can be dynamically loaded.  If your ld flags include
6635 -L/other/path options to locate libraries outside your loader's normal
6636 search path, you may need to specify those -L options here as well.  To
6637 use no flags, say "none".
6638
6639 EOM
6640     case "$lddlflags" in
6641     '') case "$osname" in
6642                         beos) dflt='-nostart' ;;
6643                         hpux) dflt='-b';
6644                               case "$gccversion" in
6645                               '') dflt="$dflt +vnocompatwarnings" ;;
6646                               esac
6647                               ;;        
6648                         linux|irix*)    dflt='-shared' ;;
6649                         next)  dflt='none' ;;
6650                         solaris) dflt='-G' ;;
6651                         sunos) dflt='-assert nodefinitions' ;;
6652                         svr4*|esix*|nonstopux) dflt="-G $ldflags" ;;
6653                 *)     dflt='none' ;;
6654                         esac
6655                         ;;
6656     *) dflt="$lddlflags" ;;
6657     esac
6658
6659         : Try to guess additional flags to pick up local libraries.
6660         : Be careful not to append to a plain 'none'
6661         case "$dflt" in
6662         none) dflt='' ;;
6663         esac
6664         for thisflag in $ldflags; do
6665                 case "$thisflag" in
6666                 -L*|-R*)
6667                         case " $dflt " in
6668                         *" $thisflag "*) ;;
6669                         *) dflt="$dflt $thisflag" ;;
6670                         esac
6671                         ;;
6672                 esac
6673         done
6674
6675         case "$dflt" in
6676         ''|' ') dflt='none' ;;
6677         esac
6678
6679     rp="Any special flags to pass to $ld to create a dynamically loaded library?"
6680     . ./myread
6681     case "$ans" in
6682     none) lddlflags=' ' ;;
6683     *) lddlflags="$ans" ;;
6684     esac
6685
6686         cat <<EOM
6687
6688 Some systems may require passing special flags to $cc to indicate that
6689 the resulting executable will use dynamic linking.  To use no flags,
6690 say "none".
6691
6692 EOM
6693     case "$ccdlflags" in
6694     '') case "$osname" in
6695                 hpux)   dflt='-Wl,-E' ;;
6696                 linux)  dflt='-rdynamic' ;;
6697                 next)   dflt='none' ;;
6698                 sunos)  dflt='none' ;;
6699                 *)      dflt='none' ;;
6700             esac ;;
6701     ' ')  dflt='none' ;;
6702     *)  dflt="$ccdlflags" ;;
6703     esac
6704     rp="Any special flags to pass to $cc to use dynamic linking?"
6705     . ./myread
6706     case "$ans" in
6707     none) ccdlflags=' ' ;;
6708     *) ccdlflags="$ans" ;;
6709     esac
6710     ;;
6711 *)  usedl="$undef"
6712         ld='ld'
6713     dlsrc='dl_none.xs'
6714     lddlflags=''
6715     ccdlflags=''
6716     ;;
6717 esac
6718
6719 also=''
6720 case "$usedl" in
6721 $undef)
6722         # No dynamic loading being used, so don't bother even to prompt.
6723         useshrplib='false'
6724         ;;
6725 *)      case "$useshrplib" in
6726         '')     case "$osname" in
6727                 svr4*|nonstopux|dgux|dynixptx|esix|powerux|beos|cygwin*)
6728                         dflt=y
6729                         also='Building a shared libperl is required for dynamic loading to work on your system.'
6730                         ;;
6731                 next*)
6732                         case "$osvers" in
6733                         4*)     dflt=y
6734                                 also='Building a shared libperl is needed for MAB support.'
6735                                 ;;
6736                         *)      dflt=n
6737                                 ;;
6738                         esac
6739                         ;;
6740                 *)      dflt=n
6741                         ;;
6742                 esac
6743                 ;;
6744         $define|true|[Yy]*)
6745                 dflt=y
6746                 ;;
6747         *)      dflt=n
6748                 ;;
6749         esac
6750         $cat << EOM
6751
6752 The perl executable is normally obtained by linking perlmain.c with
6753 libperl${_a}, any static extensions (usually just DynaLoader), and
6754 any other libraries needed on this system (such as -lm, etc.).  Since
6755 your system supports dynamic loading, it is probably possible to build
6756 a shared libperl.$so.  If you will have more than one executable linked
6757 to libperl.$so, this will significantly reduce the size of each
6758 executable, but it may have a noticeable affect on performance.  The
6759 default is probably sensible for your system.
6760 $also
6761
6762 EOM
6763         rp="Build a shared libperl.$so (y/n)"
6764         . ./myread
6765         case "$ans" in
6766         true|$define|[Yy]*)
6767                 useshrplib='true'  ;;
6768         *)      useshrplib='false' ;;
6769         esac
6770         ;;
6771 esac
6772
6773 case "$useshrplib" in
6774 true)
6775         case "$libperl" in
6776         '')
6777                 # Figure out a good name for libperl.so.  Since it gets stored in
6778                 # a version-specific architecture-dependent library, the version
6779                 # number isn't really that important, except for making cc/ld happy.
6780                 #
6781                 # A name such as libperl.so.3.1
6782                 majmin="libperl.$so.$patchlevel.$subversion"
6783                 # A name such as libperl.so.301
6784                 majonly=`echo $patchlevel $subversion |
6785                         $awk '{printf "%d%02d", $1, $2}'`
6786                 majonly=libperl.$so.$majonly
6787                 # I'd prefer to keep the os-specific stuff here to a minimum, and
6788                 # rely on figuring it out from the naming of libc.
6789                 case "${osname}${osvers}" in
6790                 next4*)
6791                         dflt=libperl.5.$so
6792                         # XXX How handle the --version stuff for MAB?
6793                         ;;
6794                 linux*)  # ld won't link with a bare -lperl otherwise.
6795                         dflt=libperl.$so
6796                         ;;
6797                 cygwin*) # include version
6798                         dflt=`echo libperl$version | sed -e 's/\./_/g'`$lib_ext
6799                         ;;
6800                 *)      # Try to guess based on whether libc has major.minor.
6801                         case "$libc" in
6802                         *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
6803                         *libc.$so.[0-9]*) dflt=$majonly ;;
6804                         *)      dflt=libperl.$so ;;
6805                         esac
6806                         ;;
6807                 esac
6808                 ;;
6809         *)      dflt=$libperl
6810                 ;;
6811         esac
6812         cat << EOM
6813
6814 I need to select a good name for the shared libperl.  If your system uses
6815 library names with major and minor numbers, then you might want something
6816 like $majmin.  Alternatively, if your system uses a single version
6817 number for shared libraries, then you might want to use $majonly.
6818 Or, your system might be quite happy with a simple libperl.$so.
6819
6820 Since the shared libperl will get installed into a version-specific
6821 architecture-dependent directory, the version number of the shared perl
6822 library probably isn't important, so the default should be o.k.
6823
6824 EOM
6825         rp='What name do you want to give to the shared libperl?'
6826         . ./myread
6827         libperl=$ans
6828         echo "Ok, I'll use $libperl"
6829         ;;
6830 *)
6831         libperl="libperl${_a}"
6832         ;;
6833 esac
6834
6835 # Detect old use of shrpdir via undocumented Configure -Dshrpdir
6836 case "$shrpdir" in
6837 '') ;;
6838 *)      $cat >&4 <<EOM
6839 WARNING:  Use of the shrpdir variable for the installation location of
6840 the shared $libperl is not supported.  It was never documented and
6841 will not work in this version.  Let me (perlbug@perl.org)
6842 know of any problems this may cause.
6843
6844 EOM
6845         case "$shrpdir" in
6846         "$archlibexp/CORE")
6847                 $cat >&4 <<EOM
6848 But your current setting of $shrpdir is
6849 the default anyway, so it's harmless.
6850 EOM
6851                 ;;
6852         *)
6853                 $cat >&4 <<EOM
6854 Further, your current attempted setting of $shrpdir
6855 conflicts with the value of $archlibexp/CORE
6856 that installperl will use.
6857 EOM
6858                 ;;
6859         esac
6860         ;;
6861 esac
6862
6863 # How will the perl executable find the installed shared $libperl?
6864 # Add $xxx to ccdlflags.
6865 # If we can't figure out a command-line option, use $shrpenv to
6866 # set env LD_RUN_PATH.  The main perl makefile uses this.
6867 shrpdir=$archlibexp/CORE
6868 xxx=''
6869 tmp_shrpenv=''
6870 if "$useshrplib"; then
6871     case "$osname" in 
6872         aix)
6873                 # We'll set it in Makefile.SH...
6874                 ;;
6875         solaris|netbsd)
6876                 xxx="-R $shrpdir"
6877                 ;;
6878         freebsd)
6879                 xxx="-Wl,-R$shrpdir"
6880                 ;;
6881         linux|irix*|dec_osf)
6882                 xxx="-Wl,-rpath,$shrpdir"
6883                 ;;
6884         next)
6885                 # next doesn't like the default...
6886                 ;;
6887         beos)
6888                 # beos doesn't like the default, either.
6889                 ;;
6890         hpux*)
6891                 # hpux doesn't like the default, either.
6892                 tmp_shrpenv="env LDOPTS=\"+s +b${shrpdir}\""
6893                 ;;
6894         *)
6895                 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
6896                 ;;
6897         esac
6898         case "$xxx" in
6899         '') ;;
6900         *)      
6901                 # Only add $xxx if it isn't already in ccdlflags.
6902                 case " $ccdlflags " in
6903                 *" $xxx "*)     ;;
6904                 *)      ccdlflags="$ccdlflags $xxx"
6905                         cat <<EOM >&4
6906
6907 Adding $xxx to the flags
6908 passed to $ld so that the perl executable will find the 
6909 installed shared $libperl.
6910
6911 EOM
6912                         ;;
6913                 esac
6914                 ;;
6915         esac
6916 fi
6917 # Fix ccdlflags in AIX for building external extensions.
6918 # (For building Perl itself bare -bE:perl.exp is needed,
6919 #  Makefile.SH takes care of this.)
6920 case "$osname" in
6921 aix) ccdlflags="$ccdlflags -bE:$installarchlib/CORE/perl.exp" ;;
6922 esac
6923 # Respect a hint or command-line value.
6924 case "$shrpenv" in
6925 '') shrpenv="$tmp_shrpenv" ;;
6926 esac
6927 case "$ldlibpthname" in
6928 '')     ldlibpthname=LD_LIBRARY_PATH ;;
6929 none)   ldlibpthname='' ;;
6930 esac
6931
6932 : determine where manual pages are on this system
6933 echo " "
6934 case "$sysman" in
6935 '') 
6936         syspath='/usr/man/man1 /usr/man/mann /usr/man/manl /usr/man/local/man1'
6937         syspath="$syspath /usr/man/u_man/man1 /usr/share/man/man1"
6938         syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
6939         syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
6940         syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
6941         sysman=`./loc . /usr/man/man1 $syspath`
6942         ;;
6943 esac
6944 if $test -d "$sysman"; then
6945         echo "System manual is in $sysman." >&4
6946 else
6947         echo "Could not find manual pages in source form." >&4
6948 fi
6949
6950 : determine where manual pages go
6951 set man1dir man1dir none
6952 eval $prefixit
6953 $cat <<EOM
6954
6955 $spackage has manual pages available in source form.
6956 EOM
6957 case "$nroff" in
6958 nroff)
6959         echo "However, you don't have nroff, so they're probably useless to you."
6960         case "$man1dir" in
6961         '') man1dir="none";;
6962         esac;;
6963 esac
6964 echo "If you don't want the manual sources installed, answer 'none'."
6965 case "$man1dir" in
6966 ' ') dflt=none
6967         ;;
6968 '')
6969         lookpath="$prefixexp/man/man1 $prefixexp/man/l_man/man1"
6970         lookpath="$lookpath $prefixexp/man/p_man/man1"
6971         lookpath="$lookpath $prefixexp/man/u_man/man1"
6972         lookpath="$lookpath $prefixexp/man/man.1"
6973         case "$sysman" in
6974         */?_man*)       dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
6975         *)      dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
6976         esac
6977         set dflt
6978         eval $prefixup
6979         ;;
6980 *)  dflt="$man1dir"
6981         ;;
6982 esac
6983 echo " "
6984 fn=dn+~
6985 rp="Where do the main $spackage manual pages (source) go?"
6986 . ./getfile
6987 if $test "X$man1direxp" != "X$ansexp"; then
6988         installman1dir=''
6989 fi
6990 man1dir="$ans"
6991 man1direxp="$ansexp"
6992 case "$man1dir" in
6993 '')     man1dir=' '
6994         installman1dir='';;
6995 esac
6996
6997 : Change installation prefix, if necessary.
6998 if $test X"$prefix" != X"$installprefix"; then
6999         installman1dir=`echo $man1direxp | $sed "s#^$prefix#$installprefix#"`
7000 else
7001         installman1dir="$man1direxp"
7002 fi
7003
7004 : What suffix to use on installed man pages
7005
7006 case "$man1dir" in
7007 ' ')
7008         man1ext='0'
7009         ;;
7010 *)
7011         rp="What suffix should be used for the main $spackage man pages?"
7012         case "$man1ext" in
7013         '')     case "$man1dir" in
7014                 *1)  dflt=1 ;;
7015                 *1p) dflt=1p ;;
7016                 *1pm) dflt=1pm ;;
7017                 *l) dflt=l;;
7018                 *n) dflt=n;;
7019                 *o) dflt=o;;
7020                 *p) dflt=p;;
7021                 *C) dflt=C;;
7022                 *L) dflt=L;;
7023                 *L1) dflt=L1;;
7024                 *) dflt=1;;
7025                 esac
7026                 ;;
7027         *)      dflt="$man1ext";;
7028         esac
7029         . ./myread
7030         man1ext="$ans"
7031         ;;
7032 esac
7033
7034 : see if we can have long filenames
7035 echo " "
7036 first=123456789abcdef
7037 $rm -f $first
7038 if (echo hi >$first) 2>/dev/null; then
7039         if $test -f 123456789abcde; then
7040                 echo 'You cannot have filenames longer than 14 characters.  Sigh.' >&4
7041                 val="$undef"
7042         else
7043                 echo 'You can have filenames longer than 14 characters.'>&4
7044                 val="$define"
7045         fi
7046 else
7047         $cat <<'EOM'
7048 You can't have filenames longer than 14 chars.
7049 You can't even think about them!
7050 EOM
7051         val="$undef"
7052 fi 
7053 set d_flexfnam
7054 eval $setvar
7055 $rm -rf 123456789abcde*
7056
7057 : determine where library module manual pages go
7058 set man3dir man3dir none
7059 eval $prefixit
7060 $cat <<EOM
7061
7062 $spackage has manual pages for many of the library modules.
7063 EOM
7064
7065 case "$nroff" in
7066 nroff)
7067         $cat <<'EOM'
7068 However, you don't have nroff, so they're probably useless to you.
7069 EOM
7070         case "$man3dir" in
7071         '') man3dir="none";;
7072         esac;;
7073 esac
7074
7075 case "$d_flexfnam" in
7076 undef)
7077         $cat <<'EOM'
7078 However, your system can't handle the long file names like File::Basename.3. 
7079 EOM
7080         case "$man3dir" in
7081         '') man3dir="none";;
7082         esac;;
7083 esac
7084
7085 echo "If you don't want the manual sources installed, answer 'none'."
7086 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
7087 case "$man3dir" in
7088 '')     dflt=`echo "$man1dir" | $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'`
7089         if $test -d "$privlib/man/man3"; then
7090                 cat <<EOM >&4
7091
7092 WARNING:  Previous versions of perl installed man3 pages into
7093 $privlib/man/man3.  This version will suggest a 
7094 new default of $dflt.  
7095 EOM
7096                 tdflt=$dflt
7097                 dflt='n'
7098                 rp='Do you wish to preserve the old behavior?(y/n)'
7099                 . ./myread
7100                 case "$ans" in
7101                 y*) dflt="$privlib/man/man3" ;;
7102                 *)  dflt=$tdflt ;;
7103                 esac
7104     fi
7105         ;;
7106 *)      dflt="$man3dir" ;;
7107 esac
7108 case "$dflt" in
7109 ' ') dflt=none ;;
7110 esac
7111 echo " "
7112 fn=dn+~
7113 rp="Where do the $package library man pages (source) go?"
7114 . ./getfile
7115 man3dir="$ans"
7116 man3direxp="$ansexp"
7117 case "$man3dir" in
7118 '')     man3dir=' '
7119         installman3dir='';;
7120 esac
7121
7122 : Change installation prefix, if necessary.
7123 if $test X"$prefix" != X"$installprefix"; then
7124         installman3dir=`echo $man3direxp | $sed "s#^$prefix#$installprefix#"`
7125 else
7126         installman3dir="$man3direxp"
7127 fi
7128
7129 : What suffix to use on installed man pages
7130 case "$man3dir" in
7131 ' ')
7132         man3ext='0'
7133         ;;
7134 *)
7135         rp="What suffix should be used for the $package library man pages?"
7136         case "$man3ext" in
7137         '')     case "$man3dir" in
7138                 *3)  dflt=3 ;;
7139                 *3p) dflt=3p ;;
7140                 *3pm) dflt=3pm ;;
7141                 *l) dflt=l;;
7142                 *n) dflt=n;;
7143                 *o) dflt=o;;
7144                 *p) dflt=p;;
7145                 *C) dflt=C;;
7146                 *L) dflt=L;;
7147                 *L3) dflt=L3;;
7148                 *) dflt=3;;
7149                 esac
7150                 ;;
7151         *)      dflt="$man3ext";;
7152         esac
7153         . ./myread
7154         man3ext="$ans"
7155         ;;
7156 esac
7157
7158 : see if we have to deal with yellow pages, now NIS.
7159 if $test -d /usr/etc/yp || $test -d /etc/yp; then
7160         if $test -f /usr/etc/nibindd; then
7161                 echo " "
7162                 echo "I'm fairly confident you're on a NeXT."
7163                 echo " "
7164                 rp='Do you get the hosts file via NetInfo?'
7165                 dflt=y
7166                 case "$hostcat" in
7167                 nidump*) ;;
7168                 '') ;;
7169                 *) dflt=n;;
7170                 esac
7171                 . ./myread
7172                 case "$ans" in
7173                 y*) hostcat='nidump hosts .';;
7174                 *)      case "$hostcat" in
7175                         nidump*) hostcat='';;
7176                         esac
7177                         ;;
7178                 esac
7179         fi
7180         case "$hostcat" in
7181         nidump*) ;;
7182         *)
7183                 case "$hostcat" in
7184                 *ypcat*) dflt=y;;
7185                 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
7186                                 dflt=y
7187                         else
7188                                 dflt=n
7189                         fi;;
7190                 *) dflt=n;;
7191                 esac
7192                 echo " "
7193                 rp='Are you getting the hosts file via yellow pages?'
7194                 . ./myread
7195                 case "$ans" in
7196                 y*) hostcat='ypcat hosts';;
7197                 *) hostcat='cat /etc/hosts';;
7198                 esac
7199                 ;;
7200         esac
7201 fi
7202 case "$hostcat" in
7203 '') test -f /etc/hosts && hostcat='cat /etc/hosts';;
7204 esac
7205 case "$groupcat" in
7206 '') test -f /etc/group && groupcat='cat /etc/group';;
7207 esac
7208 case "$passcat" in
7209 '') test -f /etc/passwd && passcat='cat /etc/passwd';;
7210 esac
7211
7212 : now get the host name
7213 echo " "
7214 echo "Figuring out host name..." >&4
7215 case "$myhostname" in
7216 '') cont=true
7217         echo 'Maybe "hostname" will work...'
7218         if tans=`sh -c hostname 2>&1` ; then
7219                 myhostname=$tans
7220                 phostname=hostname
7221                 cont=''
7222         fi
7223         ;;
7224 *) cont='';;
7225 esac
7226 if $test "$cont"; then
7227         if ./xenix; then
7228                 echo 'Oh, dear.  Maybe "/etc/systemid" is the key...'
7229                 if tans=`cat /etc/systemid 2>&1` ; then
7230                         myhostname=$tans
7231                         phostname='cat /etc/systemid'
7232                         echo "Whadyaknow.  Xenix always was a bit strange..."
7233                         cont=''
7234                 fi
7235         elif $test -r /etc/systemid; then
7236                 echo "(What is a non-Xenix system doing with /etc/systemid?)"
7237         fi
7238 fi
7239 if $test "$cont"; then
7240         echo 'No, maybe "uuname -l" will work...'
7241         if tans=`sh -c 'uuname -l' 2>&1` ; then
7242                 myhostname=$tans
7243                 phostname='uuname -l'
7244         else
7245                 echo 'Strange.  Maybe "uname -n" will work...'
7246                 if tans=`sh -c 'uname -n' 2>&1` ; then
7247                         myhostname=$tans
7248                         phostname='uname -n'
7249                 else
7250                         echo 'Oh well, maybe I can mine it out of whoami.h...'
7251                         if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
7252                                 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
7253                                 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
7254                         else
7255                                 case "$myhostname" in
7256                                 '') echo "Does this machine have an identity crisis or something?"
7257                                         phostname='';;
7258                                 *)
7259                                         echo "Well, you said $myhostname before..."
7260                                         phostname='echo $myhostname';;
7261                                 esac
7262                         fi
7263                 fi
7264         fi
7265 fi
7266 : you do not want to know about this
7267 set $myhostname
7268 myhostname=$1
7269
7270 : verify guess
7271 if $test "$myhostname" ; then
7272         dflt=y
7273         rp='Your host name appears to be "'$myhostname'".'" Right?"
7274         . ./myread
7275         case "$ans" in
7276         y*) ;;
7277         *) myhostname='';;
7278         esac
7279 fi
7280
7281 : bad guess or no guess
7282 while $test "X$myhostname" = X ; do
7283         dflt=''
7284         rp="Please type the (one word) name of your host:"
7285         . ./myread
7286         myhostname="$ans"
7287 done
7288
7289 : translate upper to lower if necessary
7290 case "$myhostname" in
7291 *[A-Z]*)
7292         echo "(Normalizing case in your host name)"
7293         myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
7294         ;;
7295 esac
7296
7297 case "$myhostname" in
7298 *.*)
7299         dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
7300         myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
7301         echo "(Trimming domain name from host name--host name is now $myhostname)"
7302         ;;
7303 *) case "$mydomain" in
7304         '')
7305                 {
7306                         test "X$hostcat" = "Xypcat hosts" &&
7307                         ypmatch "$myhostname" hosts 2>/dev/null |\
7308                                 $sed -e 's/[     ]*#.*//; s/$/ /' > hosts && \
7309                         $test -s hosts
7310                 } || {
7311                         test "X$hostcat" != "X" &&
7312                         $hostcat | $sed -n -e "s/[       ]*#.*//; s/\$/ /
7313                                         /[       ]$myhostname[  . ]/p" > hosts
7314                 }
7315                 tmp_re="[       . ]"
7316                 if $test -f hosts; then
7317                         $test x`$awk "/[0-9].*[  ]$myhostname$tmp_re/ { sum++ }
7318                              END { print sum }" hosts` = x1 || tmp_re="[         ]"
7319                         dflt=.`$awk "/[0-9].*[   ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
7320                                 hosts | $sort | $uniq | \
7321                                 $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
7322                         case `$echo X$dflt` in
7323                         X*\ *)  echo "(Several hosts in the database matched hostname)"
7324                                 dflt=.
7325                                 ;;
7326                         X.) echo "(You do not have fully-qualified names in the hosts database)"
7327                                 ;;
7328                         esac
7329                 else
7330                         echo "(I cannot locate a hosts database anywhere)"
7331                         dflt=.
7332                 fi
7333                 case "$dflt" in
7334                 .)
7335                         tans=`./loc resolv.conf X /etc /usr/etc`
7336                         if $test -f "$tans"; then
7337                                 echo "(Attempting domain name extraction from $tans)"
7338                                 dflt=.`$sed -n -e 's/   / /g' \
7339                                   -e 's/^search  *\([^ ]*\).*/\1/p' $tans \
7340                                   | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
7341                                 case "$dflt" in
7342                                 .) dflt=.`$sed -n -e 's/        / /g' \
7343                                      -e 's/^domain  *\([^ ]*\).*/\1/p' $tans \
7344                                      | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
7345                                         ;;
7346                                 esac
7347                         fi
7348                         ;;
7349                 esac
7350                 case "$dflt" in
7351                 .) echo "(No help from resolv.conf either -- attempting clever guess)"
7352                         dflt=.`sh -c domainname 2>/dev/null`
7353                         case "$dflt" in
7354                         '') dflt='.';;
7355                         .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
7356                         esac
7357                         ;;
7358                 esac
7359                 case "$dflt" in
7360                 .) echo "(Lost all hope -- silly guess then)"
7361                         dflt='.uucp'
7362                         ;;
7363                 esac
7364                 $rm -f hosts
7365                 ;;
7366         *) dflt="$mydomain";;
7367         esac;;
7368 esac
7369 echo " "
7370 rp="What is your domain name?"
7371 . ./myread
7372 tans="$ans"
7373 case "$ans" in
7374 '') ;;
7375 .*) ;;
7376 *) tans=".$tans";;
7377 esac
7378 mydomain="$tans"
7379
7380 : translate upper to lower if necessary
7381 case "$mydomain" in
7382 *[A-Z]*)
7383         echo "(Normalizing case in your domain name)"
7384         mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
7385         ;;
7386 esac
7387
7388 : a little sanity check here
7389 case "$phostname" in
7390 '') ;;
7391 *)
7392         case `$phostname | ./tr '[A-Z]' '[a-z]'` in
7393         $myhostname$mydomain|$myhostname) ;;
7394         *)
7395                 case "$phostname" in
7396                 sed*)
7397                         echo "(That doesn't agree with your whoami.h file, by the way.)"
7398                         ;;
7399                 *)
7400                         echo "(That doesn't agree with your $phostname command, by the way.)"
7401                         ;;
7402                 esac
7403         ;;
7404         esac
7405         ;;
7406 esac
7407
7408 $cat <<EOM
7409
7410 I need to get your e-mail address in Internet format if possible, i.e.
7411 something like user@host.domain. Please answer accurately since I have
7412 no easy means to double check it. The default value provided below
7413 is most probably close to reality but may not be valid from outside
7414 your organization...
7415
7416 EOM
7417 cont=x
7418 while test "$cont"; do
7419         case "$cf_email" in
7420         '') dflt="$cf_by@$myhostname$mydomain";;
7421         *) dflt="$cf_email";;
7422         esac
7423         rp='What is your e-mail address?'
7424         . ./myread
7425         cf_email="$ans"
7426         case "$cf_email" in
7427         *@*.*) cont='' ;;
7428         *)
7429                 rp='Address does not look like an Internet one.  Use it anyway?'
7430                 case "$fastread" in
7431                 yes) dflt=y ;;
7432                 *) dflt=n ;;
7433                 esac
7434                 . ./myread
7435                 case "$ans" in
7436                 y*) cont='' ;;
7437                 *) echo " " ;;
7438                 esac
7439                 ;;
7440         esac
7441 done
7442
7443 $cat <<EOM
7444
7445 If you or somebody else will be maintaining perl at your site, please
7446 fill in the correct e-mail address here so that they may be contacted
7447 if necessary. Currently, the "perlbug" program included with perl
7448 will send mail to this address in addition to perlbug@perl.org. You may
7449 enter "none" for no administrator.
7450
7451 EOM
7452 case "$perladmin" in
7453 '') dflt="$cf_email";;
7454 *) dflt="$perladmin";;
7455 esac
7456 rp='Perl administrator e-mail address'
7457 . ./myread
7458 perladmin="$ans"
7459
7460 : determine whether to only install version-specific parts.
7461 echo " "
7462 $cat <<EOM
7463 Do you want to install only the version-specific parts of the perl
7464 distribution?  Usually you do *not* want to do this.
7465 EOM
7466 case "$versiononly" in
7467 "$define"|[Yy]*|true) dflt='y' ;;
7468 *) dflt='n';
7469 esac
7470 rp="Do you want to install only the version-specific parts of perl?"
7471 . ./myread
7472 case "$ans" in
7473 [yY]*)  val="$define";;
7474 *)      val="$undef" ;;
7475 esac
7476 set versiononly
7477 eval $setvar
7478
7479 : figure out how to guarantee perl startup
7480 case "$startperl" in
7481 '')
7482         case "$sharpbang" in
7483         *!)
7484                 $cat <<EOH
7485
7486 I can use the #! construct to start perl on your system. This will
7487 make startup of perl scripts faster, but may cause problems if you
7488 want to share those scripts and perl is not in a standard place
7489 ($binexp/perl) on all your platforms. The alternative is to force
7490 a shell by starting the script with a single ':' character.
7491
7492 EOH
7493                 case "$versiononly" in
7494                 "$define")      dflt="$binexp/perl$version";;  
7495                 *)              dflt="$binexp/perl";;
7496                 esac
7497                 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
7498                 . ./myread
7499                 case "$ans" in
7500                 none)   startperl=": # use perl";;
7501                 *)      startperl="#!$ans"
7502                         if $test 30 -lt `echo "$ans" | wc -c`; then
7503                                 $cat >&4 <<EOM
7504
7505 WARNING:  Some systems limit the #! command to 32 characters.
7506 If you experience difficulty running Perl scripts with #!, try
7507 installing Perl in a directory with a shorter pathname.
7508
7509 EOM
7510                         fi ;;
7511                 esac
7512                 ;;
7513         *) startperl=": # use perl"
7514                 ;;
7515         esac
7516         ;;
7517 esac
7518 echo "I'll use $startperl to start perl scripts."
7519
7520 : figure best path for perl in scripts
7521 case "$perlpath" in
7522 '')
7523         perlpath="$binexp/perl"
7524         case "$startperl" in
7525         *!*) ;;
7526         *)
7527                 $cat <<EOH
7528
7529 I will use the "eval 'exec'" idiom to start Perl on your system.
7530 I can use the full path of your Perl binary for this purpose, but
7531 doing so may cause problems if you want to share those scripts and
7532 Perl is not always in a standard place ($binexp/perl).
7533
7534 EOH
7535                 dflt="$binexp/perl"
7536                 rp="What path shall I use in \"eval 'exec'\"?"
7537                 . ./myread
7538                 perlpath="$ans"
7539                 ;;
7540         esac
7541         ;;
7542 esac
7543 case "$startperl" in
7544 *!*)    ;;
7545 *)      echo "I'll use $perlpath in \"eval 'exec'\"" ;;
7546 esac
7547
7548 : determine where public executable scripts go
7549 set scriptdir scriptdir
7550 eval $prefixit
7551 case "$scriptdir" in
7552 '')
7553         dflt="$bin"
7554         : guess some guesses
7555         $test -d /usr/share/scripts && dflt=/usr/share/scripts
7556         $test -d /usr/share/bin     && dflt=/usr/share/bin
7557         $test -d /usr/local/script  && dflt=/usr/local/script
7558         $test -d /usr/local/scripts && dflt=/usr/local/scripts
7559         $test -d $prefixexp/script  && dflt=$prefixexp/script
7560         set dflt
7561         eval $prefixup
7562         ;;
7563 *)  dflt="$scriptdir"
7564         ;;
7565 esac
7566 $cat <<EOM
7567  
7568 Some installations have a separate directory just for executable scripts so
7569 that they can mount it across multiple architectures but keep the scripts in
7570 one spot.  You might, for example, have a subdirectory of /usr/share for this.
7571 Or you might just lump your scripts in with all your other executables.
7572  
7573 EOM
7574 fn=d~
7575 rp='Where do you keep publicly executable scripts?'
7576 . ./getfile
7577 if $test "X$ansexp" != "X$scriptdirexp"; then
7578         installscript=''
7579 fi
7580 scriptdir="$ans"
7581 scriptdirexp="$ansexp"
7582 : Change installation prefix, if necessary.
7583 if $test X"$prefix" != X"$installprefix"; then
7584         installscript=`echo $scriptdirexp | sed "s#^$prefix#$installprefix#"`
7585 else
7586         installscript="$scriptdirexp"
7587 fi
7588
7589 : determine where add-on public executables go
7590 case "$sitebin" in
7591 '')     dflt=$siteprefix/bin ;;
7592 *)      dflt=$sitebin ;;
7593 esac
7594 fn=d~
7595 rp='Pathname where the add-on public executables should be installed?'
7596 . ./getfile
7597 sitebin="$ans"
7598 sitebinexp="$ansexp"
7599 : Change installation prefix, if necessary.
7600 if $test X"$prefix" != X"$installprefix"; then
7601         installsitebin=`echo $sitebinexp | sed "s#^$prefix#$installprefix#"`
7602 else
7603         installsitebin="$sitebinexp"
7604 fi
7605
7606 case "$vendorprefix" in
7607 '')     d_vendorbin="$undef"
7608         vendorbin=''
7609         vendorbinexp=''
7610         ;;
7611 *)      d_vendorbin="$define"
7612         : determine where vendor-supplied executables go.
7613         case "$vendorbin" in
7614         '') dflt=$vendorprefix/bin ;;
7615         *)      dflt="$vendorbin" ;;
7616         esac
7617         fn=d~+
7618         rp='Pathname for the vendor-supplied executables directory?'
7619         . ./getfile
7620         vendorbin="$ans"
7621         vendorbinexp="$ansexp"
7622         ;;
7623 esac
7624 : Change installation prefix, if necessary.
7625 if $test X"$prefix" != X"$installprefix"; then
7626         installvendorbin=`echo $vendorbinexp | $sed "s#^$prefix#$installprefix#"`
7627 else
7628         installvendorbin="$vendorbinexp"
7629 fi
7630
7631 : see if qgcvt exists
7632 set qgcvt d_qgcvt
7633 eval $inlibc
7634
7635 echo " "
7636
7637 if $test X"$d_longdbl" = X"$define"; then
7638
7639 echo "Checking how to print long doubles..." >&4
7640
7641 if $test X"$sPRIfldbl" = X -a X"$doublesize" = X"$longdblsize"; then
7642         $cat >try.c <<'EOCP'
7643 #include <sys/types.h>
7644 #include <stdio.h>
7645 int main() {
7646   double d = 123.456;
7647   printf("%.3f\n", d);
7648 }
7649 EOCP
7650         set try
7651         if eval $compile; then
7652                 yyy=`./try$exe_ext`
7653                 case "$yyy" in
7654                 123.456)
7655                         sPRIfldbl='"f"'; sPRIgldbl='"g"'; sPRIeldbl='"e"';
7656                         sPRIFUldbl='"F"'; sPRIGUldbl='"G"'; sPRIEUldbl='"E"';
7657                         echo "We will use %f."
7658                         ;;
7659                 esac
7660         fi
7661 fi
7662
7663 if $test X"$sPRIfldbl" = X; then
7664         $cat >try.c <<'EOCP'
7665 #include <sys/types.h>
7666 #include <stdio.h>
7667 int main() {
7668   long double d = 123.456;
7669   printf("%.3llf\n", d);
7670 }
7671 EOCP
7672         set try
7673         if eval $compile; then
7674                 yyy=`./try$exe_ext`
7675                 case "$yyy" in
7676                 123.456)
7677                         sPRIfldbl='"llf"'; sPRIgldbl='"llg"'; sPRIeldbl='"lle"';
7678                         sPRIFUldbl='"llF"'; sPRIGUldbl='"llG"'; sPRIEUldbl='"llE"';
7679                         echo "We will use %llf."
7680                         ;;
7681                 esac
7682         fi
7683 fi
7684
7685 if $test X"$sPRIfldbl" = X; then
7686         $cat >try.c <<'EOCP'
7687 #include <sys/types.h>
7688 #include <stdio.h>
7689 int main() {
7690   long double d = 123.456;
7691   printf("%.3Lf\n", d);
7692 }
7693 EOCP
7694         set try
7695         if eval $compile; then
7696                 yyy=`./try$exe_ext`
7697                 case "$yyy" in
7698                 123.456)
7699                         sPRIfldbl='"Lf"'; sPRIgldbl='"Lg"'; sPRIeldbl='"Le"';
7700                         sPRIFUldbl='"LF"'; sPRIGUldbl='"LG"'; sPRIEUldbl='"LE"';
7701                         echo "We will use %Lf."
7702                         ;;
7703                 esac
7704         fi
7705 fi
7706
7707 if $test X"$sPRIfldbl" = X; then
7708         $cat >try.c <<'EOCP'
7709 #include <sys/types.h>
7710 #include <stdio.h>
7711 int main() {
7712   long double d = 123.456;
7713   printf("%.3lf\n", d);
7714 }
7715 EOCP
7716         set try
7717         if eval $compile; then
7718                 yyy=`./try$exe_ext`
7719                 case "$yyy" in
7720                 123.456)
7721                         sPRIfldbl='"lf"'; sPRIgldbl='"lg"'; sPRIeldbl='"le"';
7722                         sPRIFUldbl='"lF"'; sPRIGUldbl='"lG"'; sPRIEUldbl='"lE"';
7723                         echo "We will use %lf."
7724                         ;;
7725                 esac
7726         fi
7727 fi
7728
7729 if $test X"$sPRIfldbl" = X; then
7730         echo "Cannot figure out how to print long doubles." >&4
7731 else
7732         sSCNfldbl=$sPRIfldbl    # expect consistency
7733 fi
7734
7735 $rm -f try try.*
7736
7737 fi # d_longdbl
7738
7739 case "$sPRIfldbl" in
7740 '')     d_PRIfldbl="$undef"; d_PRIgldbl="$undef"; d_PRIeldbl="$undef"; 
7741         d_PRIFUldbl="$undef"; d_PRIGUldbl="$undef"; d_PRIEUldbl="$undef"; 
7742         d_SCNfldbl="$undef";
7743         ;;
7744 *)      d_PRIfldbl="$define"; d_PRIgldbl="$define"; d_PRIeldbl="$define"; 
7745         d_PRIFUldbl="$define"; d_PRIGUldbl="$define"; d_PRIEUldbl="$define"; 
7746         d_SCNfldbl="$define";
7747         ;;
7748 esac
7749
7750 : Check how to convert floats to strings.
7751 echo " "
7752 echo "Checking for an efficient way to convert floats to strings."
7753 echo " " > try.c
7754 case "$uselongdouble" in
7755 "$define") echo "#define USE_LONG_DOUBLE" >>try.c ;;
7756 esac
7757 case "$d_longdbl" in
7758 "$define") echo "#define HAS_LONG_DOUBLE" >>try.c ;;
7759 esac
7760 case "$d_PRIgldbl" in
7761 "$define") echo "#define HAS_PRIgldbl"    >>try.c ;;
7762 esac
7763 $cat >>try.c <<EOP
7764 #ifdef TRY_gconvert
7765 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
7766 char *myname = "gconvert";
7767 #endif
7768 #ifdef TRY_gcvt
7769 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
7770 char *myname = "gcvt";
7771 #endif
7772 #ifdef TRY_qgcvt
7773 #define Gconvert(x,n,t,b) qgcvt((x),(n),(b))
7774 char *myname = "qgcvt";
7775 #define DOUBLETYPE long double
7776 #endif
7777 #ifdef TRY_sprintf
7778 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE) && defined(HAS_PRIgldbl)
7779 #define Gconvert(x,n,t,b) sprintf((b),"%.*"$sPRIgldbl,(n),(x))
7780 #else
7781 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
7782 #endif
7783 char *myname = "sprintf";
7784 #endif
7785
7786 #ifndef DOUBLETYPE
7787 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
7788 #define DOUBLETYPE long double
7789 #else
7790 #define DOUBLETYPE double
7791 #endif
7792 #endif
7793
7794 #include <stdio.h>
7795
7796 #define I_STDLIB $i_stdlib
7797 #ifdef I_STDLIB
7798 #include <stdlib.h>
7799 #endif
7800
7801 int
7802 checkit(expect, got)
7803 char *expect;
7804 char *got;
7805 {
7806     if (strcmp(expect, got)) {
7807                 printf("%s oddity:  Expected %s, got %s\n",
7808                         myname, expect, got);
7809                 exit(1);
7810         }
7811 }
7812
7813 int main()
7814
7815         char buf[64]; 
7816         buf[63] = '\0';
7817
7818         /* This must be 1st test on (which?) platform */
7819         /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
7820         Gconvert((DOUBLETYPE)0.1, 8, 0, buf);
7821         checkit("0.1", buf);
7822
7823         Gconvert((DOUBLETYPE)1.0, 8, 0, buf); 
7824         checkit("1", buf);
7825
7826         Gconvert((DOUBLETYPE)1.1, 8, 0, buf); 
7827         checkit("1.1", buf);
7828
7829         Gconvert((DOUBLETYPE)1.01, 8, 0, buf); 
7830         checkit("1.01", buf);
7831
7832         Gconvert((DOUBLETYPE)1.001, 8, 0, buf); 
7833         checkit("1.001", buf);
7834
7835         Gconvert((DOUBLETYPE)1.0001, 8, 0, buf); 
7836         checkit("1.0001", buf);
7837
7838         Gconvert((DOUBLETYPE)1.00001, 8, 0, buf); 
7839         checkit("1.00001", buf);
7840
7841         Gconvert((DOUBLETYPE)1.000001, 8, 0, buf); 
7842         checkit("1.000001", buf);
7843
7844         Gconvert((DOUBLETYPE)0.0, 8, 0, buf); 
7845         checkit("0", buf);
7846
7847         Gconvert((DOUBLETYPE)-1.0, 8, 0, buf); 
7848         checkit("-1", buf);
7849
7850         /* Some Linux gcvt's give 1.e+5 here. */
7851         Gconvert((DOUBLETYPE)100000.0, 8, 0, buf); 
7852         checkit("100000", buf);
7853         
7854         /* Some Linux gcvt's give -1.e+5 here. */
7855         Gconvert((DOUBLETYPE)-100000.0, 8, 0, buf); 
7856         checkit("-100000", buf);
7857
7858         Gconvert((DOUBLETYPE)123.456, 8, 0, buf); 
7859         checkit("123.456", buf);
7860
7861         exit(0);
7862 }
7863 EOP
7864 case "$d_Gconvert" in
7865 gconvert*) xxx_list='gconvert gcvt sprintf' ;;
7866 gcvt*) xxx_list='gcvt gconvert sprintf' ;;
7867 sprintf*) xxx_list='sprintf gconvert gcvt' ;;
7868 *) xxx_list='gconvert gcvt sprintf' ;;
7869 esac
7870
7871 case "$d_longdbl$uselongdouble$d_PRIgldbl" in
7872 "$define$define$define")
7873     # for long doubles prefer first qgcvt, then sprintf
7874     xxx_list="`echo $xxx_list|sed s/sprintf//`" 
7875     xxx_list="sprintf $xxx_list"
7876     case "$d_qgcvt" in
7877     "$define") xxx_list="qgcvt $xxx_list" ;;
7878     esac
7879     ;;
7880 esac
7881
7882 for xxx_convert in $xxx_list; do
7883         echo "Trying $xxx_convert..."
7884         $rm -f try try$_o
7885         set try -DTRY_$xxx_convert
7886         if eval $compile; then
7887                 echo "$xxx_convert() found." >&4
7888                 if ./try; then
7889                         echo "I'll use $xxx_convert to convert floats into a string." >&4
7890                         break;
7891                 else
7892                         echo "...But $xxx_convert didn't work as I expected."
7893                 fi
7894         else
7895                 echo "$xxx_convert NOT found." >&4
7896         fi
7897 done
7898         
7899 case "$xxx_convert" in
7900 gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
7901 gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
7902 qgcvt) d_Gconvert='qgcvt((x),(n),(b))' ;;
7903 *) case "$uselongdouble$d_longdbl$d_PRIgldbl" in
7904    "$define$define$define")
7905       d_Gconvert="sprintf((b),\"%.*\"$sPRIgldbl,(n),(x))" ;;
7906    *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
7907    esac
7908    ;;  
7909 esac
7910
7911 : see if _fwalk exists
7912 set fwalk d__fwalk
7913 eval $inlibc
7914
7915 : Initialize h_fcntl
7916 h_fcntl=false
7917
7918 : Initialize h_sysfile
7919 h_sysfile=false
7920
7921 : access call always available on UNIX
7922 set access d_access
7923 eval $inlibc
7924
7925 : locate the flags for 'access()'
7926 case "$d_access" in
7927 "$define")
7928         echo " "
7929         $cat >access.c <<'EOCP'
7930 #include <sys/types.h>
7931 #ifdef I_FCNTL
7932 #include <fcntl.h>
7933 #endif
7934 #ifdef I_SYS_FILE
7935 #include <sys/file.h>
7936 #endif
7937 #ifdef I_UNISTD
7938 #include <unistd.h>
7939 #endif
7940 int main() {
7941         exit(R_OK);
7942 }
7943 EOCP
7944         : check sys/file.h first, no particular reason here
7945         if $test `./findhdr sys/file.h` && \
7946                 $cc -o access $cppflags -DI_SYS_FILE access.c >/dev/null 2>&1 ; then
7947                 h_sysfile=true;
7948                 echo "<sys/file.h> defines the *_OK access constants." >&4
7949         elif $test `./findhdr fcntl.h` && \
7950                 $cc -o access $cppflags -DI_FCNTL access.c >/dev/null 2>&1 ; then
7951                 h_fcntl=true;
7952                 echo "<fcntl.h> defines the *_OK access constants." >&4
7953         elif $test `./findhdr unistd.h` && \
7954                 $cc -o access $cppflags -DI_UNISTD access.c >/dev/null 2>&1 ; then
7955                 echo "<unistd.h> defines the *_OK access constants." >&4
7956         else
7957                 echo "I can't find the four *_OK access constants--I'll use mine." >&4
7958         fi
7959         ;;
7960 esac
7961 $rm -f access*
7962
7963 : see if accessx exists
7964 set accessx d_accessx
7965 eval $inlibc
7966
7967 : see if alarm exists
7968 set alarm d_alarm
7969 eval $inlibc
7970
7971 : see if atolf exists
7972 set atolf d_atolf
7973 eval $inlibc
7974
7975 : see if atoll exists
7976 set atoll d_atoll
7977 eval $inlibc
7978
7979 : Look for GNU-cc style attribute checking
7980 echo " "
7981 echo "Checking whether your compiler can handle __attribute__ ..." >&4
7982 $cat >attrib.c <<'EOCP'
7983 #include <stdio.h>
7984 void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn));
7985 EOCP
7986 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
7987         if $contains 'warning' attrib.out >/dev/null 2>&1; then
7988                 echo "Your C compiler doesn't fully support __attribute__."
7989                 val="$undef"
7990         else
7991                 echo "Your C compiler supports __attribute__."
7992                 val="$define"
7993         fi
7994 else
7995         echo "Your C compiler doesn't seem to understand __attribute__ at all."
7996         val="$undef"
7997 fi
7998 set d_attribut
7999 eval $setvar
8000 $rm -f attrib*
8001
8002 : see if bcmp exists
8003 set bcmp d_bcmp
8004 eval $inlibc
8005
8006 : see if bcopy exists
8007 set bcopy d_bcopy
8008 eval $inlibc
8009
8010 : see if this is a unistd.h system
8011 set unistd.h i_unistd
8012 eval $inhdr
8013
8014 : see if getpgrp exists
8015 set getpgrp d_getpgrp
8016 eval $inlibc
8017
8018 case "$d_getpgrp" in
8019 "$define")
8020         echo " "
8021         echo "Checking to see which flavor of getpgrp is in use..."
8022         $cat >set.c <<EOP
8023 #$i_unistd I_UNISTD
8024 #include <sys/types.h>
8025 #ifdef I_UNISTD
8026 #  include <unistd.h>
8027 #endif
8028 int main()
8029 {
8030         if (getuid() == 0) {
8031                 printf("(I see you are running Configure as super-user...)\n");
8032                 setuid(1);
8033         }
8034 #ifdef TRY_BSD_PGRP
8035         if (getpgrp(1) == 0)
8036                 exit(0);
8037 #else
8038         if (getpgrp() > 0)
8039                 exit(0);
8040 #endif
8041         exit(1);
8042 }
8043 EOP
8044         if $cc -o set -DTRY_BSD_PGRP $ccflags $ldflags set.c $libs >/dev/null 2>&1 && ./set; then
8045                 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
8046                 val="$define"
8047         elif $cc -o set $ccflags $ldflags set.c $libs >/dev/null 2>&1 && ./set; then
8048                 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
8049                 val="$undef"
8050         else
8051                 echo "I can't seem to compile and run the test program."
8052                 if ./usg; then
8053                         xxx="a USG one, i.e. you use getpgrp()."
8054                 else
8055                         # SVR4 systems can appear rather BSD-ish.
8056                         case "$i_unistd" in
8057                         $undef)
8058                                 xxx="a BSD one, i.e. you use getpgrp(pid)."
8059                                 val="$define"
8060                                 ;;
8061                         $define)
8062                                 xxx="probably a USG one, i.e. you use getpgrp()."
8063                                 val="$undef"
8064                                 ;;
8065                         esac
8066                 fi
8067                 echo "Assuming your getpgrp is $xxx" >&4
8068         fi
8069         ;;
8070 *) val="$undef";;
8071 esac
8072 set d_bsdgetpgrp
8073 eval $setvar
8074 $rm -f set set.c
8075
8076 : see if setpgrp exists
8077 set setpgrp d_setpgrp
8078 eval $inlibc
8079
8080 case "$d_setpgrp" in
8081 "$define")
8082         echo " "
8083         echo "Checking to see which flavor of setpgrp is in use..."
8084         $cat >set.c <<EOP
8085 #$i_unistd I_UNISTD
8086 #include <sys/types.h>
8087 #ifdef I_UNISTD
8088 #  include <unistd.h>
8089 #endif
8090 int main()
8091 {
8092         if (getuid() == 0) {
8093                 printf("(I see you are running Configure as super-user...)\n");
8094                 setuid(1);
8095         }
8096 #ifdef TRY_BSD_PGRP
8097         if (-1 == setpgrp(1, 1))
8098                 exit(0);
8099 #else
8100         if (setpgrp() != -1)
8101                 exit(0);
8102 #endif
8103         exit(1);
8104 }
8105 EOP
8106         if $cc -o set -DTRY_BSD_PGRP $ccflags $ldflags set.c $libs >/dev/null 2>&1 && ./set; then
8107                 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
8108                 val="$define"
8109         elif $cc -o set $ccflags $ldflags set.c $libs >/dev/null 2>&1 && ./set; then
8110                 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
8111                 val="$undef"
8112         else
8113                 echo "(I can't seem to compile and run the test program.)"
8114                 if ./usg; then
8115                         xxx="a USG one, i.e. you use setpgrp()."
8116                 else
8117                         # SVR4 systems can appear rather BSD-ish.
8118                         case "$i_unistd" in
8119                         $undef)
8120                                 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
8121                                 val="$define"
8122                                 ;;
8123                         $define)
8124                                 xxx="probably a USG one, i.e. you use setpgrp()."
8125                                 val="$undef"
8126                                 ;;
8127                         esac
8128                 fi
8129                 echo "Assuming your setpgrp is $xxx" >&4
8130         fi
8131         ;;
8132 *) val="$undef";;
8133 esac
8134 set d_bsdsetpgrp
8135 eval $setvar
8136 $rm -f set set.c
8137 : see if bzero exists
8138 set bzero d_bzero
8139 eval $inlibc
8140
8141 : see if signal is declared as pointer to function returning int or void
8142 echo " "
8143 xxx=`./findhdr signal.h`
8144 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
8145 if $contains 'int.*\*[  ]*signal' $$.tmp >/dev/null 2>&1 ; then
8146         echo "You have int (*signal())() instead of void." >&4
8147         val="$undef"
8148 elif $contains 'void.*\*[       ]*signal' $$.tmp >/dev/null 2>&1 ; then
8149         echo "You have void (*signal())()." >&4
8150         val="$define"
8151 elif $contains 'extern[         ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
8152         echo "You have int (*signal())() instead of void." >&4
8153         val="$undef"
8154 elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
8155         echo "You have void (*signal())()." >&4
8156         val="$define"
8157 else
8158         case "$d_voidsig" in
8159         '')
8160         echo "I can't determine whether signal handler returns void or int..." >&4
8161                 dflt=void
8162                 rp="What type does your signal handler return?"
8163                 . ./myread
8164                 case "$ans" in
8165                 v*) val="$define";;
8166                 *) val="$undef";;
8167                 esac;;
8168         "$define")
8169                 echo "As you already told me, signal handler returns void." >&4
8170                 val="$define"
8171                 ;;
8172         *)      echo "As you already told me, signal handler returns int." >&4
8173                 val="$undef"
8174                 ;;
8175         esac
8176 fi
8177 set d_voidsig
8178 eval $setvar
8179 case "$d_voidsig" in
8180 "$define") signal_t="void";;
8181 *) signal_t="int";;
8182 esac
8183 $rm -f $$.tmp
8184
8185 : check for ability to cast large floats to 32-bit ints.
8186 echo " "
8187 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
8188 if $test "$intsize" -ge 4; then
8189         xxx=int
8190 else
8191         xxx=long
8192 fi
8193 $cat >try.c <<EOCP
8194 #include <stdio.h>
8195 #include <sys/types.h>
8196 #include <signal.h>
8197 $signal_t blech(s) int s; { exit(3); }
8198 int main()
8199 {
8200         $xxx i32;
8201         double f, g;
8202         int result = 0;
8203         char str[16];
8204         signal(SIGFPE, blech);
8205
8206         /* Don't let compiler optimize the test away.  Store the number 
8207            in a writable string for gcc to pass to sscanf under HP/UX.
8208         */
8209         sprintf(str, "2147483647");
8210         sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
8211         g = 10 * f;
8212         i32  = ($xxx) g;
8213
8214         /* x86 processors will probably give 0x8000 0000, which is a
8215        sign change.  We don't want that.  We want to mimic SPARC
8216            behavior here, which is to preserve the sign and give
8217            back 0x7fff ffff.
8218         */
8219         if (i32 != ($xxx) f)
8220                 result |= 1;
8221         exit(result);
8222 }
8223 EOCP
8224 set try
8225 if eval $compile_ok; then
8226         ./try
8227         yyy=$?
8228 else
8229         echo "(I can't seem to compile the test program--assuming it can't)"
8230         yyy=1
8231 fi
8232 case "$yyy" in
8233 0)      val="$define"
8234         echo "Yup, it can."
8235         ;;
8236 *)      val="$undef"
8237         echo "Nope, it can't."
8238         ;;
8239 esac
8240 set d_casti32
8241 eval $setvar
8242 $rm -f try try.*
8243
8244 : check for ability to cast negative floats to unsigned
8245 echo " "
8246 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
8247 $cat >try.c <<EOCP
8248 #include <stdio.h>
8249 #include <sys/types.h>
8250 #include <signal.h>
8251 $signal_t blech(s) int s; { exit(7); }
8252 $signal_t blech_in_list(s) int s; { exit(4); }
8253 unsigned long dummy_long(p) unsigned long p; { return p; }
8254 unsigned int dummy_int(p) unsigned int p; { return p; }
8255 unsigned short dummy_short(p) unsigned short p; { return p; }
8256 int main()
8257 {
8258         double f;
8259         unsigned long along;
8260         unsigned int aint;
8261         unsigned short ashort;
8262         int result = 0;
8263         char str[16];
8264         
8265         /* Frustrate gcc-2.7.2's optimizer which failed this test with
8266            a direct f = -123. assignment.  gcc-2.8.0 reportedly
8267            optimized the whole file away
8268         */
8269         /* Store the number in a writable string for gcc to pass to 
8270            sscanf under HP/UX.
8271         */
8272         sprintf(str, "-123");
8273         sscanf(str, "%lf", &f);  /* f = -123.; */
8274
8275         signal(SIGFPE, blech);
8276         along = (unsigned long)f;
8277         aint = (unsigned int)f;
8278         ashort = (unsigned short)f;
8279         if (along != (unsigned long)-123)
8280                 result |= 1;
8281         if (aint != (unsigned int)-123)
8282                 result |= 1;
8283         if (ashort != (unsigned short)-123)
8284                 result |= 1;
8285         sprintf(str, "1073741824.");
8286         sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
8287         f = f + f;
8288         along = 0;
8289         along = (unsigned long)f;
8290         if (along != 0x80000000)
8291                 result |= 2;
8292         f -= 1.;
8293         along = 0;
8294         along = (unsigned long)f;
8295         if (along != 0x7fffffff)
8296                 result |= 1;
8297         f += 2.;
8298         along = 0;
8299         along = (unsigned long)f;
8300         if (along != 0x80000001)
8301                 result |= 2;
8302         if (result)
8303                 exit(result);
8304         signal(SIGFPE, blech_in_list);
8305         sprintf(str, "123.");
8306         sscanf(str, "%lf", &f);  /* f = 123.; */
8307         along = dummy_long((unsigned long)f);
8308         aint = dummy_int((unsigned int)f);
8309         ashort = dummy_short((unsigned short)f);
8310         if (along != (unsigned long)123)
8311                 result |= 4;
8312         if (aint != (unsigned int)123)
8313                 result |= 4;
8314         if (ashort != (unsigned short)123)
8315                 result |= 4;
8316         exit(result);
8317
8318 }
8319 EOCP
8320 set try
8321 if eval $compile_ok; then
8322         ./try
8323         castflags=$?
8324 else
8325         echo "(I can't seem to compile the test program--assuming it can't)"
8326         castflags=7
8327 fi
8328 case "$castflags" in
8329 0)      val="$define"
8330         echo "Yup, it can."
8331         ;;
8332 *)      val="$undef"
8333         echo "Nope, it can't."
8334         ;;
8335 esac
8336 set d_castneg
8337 eval $setvar
8338 $rm -f try.*
8339
8340 : see if vprintf exists
8341 echo " "
8342 if set vprintf val -f d_vprintf; eval $csym; $val; then
8343         echo 'vprintf() found.' >&4
8344         val="$define"
8345         $cat >vprintf.c <<'EOF'
8346 #include <varargs.h>
8347
8348 int main() { xxx("foo"); }
8349
8350 xxx(va_alist)
8351 va_dcl
8352 {
8353         va_list args;
8354         char buf[10];
8355
8356         va_start(args);
8357         exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
8358 }
8359 EOF
8360         set vprintf
8361         if eval $compile && ./vprintf; then
8362                 echo "Your vsprintf() returns (int)." >&4
8363                 val2="$undef"
8364         else
8365                 echo "Your vsprintf() returns (char*)." >&4
8366                 val2="$define"
8367         fi
8368 else
8369         echo 'vprintf() NOT found.' >&4
8370                 val="$undef"
8371                 val2="$undef"
8372 fi
8373 set d_vprintf
8374 eval $setvar
8375 val=$val2
8376 set d_charvspr
8377 eval $setvar
8378
8379 : see if chown exists
8380 set chown d_chown
8381 eval $inlibc
8382
8383 : see if chroot exists
8384 set chroot d_chroot
8385 eval $inlibc
8386
8387 : see if chsize exists
8388 set chsize d_chsize
8389 eval $inlibc
8390
8391 : check for const keyword
8392 echo " "
8393 echo 'Checking to see if your C compiler knows about "const"...' >&4
8394 $cat >const.c <<'EOCP'
8395 typedef struct spug { int drokk; } spug;
8396 int main()
8397 {
8398         const char *foo;
8399         const spug y;
8400 }
8401 EOCP
8402 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
8403         val="$define"
8404         echo "Yup, it does."
8405 else
8406         val="$undef"
8407         echo "Nope, it doesn't."
8408 fi
8409 set d_const
8410 eval $setvar
8411
8412 : see if crypt exists
8413 echo " "
8414 if set crypt val -f d_crypt; eval $csym; $val; then
8415         echo 'crypt() found.' >&4
8416         val="$define"
8417         cryptlib=''
8418 else
8419         cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
8420         if $test -z "$cryptlib"; then
8421                 cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
8422         else
8423                 cryptlib=-lcrypt
8424         fi
8425         if $test -z "$cryptlib"; then
8426                 cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
8427         else
8428                 cryptlib=-lcrypt
8429         fi
8430         if $test -z "$cryptlib"; then
8431                 cryptlib=`./loc libcrypt$_a "" $libpth`
8432         else
8433                 cryptlib=-lcrypt
8434         fi
8435         if $test -z "$cryptlib"; then
8436                 echo 'crypt() NOT found.' >&4
8437                 val="$undef"
8438         else
8439                 val="$define"
8440         fi
8441 fi
8442 set d_crypt
8443 eval $setvar
8444
8445 : get csh whereabouts
8446 case "$csh" in
8447 'csh') val="$undef" ;;
8448 *) val="$define" ;;
8449 esac
8450 set d_csh
8451 eval $setvar
8452 : Respect a hint or command line value for full_csh.
8453 case "$full_csh" in
8454 '') full_csh=$csh ;;
8455 esac
8456
8457 : see if cuserid exists
8458 set cuserid d_cuserid
8459 eval $inlibc
8460
8461 : see if this is a limits.h system
8462 set limits.h i_limits
8463 eval $inhdr
8464
8465 : see if this is a float.h system
8466 set float.h i_float
8467 eval $inhdr
8468
8469 : See if number of significant digits in a double precision number is known
8470 echo " "
8471 $cat >dbl_dig.c <<EOM
8472 #$i_limits I_LIMITS
8473 #$i_float I_FLOAT
8474 #ifdef I_LIMITS
8475 #include <limits.h>
8476 #endif
8477 #ifdef I_FLOAT
8478 #include <float.h>
8479 #endif
8480 #ifdef DBL_DIG
8481 printf("Contains DBL_DIG");
8482 #endif
8483 EOM
8484 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
8485 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
8486         echo "DBL_DIG found." >&4
8487         val="$define"
8488 else
8489         echo "DBL_DIG NOT found." >&4
8490         val="$undef"
8491 fi
8492 $rm -f dbl_dig.?
8493 set d_dbl_dig
8494 eval $setvar
8495
8496 : see if difftime exists
8497 set difftime d_difftime
8498 eval $inlibc
8499
8500 : see if this is a dirent system
8501 echo " "
8502 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
8503         val="$define"
8504         echo "<dirent.h> found." >&4
8505 else
8506         val="$undef"
8507         if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
8508                 echo "<sys/dir.h> found." >&4
8509                 echo " "
8510         else
8511                 xinc=`./findhdr sys/ndir.h`
8512         fi
8513         echo "<dirent.h> NOT found." >&4
8514 fi
8515 set i_dirent
8516 eval $setvar
8517
8518 : Look for type of directory structure.
8519 echo " "
8520 $cppstdin $cppflags $cppminus < "$xinc" > try.c
8521
8522 case "$direntrytype" in
8523 ''|' ')
8524         case "$i_dirent" in
8525         $define) guess1='struct dirent' ;;
8526         *) guess1='struct direct'  ;;
8527         esac
8528         ;;
8529 *)      guess1="$direntrytype"
8530         ;;
8531 esac
8532
8533 case "$guess1" in
8534 'struct dirent') guess2='struct direct' ;;
8535 *) guess2='struct dirent' ;;
8536 esac
8537                 
8538 if $contains "$guess1" try.c >/dev/null 2>&1; then
8539         direntrytype="$guess1"
8540         echo "Your directory entries are $direntrytype." >&4
8541 elif $contains "$guess2" try.c >/dev/null 2>&1; then
8542         direntrytype="$guess2"
8543         echo "Your directory entries seem to be $direntrytype." >&4
8544 else
8545         echo "I don't recognize your system's directory entries." >&4
8546         rp="What type is used for directory entries on this system?"
8547         dflt="$guess1"
8548         . ./myread
8549         direntrytype="$ans"
8550 fi
8551 $rm -f try.c
8552
8553
8554 : see if the directory entry stores field length
8555 echo " "
8556 $cppstdin $cppflags $cppminus < "$xinc" > try.c
8557 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
8558         echo "Good, your directory entry keeps length information in d_namlen." >&4
8559         val="$define"
8560 else
8561         echo "Your directory entry does not know about the d_namlen field." >&4
8562         val="$undef"
8563 fi
8564 set d_dirnamlen
8565 eval $setvar
8566 $rm -f try.c
8567
8568 : see if dlerror exists
8569 xxx_runnm="$runnm"
8570 runnm=false
8571 set dlerror d_dlerror
8572 eval $inlibc
8573 runnm="$xxx_runnm"
8574
8575 : see if dlfcn is available
8576 set dlfcn.h i_dlfcn
8577 eval $inhdr
8578
8579 case "$usedl" in
8580 $define|y|true)
8581         $cat << EOM
8582
8583 On a few systems, the dynamically loaded modules that perl generates and uses
8584 will need a different extension than shared libs. The default will probably
8585 be appropriate.
8586
8587 EOM
8588         case "$dlext" in
8589         '')     dflt="$so" ;;
8590         *)      dflt="$dlext" ;;
8591         esac
8592         rp='What is the extension of dynamically loaded modules'
8593         . ./myread
8594         dlext="$ans"
8595         ;;
8596 *)
8597         dlext="none"
8598         ;;
8599 esac
8600
8601 : Check if dlsym need a leading underscore
8602 echo " "
8603 val="$undef"
8604
8605 case "$dlsrc" in
8606 dl_dlopen.xs)
8607         echo "Checking whether your dlsym() needs a leading underscore ..." >&4
8608         $cat >dyna.c <<'EOM'
8609 fred () { }
8610 EOM
8611
8612 $cat >fred.c<<EOM
8613
8614 #include <stdio.h>
8615 #$i_dlfcn I_DLFCN
8616 #ifdef I_DLFCN
8617 #include <dlfcn.h>      /* the dynamic linker include file for Sunos/Solaris */
8618 #else
8619 #include <sys/types.h>
8620 #include <nlist.h>
8621 #include <link.h>
8622 #endif
8623
8624 extern int fred() ;
8625
8626 int main()
8627 {
8628     void * handle ;
8629     void * symbol ;
8630 #ifndef RTLD_LAZY
8631     int mode = 1 ;
8632 #else
8633     int mode = RTLD_LAZY ;
8634 #endif
8635     handle = dlopen("./dyna.$dlext", mode) ;
8636     if (handle == NULL) {
8637         printf ("1\n") ;
8638         fflush (stdout) ;
8639         exit(0);
8640     }
8641     symbol = dlsym(handle, "fred") ;
8642     if (symbol == NULL) {
8643         /* try putting a leading underscore */
8644         symbol = dlsym(handle, "_fred") ;
8645         if (symbol == NULL) {
8646             printf ("2\n") ;
8647             fflush (stdout) ;
8648             exit(0);
8649         }
8650         printf ("3\n") ;
8651     }
8652     else
8653         printf ("4\n") ;
8654     fflush (stdout) ;
8655     exit(0);
8656 }
8657 EOM
8658         : Call the object file tmp-dyna.o in case dlext=o.
8659         if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 && 
8660                 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 && 
8661                 $ld -o dyna.$dlext $lddlflags tmp-dyna${_o} > /dev/null 2>&1 && 
8662                 $cc -o fred $ccflags $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1; then
8663                 xxx=`./fred`
8664                 case $xxx in
8665                 1)      echo "Test program failed using dlopen." >&4
8666                         echo "Perhaps you should not use dynamic loading." >&4;;
8667                 2)      echo "Test program failed using dlsym." >&4
8668                         echo "Perhaps you should not use dynamic loading." >&4;;
8669                 3)      echo "dlsym needs a leading underscore" >&4
8670                         val="$define" ;;
8671                 4)      echo "dlsym doesn't need a leading underscore." >&4;;
8672                 esac
8673         else
8674                 echo "I can't compile and run the test program." >&4
8675                 echo "I'm guessing that dlsym doesn't need a leading underscore." >&4
8676         fi
8677         ;;
8678 esac
8679                 
8680 $rm -f fred fred.? dyna.$dlext dyna.? tmp-dyna.?
8681
8682 set d_dlsymun
8683 eval $setvar
8684
8685 hasproto='varname=$1; func=$2; shift; shift;
8686 while $test $# -ge 2; do
8687         case "$1" in
8688         $define) echo "#include <$2>";;
8689         esac ;
8690     shift 2;
8691 done > try.c;
8692 $cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
8693 if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
8694         echo "$func() prototype found.";
8695         val="$define";
8696 else
8697         echo "$func() prototype NOT found.";
8698         val="$undef";
8699 fi;
8700 set $varname;
8701 eval $setvar;
8702 $rm -f try.c tryout.c'
8703
8704 : see if prototype for drand48 is available
8705 echo " "
8706 set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
8707 eval $hasproto
8708
8709 : see if dup2 exists
8710 set dup2 d_dup2
8711 eval $inlibc
8712
8713 : see if eaccess exists
8714 set eaccess d_eaccess
8715 eval $inlibc
8716
8717 : see if endgrent exists
8718 set endgrent d_endgrent
8719 eval $inlibc
8720
8721 : see if endhostent exists
8722 set endhostent d_endhent
8723 eval $inlibc
8724
8725 : see if endnetent exists
8726 set endnetent d_endnent
8727 eval $inlibc
8728
8729 : see if endprotoent exists
8730 set endprotoent d_endpent
8731 eval $inlibc
8732
8733 : see if endpwent exists
8734 set endpwent d_endpwent
8735 eval $inlibc
8736
8737 : see if endservent exists
8738 set endservent d_endsent
8739 eval $inlibc
8740
8741 : Locate the flags for 'open()'
8742 echo " "
8743 $cat >open3.c <<'EOCP'
8744 #include <sys/types.h>
8745 #ifdef I_FCNTL
8746 #include <fcntl.h>
8747 #endif
8748 #ifdef I_SYS_FILE
8749 #include <sys/file.h>
8750 #endif
8751 int main() {
8752         if(O_RDONLY);
8753 #ifdef O_TRUNC
8754         exit(0);
8755 #else
8756         exit(1);
8757 #endif
8758 }
8759 EOCP
8760 : check sys/file.h first to get FREAD on Sun
8761 if $test `./findhdr sys/file.h` && \
8762                 set open3 -DI_SYS_FILE && eval $compile; then
8763         h_sysfile=true;
8764         echo "<sys/file.h> defines the O_* constants..." >&4
8765         if ./open3; then
8766                 echo "and you have the 3 argument form of open()." >&4
8767                 val="$define"
8768         else
8769                 echo "but not the 3 argument form of open().  Oh, well." >&4
8770                 val="$undef"
8771         fi
8772 elif $test `./findhdr fcntl.h` && \
8773                 set open3 -DI_FCNTL && eval $compile; then
8774         h_fcntl=true;
8775         echo "<fcntl.h> defines the O_* constants..." >&4
8776         if ./open3; then
8777                 echo "and you have the 3 argument form of open()." >&4
8778                 val="$define"
8779         else
8780                 echo "but not the 3 argument form of open().  Oh, well." >&4
8781                 val="$undef"
8782         fi
8783 else
8784         val="$undef"
8785         echo "I can't find the O_* constant definitions!  You got problems." >&4
8786 fi
8787 set d_open3
8788 eval $setvar
8789 $rm -f open3*
8790
8791 : see which of string.h or strings.h is needed
8792 echo " "
8793 strings=`./findhdr string.h`
8794 if $test "$strings" && $test -r "$strings"; then
8795         echo "Using <string.h> instead of <strings.h>." >&4
8796         val="$define"
8797 else
8798         val="$undef"
8799         strings=`./findhdr strings.h`
8800         if $test "$strings" && $test -r "$strings"; then
8801                 echo "Using <strings.h> instead of <string.h>." >&4
8802         else
8803                 echo "No string header found -- You'll surely have problems." >&4
8804         fi
8805 fi
8806 set i_string
8807 eval $setvar
8808 case "$i_string" in
8809 "$undef") strings=`./findhdr strings.h`;;
8810 *)        strings=`./findhdr string.h`;;
8811 esac
8812
8813 : check for non-blocking I/O stuff
8814 case "$h_sysfile" in
8815 true) echo "#include <sys/file.h>" > head.c;;
8816 *)
8817        case "$h_fcntl" in
8818        true) echo "#include <fcntl.h>" > head.c;;
8819        *) echo "#include <sys/fcntl.h>" > head.c;;
8820        esac
8821        ;;
8822 esac
8823 echo " "
8824 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
8825 case "$o_nonblock" in
8826 '')
8827         $cat head.c > try.c
8828         $cat >>try.c <<'EOCP'
8829 #include <stdio.h>
8830 int main() {
8831 #ifdef O_NONBLOCK
8832         printf("O_NONBLOCK\n");
8833         exit(0);
8834 #endif
8835 #ifdef O_NDELAY
8836         printf("O_NDELAY\n");
8837         exit(0);
8838 #endif
8839 #ifdef FNDELAY
8840         printf("FNDELAY\n");
8841         exit(0);
8842 #endif
8843         exit(0);
8844 }
8845 EOCP
8846         set try
8847         if eval $compile_ok; then
8848                 o_nonblock=`./try`
8849                 case "$o_nonblock" in
8850                 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
8851                 *) echo "Seems like we can use $o_nonblock.";;
8852                 esac
8853         else
8854                 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
8855         fi
8856         ;;
8857 *) echo "Using $hint value $o_nonblock.";;
8858 esac
8859 $rm -f try try.* .out core
8860
8861 echo " "
8862 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
8863 case "$eagain" in
8864 '')
8865         $cat head.c > try.c
8866         $cat >>try.c <<EOCP
8867 #include <errno.h>
8868 #include <sys/types.h>
8869 #include <signal.h>
8870 #include <stdio.h> 
8871 #define MY_O_NONBLOCK $o_nonblock
8872 #ifndef errno  /* XXX need better Configure test */
8873 extern int errno;
8874 #endif
8875 #$i_unistd I_UNISTD
8876 #ifdef I_UNISTD
8877 #include <unistd.h>
8878 #endif
8879 #$i_string I_STRING
8880 #ifdef I_STRING
8881 #include <string.h>
8882 #else
8883 #include <strings.h>
8884 #endif
8885 $signal_t blech(x) int x; { exit(3); }
8886 EOCP
8887         $cat >> try.c <<'EOCP'
8888 int main()
8889 {
8890         int pd[2];
8891         int pu[2];
8892         char buf[1];
8893         char string[100];
8894
8895         pipe(pd);       /* Down: child -> parent */
8896         pipe(pu);       /* Up: parent -> child */
8897         if (0 != fork()) {
8898                 int ret;
8899                 close(pd[1]);   /* Parent reads from pd[0] */
8900                 close(pu[0]);   /* Parent writes (blocking) to pu[1] */
8901 #ifdef F_SETFL
8902                 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
8903                         exit(1);
8904 #else
8905                 exit(4);
8906 #endif
8907                 signal(SIGALRM, blech);
8908                 alarm(5);
8909                 if ((ret = read(pd[0], buf, 1)) > 0)    /* Nothing to read! */
8910                         exit(2);
8911                 sprintf(string, "%d\n", ret);
8912                 write(2, string, strlen(string));
8913                 alarm(0);
8914 #ifdef EAGAIN
8915                 if (errno == EAGAIN) {
8916                         printf("EAGAIN\n");
8917                         goto ok;
8918                 }
8919 #endif
8920 #ifdef EWOULDBLOCK
8921                 if (errno == EWOULDBLOCK)
8922                         printf("EWOULDBLOCK\n");
8923 #endif
8924         ok:
8925                 write(pu[1], buf, 1);   /* Unblocks child, tell it to close our pipe */
8926                 sleep(2);                               /* Give it time to close our pipe */
8927                 alarm(5);
8928                 ret = read(pd[0], buf, 1);      /* Should read EOF */
8929                 alarm(0);
8930                 sprintf(string, "%d\n", ret);
8931                 write(3, string, strlen(string));
8932                 exit(0);
8933         }
8934
8935         close(pd[0]);                   /* We write to pd[1] */
8936         close(pu[1]);                   /* We read from pu[0] */
8937         read(pu[0], buf, 1);    /* Wait for parent to signal us we may continue */
8938         close(pd[1]);                   /* Pipe pd is now fully closed! */
8939         exit(0);                                /* Bye bye, thank you for playing! */
8940 }
8941 EOCP
8942         set try
8943         if eval $compile_ok; then
8944                 echo "$startsh" >mtry
8945                 echo "./try >try.out 2>try.ret 3>try.err || exit 4" >>mtry
8946                 chmod +x mtry
8947                 ./mtry >/dev/null 2>&1
8948                 case $? in
8949                 0) eagain=`$cat try.out`;;
8950                 1) echo "Could not perform non-blocking setting!";;
8951                 2) echo "I did a successful read() for something that was not there!";;
8952                 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
8953                 4) echo "Could not find F_SETFL!";;
8954                 *) echo "Something terribly wrong happened during testing.";;
8955                 esac
8956                 rd_nodata=`$cat try.ret`
8957                 echo "A read() system call with no data present returns $rd_nodata."
8958                 case "$rd_nodata" in
8959                 0|-1) ;;
8960                 *)
8961                         echo "(That's peculiar, fixing that to be -1.)"
8962                         rd_nodata=-1
8963                         ;;
8964                 esac
8965                 case "$eagain" in
8966                 '')
8967                         echo "Forcing errno EAGAIN on read() with no data available."
8968                         eagain=EAGAIN
8969                         ;;
8970                 *)
8971                         echo "Your read() sets errno to $eagain when no data is available."
8972                         ;;
8973                 esac
8974                 status=`$cat try.err`
8975                 case "$status" in
8976                 0) echo "And it correctly returns 0 to signal EOF.";;
8977                 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
8978                 *) echo "However, your read() returns '$status' on EOF??";;
8979                 esac
8980                 val="$define"
8981                 if test "$status" = "$rd_nodata"; then
8982                         echo "WARNING: you can't distinguish between EOF and no data!"
8983                         val="$undef"
8984                 fi
8985         else
8986                 echo "I can't compile the test program--assuming errno EAGAIN will do."
8987                 eagain=EAGAIN
8988         fi
8989         set d_eofnblk
8990         eval $setvar
8991         ;;
8992 *)
8993         echo "Using $hint value $eagain."
8994         echo "Your read() returns $rd_nodata when no data is present."
8995         case "$d_eofnblk" in
8996         "$define") echo "And you can see EOF because read() returns 0.";;
8997         "$undef") echo "But you can't see EOF status from read() returned value.";;
8998         *)
8999                 echo "(Assuming you can't see EOF status from read anyway.)"
9000                 d_eofnblk=$undef
9001                 ;;
9002         esac
9003         ;;
9004 esac
9005 $rm -f try try.* .out core head.c mtry
9006
9007 : see if fchmod exists
9008 set fchmod d_fchmod
9009 eval $inlibc
9010
9011 : see if fchown exists
9012 set fchown d_fchown
9013 eval $inlibc
9014
9015 : see if this is an fcntl system
9016 set fcntl d_fcntl
9017 eval $inlibc
9018
9019 echo " "
9020 : See if fcntl-based locking works.
9021 $cat >try.c <<'EOCP'
9022 #include <stdlib.h>
9023 #include <unistd.h>
9024 #include <fcntl.h>
9025 int main() {
9026 #if defined(F_SETLK) && defined(F_SETLKW)
9027      struct flock flock;
9028      int retval, fd;
9029      fd = open("try.c", O_RDONLY);
9030      flock.l_type = F_RDLCK;
9031      flock.l_whence = SEEK_SET;
9032      flock.l_start = flock.l_len = 0;
9033      retval = fcntl(fd, F_SETLK, &flock);
9034      close(fd);
9035      (retval < 0 ? exit(2) : exit(0));
9036 #else
9037      exit(2);
9038 #endif
9039 }
9040 EOCP
9041 echo "Checking if fcntl-based file locking works... "
9042 case "$d_fcntl" in
9043 "$define")
9044         set try
9045         if eval $compile_ok; then
9046                 if ./try; then
9047                         echo "Yes, it seems to work."
9048                         val="$define"
9049                 else
9050                         echo "Nope, it didn't work."
9051                         val="$undef"
9052                 fi
9053         else
9054                 echo "I'm unable to compile the test program, so I'll assume not."
9055                 val="$undef"
9056         fi
9057         ;;
9058 *) val="$undef";
9059         echo "Nope, since you don't even have fcntl()."
9060         ;;
9061 esac
9062 set d_fcntl_can_lock
9063 eval $setvar
9064 $rm -f try*
9065
9066
9067 hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
9068 while $test $# -ge 2; do
9069         case "$1" in
9070         $define) echo "#include <$2>";;
9071         esac ;
9072     shift 2;
9073 done > try.c;
9074 echo "int main () { struct $struct foo; char* bar; bar = (char*)foo.$field; }" >> try.c;
9075 set try;
9076 if eval $compile; then
9077         val="$define";
9078 else
9079         val="$undef";
9080 fi;
9081 set $varname;
9082 eval $setvar;
9083 $rm -f try.c try.o'
9084
9085 socketlib=''
9086 sockethdr=''
9087 : see whether socket exists
9088 echo " "
9089 $echo $n "Hmm... $c" >&4
9090 if set socket val -f d_socket; eval $csym; $val; then
9091         echo "Looks like you have Berkeley networking support." >&4
9092         d_socket="$define"
9093         if set setsockopt val -f; eval $csym; $val; then
9094                 d_oldsock="$undef"
9095         else
9096                 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
9097                 d_oldsock="$define"
9098         fi
9099 else
9100         if $contains socklib libc.list >/dev/null 2>&1; then
9101                 echo "Looks like you have Berkeley networking support." >&4
9102                 d_socket="$define"
9103                 : we will have to assume that it supports the 4.2 BSD interface
9104                 d_oldsock="$undef"
9105         else
9106                 echo "You don't have Berkeley networking in libc$_a..." >&4
9107                 if test "X$d_socket" = "X$define"; then
9108                    echo "...but you seem to believe that you have sockets." >&4
9109                 else
9110                         for net in net socket
9111                         do
9112                                 if test -f /usr/lib/lib$net$_a; then
9113                                         ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) ||  \
9114                                         $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
9115                                         if $contains socket libc.list >/dev/null 2>&1; then
9116                                                 d_socket="$define"
9117                                                 socketlib="-l$net"
9118                                                 case "$net" in
9119                                                 net)
9120                                                         echo "...but the Wollongong group seems to have hacked it in." >&4
9121                                                         sockethdr="-I/usr/netinclude"
9122                                                         ;;
9123                                                 esac
9124                                                 echo "Found Berkeley sockets interface in lib$net." >& 4 
9125                                                 if $contains setsockopt libc.list >/dev/null 2>&1; then
9126                                                         d_oldsock="$undef"
9127                                                 else
9128                                                         echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
9129                                                         d_oldsock="$define"
9130                                                 fi
9131                                                 break
9132                                         fi
9133                                 fi
9134                         done
9135                         if test "X$d_socket" != "X$define"; then
9136                            echo "or anywhere else I see." >&4
9137                            d_socket="$undef"
9138                            d_oldsock="$undef"
9139                         fi
9140                 fi
9141         fi
9142 fi
9143
9144 : see if socketpair exists
9145 set socketpair d_sockpair
9146 eval $inlibc
9147
9148
9149 echo " "
9150 echo "Checking the availability of certain socket constants..." >& 4
9151 for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
9152         enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
9153         $cat >try.c <<EOF
9154 #include <sys/types.h>
9155 #include <sys/socket.h>
9156 int main() {
9157     int i = $ENUM;
9158 }
9159 EOF
9160         val="$undef"
9161         set try; if eval $compile; then
9162                 val="$define"
9163         fi
9164         set d_${enum}; eval $setvar
9165         $rm -f try.c try
9166 done
9167
9168 : see if sys/select.h has to be included
9169 set sys/select.h i_sysselct
9170 eval $inhdr
9171
9172 : see if we should include time.h, sys/time.h, or both
9173 echo " "
9174 if test "X$timeincl" = X; then
9175         echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
9176         $echo $n "I'm now running the test program...$c"
9177         $cat >try.c <<'EOCP'
9178 #include <sys/types.h>
9179 #ifdef I_TIME
9180 #include <time.h>
9181 #endif
9182 #ifdef I_SYSTIME
9183 #ifdef SYSTIMEKERNEL
9184 #define KERNEL
9185 #endif
9186 #include <sys/time.h>
9187 #endif
9188 #ifdef I_SYSSELECT
9189 #include <sys/select.h>
9190 #endif
9191 int main()
9192 {
9193         struct tm foo;
9194 #ifdef S_TIMEVAL
9195         struct timeval bar;
9196 #endif
9197 #ifdef S_TIMEZONE
9198         struct timezone tzp;
9199 #endif
9200         if (foo.tm_sec == foo.tm_sec)
9201                 exit(0);
9202 #ifdef S_TIMEVAL
9203         if (bar.tv_sec == bar.tv_sec)
9204                 exit(0);
9205 #endif
9206         exit(1);
9207 }
9208 EOCP
9209         flags=''
9210         for s_timezone in '-DS_TIMEZONE' ''; do
9211         sysselect=''
9212         for s_timeval in '-DS_TIMEVAL' ''; do
9213         for i_systimek in '' '-DSYSTIMEKERNEL'; do
9214         for i_time in '' '-DI_TIME'; do
9215         for i_systime in '-DI_SYSTIME' ''; do
9216                 case "$flags" in
9217                 '') $echo $n ".$c"
9218                         set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
9219                         if eval $compile; then
9220                                 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
9221                                 shift
9222                                 flags="$*"
9223                                 echo " "
9224                                 $echo $n "Succeeded with $flags$c"
9225                         fi
9226                         ;;
9227                 esac
9228         done
9229         done
9230         done
9231         done
9232         done
9233         timeincl=''
9234         echo " "
9235         case "$flags" in
9236         *SYSTIMEKERNEL*) i_systimek="$define"
9237                 timeincl=`./findhdr sys/time.h`
9238                 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
9239         *) i_systimek="$undef";;
9240         esac
9241         case "$flags" in
9242         *I_TIME*) i_time="$define"
9243                 timeincl=`./findhdr time.h`" $timeincl"
9244                 echo "We'll include <time.h>." >&4;;
9245         *) i_time="$undef";;
9246         esac
9247         case "$flags" in
9248         *I_SYSTIME*) i_systime="$define"
9249                 timeincl=`./findhdr sys/time.h`" $timeincl"
9250                 echo "We'll include <sys/time.h>." >&4;;
9251         *) i_systime="$undef";;
9252         esac
9253         $rm -f try.c try
9254 fi
9255
9256 : check for fd_set items
9257 $cat <<EOM
9258
9259 Checking to see how well your C compiler handles fd_set and friends ...
9260 EOM
9261 $cat >fd_set.c <<EOCP
9262 #$i_systime I_SYS_TIME
9263 #$i_sysselct I_SYS_SELECT
9264 #$d_socket HAS_SOCKET
9265 #include <sys/types.h>
9266 #ifdef HAS_SOCKET
9267 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
9268 #endif
9269 #ifdef I_SYS_TIME
9270 #include <sys/time.h>
9271 #endif
9272 #ifdef I_SYS_SELECT
9273 #include <sys/select.h>
9274 #endif
9275 int main() {
9276         fd_set fds;
9277
9278 #ifdef TRYBITS
9279         if(fds.fds_bits);
9280 #endif
9281
9282 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
9283         exit(0);
9284 #else
9285         exit(1);
9286 #endif
9287 }
9288 EOCP
9289 set fd_set -DTRYBITS
9290 if eval $compile; then
9291         d_fds_bits="$define"
9292         d_fd_set="$define"
9293         echo "Well, your system knows about the normal fd_set typedef..." >&4
9294         if ./fd_set; then
9295                 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
9296                 d_fd_macros="$define"
9297         else
9298                 $cat >&4 <<'EOM'
9299 but not the normal fd_set macros!  Gaaack!  I'll have to cover for you.
9300 EOM
9301                 d_fd_macros="$undef"
9302         fi
9303 else
9304         $cat <<'EOM'
9305 Hmm, your compiler has some difficulty with fd_set.  Checking further...
9306 EOM
9307         set fd_set
9308         if eval $compile; then
9309                 d_fds_bits="$undef"
9310                 d_fd_set="$define"
9311                 echo "Well, your system has some sort of fd_set available..." >&4
9312                 if ./fd_set; then
9313                         echo "and you have the normal fd_set macros." >&4
9314                         d_fd_macros="$define"
9315                 else
9316                         $cat <<'EOM'
9317 but not the normal fd_set macros!  Gross!  More work for me...
9318 EOM
9319                         d_fd_macros="$undef"
9320                 fi
9321         else
9322         echo "Well, you got zip.  That's OK, I can roll my own fd_set stuff." >&4
9323                 d_fd_set="$undef"
9324                 d_fds_bits="$undef"
9325                 d_fd_macros="$undef"
9326         fi
9327 fi
9328 $rm -f fd_set*
9329
9330 : see if fgetpos exists
9331 set fgetpos d_fgetpos
9332 eval $inlibc
9333
9334 : see if flock exists
9335 set flock d_flock
9336 eval $inlibc
9337
9338 : see if fork exists
9339 set fork d_fork
9340 eval $inlibc
9341
9342 : see if pathconf exists
9343 set pathconf d_pathconf
9344 eval $inlibc
9345
9346 : see if fpathconf exists
9347 set fpathconf d_fpathconf
9348 eval $inlibc
9349
9350
9351 : check for fpos64_t
9352 echo " "
9353 echo "Checking to see if you have fpos64_t..." >&4
9354 $cat >try.c <<EOCP
9355 #include <stdio.h>
9356 int main() { fpos64_t x = 7; }
9357 EOCP
9358 set try
9359 if eval $compile; then
9360         val="$define"
9361         echo "You have fpos64_t."
9362 else
9363         val="$undef"
9364         echo "You do not have fpos64_t."
9365         case "$fpossize" in
9366         8) echo "(Your fpos_t is 64 bits, so you could use that.)" ;;
9367         esac
9368 fi
9369 $rm -f try.* try
9370 set d_fpos64_t
9371 eval $setvar
9372
9373 : see if frexpl exists
9374 set frexpl d_frexpl
9375 eval $inlibc
9376
9377 hasstruct='varname=$1; struct=$2; shift; shift;
9378 while $test $# -ge 2; do
9379         case "$1" in
9380         $define) echo "#include <$2>";;
9381         esac ;
9382     shift 2;
9383 done > try.c;
9384 echo "int main () { struct $struct foo; }" >> try.c;
9385 set try;
9386 if eval $compile; then
9387         val="$define";
9388 else
9389         val="$undef";
9390 fi;
9391 set $varname;
9392 eval $setvar;
9393 $rm -f try.c try.o'
9394
9395 : see if this is a sys/param system
9396 set sys/param.h i_sysparam
9397 eval $inhdr
9398
9399 : see if this is a sys/mount.h system
9400 set sys/mount.h i_sysmount
9401 eval $inhdr
9402
9403 : see if sys/types.h has to be included
9404 set sys/types.h i_systypes
9405 eval $inhdr
9406
9407
9408 echo " "
9409 echo "Checking to see if your system supports struct fs_data..." >&4
9410 set d_fs_data_s fs_data $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h
9411 eval $hasstruct
9412 case "$d_fs_data_s" in
9413 "$define")      echo "Yes, it does."   ;;
9414 *)              echo "No, it doesn't." ;;
9415 esac
9416
9417 : see if fseeko exists
9418 set fseeko d_fseeko
9419 eval $inlibc
9420 case "$longsize" in
9421 8) echo "(Your long is 64 bits, so you could use fseek.)" ;;
9422 esac
9423
9424 : see if fsetpos exists
9425 set fsetpos d_fsetpos
9426 eval $inlibc
9427
9428
9429 : see if fstatfs exists
9430 set fstatfs d_fstatfs
9431 eval $inlibc
9432
9433
9434 : see if statvfs exists
9435 set statvfs d_statvfs
9436 eval $inlibc
9437
9438 : see if fstatvfs exists
9439 set fstatvfs d_fstatvfs
9440 eval $inlibc
9441
9442
9443 : see if fsync exists
9444 set fsync d_fsync
9445 eval $inlibc
9446
9447 : see if ftello exists
9448 set ftello d_ftello
9449 eval $inlibc
9450 case "$longsize" in
9451 8) echo "(Your long is 64 bits, so you could use ftell.)" ;;
9452 esac
9453
9454 : see if getcwd exists
9455 set getcwd d_getcwd
9456 eval $inlibc
9457
9458 : see if getespwnam exists
9459 set getespwnam d_getespwnam
9460 eval $inlibc
9461
9462
9463 : see if getfsstat exists
9464 set getfsstat d_getfsstat
9465 eval $inlibc
9466
9467 : see if getgrent exists
9468 set getgrent d_getgrent
9469 eval $inlibc
9470
9471 : see if gethostbyaddr exists
9472 set gethostbyaddr d_gethbyaddr
9473 eval $inlibc
9474
9475 : see if gethostbyname exists
9476 set gethostbyname d_gethbyname
9477 eval $inlibc
9478
9479 : see if gethostent exists
9480 set gethostent d_gethent
9481 eval $inlibc
9482
9483 : see how we will look up host name
9484 echo " "
9485 call=''
9486 if set gethostname val -f d_gethname; eval $csym; $val; then
9487         echo 'gethostname() found.' >&4
9488         d_gethname="$define"
9489         call=gethostname
9490 fi
9491 if set uname val -f d_uname; eval $csym; $val; then
9492         if ./xenix; then
9493                 $cat <<'EOM'
9494 uname() was found, but you're running xenix, and older versions of xenix
9495 have a broken uname(). If you don't really know whether your xenix is old
9496 enough to have a broken system call, use the default answer.
9497
9498 EOM
9499                 dflt=y
9500                 case "$d_uname" in
9501                 "$define") dflt=n;;
9502                 esac
9503                 rp='Is your uname() broken?'
9504                 . ./myread
9505                 case "$ans" in
9506                 n*) d_uname="$define"; call=uname;;
9507                 esac
9508         else
9509                 echo 'uname() found.' >&4
9510                 d_uname="$define"
9511                 case "$call" in
9512                 '') call=uname ;;
9513                 esac
9514         fi
9515 fi
9516 case "$d_gethname" in
9517 '') d_gethname="$undef";;
9518 esac
9519 case "$d_uname" in
9520 '') d_uname="$undef";;
9521 esac
9522 case "$d_uname$d_gethname" in
9523 *define*)
9524         dflt=n
9525         cat <<EOM
9526  
9527 Every now and then someone has a $call() that lies about the hostname
9528 but can't be fixed for political or economic reasons.  If you wish, I can
9529 pretend $call() isn't there and maybe compute hostname at run-time
9530 thanks to the '$phostname' command.
9531
9532 EOM
9533         rp="Shall I ignore $call() from now on?"
9534         . ./myread
9535         case "$ans" in
9536         y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
9537         esac;;
9538 esac
9539 case "$phostname" in
9540 '') aphostname='';;
9541 *) case "$aphostname" in
9542         /*) ;;
9543         *) set X $phostname
9544                 shift
9545                 file=$1
9546                 shift
9547                 file=`./loc $file $file $pth`
9548                 aphostname=`echo $file $*`
9549                 ;;
9550         esac
9551         ;;
9552 esac
9553 case "$d_uname$d_gethname" in
9554 *define*) ;;
9555 *)
9556         case "$phostname" in
9557         '')
9558                 echo "There will be no way for $package to get your hostname." >&4;;
9559         *)
9560         echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
9561                 ;;
9562         esac;;
9563 esac
9564 case "$d_phostname" in
9565 '') d_phostname="$undef";;
9566 esac
9567
9568 : see if this is a netdb.h system
9569 set netdb.h i_netdb
9570 eval $inhdr
9571
9572 : see if prototypes for various gethostxxx netdb.h functions are available
9573 echo " "
9574 set d_gethostprotos gethostent $i_netdb netdb.h
9575 eval $hasproto
9576
9577 : see if getlogin exists
9578 set getlogin d_getlogin
9579 eval $inlibc
9580
9581 : see if getmnt exists
9582 set getmnt d_getmnt
9583 eval $inlibc
9584
9585 : see if getmntent exists
9586 set getmntent d_getmntent
9587 eval $inlibc
9588
9589 : see if getnetbyaddr exists
9590 set getnetbyaddr d_getnbyaddr
9591 eval $inlibc
9592
9593 : see if getnetbyname exists
9594 set getnetbyname d_getnbyname
9595 eval $inlibc
9596
9597 : see if getnetent exists
9598 set getnetent d_getnent
9599 eval $inlibc
9600
9601 : see if prototypes for various getnetxxx netdb.h functions are available
9602 echo " "
9603 set d_getnetprotos getnetent $i_netdb netdb.h
9604 eval $hasproto
9605
9606 : see if getpagesize exists
9607 set getpagesize d_getpagsz
9608 eval $inlibc
9609
9610
9611 : see if getprotobyname exists
9612 set getprotobyname d_getpbyname
9613 eval $inlibc
9614
9615 : see if getprotobynumber exists
9616 set getprotobynumber d_getpbynumber
9617 eval $inlibc
9618
9619 : see if getprotoent exists
9620 set getprotoent d_getpent
9621 eval $inlibc
9622
9623 : see if getpgid exists
9624 set getpgid d_getpgid
9625 eval $inlibc
9626
9627 : see if getpgrp2 exists
9628 set getpgrp2 d_getpgrp2
9629 eval $inlibc
9630
9631 : see if getppid exists
9632 set getppid d_getppid
9633 eval $inlibc
9634
9635 : see if getpriority exists
9636 set getpriority d_getprior
9637 eval $inlibc
9638
9639 : see if prototypes for various getprotoxxx netdb.h functions are available
9640 echo " "
9641 set d_getprotoprotos getprotoent $i_netdb netdb.h
9642 eval $hasproto
9643
9644 : see if getprpwnam exists
9645 set getprpwnam d_getprpwnam
9646 eval $inlibc
9647
9648 : see if getpwent exists
9649 set getpwent d_getpwent
9650 eval $inlibc
9651
9652
9653 : see if getservbyname exists
9654 set getservbyname d_getsbyname
9655 eval $inlibc
9656
9657 : see if getservbyport exists
9658 set getservbyport d_getsbyport
9659 eval $inlibc
9660
9661 : see if getservent exists
9662 set getservent d_getsent
9663 eval $inlibc
9664
9665 : see if prototypes for various getservxxx netdb.h functions are available
9666 echo " "
9667 set d_getservprotos getservent $i_netdb netdb.h
9668 eval $hasproto
9669
9670 : see if getspnam exists
9671 set getspnam d_getspnam
9672 eval $inlibc
9673
9674 : see if gettimeofday or ftime exists
9675 set gettimeofday d_gettimeod
9676 eval $inlibc
9677 case "$d_gettimeod" in
9678 "$undef")
9679         set ftime d_ftime 
9680         eval $inlibc
9681         ;;
9682 *)
9683         val="$undef"; set d_ftime; eval $setvar
9684         ;;
9685 esac
9686 case "$d_gettimeod$d_ftime" in
9687 "$undef$undef")
9688         echo " "
9689         echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
9690         ;;
9691 esac
9692
9693 : see if this is an grp system
9694 set grp.h i_grp
9695 eval $inhdr
9696
9697 case "$i_grp" in
9698 $define)
9699         xxx=`./findhdr grp.h`
9700         $cppstdin $cppflags $cppminus < $xxx >$$.h
9701
9702         if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
9703                 val="$define"
9704         else
9705                 val="$undef"
9706         fi
9707         set d_grpasswd
9708         eval $setvar
9709
9710         $rm -f $$.h
9711         ;;
9712 *)
9713         val="$undef";
9714         set d_grpasswd; eval $setvar
9715         ;;
9716 esac
9717
9718 : see if hasmntopt exists
9719 set hasmntopt d_hasmntopt
9720 eval $inlibc
9721
9722 : see if this is a netinet/in.h or sys/in.h system
9723 set netinet/in.h i_niin sys/in.h i_sysin
9724 eval $inhdr
9725
9726 : see if arpa/inet.h has to be included
9727 set arpa/inet.h i_arpainet
9728 eval $inhdr
9729
9730 : see if htonl --and friends-- exists
9731 val=''
9732 set htonl val
9733 eval $inlibc
9734
9735 : Maybe they are macros.
9736 case "$val" in
9737 $undef)
9738         $cat >htonl.c <<EOM
9739 #include <stdio.h>
9740 #include <sys/types.h>
9741 #$i_niin I_NETINET_IN
9742 #$i_sysin I_SYS_IN
9743 #$i_arpainet I_ARPA_INET
9744 #ifdef I_NETINET_IN
9745 #include <netinet/in.h>
9746 #endif
9747 #ifdef I_SYS_IN
9748 #include <sys/in.h>
9749 #endif
9750 #ifdef I_ARPA_INET
9751 #include <arpa/inet.h>
9752 #endif
9753 #ifdef htonl
9754 printf("Defined as a macro.");
9755 #endif
9756 EOM
9757         $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
9758         if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
9759                 val="$define"
9760                 echo "But it seems to be defined as a macro." >&4
9761         fi
9762         $rm -f htonl.?
9763         ;;
9764 esac
9765 set d_htonl
9766 eval $setvar
9767
9768 : see if iconv exists
9769 set iconv d_iconv
9770 eval $inlibc
9771
9772 : index or strchr
9773 echo " "
9774 if set index val -f; eval $csym; $val; then
9775         if set strchr val -f d_strchr; eval $csym; $val; then
9776                 if $contains strchr "$strings" >/dev/null 2>&1 ; then
9777                         val="$define"
9778                         vali="$undef"
9779                         echo "strchr() found." >&4
9780                 else
9781                         val="$undef"
9782                         vali="$define"
9783                         echo "index() found." >&4
9784                 fi
9785         else
9786                 val="$undef"
9787                 vali="$define"
9788                 echo "index() found." >&4
9789         fi
9790 else
9791         if set strchr val -f d_strchr; eval $csym; $val; then
9792                 val="$define"
9793                 vali="$undef"
9794                 echo "strchr() found." >&4
9795         else
9796                 echo "No index() or strchr() found!" >&4
9797                 val="$undef"
9798                 vali="$undef"
9799         fi
9800 fi
9801 set d_strchr; eval $setvar
9802 val="$vali"
9803 set d_index; eval $setvar
9804
9805 : check whether inet_aton exists
9806 set inet_aton d_inetaton
9807 eval $inlibc
9808
9809 : see if inttypes.h is available
9810 : we want a real compile instead of Inhdr because some systems
9811 : have an inttypes.h which includes non-existent headers
9812 echo " "
9813 $cat >try.c <<EOCP
9814 #include <inttypes.h>
9815 int main() {
9816         static int32_t foo32 = 0x12345678;
9817 }
9818 EOCP
9819 set try
9820 if eval $compile; then
9821         echo "<inttypes.h> found." >&4
9822         val="$define"
9823 else
9824         echo "<inttypes.h> NOT found." >&4
9825         val="$undef"
9826 fi
9827 $rm -f try.c try
9828 set i_inttypes
9829 eval $setvar
9830
9831 : check for int64_t
9832 echo " "
9833 echo "Checking to see if you have int64_t..." >&4
9834 $cat >try.c <<EOCP
9835 #include <sys/types.h>
9836 #$i_inttypes I_INTTYPES
9837 #ifdef I_INTTYPES
9838 #include <inttypes.h>
9839 #endif
9840 int main() { int64_t x = 7; }
9841 EOCP
9842 set try
9843 if eval $compile; then
9844         val="$define"
9845         echo "You have int64_t."
9846 else
9847         val="$undef"
9848         echo "You do not have int64_t."
9849 fi
9850 $rm -f try try.*
9851 set d_int64_t
9852 eval $setvar
9853
9854 : Look for isascii
9855 echo " "
9856 $cat >isascii.c <<'EOCP'
9857 #include <stdio.h>
9858 #include <ctype.h>
9859 int main() {
9860         int c = 'A';
9861         if (isascii(c))
9862                 exit(0);
9863         else
9864                 exit(1);
9865 }
9866 EOCP
9867 set isascii
9868 if eval $compile; then
9869         echo "isascii() found." >&4
9870         val="$define"
9871 else
9872         echo "isascii() NOT found." >&4
9873         val="$undef"
9874 fi
9875 set d_isascii
9876 eval $setvar
9877 $rm -f isascii*
9878
9879 : see if isnan exists
9880 set isnan d_isnan
9881 eval $inlibc
9882
9883 : see if isnanl exists
9884 set isnanl d_isnanl
9885 eval $inlibc
9886
9887 : see if killpg exists
9888 set killpg d_killpg
9889 eval $inlibc
9890
9891 : see if lchown exists
9892 echo " "
9893 $cat > try.c <<'EOCP'
9894 /* System header to define __stub macros and hopefully few prototypes,
9895     which can conflict with char lchown(); below.  */
9896 #include <assert.h>
9897 /* Override any gcc2 internal prototype to avoid an error.  */
9898 /* We use char because int might match the return type of a gcc2
9899    builtin and then its argument prototype would still apply.  */
9900 char lchown();
9901 int main() {
9902     /*  The GNU C library defines this for functions which it implements
9903         to always fail with ENOSYS.  Some functions are actually named
9904         something starting with __ and the normal name is an alias.  */
9905 #if defined (__stub_lchown) || defined (__stub___lchown)
9906 choke me
9907 #else
9908 lchown();
9909 #endif
9910 ; return 0; }
9911 EOCP
9912 set try
9913 if eval $compile; then
9914     $echo "lchown() found." >&4
9915     val="$define"
9916 else
9917     $echo "lchown() NOT found." >&4
9918     val="$undef"
9919 fi
9920 set d_lchown
9921 eval $setvar
9922
9923 : See if number of significant digits in a double precision number is known
9924 echo " "
9925 $cat >ldbl_dig.c <<EOM
9926 #$i_limits I_LIMITS
9927 #$i_float I_FLOAT
9928 #ifdef I_LIMITS
9929 #include <limits.h>
9930 #endif
9931 #ifdef I_FLOAT
9932 #include <float.h>
9933 #endif
9934 #ifdef LDBL_DIG
9935 printf("Contains LDBL_DIG");
9936 #endif
9937 EOM
9938 $cppstdin $cppflags $cppminus < ldbl_dig.c >ldbl_dig.E 2>/dev/null
9939 if $contains 'LDBL_DIG' ldbl_dig.E >/dev/null 2>&1; then
9940         echo "LDBL_DIG found." >&4
9941         val="$define"
9942 else
9943         echo "LDBL_DIG NOT found." >&4
9944         val="$undef"
9945 fi
9946 $rm -f ldbl_dig.?
9947 set d_ldbl_dig
9948 eval $setvar
9949
9950 : see if link exists
9951 set link d_link
9952 eval $inlibc
9953
9954 : see if localeconv exists
9955 set localeconv d_locconv
9956 eval $inlibc
9957
9958 : see if lockf exists
9959 set lockf d_lockf
9960 eval $inlibc
9961
9962 : check for long long
9963 echo " "
9964 echo "Checking to see if you have long long..." >&4
9965 echo 'int main() { long long x = 7; return 0; }' > try.c
9966 set try
9967 if eval $compile; then
9968         val="$define"
9969         echo "You have long long."
9970 else
9971         val="$undef"
9972         echo "You do not have long long."
9973 fi
9974 $rm try.*
9975 set d_longlong
9976 eval $setvar
9977
9978 : check for length of long long
9979 case "${d_longlong}${longlongsize}" in
9980 $define)
9981         echo " "
9982         echo "Checking to see how big your long longs are..." >&4
9983         $cat >try.c <<'EOCP'
9984 #include <stdio.h>
9985 int main()
9986 {
9987     printf("%d\n", (int)sizeof(long long));
9988     return(0);
9989 }
9990 EOCP
9991         set try
9992         if eval $compile_ok; then
9993                 longlongsize=`./try$exe_ext`
9994                 echo "Your long longs are $longlongsize bytes long."
9995         else
9996                 dflt='8'
9997                 echo " "
9998                 echo "(I can't seem to compile the test program.  Guessing...)"
9999                 rp="What is the size of a long long (in bytes)?"
10000                 . ./myread
10001                 longlongsize="$ans"
10002         fi
10003         if $test "X$longsize" = "X$longlongsize"; then
10004                 echo "(That isn't any different from an ordinary long.)"
10005         fi      
10006         ;;
10007 esac
10008 $rm -f try.* try
10009
10010 : see if prototype for lseek is available
10011 echo " "
10012 set d_lseekproto lseek $i_systypes sys/types.h $i_unistd unistd.h
10013 eval $hasproto
10014
10015 : see if lstat exists
10016 set lstat d_lstat
10017 eval $inlibc
10018
10019 : see if madvise exists
10020 set madvise d_madvise
10021 eval $inlibc
10022
10023 : see if mblen exists
10024 set mblen d_mblen
10025 eval $inlibc
10026
10027 : see if mbstowcs exists
10028 set mbstowcs d_mbstowcs
10029 eval $inlibc
10030
10031 : see if mbtowc exists
10032 set mbtowc d_mbtowc
10033 eval $inlibc
10034
10035 : see if memchr exists
10036 set memchr d_memchr
10037 eval $inlibc
10038
10039 : see if memcmp exists
10040 set memcmp d_memcmp
10041 eval $inlibc
10042
10043 : see if memcpy exists
10044 set memcpy d_memcpy
10045 eval $inlibc
10046
10047 : see if memmove exists
10048 set memmove d_memmove
10049 eval $inlibc
10050
10051 : see if memset exists
10052 set memset d_memset
10053 eval $inlibc
10054
10055 : see if mkdir exists
10056 set mkdir d_mkdir
10057 eval $inlibc
10058
10059 : see if mkdtemp exists
10060 set mkdtemp d_mkdtemp
10061 eval $inlibc
10062
10063 : see if mkfifo exists
10064 set mkfifo d_mkfifo
10065 eval $inlibc
10066
10067 : see if mkstemp exists
10068 set mkstemp d_mkstemp
10069 eval $inlibc
10070
10071 : see if mkstemps exists
10072 set mkstemps d_mkstemps
10073 eval $inlibc
10074
10075 : see if mktime exists
10076 set mktime d_mktime
10077 eval $inlibc
10078
10079 : see if this is a sys/mman.h system
10080 set sys/mman.h i_sysmman
10081 eval $inhdr
10082
10083 : see if mmap exists
10084 set mmap d_mmap
10085 eval $inlibc
10086 : see what shmat returns
10087 : default to something harmless
10088 mmaptype='void *'
10089 case "$i_sysmman$d_mmap" in
10090 "$define$define")
10091         $cat >mmap.c <<'END'
10092 #include <sys/mman.h>
10093 void *mmap();
10094 END
10095         if $cc $ccflags -c mmap.c >/dev/null 2>&1; then
10096                 mmaptype='void *'
10097         else
10098                 mmaptype='caddr_t'
10099         fi
10100         echo "and it returns ($mmaptype)." >&4
10101         ;;
10102 esac
10103
10104
10105
10106 : see if modfl exists
10107 set modfl d_modfl
10108 eval $inlibc
10109
10110 : see if mprotect exists
10111 set mprotect d_mprotect
10112 eval $inlibc
10113
10114 : see if msgctl exists
10115 set msgctl d_msgctl
10116 eval $inlibc
10117
10118 : see if msgget exists
10119 set msgget d_msgget
10120 eval $inlibc
10121
10122 : see if msgsnd exists
10123 set msgsnd d_msgsnd
10124 eval $inlibc
10125
10126 : see if msgrcv exists
10127 set msgrcv d_msgrcv
10128 eval $inlibc
10129
10130 : see how much of the 'msg*(2)' library is present.
10131 h_msg=true
10132 echo " "
10133 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
10134 *"$undef"*) h_msg=false;;
10135 esac
10136 case "$osname" in
10137 freebsd)
10138     case "`ipcs 2>&1`" in
10139     "SVID messages"*"not configured"*)
10140         echo "Your $osname does not have the msg*(2) configured." >&4
10141         h_msg=false
10142         val="$undef"
10143         set msgctl d_msgctl
10144         eval $setvar
10145         set msgget d_msgget
10146         eval $setvar
10147         set msgsnd d_msgsnd
10148         eval $setvar
10149         set msgrcv d_msgrcv
10150         eval $setvar
10151         ;;
10152     esac
10153     ;;
10154 esac
10155 : we could also check for sys/ipc.h ...
10156 if $h_msg && $test `./findhdr sys/msg.h`; then
10157         echo "You have the full msg*(2) library." >&4
10158         val="$define"
10159 else
10160         echo "You don't have the full msg*(2) library." >&4
10161         val="$undef"
10162 fi
10163 set d_msg
10164 eval $setvar
10165
10166 : see if msync exists
10167 set msync d_msync
10168 eval $inlibc
10169
10170 : see if munmap exists
10171 set munmap d_munmap
10172 eval $inlibc
10173
10174 : see if nice exists
10175 set nice d_nice
10176 eval $inlibc
10177
10178
10179 echo " "
10180 echo "Checking which 64-bit integer type we could use..." >&4
10181
10182 case "$intsize" in
10183 8) val=int
10184    set quadtype
10185    eval $setvar
10186    val='"unsigned int"'
10187    set uquadtype
10188    eval $setvar
10189    quadkind=1
10190    ;;
10191 *) case "$longsize" in
10192    8) val=long
10193       set quadtype
10194       eval $setvar
10195       val='"unsigned long"'
10196       set uquadtype
10197       eval $setvar
10198       quadkind=2
10199       ;;
10200    *) case "$d_longlong:$longlongsize" in
10201       define:8)
10202         val='"long long"'
10203         set quadtype
10204         eval $setvar
10205         val='"unsigned long long"'
10206         set uquadtype
10207         eval $setvar
10208         quadkind=3
10209         ;;
10210       *) case "$d_int64_t" in
10211          define)
10212            val=int64_t
10213            set quadtype
10214            eval $setvar
10215            val=uint64_t
10216            set uquadtype
10217            eval $setvar
10218            quadkind=4
10219            ;;
10220          esac
10221          ;;
10222       esac
10223       ;;
10224    esac
10225    ;;
10226 esac
10227
10228 case "$quadtype" in
10229 '')     echo "Alas, no 64-bit integer types in sight." >&4
10230         d_quad="$undef"
10231         ;;
10232 *)      if test X"$use64bitint" = Xdefine -o X"$longsize" = X8; then
10233             verb="will"
10234         else
10235             verb="could"
10236         fi
10237         echo "We $verb use '$quadtype' for 64-bit integers." >&4
10238         d_quad="$define"
10239         ;;
10240 esac
10241
10242 : check for length of character
10243 echo " "
10244 case "$charsize" in
10245 '')
10246         echo "Checking to see how big your characters are (hey, you never know)..." >&4
10247         $cat >try.c <<'EOCP'
10248 #include <stdio.h>
10249 int main()
10250 {
10251     printf("%d\n", (int)sizeof(char));
10252     exit(0);
10253 }
10254 EOCP
10255         set try
10256         if eval $compile_ok; then
10257                 dflt=`./try`
10258         else
10259                 dflt='1'
10260                 echo "(I can't seem to compile the test program.  Guessing...)"
10261         fi
10262         ;;
10263 *)
10264         dflt="$charsize"
10265         ;;
10266 esac
10267 rp="What is the size of a character (in bytes)?"
10268 . ./myread
10269 charsize="$ans"
10270 $rm -f try.c try
10271
10272 : check for volatile keyword
10273 echo " "
10274 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
10275 $cat >try.c <<'EOCP'
10276 int main()
10277 {
10278         typedef struct _goo_struct goo_struct;
10279         goo_struct * volatile goo = ((goo_struct *)0);
10280         struct _goo_struct {
10281                 long long_int;
10282                 int reg_int;
10283                 char char_var;
10284         };
10285         typedef unsigned short foo_t;
10286         char *volatile foo;
10287         volatile int bar;
10288         volatile foo_t blech;
10289         foo = foo;
10290 }
10291 EOCP
10292 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
10293         val="$define"
10294         echo "Yup, it does."
10295 else
10296         val="$undef"
10297         echo "Nope, it doesn't."
10298 fi
10299 set d_volatile
10300 eval $setvar
10301 $rm -f try.*
10302
10303
10304 echo " "
10305 $echo "Choosing the C types to be used for Perl's internal types..." >&4
10306
10307 case "$use64bitint:$d_quad:$quadtype" in
10308 define:define:?*)
10309         ivtype="$quadtype"
10310         uvtype="$uquadtype"
10311         ivsize=8
10312         uvsize=8
10313         ;;
10314 *)      ivtype="long"
10315         uvtype="unsigned long"
10316         ivsize=$longsize
10317         uvsize=$longsize
10318         ;;
10319 esac
10320
10321 case "$uselongdouble:$d_longdbl" in
10322 define:define)
10323         nvtype="long double"
10324         nvsize=$longdblsize
10325         ;;
10326 *)      nvtype=double
10327         nvsize=$doublesize
10328         ;;
10329 esac
10330
10331 $echo "(IV will be "$ivtype", $ivsize bytes)"
10332 $echo "(UV will be "$uvtype", $uvsize bytes)"
10333 $echo "(NV will be "$nvtype", $nvsize bytes)"
10334
10335 $cat >try.c <<EOCP
10336 #$i_inttypes I_INTTYPES
10337 #ifdef I_INTTYPES
10338 #include <inttypes.h>
10339 #endif
10340 #include <stdio.h>
10341 int main() {
10342 #ifdef INT8
10343    int8_t i =  INT8_MAX;
10344   uint8_t u = UINT8_MAX;
10345   printf("int8_t\n");
10346 #endif
10347 #ifdef INT16
10348    int16_t i =  INT16_MAX;
10349   uint16_t i = UINT16_MAX;
10350   printf("int16_t\n");
10351 #endif
10352 #ifdef INT32
10353    int32_t i =  INT32_MAX;
10354   uint32_t u = UINT32_MAX;
10355   printf("int32_t\n");
10356 #endif
10357 }
10358 EOCP
10359
10360 case "$i8type" in
10361 '')     case "$charsize" in
10362         1)      i8type=char
10363                 u8type="unsigned char"
10364                 i8size=$charsize
10365                 u8size=$charsize
10366                 ;;
10367         esac
10368         ;;
10369 esac
10370 case "$i8type" in
10371 '')     set try -DINT8
10372         if eval $compile; then
10373                 case "`./try$exe_ext`" in
10374                 int8_t) i8type=int8_t
10375                         u8type=uint8_t
10376                         i8size=1
10377                         u8size=1
10378                         ;;
10379                 esac
10380         fi
10381         ;;
10382 esac
10383 case "$i8type" in
10384 '')     if $test $charsize -ge 1; then
10385                 i8type=char
10386                 u8type="unsigned char"
10387                 i8size=$charsize
10388                 u8size=$charsize
10389         fi
10390         ;;
10391 esac
10392
10393 case "$i16type" in
10394 '')     case "$shortsize" in
10395         2)      i16type=short
10396                 u16type="unsigned short"
10397                 i16size=$shortsize
10398                 u16size=$shortsize
10399                 ;;
10400         esac
10401         ;;
10402 esac
10403 case "$i16type" in
10404 '')     set try -DINT16
10405         if eval $compile; then
10406                 case "`./try$exe_ext`" in
10407                 int16_t)
10408                         i16type=int16_t
10409                         u16type=uint16_t
10410                         i16size=2
10411                         u16size=2
10412                         ;;
10413                 esac
10414         fi
10415         ;;
10416 esac
10417 case "$i16type" in
10418 '')     if $test $shortsize -ge 2; then
10419                 i16type=short
10420                 u16type="unsigned short"
10421                 i16size=$shortsize
10422                 u16size=$shortsize
10423         fi
10424         ;;
10425 esac
10426
10427 case "$i32type" in
10428 '')     case "$longsize" in
10429         4)      i32type=long
10430                 u32type="unsigned long"
10431                 i32size=$longsize
10432                 u32size=$longsize
10433                 ;;
10434         *)      case "$intsize" in
10435                 4)      i32type=int
10436                         u32type="unsigned int"
10437                         i32size=$intsize
10438                         u32size=$intsize
10439                         ;;
10440                 esac
10441                 ;;
10442         esac
10443         ;;
10444 esac
10445 case "$i32type" in
10446 '')     set try -DINT32
10447         if eval $compile; then
10448                 case "`./try$exe_ext`" in
10449                 int32_t)
10450                         i32type=int32_t
10451                         u32type=uint32_t
10452                         i32size=4
10453                         u32size=4
10454                         ;;
10455                 esac
10456         fi
10457         ;;
10458 esac
10459 case "$i32type" in
10460 '')     if $test $intsize -ge 4; then
10461                 i32type=int
10462                 u32type="unsigned int"
10463                 i32size=$intsize
10464                 u32size=$intsize
10465         fi
10466         ;;
10467 esac
10468
10469 case "$i64type" in
10470 '')     case "$d_quad:$quadtype" in
10471         define:?*)
10472                 i64type="$quadtype"
10473                 u64type="$uquadtype"
10474                 i64size=8
10475                 u64size=8
10476                 ;;
10477         esac
10478         ;;
10479 esac
10480
10481 $echo "Checking how many bits of your UVs your NVs can preserve..." >&4
10482 : volatile so that the compiler has to store it out to memory.
10483 if test X"$d_volatile" = X"$define"; then
10484         volatile=volatile
10485 fi
10486 $cat <<EOP >try.c
10487 #include <stdio.h>
10488 #include <sys/types.h>
10489 #include <signal.h>
10490 #ifdef SIGFPE
10491 $volatile int bletched = 0;
10492 $signal_t blech(s) int s; { bletched = 1; }
10493 #endif
10494 int main() {
10495     $uvtype u = 0;
10496     $nvtype d;
10497     int     n = 8 * $uvsize;
10498     int     i;
10499 #ifdef SIGFPE
10500     signal(SIGFPE, blech);
10501 #endif
10502
10503     for (i = 0; i < n; i++) {
10504       u = u << 1 | ($uvtype)1;
10505       d = ($nvtype)u;
10506       if (($uvtype)d != u)
10507         break;
10508       if (d <= 0)
10509         break;
10510       d = ($nvtype)(u - 1);
10511       if (($uvtype)d != (u - 1))
10512         break;
10513 #ifdef SIGFPE
10514       if (bletched) {
10515         break;
10516 #endif
10517       } 
10518     }
10519     printf("%d\n", ((i == n) ? -n : i));
10520     exit(0);
10521 }
10522 EOP
10523 set try
10524
10525 d_nv_preserves_uv="$undef"
10526 if eval $compile; then
10527         d_nv_preserves_uv_bits="`./try$exe_ext`"
10528 fi
10529 case "$d_nv_preserves_uv_bits" in
10530 \-[1-9]*)       
10531         d_nv_preserves_uv_bits=`expr 0 - $d_nv_preserves_uv_bits`
10532         $echo "Your NVs can preserve all $d_nv_preserves_uv_bits bits of your UVs."  2>&1
10533         d_nv_preserves_uv="$define"
10534         ;;
10535 [1-9]*) $echo "Your NVs can preserve only $d_nv_preserves_uv_bits bits of your UVs."  2>&1
10536         d_nv_preserves_uv="$undef" ;;
10537 *)      $echo "Can't figure out how many bits your NVs preserve." 2>&1
10538         d_nv_preserves_uv_bits="$undef" ;;
10539 esac
10540
10541 $rm -f try.* try
10542
10543
10544 : check for off64_t
10545 echo " "
10546 echo "Checking to see if you have off64_t..." >&4
10547 $cat >try.c <<EOCP
10548 #include <sys/types.h>
10549 #include <unistd.h>
10550 int main() { off64_t x = 7; }
10551 EOCP
10552 set try
10553 if eval $compile; then
10554         val="$define"
10555         echo "You have off64_t."
10556 else
10557         val="$undef"
10558         echo "You do not have off64_t."
10559         case "$lseeksize" in
10560         8) echo "(Your off_t is 64 bits, so you could use that.)" ;;
10561         esac
10562 fi
10563 $rm -f try.* try
10564 set d_off64_t
10565 eval $setvar
10566
10567 : see if POSIX threads are available
10568 set pthread.h i_pthread
10569 eval $inhdr
10570
10571
10572
10573
10574 : how to create joinable pthreads
10575 if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
10576         echo " "
10577         echo "Checking what constant to use for creating joinable pthreads..." >&4 
10578         $cat >try.c <<'EOCP'
10579 #include <pthread.h>
10580 int main() {
10581     int detachstate = JOINABLE;
10582 }
10583 EOCP
10584         set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
10585         if eval $compile; then
10586                 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
10587                 val="$undef" # Yes, undef.
10588                 set d_old_pthread_create_joinable
10589                 eval $setvar
10590                 val=""
10591                 set old_pthread_create_joinable
10592                 eval $setvar
10593         else
10594                 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
10595                 if eval $compile; then
10596                         echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
10597                         val="$define"
10598                         set d_old_pthread_create_joinable
10599                         eval $setvar
10600                         val=PTHREAD_CREATE_UNDETACHED
10601                         set old_pthread_create_joinable
10602                         eval $setvar
10603                 else            
10604                         set try -DJOINABLE=__UNDETACHED
10605                         if eval $compile; then
10606                                 echo "You seem to use __UNDETACHED." >&4
10607                                 val="$define"
10608                                 set d_old_pthread_create_joinable
10609                                 eval $setvar
10610                                 val=__UNDETACHED
10611                                 set old_pthread_create_joinable
10612                                 eval $setvar
10613                         else
10614                                 echo "Egads, nothing obvious found.  Guessing that you use 0." >&4
10615                                 val="$define"
10616                                 set d_old_pthread_create_joinable
10617                                 eval $setvar
10618                                 val=0
10619                                 set old_pthread_create_joinable
10620                                 eval $setvar
10621                         fi
10622                 fi
10623         fi
10624         $rm -f try try.*
10625 else
10626     d_old_pthread_create_joinable="$undef"
10627     old_pthread_create_joinable=""
10628 fi
10629
10630 : see if pause exists
10631 set pause d_pause
10632 eval $inlibc
10633
10634 : see if pipe exists
10635 set pipe d_pipe
10636 eval $inlibc
10637
10638 : see if poll exists
10639 set poll d_poll
10640 eval $inlibc
10641
10642
10643 : see whether the various POSIXish _yields exist
10644 $cat >try.c <<EOP
10645 #include <pthread.h>
10646 #include <stdio.h>
10647 int main() {
10648 #ifdef SCHED_YIELD
10649         sched_yield();
10650 #else
10651 #ifdef PTHREAD_YIELD
10652         pthread_yield();
10653 #else
10654 #ifdef PTHREAD_YIELD_NULL
10655         pthread_yield(NULL);
10656 #endif
10657 #endif
10658 #endif
10659 }
10660 EOP
10661 : see if sched_yield exists
10662 set try -DSCHED_YIELD
10663 if eval $compile; then
10664     val="$define"
10665     sched_yield='sched_yield()'
10666 else
10667     val="$undef"
10668 fi
10669 case "$usethreads" in
10670 $define)
10671         case "$val" in
10672         $define) echo 'sched_yield() found.' >&4        ;;
10673         *)       echo 'sched_yield() NOT found.' >&4    ;;
10674         esac
10675 esac
10676 set d_sched_yield
10677 eval $setvar
10678
10679 : see if pthread_yield exists
10680 set try -DPTHREAD_YIELD
10681 if eval $compile; then
10682     val="$define"
10683     case "$sched_yield" in
10684     '') sched_yield='pthread_yield()' ;;
10685     esac
10686 else
10687     set try -DPTHREAD_YIELD_NULL
10688     if eval $compile; then
10689         val="$define"
10690         case "$sched_yield" in
10691         '') sched_yield='pthread_yield(NULL)' ;;
10692         esac
10693     else
10694         val="$undef"
10695     fi
10696 fi
10697 case "$usethreads" in
10698 $define)
10699         case "$val" in
10700         $define) echo 'pthread_yield() found.' >&4      ;;
10701         *)       echo 'pthread_yield() NOT found.' >&4  ;;
10702         esac
10703         ;;
10704 esac
10705 set d_pthread_yield
10706 eval $setvar
10707
10708 case "$sched_yield" in
10709 '') sched_yield=undef ;;
10710 esac
10711
10712 $rm -f try try.*
10713
10714 : see if this is a pwd.h system
10715 set pwd.h i_pwd
10716 eval $inhdr
10717
10718 case "$i_pwd" in
10719 $define)
10720         xxx=`./findhdr pwd.h`
10721         $cppstdin $cppflags $cppminus < $xxx >$$.h
10722
10723         if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
10724                 val="$define"
10725         else
10726                 val="$undef"
10727         fi
10728         set d_pwquota
10729         eval $setvar
10730
10731         if $contains 'pw_age' $$.h >/dev/null 2>&1; then
10732                 val="$define"
10733         else
10734                 val="$undef"
10735         fi
10736         set d_pwage
10737         eval $setvar
10738
10739         if $contains 'pw_change' $$.h >/dev/null 2>&1; then
10740                 val="$define"
10741         else
10742                 val="$undef"
10743         fi
10744         set d_pwchange
10745         eval $setvar
10746
10747         if $contains 'pw_class' $$.h >/dev/null 2>&1; then
10748                 val="$define"
10749         else
10750                 val="$undef"
10751         fi
10752         set d_pwclass
10753         eval $setvar
10754
10755         if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
10756                 val="$define"
10757         else
10758                 val="$undef"
10759         fi
10760         set d_pwexpire
10761         eval $setvar
10762
10763         if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
10764                 val="$define"
10765         else
10766                 val="$undef"
10767         fi
10768         set d_pwcomment
10769         eval $setvar
10770
10771         if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
10772                 val="$define"
10773         else
10774                 val="$undef"
10775         fi
10776         set d_pwgecos
10777         eval $setvar
10778
10779         if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
10780                 val="$define"
10781         else
10782                 val="$undef"
10783         fi
10784         set d_pwpasswd
10785         eval $setvar
10786
10787         $rm -f $$.h
10788         ;;
10789 *)
10790         val="$undef"; 
10791         set d_pwquota; eval $setvar
10792         set d_pwage; eval $setvar
10793         set d_pwchange; eval $setvar
10794         set d_pwclass; eval $setvar
10795         set d_pwexpire; eval $setvar
10796         set d_pwcomment; eval $setvar
10797         set d_pwgecos; eval $setvar
10798         set d_pwpasswd; eval $setvar
10799         ;;
10800 esac
10801
10802 : see if readdir and friends exist
10803 set readdir d_readdir
10804 eval $inlibc
10805 set seekdir d_seekdir
10806 eval $inlibc
10807 set telldir d_telldir
10808 eval $inlibc
10809 set rewinddir d_rewinddir
10810 eval $inlibc
10811
10812 : see if readlink exists
10813 set readlink d_readlink
10814 eval $inlibc
10815
10816 : see if rename exists
10817 set rename d_rename
10818 eval $inlibc
10819
10820 : see if rmdir exists
10821 set rmdir d_rmdir
10822 eval $inlibc
10823
10824 : see if memory.h is available.
10825 val=''
10826 set memory.h val
10827 eval $inhdr
10828
10829 : See if it conflicts with string.h
10830 case "$val" in
10831 $define)
10832         case "$strings" in
10833         '') ;;
10834         *)
10835                 $cppstdin $cppflags $cppminus < $strings > mem.h
10836                 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
10837                         echo " "
10838                         echo "We won't be including <memory.h>."
10839                         val="$undef"
10840                 fi
10841                 $rm -f mem.h
10842                 ;;
10843         esac
10844 esac
10845 set i_memory
10846 eval $setvar
10847
10848 : can bcopy handle overlapping blocks?
10849 val="$undef"
10850 case "$d_bcopy" in
10851 "$define")
10852         echo " "
10853         echo "Checking to see if your bcopy() can do overlapping copies..." >&4
10854         $cat >try.c <<EOCP
10855 #$i_memory I_MEMORY
10856 #$i_stdlib I_STDLIB
10857 #$i_string I_STRING
10858 #$i_unistd I_UNISTD
10859 EOCP
10860         $cat >>try.c <<'EOCP'
10861 #include <stdio.h>
10862 #ifdef I_MEMORY
10863 #  include <memory.h>
10864 #endif
10865 #ifdef I_STDLIB
10866 #  include <stdlib.h>
10867 #endif
10868 #ifdef I_STRING
10869 #  include <string.h>
10870 #else
10871 #  include <strings.h>
10872 #endif
10873 #ifdef I_UNISTD
10874 #  include <unistd.h>  /* Needed for NetBSD */
10875 #endif
10876 int main()
10877 {
10878 char buf[128], abc[128];
10879 char *b;
10880 int len;
10881 int off;
10882 int align;
10883
10884 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
10885
10886 for (align = 7; align >= 0; align--) {
10887         for (len = 36; len; len--) {
10888                 b = buf+align;
10889                 bcopy(abc, b, len);
10890                 for (off = 1; off <= len; off++) {
10891                         bcopy(b, b+off, len);
10892                         bcopy(b+off, b, len);
10893                         if (bcmp(b, abc, len))
10894                                 exit(1);
10895                 }
10896         }
10897 }
10898 exit(0);
10899 }
10900 EOCP
10901         set try
10902         if eval $compile_ok; then
10903                 if ./try 2>/dev/null; then
10904                         echo "Yes, it can."
10905                         val="$define"
10906                 else
10907                         echo "It can't, sorry."
10908                         case "$d_memmove" in
10909                         "$define") echo "But that's Ok since you have memmove()." ;;
10910                         esac
10911                 fi
10912         else
10913                 echo "(I can't compile the test program, so we'll assume not...)"
10914                 case "$d_memmove" in
10915                 "$define") echo "But that's Ok since you have memmove()." ;;
10916                 esac
10917         fi
10918         ;;
10919 esac
10920 $rm -f try.* try core
10921 set d_safebcpy
10922 eval $setvar
10923
10924 : can memcpy handle overlapping blocks?
10925 val="$undef"
10926 case "$d_memcpy" in
10927 "$define")
10928         echo " "
10929         echo "Checking to see if your memcpy() can do overlapping copies..." >&4
10930         $cat >try.c <<EOCP
10931 #$i_memory I_MEMORY
10932 #$i_stdlib I_STDLIB
10933 #$i_string I_STRING
10934 #$i_unistd I_UNISTD
10935 EOCP
10936         $cat >>try.c <<'EOCP'
10937 #include <stdio.h>
10938 #ifdef I_MEMORY
10939 #  include <memory.h>
10940 #endif
10941 #ifdef I_STDLIB
10942 #  include <stdlib.h>
10943 #endif
10944 #ifdef I_STRING
10945 #  include <string.h>
10946 #else
10947 #  include <strings.h>
10948 #endif
10949 #ifdef I_UNISTD
10950 #  include <unistd.h>  /* Needed for NetBSD */
10951 #endif
10952 int main()
10953 {
10954 char buf[128], abc[128];
10955 char *b;
10956 int len;
10957 int off;
10958 int align;
10959
10960 /* Copy "abcde..." string to char abc[] so that gcc doesn't
10961    try to store the string in read-only memory. */
10962 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
10963
10964 for (align = 7; align >= 0; align--) {
10965         for (len = 36; len; len--) {
10966                 b = buf+align;
10967                 memcpy(b, abc, len);
10968                 for (off = 1; off <= len; off++) {
10969                         memcpy(b+off, b, len);
10970                         memcpy(b, b+off, len);
10971                         if (memcmp(b, abc, len))
10972                                 exit(1);
10973                 }
10974         }
10975 }
10976 exit(0);
10977 }
10978 EOCP
10979         set try
10980         if eval $compile_ok; then
10981                 if ./try 2>/dev/null; then
10982                         echo "Yes, it can."
10983                         val="$define"
10984                 else
10985                         echo "It can't, sorry."
10986                         case "$d_memmove" in
10987                         "$define") echo "But that's Ok since you have memmove()." ;;
10988                         esac
10989                 fi
10990         else
10991                 echo "(I can't compile the test program, so we'll assume not...)"
10992                 case "$d_memmove" in
10993                 "$define") echo "But that's Ok since you have memmove()." ;;
10994                 esac
10995         fi
10996         ;;
10997 esac
10998 $rm -f try.* try core
10999 set d_safemcpy
11000 eval $setvar
11001
11002 : can memcmp be trusted to compare relative magnitude?
11003 val="$undef"
11004 case "$d_memcmp" in
11005 "$define")
11006         echo " "
11007         echo "Checking if your memcmp() can compare relative magnitude..." >&4
11008         $cat >try.c <<EOCP
11009 #$i_memory I_MEMORY
11010 #$i_stdlib I_STDLIB
11011 #$i_string I_STRING
11012 #$i_unistd I_UNISTD
11013 EOCP
11014         $cat >>try.c <<'EOCP'
11015 #include <stdio.h>
11016 #ifdef I_MEMORY
11017 #  include <memory.h>
11018 #endif
11019 #ifdef I_STDLIB
11020 #  include <stdlib.h>
11021 #endif
11022 #ifdef I_STRING
11023 #  include <string.h>
11024 #else
11025 #  include <strings.h>
11026 #endif
11027 #ifdef I_UNISTD
11028 #  include <unistd.h>  /* Needed for NetBSD */
11029 #endif
11030 int main()
11031 {
11032 char a = -1;
11033 char b = 0;
11034 if ((a < b) && memcmp(&a, &b, 1) < 0)
11035         exit(1);
11036 exit(0);
11037 }
11038 EOCP
11039         set try
11040         if eval $compile_ok; then
11041                 if ./try 2>/dev/null; then
11042                         echo "Yes, it can."
11043                         val="$define"
11044                 else
11045                         echo "No, it can't (it uses signed chars)."
11046                 fi
11047         else
11048                 echo "(I can't compile the test program, so we'll assume not...)"
11049         fi
11050         ;;
11051 esac
11052 $rm -f try.* try core
11053 set d_sanemcmp
11054 eval $setvar
11055
11056 : see if prototype for sbrk is available
11057 echo " "
11058 set d_sbrkproto sbrk $i_unistd unistd.h
11059 eval $hasproto
11060
11061 : see if select exists
11062 set select d_select
11063 eval $inlibc
11064
11065 : see if semctl exists
11066 set semctl d_semctl
11067 eval $inlibc
11068
11069 : see if semget exists
11070 set semget d_semget
11071 eval $inlibc
11072
11073 : see if semop exists
11074 set semop d_semop
11075 eval $inlibc
11076
11077 : see how much of the 'sem*(2)' library is present.
11078 h_sem=true
11079 echo " "
11080 case "$d_semctl$d_semget$d_semop" in
11081 *"$undef"*) h_sem=false;;
11082 esac
11083 case "$osname" in
11084 freebsd)
11085     case "`ipcs 2>&1`" in
11086     "SVID messages"*"not configured"*)
11087         echo "Your $osname does not have the sem*(2) configured." >&4
11088         h_sem=false
11089         val="$undef"
11090         set semctl d_semctl
11091         eval $setvar
11092         set semget d_semget
11093         eval $setvar
11094         set semop d_semop
11095         eval $setvar
11096         ;;
11097     esac
11098     ;;
11099 esac
11100 : we could also check for sys/ipc.h ...
11101 if $h_sem && $test `./findhdr sys/sem.h`; then
11102         echo "You have the full sem*(2) library." >&4
11103         val="$define"
11104 else
11105         echo "You don't have the full sem*(2) library." >&4
11106         val="$undef"
11107 fi
11108 set d_sem
11109 eval $setvar
11110
11111 : see whether sys/sem.h defines union semun
11112 echo " "
11113 $cat > try.c <<'END'
11114 #include <sys/types.h>
11115 #include <sys/ipc.h>
11116 #include <sys/sem.h>
11117 int main () { union semun semun; semun.buf = 0; }
11118 END
11119 set try
11120 if eval $compile; then
11121     echo "You have union semun in <sys/sem.h>." >&4
11122     val="$define"
11123 else
11124     echo "You do not have union semun in <sys/sem.h>." >&4
11125     val="$undef"
11126 fi
11127 $rm -f try try.c try.h
11128 set d_union_semun
11129 eval $setvar
11130
11131 : see how to do semctl IPC_STAT
11132 case "$d_sem" in
11133 $define)
11134     : see whether semctl IPC_STAT can use union semun
11135     echo " "
11136     $cat > try.h <<END
11137 #ifndef S_IRUSR
11138 #   ifdef S_IREAD
11139 #       define S_IRUSR S_IREAD
11140 #       define S_IWUSR S_IWRITE
11141 #       define S_IXUSR S_IEXEC
11142 #   else
11143 #       define S_IRUSR 0400
11144 #       define S_IWUSR 0200
11145 #       define S_IXUSR 0100
11146 #   endif
11147 #   define S_IRGRP (S_IRUSR>>3)
11148 #   define S_IWGRP (S_IWUSR>>3)
11149 #   define S_IXGRP (S_IXUSR>>3)
11150 #   define S_IROTH (S_IRUSR>>6)
11151 #   define S_IWOTH (S_IWUSR>>6)
11152 #   define S_IXOTH (S_IXUSR>>6)
11153 #endif
11154 #ifndef S_IRWXU
11155 #   define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
11156 #   define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
11157 #   define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
11158 #endif
11159 END
11160
11161     $cat > try.c <<END
11162 #include <sys/types.h>
11163 #include <sys/ipc.h>
11164 #include <sys/sem.h>
11165 #include <sys/stat.h>
11166 #include <stdio.h>
11167 #include <errno.h>
11168 #include "try.h"
11169 #ifndef errno
11170 extern int errno;
11171 #endif
11172 #$d_union_semun HAS_UNION_SEMUN
11173 int main() {
11174     union semun
11175 #ifndef HAS_UNION_SEMUN
11176     {
11177         int val;
11178         struct semid_ds *buf;
11179         unsigned short *array;
11180     }
11181 #endif
11182     arg;
11183     int sem, st;
11184
11185 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
11186     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
11187     if (sem > -1) {
11188         struct semid_ds argbuf;
11189         arg.buf = &argbuf;
11190 #       ifdef IPC_STAT
11191         st = semctl(sem, 0, IPC_STAT, arg);
11192         if (st == 0)
11193             printf("semun\n");
11194         else
11195 #       endif /* IPC_STAT */
11196             printf("semctl IPC_STAT failed: errno = %d\n", errno);
11197 #       ifdef IPC_RMID
11198         if (semctl(sem, 0, IPC_RMID, arg) != 0)
11199 #       endif /* IPC_RMID */
11200             printf("semctl IPC_RMID failed: errno = %d\n", errno);
11201     } else
11202 #endif /* IPC_PRIVATE && ... */
11203         printf("semget failed: errno = %d\n", errno);
11204   return 0;
11205 }
11206 END
11207     val="$undef"
11208     set try
11209     if eval $compile; then
11210         xxx=`./try`
11211         case "$xxx" in
11212         semun) val="$define" ;;
11213         esac
11214     fi
11215     $rm -f try try.c
11216     set d_semctl_semun
11217     eval $setvar
11218     case "$d_semctl_semun" in
11219     $define)
11220         echo "You can use union semun for semctl IPC_STAT." >&4
11221         also='also'
11222         ;;
11223     *)  echo "You cannot use union semun for semctl IPC_STAT." >&4
11224         also=''
11225         ;;
11226     esac
11227
11228     : see whether semctl IPC_STAT can use struct semid_ds pointer
11229     $cat > try.c <<'END'
11230 #include <sys/types.h>
11231 #include <sys/ipc.h>
11232 #include <sys/sem.h>
11233 #include <sys/stat.h>
11234 #include "try.h"
11235 #include <stdio.h>
11236 #include <errno.h>
11237 #ifndef errno
11238 extern int errno;
11239 #endif
11240 int main() {
11241     struct semid_ds arg;
11242     int sem, st;
11243
11244 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) &&  defined(S_IRWXO) && defined(IPC_CREAT)
11245     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
11246     if (sem > -1) {
11247 #       ifdef IPC_STAT
11248         st = semctl(sem, 0, IPC_STAT, &arg);
11249         if (st == 0)
11250             printf("semid_ds\n");
11251         else
11252 #       endif /* IPC_STAT */
11253             printf("semctl IPC_STAT failed: errno = %d\n", errno);
11254 #       ifdef IPC_RMID
11255         if (semctl(sem, 0, IPC_RMID, &arg) != 0)
11256 #       endif /* IPC_RMID */
11257             printf("semctl IPC_RMID failed: errno = %d\n", errno);
11258     } else
11259 #endif /* IPC_PRIVATE && ... */
11260         printf("semget failed: errno = %d\n", errno);
11261
11262     return 0;
11263 }
11264 END
11265     val="$undef"
11266     set try
11267     if eval $compile; then
11268         xxx=`./try`
11269         case "$xxx" in
11270         semid_ds) val="$define" ;;
11271         esac
11272     fi
11273     $rm -f try try.c
11274     set d_semctl_semid_ds
11275     eval $setvar
11276     case "$d_semctl_semid_ds" in
11277     $define)
11278         echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
11279         ;;
11280     *)  echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
11281         ;;
11282     esac
11283     $rm -f try.h
11284     ;;
11285 *)  val="$undef"
11286
11287     # We do not have the full sem*(2) library, so assume we can not
11288     # use either.
11289
11290     set d_semctl_semun
11291     eval $setvar
11292
11293     set d_semctl_semid_ds
11294     eval $setvar
11295     ;;
11296 esac
11297
11298 : see if setegid exists
11299 set setegid d_setegid
11300 eval $inlibc
11301
11302 : see if seteuid exists
11303 set seteuid d_seteuid
11304 eval $inlibc
11305
11306 : see if setgrent exists
11307 set setgrent d_setgrent
11308 eval $inlibc
11309
11310 : see if sethostent exists
11311 set sethostent d_sethent
11312 eval $inlibc
11313
11314 : see if setlinebuf exists
11315 set setlinebuf d_setlinebuf
11316 eval $inlibc
11317
11318 : see if setlocale exists
11319 set setlocale d_setlocale
11320 eval $inlibc
11321
11322 : see if setnetent exists
11323 set setnetent d_setnent
11324 eval $inlibc
11325
11326 : see if setprotoent exists
11327 set setprotoent d_setpent
11328 eval $inlibc
11329
11330 : see if setpgid exists
11331 set setpgid d_setpgid
11332 eval $inlibc
11333
11334 : see if setpgrp2 exists
11335 set setpgrp2 d_setpgrp2
11336 eval $inlibc
11337
11338 : see if setpriority exists
11339 set setpriority d_setprior
11340 eval $inlibc
11341
11342 : see if setproctitle exists
11343 set setproctitle d_setproctitle
11344 eval $inlibc
11345
11346 : see if setpwent exists
11347 set setpwent d_setpwent
11348 eval $inlibc
11349
11350 : see if setregid exists
11351 set setregid d_setregid
11352 eval $inlibc
11353 set setresgid d_setresgid
11354 eval $inlibc
11355
11356 : see if setreuid exists
11357 set setreuid d_setreuid
11358 eval $inlibc
11359 set setresuid d_setresuid
11360 eval $inlibc
11361
11362 : see if setrgid exists
11363 set setrgid d_setrgid
11364 eval $inlibc
11365
11366 : see if setruid exists
11367 set setruid d_setruid
11368 eval $inlibc
11369
11370 : see if setservent exists
11371 set setservent d_setsent
11372 eval $inlibc
11373
11374 : see if setsid exists
11375 set setsid d_setsid
11376 eval $inlibc
11377
11378 : see if setvbuf exists
11379 set setvbuf d_setvbuf
11380 eval $inlibc
11381
11382 : see if sfio.h is available
11383 set sfio.h i_sfio
11384 eval $inhdr
11385
11386
11387 : see if sfio library is available
11388 case "$i_sfio" in
11389 $define)
11390         val=''
11391         set sfreserve val
11392         eval $inlibc
11393         ;;
11394 *)
11395         val="$undef"
11396         ;;
11397 esac
11398 : Ok, but do we want to use it.
11399 case "$val" in
11400 $define)
11401         case "$usesfio" in
11402         true|$define|[yY]*) dflt='y';;
11403         *) dflt='n';;
11404         esac
11405         echo "$package can use the sfio library, but it is experimental."
11406         case "$useperlio" in
11407         "$undef")
11408             echo "For sfio also the PerlIO abstraction layer is needed."
11409             echo "Earlier you said you wouldn't want that."
11410             ;;
11411         esac
11412         rp="You seem to have sfio available, do you want to try using it?"
11413         . ./myread
11414         case "$ans" in
11415         y|Y)    echo "Ok, turning on both sfio and PerlIO, then."
11416                 useperlio="$define"
11417                 val="$define"
11418                 ;;
11419         *)      echo "Ok, avoiding sfio this time.  I'll use stdio instead."
11420                 val="$undef"
11421                 ;;
11422         esac
11423         ;;
11424 *)      case "$usesfio" in
11425         true|$define|[yY]*)
11426                 echo "Sorry, cannot find sfio on this machine." >&4
11427                 echo "Ignoring your setting of usesfio=$usesfio." >&4
11428                 val="$undef"
11429                 ;;
11430         esac
11431         ;;
11432 esac
11433 set d_sfio
11434 eval $setvar
11435 case "$d_sfio" in
11436 $define) usesfio='true';;
11437 *) usesfio='false';;
11438 esac
11439 case "$d_sfio" in
11440 $define) ;;
11441 *)      : Remove sfio from list of libraries to use
11442         set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
11443         shift
11444         libs="$*"
11445         echo "libs = $libs" >&4
11446 ;;
11447 esac
11448
11449
11450 : see if shmctl exists
11451 set shmctl d_shmctl
11452 eval $inlibc
11453
11454 : see if shmget exists
11455 set shmget d_shmget
11456 eval $inlibc
11457
11458 : see if shmat exists
11459 set shmat d_shmat
11460 eval $inlibc
11461 : see what shmat returns
11462 case "$d_shmat" in
11463 "$define")
11464         $cat >shmat.c <<'END'
11465 #include <sys/shm.h>
11466 void *shmat();
11467 END
11468         if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
11469                 shmattype='void *'
11470         else
11471                 shmattype='char *'
11472         fi
11473         echo "and it returns ($shmattype)." >&4
11474         : see if a prototype for shmat is available
11475         xxx=`./findhdr sys/shm.h`
11476         $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
11477         if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
11478                 val="$define"
11479         else
11480                 val="$undef"
11481         fi
11482         $rm -f shmat.[co]
11483         ;;
11484 *)
11485         val="$undef"
11486         ;;
11487 esac
11488 set d_shmatprototype
11489 eval $setvar
11490
11491 : see if shmdt exists
11492 set shmdt d_shmdt
11493 eval $inlibc
11494
11495 : see how much of the 'shm*(2)' library is present.
11496 h_shm=true
11497 echo " "
11498 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
11499 *"$undef"*) h_shm=false;;
11500 esac
11501 case "$osname" in
11502 freebsd)
11503     case "`ipcs 2>&1`" in
11504     "SVID shared memory"*"not configured"*)
11505         echo "Your $osname does not have the shm*(2) configured." >&4
11506         h_shm=false
11507         val="$undef"
11508         set shmctl d_shmctl
11509         evat $setvar
11510         set shmget d_shmget
11511         evat $setvar
11512         set shmat d_shmat
11513         evat $setvar
11514         set shmdt d_shmdt
11515         evat $setvar
11516         ;;
11517     esac
11518     ;;
11519 esac
11520 : we could also check for sys/ipc.h ...
11521 if $h_shm && $test `./findhdr sys/shm.h`; then
11522         echo "You have the full shm*(2) library." >&4
11523         val="$define"
11524 else
11525         echo "You don't have the full shm*(2) library." >&4
11526         val="$undef"
11527 fi
11528 set d_shm
11529 eval $setvar
11530
11531 echo " "
11532 : see if we have sigaction
11533 if set sigaction val -f d_sigaction; eval $csym; $val; then
11534         echo 'sigaction() found.' >&4
11535         $cat > try.c <<'EOP'
11536 #include <stdio.h>
11537 #include <sys/types.h>
11538 #include <signal.h>
11539 int main()
11540 {
11541     struct sigaction act, oact;
11542     act.sa_flags = 0;
11543     oact.sa_handler = 0;
11544     /* so that act and oact are used */
11545     exit(act.sa_flags == 0 &&  oact.sa_handler == 0);
11546 }
11547 EOP
11548         set try
11549         if eval $compile_ok; then
11550                 val="$define"
11551         else
11552                 echo "But you don't seem to have a useable struct sigaction." >&4
11553                 val="$undef"
11554         fi
11555 else
11556         echo 'sigaction NOT found.' >&4
11557         val="$undef"
11558 fi
11559 set d_sigaction; eval $setvar
11560 $rm -f try try$_o try.c
11561
11562 : see if sigprocmask exists
11563 set sigprocmask d_sigprocmask
11564 eval $inlibc
11565
11566 : see if sigsetjmp exists
11567 echo " "
11568 case "$d_sigsetjmp" in
11569 '')
11570         $cat >try.c <<'EOP'
11571 #include <setjmp.h>
11572 sigjmp_buf env;
11573 int set = 1;
11574 int main()
11575 {
11576         if (sigsetjmp(env,1))
11577                 exit(set);
11578         set = 0;
11579         siglongjmp(env, 1);
11580         exit(1);
11581 }
11582 EOP
11583         set try
11584         if eval $compile; then
11585                 if ./try >/dev/null 2>&1; then
11586                         echo "POSIX sigsetjmp found." >&4
11587                         val="$define"
11588                 else
11589                         $cat >&4 <<EOM
11590 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
11591 I'll ignore them.
11592 EOM
11593                         val="$undef"
11594                 fi
11595         else
11596                 echo "sigsetjmp not found." >&4
11597                 val="$undef"
11598         fi
11599         ;;
11600 *) val="$d_sigsetjmp"
11601         case "$d_sigsetjmp" in
11602         $define) echo "POSIX sigsetjmp found." >&4;;
11603         $undef) echo "sigsetjmp not found." >&4;;
11604         esac
11605         ;;
11606 esac
11607 set d_sigsetjmp
11608 eval $setvar
11609 $rm -f try.c try
11610
11611 : see if socks5_init exists
11612 set socks5_init d_socks5_init
11613 eval $inlibc
11614
11615 : see if sys/stat.h is available
11616 set sys/stat.h i_sysstat
11617 eval $inhdr
11618
11619
11620 : see if stat knows about block sizes
11621 echo " "
11622 echo "Checking to see if your struct stat has st_blocks field..." >&4
11623 set d_statblks stat st_blocks $i_sysstat sys/stat.h
11624 eval $hasfield
11625
11626
11627 : see if this is a sys/vfs.h system
11628 set sys/vfs.h i_sysvfs
11629 eval $inhdr
11630
11631
11632 : see if this is a sys/statfs.h system
11633 set sys/statfs.h i_sysstatfs
11634 eval $inhdr
11635
11636
11637 echo " "
11638 echo "Checking to see if your system supports struct statfs..." >&4
11639 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
11640 eval $hasstruct
11641 case "$d_statfs_s" in
11642 "$define")      echo "Yes, it does."   ;;
11643 *)              echo "No, it doesn't." ;;
11644 esac
11645
11646
11647
11648 : see if struct statfs knows about f_flags
11649 case "$d_statfs_s" in
11650 define) 
11651         echo " "
11652         echo "Checking to see if your struct statfs has f_flags field..." >&4
11653         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
11654         eval $hasfield
11655         ;;
11656 *)      val="$undef"
11657         set d_statfs_f_flags
11658         eval $setvar
11659         ;;
11660 esac
11661 case "$d_statfs_f_flags" in
11662 "$define")      echo "Yes, it does."   ;;
11663 *)              echo "No, it doesn't." ;;
11664 esac
11665
11666 : see if _ptr and _cnt from stdio act std
11667 echo " "
11668
11669 if $contains '_lbfsize' `./findhdr stdio.h` >/dev/null 2>&1 ; then
11670         echo "(Looks like you have stdio.h from BSD.)"
11671         case "$stdio_ptr" in
11672         '') stdio_ptr='((fp)->_p)'
11673                 ptr_lval=$define
11674                 ;;
11675         *)      ptr_lval=$d_stdio_ptr_lval;;
11676         esac
11677         case "$stdio_cnt" in
11678         '') stdio_cnt='((fp)->_r)'
11679                 cnt_lval=$define
11680                 ;;
11681         *)      cnt_lval=$d_stdio_cnt_lval;;
11682         esac
11683         case "$stdio_base" in
11684         '') stdio_base='((fp)->_ub._base ? (fp)->_ub._base : (fp)->_bf._base)';;
11685         esac
11686         case "$stdio_bufsiz" in
11687         '') stdio_bufsiz='((fp)->_ub._base ? (fp)->_ub._size : (fp)->_bf._size)';;
11688         esac
11689 elif $contains '_IO_fpos_t' `./findhdr stdio.h` `./findhdr libio.h` >/dev/null 2>&1 ; then
11690         echo "(Looks like you have stdio.h from Linux.)"
11691         case "$stdio_ptr" in
11692         '') stdio_ptr='((fp)->_IO_read_ptr)'
11693                 ptr_lval=$define
11694                 ;;
11695         *)      ptr_lval=$d_stdio_ptr_lval;;
11696         esac
11697         case "$stdio_cnt" in
11698         '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
11699                 cnt_lval=$undef
11700                 ;;
11701         *)      cnt_lval=$d_stdio_cnt_lval;;
11702         esac
11703         case "$stdio_base" in
11704         '') stdio_base='((fp)->_IO_read_base)';;
11705         esac
11706         case "$stdio_bufsiz" in
11707         '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
11708         esac
11709 else
11710         case "$stdio_ptr" in
11711         '') stdio_ptr='((fp)->_ptr)'
11712                 ptr_lval=$define
11713                 ;;
11714         *)      ptr_lval=$d_stdio_ptr_lval;;
11715         esac
11716         case "$stdio_cnt" in
11717         '') stdio_cnt='((fp)->_cnt)'
11718                 cnt_lval=$define
11719                 ;;
11720         *)      cnt_lval=$d_stdio_cnt_lval;;
11721         esac
11722         case "$stdio_base" in
11723         '') stdio_base='((fp)->_base)';;
11724         esac
11725         case "$stdio_bufsiz" in
11726         '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
11727         esac
11728 fi
11729
11730 : test whether _ptr and _cnt really work
11731 echo "Checking how std your stdio is..." >&4
11732 $cat >try.c <<EOP
11733 #include <stdio.h>
11734 #define FILE_ptr(fp)    $stdio_ptr
11735 #define FILE_cnt(fp)    $stdio_cnt
11736 int main() {
11737         FILE *fp = fopen("try.c", "r");
11738         char c = getc(fp);
11739         if (
11740                 18 <= FILE_cnt(fp) &&
11741                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
11742         )
11743                 exit(0);
11744         exit(1);
11745 }
11746 EOP
11747 val="$undef"
11748 set try
11749 if eval $compile; then
11750         if ./try; then
11751                 echo "Your stdio acts pretty std."
11752                 val="$define"
11753         else
11754                 echo "Your stdio isn't very std."
11755         fi
11756 else
11757         echo "Your stdio doesn't appear very std."
11758 fi
11759 $rm -f try.c try
11760 set d_stdstdio
11761 eval $setvar
11762
11763 : Can _ptr be used as an lvalue?
11764 case "$d_stdstdio$ptr_lval" in
11765 $define$define) val=$define ;;
11766 *) val=$undef ;;
11767 esac
11768 set d_stdio_ptr_lval
11769 eval $setvar
11770
11771 : Can _cnt be used as an lvalue?
11772 case "$d_stdstdio$cnt_lval" in
11773 $define$define) val=$define ;;
11774 *) val=$undef ;;
11775 esac
11776 set d_stdio_cnt_lval
11777 eval $setvar
11778
11779
11780 : test whether setting _ptr sets _cnt as a side effect
11781 d_stdio_ptr_lval_sets_cnt="$undef"
11782 d_stdio_ptr_lval_nochange_cnt="$undef"
11783 case "$d_stdio_ptr_lval$d_stdstdio" in
11784 $define$define)
11785         echo "Checking to see what happens if we set the stdio ptr..." >&4
11786 $cat >try.c <<EOP
11787 #include <stdio.h>
11788 /* Can we scream? */
11789 /* Eat dust sed :-) */
11790 /* In the buffer space, no one can hear you scream. */
11791 #define FILE_ptr(fp)    $stdio_ptr
11792 #define FILE_cnt(fp)    $stdio_cnt
11793 #include <sys/types.h>
11794 int main() {
11795         FILE *fp = fopen("try.c", "r");
11796         int c;
11797         char *ptr;
11798         size_t cnt;
11799         if (!fp) {
11800             puts("Fail even to read");
11801             exit(1);
11802         }
11803         c = getc(fp); /* Read away the first # */
11804         if (c == EOF) {
11805             puts("Fail even to read");
11806             exit(1);
11807         }
11808         if (!(
11809                 18 <= FILE_cnt(fp) &&
11810                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
11811         )) {
11812                 puts("Fail even to read");
11813                 exit (1);
11814         }
11815         ptr = (char*) FILE_ptr(fp);
11816         cnt = (size_t)FILE_cnt(fp);
11817
11818         FILE_ptr(fp) += 42;
11819
11820         if ((char*)FILE_ptr(fp) != (ptr + 42)) {
11821                 printf("Fail ptr check %p != %p", FILE_ptr(fp), (ptr + 42));
11822                 exit (1);
11823         }
11824         if (FILE_cnt(fp) <= 20) {
11825                 printf ("Fail (<20 chars to test)");
11826                 exit (1);
11827         }
11828         if (strncmp(FILE_ptr(fp), "Eat dust sed :-) */\n", 20) != 0) {
11829                 puts("Fail compare");
11830                 exit (1);
11831         }
11832         if (cnt == FILE_cnt(fp)) {
11833                 puts("Pass_unchanged");
11834                 exit (0);
11835         }       
11836         if (FILE_cnt(fp) == (cnt - 42)) {
11837                 puts("Pass_changed");
11838                 exit (0);
11839         }
11840         printf("Fail count was %d now %d\n", cnt, FILE_cnt(fp));
11841         return 1;
11842
11843 }
11844 EOP
11845         set try
11846         if eval $compile; then
11847                 case `./try$exe_ext` in
11848                 Pass_changed)
11849                         echo "Increasing ptr in your stdio decreases cnt by the same amount.  Good." >&4
11850                         d_stdio_ptr_lval_sets_cnt="$define" ;;
11851                 Pass_unchanged)
11852                         echo "Increasing ptr in your stdio leaves cnt unchanged.  Good." >&4
11853                         d_stdio_ptr_lval_nochange_cnt="$define" ;;
11854                 Fail*)
11855                         echo "Increasing ptr in your stdio didn't do exactly what I expected.  We'll not be doing that then." >&4 ;;
11856                 *)
11857                         echo "It appears attempting to set ptr in your stdio is a bad plan." >&4 ;;
11858         esac
11859         else
11860                 echo "It seems we can't set ptr in your stdio.  Nevermind." >&4
11861         fi
11862         $rm -f try.c try
11863         ;;
11864 esac
11865
11866 : see if _base is also standard
11867 val="$undef"
11868 case "$d_stdstdio" in
11869 $define)
11870         $cat >try.c <<EOP
11871 #include <stdio.h>
11872 #define FILE_base(fp)   $stdio_base
11873 #define FILE_bufsiz(fp) $stdio_bufsiz
11874 int main() {
11875         FILE *fp = fopen("try.c", "r");
11876         char c = getc(fp);
11877         if (
11878                 19 <= FILE_bufsiz(fp) &&
11879                 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
11880         )
11881                 exit(0);
11882         exit(1);
11883 }
11884 EOP
11885         set try
11886         if eval $compile; then
11887                 if ./try; then
11888                         echo "And its _base field acts std."
11889                         val="$define"
11890                 else
11891                         echo "But its _base field isn't std."
11892                 fi
11893         else
11894                 echo "However, it seems to be lacking the _base field."
11895         fi
11896         $rm -f try.c try
11897         ;;
11898 esac
11899 set d_stdiobase
11900 eval $setvar
11901
11902 $cat >&4 <<EOM
11903 Checking how to access stdio streams by file descriptor number...
11904 EOM
11905 case "$stdio_stream_array" in
11906 '')     $cat >try.c <<EOCP
11907 #include <stdio.h>
11908 int main() {
11909   if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
11910     printf("yes\n");
11911 }
11912 EOCP
11913         for s in _iob __iob __sF
11914         do
11915                 set try -DSTDIO_STREAM_ARRAY=$s
11916                 if eval $compile; then
11917                         case "`./try$exe_ext`" in
11918                         yes)    stdio_stream_array=$s; break ;;
11919                         esac
11920                 fi
11921         done
11922         $rm -f try.* try$exe_ext
11923 esac
11924 case "$stdio_stream_array" in
11925 '')     $cat >&4 <<EOM
11926 I can't figure out how to access stdio streams by file descriptor number.
11927 EOM
11928         d_stdio_stream_array="$undef"
11929         ;;
11930 *)      $cat >&4 <<EOM
11931 You can access stdio streams by file descriptor number by the $stdio_stream_array array.
11932 EOM
11933         d_stdio_stream_array="$define"
11934         ;;
11935 esac
11936
11937 : see if strcoll exists
11938 set strcoll d_strcoll
11939 eval $inlibc
11940
11941 : check for structure copying
11942 echo " "
11943 echo "Checking to see if your C compiler can copy structs..." >&4
11944 $cat >try.c <<'EOCP'
11945 int main()
11946 {
11947         struct blurfl {
11948                 int dyick;
11949         } foo, bar;
11950
11951         foo = bar;
11952 }
11953 EOCP
11954 if $cc -c try.c >/dev/null 2>&1 ; then
11955         val="$define"
11956         echo "Yup, it can."
11957 else
11958         val="$undef"
11959         echo "Nope, it can't."
11960 fi
11961 set d_strctcpy
11962 eval $setvar
11963 $rm -f try.*
11964
11965 : see if strerror and/or sys_errlist[] exist
11966 echo " "
11967 if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
11968     if set strerror val -f d_strerror; eval $csym; $val; then
11969                 echo 'strerror() found.' >&4
11970                 d_strerror="$define"
11971                 d_strerrm='strerror(e)'
11972                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
11973                         echo "(You also have sys_errlist[], so we could roll our own strerror.)" 
11974                         d_syserrlst="$define"
11975                 else
11976                         echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
11977                         d_syserrlst="$undef"
11978                 fi
11979     elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
11980                         $contains '#[   ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
11981                 echo 'strerror() found in string header.' >&4
11982                 d_strerror="$define"
11983                 d_strerrm='strerror(e)'
11984                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
11985                         echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
11986                                 d_syserrlst="$define"
11987                 else
11988                         echo "(You don't appear to have any sys_errlist[], how can this be?)"
11989                         d_syserrlst="$undef"
11990                 fi
11991     elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
11992                 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
11993                 d_strerror="$undef"
11994                 d_syserrlst="$define"
11995                 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
11996     else
11997                 echo 'strerror() and sys_errlist[] NOT found.' >&4
11998                 d_strerror="$undef"
11999                 d_syserrlst="$undef"
12000                 d_strerrm='"unknown"'
12001     fi
12002 fi
12003
12004 : see if strtod exists
12005 set strtod d_strtod
12006 eval $inlibc
12007
12008 : see if strtol exists
12009 set strtol d_strtol
12010 eval $inlibc
12011
12012 : see if strtold exists
12013 set strtold d_strtold
12014 eval $inlibc
12015
12016 : see if strtoll exists
12017 set strtoll d_strtoll
12018 eval $inlibc
12019
12020 case "$d_longlong-$d_strtoll" in
12021 "$define-$define")
12022         $cat <<EOM
12023 Checking whether your strtoll() works okay...
12024 EOM
12025         $cat >try.c <<'EOCP'
12026 #include <errno.h>
12027 #ifdef __hpux
12028 #define strtoll __strtoll
12029 #endif
12030 #ifdef __EMX__
12031 #define strtoll _strtoll
12032 #endif
12033 #include <stdio.h>
12034 extern long long int strtoll(char *s, char **, int); 
12035 static int bad = 0;
12036 int check(char *s, long long ell, int een) {
12037         long long gll;
12038         errno = 0;
12039         gll = strtoll(s, 0, 10);
12040         if (!((gll == ell) && (errno == een)))
12041                 bad++;
12042 }
12043 int main() {
12044         check(" 1",                                      1LL, 0);
12045         check(" 0",                                      0LL, 0);
12046         check("-1",                                     -1LL, 0);
12047         check("-9223372036854775808", -9223372036854775808LL, 0);
12048         check("-9223372036854775808", -9223372036854775808LL, 0);
12049         check(" 9223372036854775807",  9223372036854775807LL, 0);
12050         check("-9223372036854775808", -9223372036854775808LL, 0);
12051         check(" 9223372036854775808",  9223372036854775807LL, ERANGE);
12052         check("-9223372036854775809", -9223372036854775808LL, ERANGE);
12053         if (!bad)
12054                 printf("ok\n");
12055 }
12056 EOCP
12057         set try
12058         if eval $compile; then
12059                 yyy=`./try`
12060                 case "$yyy" in
12061                 ok) echo "Your strtoll() seems to be working okay." ;;
12062                 *) cat <<EOM >&4
12063 Your strtoll() doesn't seem to be working okay.
12064 EOM
12065                    d_strtoll="$undef"
12066                    ;;
12067                 esac
12068         else
12069                 echo "(I can't seem to compile the test program--assuming it doesn't)"
12070                 d_strtoll="$undef"
12071         fi
12072         ;;
12073 esac
12074
12075 : see if strtoq exists
12076 set strtoq d_strtoq
12077 eval $inlibc
12078
12079 : see if strtoul exists
12080 set strtoul d_strtoul
12081 eval $inlibc
12082
12083 case "$d_strtoul" in
12084 "$define")
12085         $cat <<EOM
12086 Checking whether your strtoul() works okay...
12087 EOM
12088         $cat >try.c <<'EOCP'
12089 #include <errno.h>
12090 #include <stdio.h>
12091 extern unsigned long int strtoul(char *s, char **, int); 
12092 static int bad = 0;
12093 void check(char *s, unsigned long eul, int een) {
12094         unsigned long gul;
12095         errno = 0;
12096         gul = strtoul(s, 0, 10);
12097         if (!((gul == eul) && (errno == een)))
12098                 bad++;
12099 }
12100 int main() {
12101         check(" 1", 1L, 0);
12102         check(" 0", 0L, 0);
12103 EOCP
12104         case "$longsize" in
12105         8)
12106             $cat >>try.c <<'EOCP'
12107         check("18446744073709551615", 18446744073709551615UL, 0);
12108         check("18446744073709551616", 18446744073709551615UL, ERANGE);
12109 #if 0 /* strtoul() for /^-/ strings is undefined. */
12110         check("-1", 18446744073709551615UL, 0);
12111         check("-18446744073709551614", 2, 0);
12112         check("-18446744073709551615", 1, 0);
12113         check("-18446744073709551616", 18446744073709551615UL, ERANGE);
12114         check("-18446744073709551617", 18446744073709551615UL, ERANGE);
12115 #endif
12116 EOCP
12117                 ;;
12118         4)
12119                     $cat >>try.c <<'EOCP'
12120         check("4294967295", 4294967295UL, 0);
12121         check("4294967296", 4294967295UL, ERANGE);
12122 #if 0 /* strtoul() for /^-/ strings is undefined. */
12123         check("-1", 4294967295UL, 0);
12124         check("-4294967294", 2, 0);
12125         check("-4294967295", 1, 0);
12126         check("-4294967296", 4294967295UL, ERANGE);
12127         check("-4294967297", 4294967295UL, ERANGE);
12128 #endif
12129 EOCP
12130                 ;;
12131         *)
12132 : Should we write these tests to be more portable by sprintf-ing
12133 : ~0 and then manipulating that char string as input for strtol?
12134                 ;;
12135         esac
12136         $cat >>try.c <<'EOCP'
12137         if (!bad)
12138                 printf("ok\n");
12139         return 0;
12140 }
12141 EOCP
12142         set try
12143         if eval $compile; then
12144                 case "`./try`" in
12145                 ok) echo "Your strtoul() seems to be working okay." ;;
12146                 *) cat <<EOM >&4
12147 Your strtoul() doesn't seem to be working okay.
12148 EOM
12149                    d_strtoul="$undef"
12150                    ;;
12151                 esac
12152         fi
12153         ;;
12154 esac
12155
12156 : see if strtoull exists
12157 set strtoull d_strtoull
12158 eval $inlibc
12159
12160 case "$d_longlong-$d_strtoull" in
12161 "$define-$define")
12162         $cat <<EOM
12163 Checking whether your strtoull() works okay...
12164 EOM
12165         $cat >try.c <<'EOCP'
12166 #include <errno.h>
12167 #ifdef __hpux
12168 #define strtoull __strtoull
12169 #endif
12170 #include <stdio.h>
12171 extern unsigned long long int strtoull(char *s, char **, int); 
12172 static int bad = 0;
12173 int check(char *s, long long eull, int een) {
12174         long long gull;
12175         errno = 0;
12176         gull = strtoull(s, 0, 10);
12177         if (!((gull == eull) && (errno == een)))
12178                 bad++;
12179 }
12180 int main() {
12181         check(" 1",                                        1LL, 0);
12182         check(" 0",                                        0LL, 0);
12183         check("18446744073709551615",  18446744073709551615ULL, 0);
12184         check("18446744073709551616",  18446744073709551615ULL, ERANGE);
12185 #if 0 /* strtoull() for /^-/ strings is undefined. */
12186         check("-1",                    18446744073709551615ULL, 0);
12187         check("-18446744073709551614",                     2LL, 0);
12188         check("-18446744073709551615",                     1LL, 0);
12189         check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
12190         check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
12191 #endif
12192         if (!bad)
12193                 printf("ok\n");
12194 }
12195 EOCP
12196         set try
12197         if eval $compile; then
12198                 case "`./try`" in
12199                 ok) echo "Your strtoull() seems to be working okay." ;;
12200                 *) cat <<EOM >&4
12201 Your strtoull() doesn't seem to be working okay.
12202 EOM
12203                    d_strtoull="$undef"
12204                    ;;
12205                 esac
12206         fi
12207         ;;
12208 esac
12209
12210 : see if strtouq exists
12211 set strtouq d_strtouq
12212 eval $inlibc
12213
12214 case "$d_strtouq" in
12215 "$define")
12216         $cat <<EOM
12217 Checking whether your strtouq() works okay...
12218 EOM
12219         $cat >try.c <<'EOCP'
12220 #include <errno.h>
12221 #include <stdio.h>
12222 extern unsigned long long int strtouq(char *s, char **, int); 
12223 static int bad = 0;
12224 void check(char *s, unsigned long long eull, int een) {
12225         unsigned long long gull;
12226         errno = 0;
12227         gull = strtouq(s, 0, 10);
12228         if (!((gull == eull) && (errno == een)))
12229                 bad++;
12230 }
12231 int main() {
12232         check(" 1",                                        1LL, 0);
12233         check(" 0",                                        0LL, 0);
12234         check("18446744073709551615",  18446744073709551615ULL, 0);
12235         check("18446744073709551616",  18446744073709551615ULL, ERANGE);
12236 #if 0 /* strtouq() for /^-/ strings is undefined. */
12237         check("-1",                    18446744073709551615ULL, 0);
12238         check("-18446744073709551614",                     2LL, 0);
12239         check("-18446744073709551615",                     1LL, 0);
12240         check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
12241         check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
12242 #endif
12243         if (!bad)
12244                 printf("ok\n");
12245         return 0;
12246 }
12247 EOCP
12248         set try
12249         if eval $compile; then
12250                 case "`./try`" in
12251                 ok) echo "Your strtouq() seems to be working okay." ;;
12252                 *) cat <<EOM >&4
12253 Your strtouq() doesn't seem to be working okay.
12254 EOM
12255                    d_strtouq="$undef"
12256                    ;;
12257                 esac
12258         fi
12259         ;;
12260 esac
12261
12262 : see if strxfrm exists
12263 set strxfrm d_strxfrm
12264 eval $inlibc
12265
12266 : see if symlink exists
12267 set symlink d_symlink
12268 eval $inlibc
12269
12270 : see if syscall exists
12271 set syscall d_syscall
12272 eval $inlibc
12273
12274 : see if sysconf exists
12275 set sysconf d_sysconf
12276 eval $inlibc
12277
12278 : see if system exists
12279 set system d_system
12280 eval $inlibc
12281
12282 : see if tcgetpgrp exists
12283 set tcgetpgrp d_tcgetpgrp
12284 eval $inlibc
12285
12286 : see if tcsetpgrp exists
12287 set tcsetpgrp d_tcsetpgrp
12288 eval $inlibc
12289
12290 : see if prototype for telldir is available
12291 echo " "
12292 set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
12293 eval $hasproto
12294
12295 : see if this is a sys/times.h system
12296 set sys/times.h i_systimes
12297 eval $inhdr
12298
12299 : see if times exists
12300 echo " "
12301 if set times val -f d_times; eval $csym; $val; then
12302         echo 'times() found.' >&4
12303         d_times="$define"
12304         inc=''
12305         case "$i_systimes" in
12306         "$define") inc='sys/times.h';;
12307         esac
12308         rp="What is the type returned by times() on this system?"
12309         set clock_t clocktype long stdio.h sys/types.h $inc
12310         eval $typedef_ask
12311 else
12312         echo 'times() NOT found, hope that will do.' >&4
12313         d_times="$undef"
12314         clocktype='int'
12315 fi
12316
12317 : see if truncate exists
12318 set truncate d_truncate
12319 eval $inlibc
12320
12321 : see if tzname[] exists
12322 echo " "
12323 if set tzname val -a d_tzname; eval $csym; $val; then
12324         val="$define"
12325         echo 'tzname[] found.' >&4
12326 else
12327         val="$undef"
12328         echo 'tzname[] NOT found.' >&4
12329 fi
12330 set d_tzname
12331 eval $setvar
12332
12333 : see if umask exists
12334 set umask d_umask
12335 eval $inlibc
12336
12337 : see if ustat exists
12338 set ustat d_ustat
12339 eval $inlibc
12340
12341 : backward compatibility for d_hvfork
12342 if test X$d_hvfork != X; then
12343         d_vfork="$d_hvfork"
12344         d_hvfork=''
12345 fi
12346 : see if there is a vfork
12347 val=''
12348 set vfork val
12349 eval $inlibc
12350
12351 : Ok, but do we want to use it. vfork is reportedly unreliable in 
12352 : perl on Solaris 2.x, and probably elsewhere.
12353 case "$val" in
12354 $define)
12355         echo " "
12356         case "$usevfork" in
12357         false) dflt='n';;
12358         *) dflt='y';;
12359         esac
12360         cat <<'EOM'
12361  
12362 Perl can only use a vfork() that doesn't suffer from strict
12363 restrictions on calling functions or modifying global data in
12364 the child.  For example, glibc-2.1 contains such a vfork()
12365 that is unsuitable.  If your system provides a proper fork()
12366 call, chances are that you do NOT want perl to use vfork().
12367
12368 EOM
12369         rp="Do you still want to use vfork()?"
12370         . ./myread
12371         case "$ans" in
12372         y|Y) ;;
12373         *)
12374                 echo "Ok, we won't use vfork()."
12375                 val="$undef"
12376                 ;;
12377         esac
12378         ;;
12379 esac
12380 set d_vfork
12381 eval $setvar
12382 case "$d_vfork" in
12383 $define) usevfork='true';;
12384 *) usevfork='false';;
12385 esac
12386
12387 : see if this is an sysdir system
12388 set sys/dir.h i_sysdir
12389 eval $inhdr
12390
12391 : see if this is an sysndir system
12392 set sys/ndir.h i_sysndir
12393 eval $inhdr
12394
12395 : see if closedir exists
12396 set closedir d_closedir
12397 eval $inlibc
12398
12399 case "$d_closedir" in
12400 "$define")
12401         echo " "
12402         echo "Checking whether closedir() returns a status..." >&4
12403         cat > closedir.c <<EOM
12404 #$i_dirent I_DIRENT             /**/
12405 #$i_sysdir I_SYS_DIR            /**/
12406 #$i_sysndir I_SYS_NDIR          /**/
12407 #$i_systypes I_SYS_TYPES        /**/
12408
12409 #if defined(I_SYS_TYPES)
12410 #include <sys/types.h>
12411 #endif
12412 #if defined(I_DIRENT)
12413 #include <dirent.h>
12414 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
12415 #include <sys/dir.h>
12416 #endif
12417 #else
12418 #ifdef I_SYS_NDIR
12419 #include <sys/ndir.h>
12420 #else
12421 #ifdef I_SYS_DIR
12422 #ifdef hp9000s500
12423 #include <ndir.h>       /* may be wrong in the future */
12424 #else
12425 #include <sys/dir.h>
12426 #endif
12427 #endif
12428 #endif
12429 #endif 
12430 int main() { return closedir(opendir(".")); }
12431 EOM
12432         set closedir
12433         if eval $compile_ok; then
12434                 if ./closedir > /dev/null 2>&1 ; then
12435                         echo "Yes, it does."
12436                         val="$undef"
12437                 else
12438                         echo "No, it doesn't."
12439                         val="$define"
12440                 fi
12441         else
12442                 echo "(I can't seem to compile the test program--assuming it doesn't)"
12443                 val="$define"
12444         fi
12445         ;;
12446 *)
12447         val="$undef";
12448         ;;
12449 esac
12450 set d_void_closedir
12451 eval $setvar
12452 $rm -f closedir*
12453 : see if there is a wait4
12454 set wait4 d_wait4
12455 eval $inlibc
12456
12457 : see if waitpid exists
12458 set waitpid d_waitpid
12459 eval $inlibc
12460
12461 : see if wcstombs exists
12462 set wcstombs d_wcstombs
12463 eval $inlibc
12464
12465 : see if wctomb exists
12466 set wctomb d_wctomb
12467 eval $inlibc
12468
12469 : preserve RCS keywords in files with variable substitution, grrr
12470 Date='$Date'
12471 Id='$Id'
12472 Log='$Log'
12473 RCSfile='$RCSfile'
12474 Revision='$Revision'
12475
12476 case "$crosscompile" in
12477 ''|[nN]*) crosscompile="$undef" ;;
12478 esac
12479
12480 case "$osname" in
12481 next|rhapsody|darwin) multiarch="$define" ;;
12482 esac
12483 case "$multiarch" in
12484 ''|[nN]*) multiarch="$undef" ;;
12485 esac
12486
12487 : check for alignment requirements
12488 echo " "
12489 case "$crosscompile$multiarch" in
12490 *$define*)
12491         $cat <<EOM
12492 You seem to be either cross-compiling or doing a multiarchitecture build,
12493 skipping the memory alignment check.
12494
12495 EOM
12496         case "$alignbytes" in
12497         '') alignbytes=8 ;;
12498         esac
12499         ;;
12500 *)
12501         case "$alignbytes" in
12502         '') echo "Checking alignment constraints..." >&4
12503                 if $test "X$uselongdouble" = Xdefine -a "X$d_longdbl" = Xdefine; then
12504                         $cat >try.c <<'EOCP'
12505 typedef long double NV;
12506 EOCP
12507                 else
12508                         $cat >try.c <<'EOCP'
12509 typedef double NV;
12510 EOCP
12511                 fi
12512                 $cat >>try.c <<'EOCP'
12513 #include <stdio.h>
12514 struct foobar {
12515         char foo;
12516         NV bar;
12517 } try_algn;
12518 int main()
12519 {
12520     printf("%d\n", (int)((char *)&try_algn.bar - (char *)&try_algn.foo));
12521     return(0);
12522 }
12523 EOCP
12524                 set try
12525                 if eval $compile_ok; then
12526                         dflt=`./try`
12527                 else
12528                         dflt='8'
12529                         echo "(I can't seem to compile the test program...)"
12530                 fi
12531                 ;;
12532         *) dflt="$alignbytes"
12533                 ;;
12534         esac
12535         rp="Doubles must be aligned on a how-many-byte boundary?"
12536         . ./myread
12537         alignbytes="$ans"
12538         $rm -f try.c try
12539         ;;
12540 esac
12541
12542
12543 : set the base revision
12544 baserev=5.0
12545
12546 : check for ordering of bytes in a long
12547 echo " "
12548 case "$crosscompile$multiarch" in
12549 *$define*)
12550         $cat <<EOM
12551 You seem to be either cross-compiling or doing a multiarchitecture build,
12552 skipping the byteorder check.
12553
12554 EOM
12555         byteorder='0xffff'
12556         ;;
12557 *)
12558         case "$byteorder" in
12559         '')
12560                 $cat <<'EOM'
12561 In the following, larger digits indicate more significance.  A big-endian
12562 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
12563 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
12564 machines may have weird orders like 3412.  A Cray will report 87654321,
12565 an Alpha will report 12345678. If the test program works the default is
12566 probably right.
12567 I'm now running the test program...
12568 EOM
12569                 $cat >try.c <<'EOCP'
12570 #include <stdio.h>
12571 int main()
12572 {
12573         int i;
12574         union {
12575                 unsigned long l;
12576                 char c[sizeof(long)];
12577         } u;
12578
12579         if (sizeof(long) > 4)
12580                 u.l = (0x08070605L << 32) | 0x04030201L;
12581         else
12582                 u.l = 0x04030201L;
12583         for (i = 0; i < sizeof(long); i++)
12584                 printf("%c", u.c[i]+'0');
12585         printf("\n");
12586         exit(0);
12587 }
12588 EOCP
12589                 xxx_prompt=y
12590                 set try
12591                 if eval $compile && ./try > /dev/null; then
12592                         dflt=`./try`
12593                         case "$dflt" in
12594                         [1-4][1-4][1-4][1-4]|12345678|87654321)
12595                                 echo "(The test program ran ok.)"
12596                                 echo "byteorder=$dflt"
12597                                 xxx_prompt=n
12598                         ;;
12599                         ????|????????) echo "(The test program ran ok.)" ;;
12600                         *) echo "(The test program didn't run right for some reason.)" ;;
12601                         esac
12602                 else
12603                         dflt='4321'
12604                         cat <<'EOM'
12605 (I can't seem to compile the test program.  Guessing big-endian...)
12606 EOM
12607                 fi
12608                 case "$xxx_prompt" in
12609                 y)
12610                         rp="What is the order of bytes in a long?"
12611                         . ./myread
12612                         byteorder="$ans"
12613                         ;;
12614                 *)      byteorder=$dflt
12615                         ;;
12616                 esac
12617                 ;;
12618         esac
12619         $rm -f try.c try
12620         ;;
12621 esac
12622
12623
12624 : how do we catenate cpp tokens here?
12625 echo " "
12626 echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
12627 $cat >cpp_stuff.c <<'EOCP'
12628 #define RCAT(a,b)a/**/b
12629 #define ACAT(a,b)a ## b
12630 RCAT(Rei,ser)
12631 ACAT(Cir,cus)
12632 EOCP
12633 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
12634 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
12635         echo "Oh!  Smells like ANSI's been here." >&4
12636         echo "We can catify or stringify, separately or together!"
12637         cpp_stuff=42
12638 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
12639         echo "Ah, yes!  The good old days!" >&4
12640         echo "However, in the good old days we don't know how to stringify and"
12641         echo "catify at the same time."
12642         cpp_stuff=1
12643 else
12644         $cat >&4 <<EOM
12645 Hmm, I don't seem to be able to catenate tokens with your cpp.  You're going
12646 to have to edit the values of CAT[2-5] in config.h...
12647 EOM
12648         cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
12649 fi
12650 $rm -f cpp_stuff.*
12651
12652 : see if this is a db.h system
12653 set db.h i_db
12654 eval $inhdr
12655
12656 case "$i_db" in
12657 $define)
12658         : Check db version.
12659         echo " "
12660         echo "Checking Berkeley DB version ..." >&4
12661         $cat >try.c <<EOCP
12662 #$d_const HASCONST
12663 #ifndef HASCONST
12664 #define const
12665 #endif
12666 #include <sys/types.h>
12667 #include <stdio.h>
12668 #include <db.h>
12669 int main()
12670 {
12671 #ifdef DB_VERSION_MAJOR /* DB version >= 2 */
12672     int Major, Minor, Patch ;
12673     unsigned long Version ;
12674     (void)db_version(&Major, &Minor, &Patch) ;
12675     printf("You have Berkeley DB Version 2 or greater\n");
12676
12677     printf("db.h is from Berkeley DB Version %d.%d.%d\n",
12678                 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
12679     printf("libdb is from Berkeley DB Version %d.%d.%d\n",
12680                 Major, Minor, Patch) ;
12681
12682     /* check that db.h & libdb are compatible */
12683     if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
12684         printf("db.h and libdb are incompatible\n") ;
12685         exit(3);        
12686     }
12687
12688     printf("db.h and libdb are compatible\n") ;
12689
12690     Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
12691                 + DB_VERSION_PATCH ;
12692
12693     /* needs to be >= 2.3.4 */
12694     if (Version < 2003004) {
12695     /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
12696         printf("but Perl needs Berkeley DB 2.3.4 or greater\n") ;
12697         exit(2);        
12698     }
12699
12700     exit(0);
12701 #else
12702 #if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
12703     printf("You have Berkeley DB Version 1\n");
12704     exit(0);    /* DB version < 2: the coast is clear. */
12705 #else
12706     exit(1);    /* <db.h> not Berkeley DB? */
12707 #endif
12708 #endif
12709 }
12710 EOCP
12711         set try
12712         if eval $compile_ok && ./try; then
12713                 echo 'Looks OK.' >&4
12714         else
12715                 echo "I can't use Berkeley DB with your <db.h>.  I'll disable Berkeley DB." >&4
12716                 i_db=$undef
12717                 case " $libs " in
12718                 *"-ldb "*)
12719                         : Remove db from list of libraries to use
12720                         echo "Removing unusable -ldb from library list" >&4
12721                         set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
12722                         shift
12723                         libs="$*"
12724                         echo "libs = $libs" >&4
12725                         ;;
12726                 esac
12727         fi
12728         $rm -f try.*
12729         ;;
12730 esac
12731
12732 case "$i_db" in
12733 define)
12734         : Check the return type needed for hash 
12735         echo " "
12736         echo "Checking return type needed for hash for Berkeley DB ..." >&4
12737         $cat >try.c <<EOCP
12738 #$d_const HASCONST
12739 #ifndef HASCONST
12740 #define const
12741 #endif
12742 #include <sys/types.h>
12743 #include <db.h>
12744
12745 #ifndef DB_VERSION_MAJOR
12746 u_int32_t hash_cb (ptr, size)
12747 const void *ptr;
12748 size_t size;
12749 {
12750 }
12751 HASHINFO info;
12752 int main()
12753 {
12754         info.hash = hash_cb;
12755 }
12756 #endif
12757 EOCP
12758         if $cc $ccflags -c try.c >try.out 2>&1 ; then
12759                 if $contains warning try.out >>/dev/null 2>&1 ; then
12760                         db_hashtype='int'
12761                 else
12762                         db_hashtype='u_int32_t'
12763                 fi
12764         else
12765                 : XXX Maybe we should just give up here.
12766                 db_hashtype=u_int32_t
12767                 $cat try.out >&4
12768                 echo "Help:  I can't seem to compile the db test program." >&4
12769                 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
12770         fi
12771         $rm -f try.*
12772         echo "Your version of Berkeley DB uses $db_hashtype for hash."
12773         ;;
12774 *)      db_hashtype=u_int32_t
12775         ;;
12776 esac
12777 case "$i_db" in
12778 define)
12779         : Check the return type needed for prefix 
12780         echo " "
12781         echo "Checking return type needed for prefix for Berkeley DB ..." >&4
12782         cat >try.c <<EOCP
12783 #$d_const HASCONST
12784 #ifndef HASCONST
12785 #define const
12786 #endif
12787 #include <sys/types.h>
12788 #include <db.h>
12789
12790 #ifndef DB_VERSION_MAJOR
12791 size_t prefix_cb (key1, key2)
12792 const DBT *key1;
12793 const DBT *key2;
12794 {
12795 }
12796 BTREEINFO info;
12797 int main()
12798 {
12799         info.prefix = prefix_cb;
12800 }
12801 #endif
12802 EOCP
12803         if $cc $ccflags -c try.c  >try.out 2>&1 ; then
12804                 if $contains warning try.out >>/dev/null 2>&1 ; then
12805                         db_prefixtype='int'
12806                 else
12807                         db_prefixtype='size_t'
12808                 fi
12809         else
12810                 db_prefixtype='size_t'
12811                 : XXX Maybe we should just give up here.
12812                 $cat try.out >&4
12813                 echo "Help:  I can't seem to compile the db test program." >&4
12814                 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
12815         fi
12816         $rm -f try.*
12817         echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
12818         ;;
12819 *)      db_prefixtype='size_t'
12820         ;;
12821 esac
12822
12823 : check for void type
12824 echo " "
12825 echo "Checking to see how well your C compiler groks the void type..." >&4
12826 case "$voidflags" in
12827 '')
12828         $cat >try.c <<'EOCP'
12829 #if TRY & 1
12830 void sub() {
12831 #else
12832 sub() {
12833 #endif
12834         extern void moo();      /* function returning void */
12835         void (*goo)();          /* ptr to func returning void */
12836 #if TRY & 8
12837         void *hue;              /* generic ptr */
12838 #endif
12839 #if TRY & 2
12840         void (*foo[10])();
12841 #endif
12842
12843 #if TRY & 4
12844         if(goo == moo) {
12845                 exit(0);
12846         }
12847 #endif
12848         exit(0);
12849 }
12850 int main() { sub(); }
12851 EOCP
12852         if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
12853                 voidflags=$defvoidused
12854         echo "Good.  It appears to support void to the level $package wants.">&4
12855                 if $contains warning .out >/dev/null 2>&1; then
12856                         echo "However, you might get some warnings that look like this:"
12857                         $cat .out
12858                 fi
12859         else
12860 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
12861                 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
12862                         echo "It supports 1..."
12863                         if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
12864                                 echo "It also supports 2..."
12865                                 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
12866                                         voidflags=7
12867                                         echo "And it supports 4 but not 8 definitely."
12868                                 else
12869                                         echo "It doesn't support 4..."
12870                                         if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
12871                                                 voidflags=11
12872                                                 echo "But it supports 8."
12873                                         else
12874                                                 voidflags=3
12875                                                 echo "Neither does it support 8."
12876                                         fi
12877                                 fi
12878                         else
12879                                 echo "It does not support 2..."
12880                                 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
12881                                         voidflags=13
12882                                         echo "But it supports 4 and 8."
12883                                 else
12884                                         if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
12885                                                 voidflags=5
12886                                                 echo "And it supports 4 but has not heard about 8."
12887                                         else
12888                                                 echo "However it supports 8 but not 4."
12889                                         fi
12890                                 fi
12891                         fi
12892                 else
12893                         echo "There is no support at all for void."
12894                         voidflags=0
12895                 fi
12896         fi
12897 esac
12898 case "$voidflags" in
12899 "$defvoidused") ;;
12900 *)      $cat >&4 <<'EOM'
12901   Support flag bits are:
12902     1: basic void declarations.
12903     2: arrays of pointers to functions returning void.
12904     4: operations between pointers to and addresses of void functions.
12905     8: generic void pointers.
12906 EOM
12907         dflt="$voidflags";
12908         rp="Your void support flags add up to what?"
12909         . ./myread
12910         voidflags="$ans"
12911         ;;
12912 esac
12913 $rm -f try.* .out
12914
12915
12916 : How can we generate normalized random numbers ?
12917 echo " "
12918 echo "Looking for a random number function..." >&4
12919 case "$randfunc" in
12920 '')
12921         if set drand48 val -f; eval $csym; $val; then
12922                 dflt="drand48"
12923                 echo "Good, found drand48()." >&4
12924         elif set random val -f; eval $csym; $val; then
12925                 dflt="random"
12926                 echo "OK, found random()." >&4
12927         else
12928                 dflt="rand"
12929                 echo "Yick, looks like I have to use rand()." >&4
12930         fi
12931         echo " "
12932         ;;
12933 *)
12934         dflt="$randfunc"
12935         ;;
12936 esac
12937 cont=true
12938
12939 case "$ccflags" in
12940 *-Dmy_rand=*|*-Dmy_srand=*)
12941         echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
12942         ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
12943         ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
12944         ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
12945         ;;
12946 esac
12947
12948 while $test "$cont"; do
12949         rp="Use which function to generate random numbers?"
12950         . ./myread
12951         if $test "$ans" = "$dflt"; then
12952                 : null
12953         else
12954                 randbits=''
12955         fi
12956         randfunc="$ans"
12957         if set $ans val -f; eval $csym; $val; then
12958                 cont=''
12959         else
12960                 dflt=y
12961                 rp="I cannot find function $ans. Use that name anyway?"
12962                 . ./myread
12963                 dflt=rand
12964                 case "$ans" in
12965                         [yY]*) cont='';;
12966                 esac
12967         fi
12968         case "$cont" in
12969         '')
12970                 case "$randfunc" in
12971                 drand48)
12972                         drand01="drand48()"
12973                         seedfunc="srand48"
12974                         randbits=48
12975                         randseedtype=long
12976                         ;;
12977                 rand|random)
12978                         case "$randbits" in
12979                         '')
12980 echo "Checking to see how many bits your $randfunc() function produces..." >&4
12981                                 $cat >try.c <<EOCP
12982 #$i_unistd I_UNISTD
12983 #$i_stdlib I_STDLIB
12984 #include <stdio.h>
12985 #ifdef I_UNISTD
12986 #  include <unistd.h>
12987 #endif
12988 #ifdef I_STDLIB
12989 #  include <stdlib.h>
12990 #endif
12991 int main()
12992 {
12993         register int i;
12994         register unsigned long tmp;
12995         register unsigned long max = 0L;
12996
12997         for (i = 1000; i; i--) {
12998                 tmp = (unsigned long) $randfunc();
12999                 if (tmp > max) max = tmp;
13000         }
13001         for (i = 0; max; i++)
13002                 max /= 2;
13003         printf("%d\n",i);
13004 }
13005 EOCP
13006                                 set try
13007                                 if eval $compile_ok; then
13008                                         dflt=`try`
13009                                 else
13010                                         dflt='?'
13011                                         echo "(I can't seem to compile the test program...)"
13012                                 fi
13013                                 ;;
13014                         *)
13015                                 dflt="$randbits"
13016                                 ;;
13017                         esac
13018                         rp="How many bits does your $randfunc() function produce?"
13019                         . ./myread
13020                         randbits="$ans"
13021                         $rm -f try.c try
13022                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
13023                         seedfunc="s$randfunc"
13024                         randseedtype=unsigned
13025                         ;;
13026                 *)
13027                         dflt="31"
13028                         rp="How many bits does your $randfunc() function produce?"
13029                         . ./myread
13030                         randbits="$ans"
13031                         seedfunc="s$randfunc"
13032                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
13033                         if set $seedfunc val -f; eval $csym; $val; then
13034                                 echo "(Using $seedfunc() to seed random generator)"
13035                         else
13036                                 echo "(Warning: no $seedfunc() to seed random generator)"
13037                                 seedfunc=rand
13038                         fi
13039                         randseedtype=unsigned
13040                         ;;
13041                 esac
13042                 ;;
13043         esac
13044 done
13045
13046 echo " "
13047 echo "Determining whether or not we are on an EBCDIC system..." >&4
13048 $cat >tebcdic.c <<'EOM'
13049 int main()
13050 {
13051   if ('M'==0xd4) return 0;
13052   return 1;
13053 }
13054 EOM
13055
13056 val=$undef
13057 set tebcdic
13058 if eval $compile_ok; then
13059         if ./tebcdic; then
13060                 echo "You seem to speak EBCDIC." >&4
13061                 val="$define"
13062         else
13063                 echo "Nope, no EBCDIC, probably ASCII or some ISO Latin. Or UTF8." >&4
13064         fi
13065 else
13066         echo "I'm unable to compile the test program." >&4
13067         echo "I'll assume ASCII or some ISO Latin. Or UTF8." >&4
13068 fi
13069 $rm -f tebcdic.c tebcdic
13070 set ebcdic
13071 eval $setvar
13072
13073 echo " "
13074 $cat >&4 <<EOM
13075 Checking how to flush all pending stdio output...
13076 EOM
13077 # I only know how to find the first 32 possibly open files on SunOS.
13078 # See also hints/sunos_4_1.sh and util.c  --AD
13079 case "$osname" in
13080 sunos) $echo '#define PERL_FFLUSH_ALL_FOPEN_MAX 32' > try.c ;;
13081 esac
13082 $cat >>try.c <<EOCP
13083 #include <stdio.h>
13084 #$i_unistd I_UNISTD
13085 #ifdef I_UNISTD
13086 # include <unistd.h>
13087 #endif
13088 #$d_sysconf HAS_SYSCONF
13089 #$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY
13090 #ifdef HAS_STDIO_STREAM_ARRAY
13091 # define STDIO_STREAM_ARRAY $stdio_stream_array
13092 #endif
13093 int main() {
13094   FILE* p = fopen("try.out", "w");
13095 #ifdef TRY_FPUTC
13096   fputc('x', p);
13097 #else
13098 # ifdef TRY_FPRINTF
13099   fprintf(p, "x");
13100 # endif
13101 #endif
13102 #ifdef TRY_FFLUSH_NULL
13103   fflush(NULL);
13104 #endif
13105 #ifdef TRY_FFLUSH_ALL
13106   {
13107     long open_max = -1;
13108 # ifdef PERL_FFLUSH_ALL_FOPEN_MAX
13109     open_max = PERL_FFLUSH_ALL_FOPEN_MAX;
13110 # else
13111 #  if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
13112     open_max = sysconf(_SC_OPEN_MAX);
13113 #  else
13114 #   ifdef FOPEN_MAX
13115     open_max = FOPEN_MAX;
13116 #   else
13117 #    ifdef OPEN_MAX
13118     open_max = OPEN_MAX;
13119 #    else
13120 #     ifdef _NFILE
13121     open_max = _NFILE;
13122 #     endif
13123 #    endif
13124 #   endif
13125 #  endif
13126 # endif 
13127 # ifdef HAS_STDIO_STREAM_ARRAY
13128     if (open_max > 0) {
13129       long i;
13130       for (i = 0; i < open_max; i++)
13131             if (STDIO_STREAM_ARRAY[i]._file >= 0 &&
13132                 STDIO_STREAM_ARRAY[i]._file < open_max &&
13133                 STDIO_STREAM_ARRAY[i]._flag)
13134                 fflush(&STDIO_STREAM_ARRAY[i]);
13135     }   
13136   }
13137 # endif
13138 #endif
13139   _exit(42);
13140 }
13141 EOCP
13142 : first we have to find out how _not_ to flush
13143 if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
13144     output=''
13145     set try -DTRY_FPUTC
13146     if eval $compile; then
13147             $rm -f try.out
13148             ./try$exe_ext 2>/dev/null
13149             if $test ! -s try.out -a "X$?" = X42; then
13150                 output=-DTRY_FPUTC
13151             fi
13152     fi
13153     case "$output" in
13154     '')
13155             set try -DTRY_FPRINTF
13156             $rm -f try.out
13157             if eval $compile; then
13158                     $rm -f try.out
13159                     ./try$exe_ext 2>/dev/null
13160                     if $test ! -s try.out -a "X$?" = X42; then
13161                         output=-DTRY_FPRINTF
13162                     fi
13163             fi
13164         ;;
13165     esac
13166 fi
13167 : check for fflush NULL behaviour
13168 case "$fflushNULL" in
13169 '')     set try -DTRY_FFLUSH_NULL $output
13170         if eval $compile; then
13171                 $rm -f try.out
13172                 ./try$exe_ext 2>/dev/null
13173                 code="$?"
13174                 if $test -s try.out -a "X$code" = X42; then
13175                         fflushNULL="`$cat try.out`"
13176                 else
13177                         if $test "X$code" != X42; then
13178                                 $cat >&4 <<EOM
13179 (If this test failed, don't worry, we'll try another method shortly.)
13180 EOM
13181                         fi
13182                 fi
13183         fi
13184         $rm -f core try.core core.try.*
13185         case "$fflushNULL" in
13186         x)      $cat >&4 <<EOM
13187 Your fflush(NULL) works okay for output streams.
13188 Let's see if it clobbers input pipes...
13189 EOM
13190 # As of mid-March 2000 all versions of Solaris appear to have a stdio
13191 # bug that improperly flushes the input end of pipes.  So we avoid the
13192 # autoflush on fork/system/exec support for now. :-(
13193 $cat >tryp.c <<EOCP
13194 #include <stdio.h>
13195 int
13196 main(int argc, char **argv)
13197 {
13198     char buf[1024];
13199     int i;
13200     char *bp = buf;
13201     while (1) {
13202         while ((i = getc(stdin)) != -1
13203                && (*bp++ = i) != '\n'
13204                && bp < &buf[1024])
13205         /* DO NOTHING */ ;
13206         *bp = '\0';
13207         fprintf(stdout, "%s", buf);
13208         fflush(NULL);
13209         if (i == -1)
13210             return 0;
13211         bp = buf;
13212     }
13213 }
13214 EOCP
13215                 fflushNULL="$define"
13216                 set tryp
13217                 if eval $compile; then
13218                     $rm -f tryp.out
13219                     $cat tryp.c | ./tryp$exe_ext 2>/dev/null > tryp.out
13220                     if cmp tryp.c tryp.out >/dev/null 2>&1; then
13221                        $cat >&4 <<EOM
13222 fflush(NULL) seems to behave okay with input streams.
13223 EOM
13224                         fflushNULL="$define"
13225                     else
13226                         $cat >&4 <<EOM
13227 Ouch, fflush(NULL) clobbers input pipes!  We will not use it.
13228 EOM
13229                         fflushNULL="$undef"
13230                     fi
13231                 fi
13232                 $rm -f core tryp.c tryp.core core.tryp.*
13233                 ;;
13234         '')     $cat >&4 <<EOM
13235 Your fflush(NULL) isn't working (contrary to ANSI C).
13236 EOM
13237                 fflushNULL="$undef"
13238                 ;;
13239         *)      $cat >&4 <<EOM
13240 Cannot figure out whether your fflush(NULL) works or not.
13241 I'm assuming it doesn't (contrary to ANSI C).
13242 EOM
13243                 fflushNULL="$undef"
13244                 ;;
13245         esac
13246         ;;
13247 $define|true|[yY]*)
13248         fflushNULL="$define"
13249         ;;
13250 *)
13251         fflushNULL="$undef"
13252         ;;
13253 esac
13254 : check explicit looping only if NULL did not work, and if the pipe
13255 : bug does not show up on an explicit flush too
13256 case "$fflushNULL" in
13257 "$undef")
13258         $cat >tryp.c <<EOCP
13259 #include <stdio.h>
13260 int
13261 main(int argc, char **argv)
13262 {
13263     char buf[1024];
13264     int i;
13265     char *bp = buf;
13266     while (1) {
13267         while ((i = getc(stdin)) != -1
13268                && (*bp++ = i) != '\n'
13269                && bp < &buf[1024])
13270         /* DO NOTHING */ ;
13271         *bp = '\0';
13272         fprintf(stdout, "%s", buf);
13273         fflush(stdin);
13274         if (i == -1)
13275             return 0;
13276         bp = buf;
13277     }
13278 }
13279 EOCP
13280         set tryp
13281         if eval $compile; then
13282             $rm -f tryp.out
13283             $cat tryp.c | ./tryp$exe_ext 2>/dev/null > tryp.out
13284             if cmp tryp.c tryp.out >/dev/null 2>&1; then
13285                $cat >&4 <<EOM
13286 Good, at least fflush(stdin) seems to behave okay when stdin is a pipe.
13287 EOM
13288                 : now check for fflushall behaviour
13289                 case "$fflushall" in
13290                 '')     set try -DTRY_FFLUSH_ALL $output
13291                         if eval $compile; then
13292                                 $cat >&4 <<EOM
13293 (Now testing the other method--but note that this also may fail.)
13294 EOM
13295                                 $rm -f try.out
13296                                 ./try$exe_ext 2>/dev/null
13297                                 if $test -s try.out -a "X$?" = X42; then
13298                                         fflushall="`$cat try.out`"
13299                                 fi
13300                         fi
13301                         $rm -f core try.core core.try.*
13302                         case "$fflushall" in
13303                         x)      $cat >&4 <<EOM
13304 Whew. Flushing explicitly all the stdio streams works.
13305 EOM
13306                                 fflushall="$define"
13307                                 ;;
13308                         '')     $cat >&4 <<EOM
13309 Sigh. Flushing explicitly all the stdio streams doesn't work.
13310 EOM
13311                                 fflushall="$undef"
13312                                 ;;
13313                         *)      $cat >&4 <<EOM
13314 Cannot figure out whether flushing stdio streams explicitly works or not.
13315 I'm assuming it doesn't.
13316 EOM
13317                                 fflushall="$undef"
13318                                 ;;
13319                         esac
13320                         ;;
13321                 "$define"|true|[yY]*)
13322                         fflushall="$define"
13323                         ;;
13324                 *)
13325                         fflushall="$undef"
13326                         ;;
13327                 esac
13328             else
13329                 $cat >&4 <<EOM
13330 All is futile.  Even fflush(stdin) clobbers input pipes!
13331 EOM
13332                 fflushall="$undef"
13333             fi
13334         else
13335             fflushall="$undef"
13336         fi
13337         $rm -f core tryp.c tryp.core core.tryp.*
13338         ;;
13339 *)      fflushall="$undef"
13340         ;;
13341 esac
13342
13343 case "$fflushNULL$fflushall" in
13344 undefundef)
13345         $cat <<EOM
13346 OK, I give up.  I cannot figure out how to flush pending stdio output.
13347 We won't be flushing handles at all before fork/exec/popen.
13348 EOM
13349         ;;
13350 esac
13351 $rm -f try.* try$exe_ext
13352
13353 : Store the full pathname to the ar program for use in the C program
13354 : Respect a hint or command line value for full_ar.
13355 case "$full_ar" in
13356 '') full_ar=$ar ;;
13357 esac
13358
13359 : Store the full pathname to the sed program for use in the C program
13360 full_sed=$sed
13361
13362 : see what type gids are declared as in the kernel
13363 echo " "
13364 echo "Looking for the type for group ids returned by getgid()."
13365 set gid_t gidtype xxx stdio.h sys/types.h
13366 eval $typedef
13367 case "$gidtype" in
13368 xxx)
13369         xxx=`./findhdr sys/user.h`
13370         set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
13371         case $1 in
13372         unsigned) dflt="$1 $2" ;;
13373         *) dflt="$1" ;;
13374         esac
13375         ;;
13376 *) dflt="$gidtype";;
13377 esac
13378 case "$gidtype" in
13379 gid_t) echo "gid_t found." ;;
13380 *)      rp="What is the type for group ids returned by getgid()?"
13381         . ./myread
13382         gidtype="$ans"
13383         ;;
13384 esac
13385
13386 echo " "
13387 case "$gidtype" in
13388 *_t) zzz="$gidtype"     ;;
13389 *)   zzz="gid"          ;;
13390 esac
13391 echo "Checking the size of $zzz..." >&4 
13392 cat > try.c <<EOCP
13393 #include <sys/types.h>
13394 #include <stdio.h>
13395 int main() {
13396     printf("%d\n", (int)sizeof($gidtype));
13397     exit(0);
13398 }
13399 EOCP
13400 set try
13401 if eval $compile_ok; then
13402         yyy=`./try`
13403         case "$yyy" in
13404         '')     gidsize=4
13405                 echo "(I can't execute the test program--guessing $gidsize.)" >&4
13406                 ;;
13407         *)      gidsize=$yyy
13408                 echo "Your $zzz is $gidsize bytes long."
13409                 ;;
13410         esac
13411 else
13412         gidsize=4
13413         echo "(I can't compile the test program--guessing $gidsize.)" >&4
13414 fi
13415
13416
13417 echo " "
13418 case "$gidtype" in
13419 *_t) zzz="$gidtype"     ;;
13420 *)   zzz="gid"          ;;
13421 esac
13422 echo "Checking the sign of $zzz..." >&4 
13423 cat > try.c <<EOCP
13424 #include <sys/types.h>
13425 #include <stdio.h>
13426 int main() {
13427         $gidtype foo = -1;
13428         if (foo < 0)
13429                 printf("-1\n");
13430         else
13431                 printf("1\n");
13432 }
13433 EOCP
13434 set try
13435 if eval $compile; then
13436         yyy=`./try`
13437         case "$yyy" in
13438         '')     gidsign=1
13439                 echo "(I can't execute the test program--guessing unsigned.)" >&4
13440                 ;;
13441         *)      gidsign=$yyy
13442                 case "$gidsign" in
13443                  1) echo "Your $zzz is unsigned." ;;
13444                 -1) echo "Your $zzz is signed."   ;;
13445                 esac
13446                 ;;
13447         esac
13448 else
13449         gidsign=1
13450         echo "(I can't compile the test program--guessing unsigned.)" >&4
13451 fi
13452
13453
13454 echo " "
13455
13456 if $test X"$quadtype" != X; then
13457
13458 echo "Checking how to print 64-bit integers..." >&4
13459
13460 if $test X"$sPRId64" = X -a X"$quadtype" = Xint; then
13461         $cat >try.c <<'EOCP'
13462 #include <sys/types.h>
13463 #include <stdio.h>
13464 int main() {
13465   int q = 12345678901;
13466   printf("%ld\n", q);
13467 }
13468 EOCP
13469         set try
13470         if eval $compile; then
13471                 yyy=`./try$exe_ext`
13472                 case "$yyy" in
13473                 12345678901)
13474                         sPRId64='"d"'; sPRIi64='"i"'; sPRIu64='"u"';
13475                         sPRIo64='"o"'; sPRIx64='"x"'; sPRIXU64='"X"';
13476                         echo "We will use %d."
13477                         ;;
13478                 esac
13479         fi
13480 fi
13481
13482 if $test X"$sPRId64" = X -a X"$quadtype" = Xlong; then
13483         $cat >try.c <<'EOCP'
13484 #include <sys/types.h>
13485 #include <stdio.h>
13486 int main() {
13487   long q = 12345678901;
13488   printf("%ld\n", q);
13489 }
13490 EOCP
13491         set try
13492         if eval $compile; then
13493                 yyy=`./try$exe_ext`
13494                 case "$yyy" in
13495                 12345678901)
13496                         sPRId64='"ld"'; sPRIi64='"li"'; sPRIu64='"lu"';
13497                         sPRIo64='"lo"'; sPRIx64='"lx"'; sPRIXU64='"lX"';
13498                         echo "We will use %ld."
13499                         ;;
13500                 esac
13501         fi
13502 fi
13503
13504 if $test X"$sPRId64" = X -a X"$i_inttypes" = X"$define" -a X"$quadtype" = Xint64_t; then
13505         $cat >try.c <<'EOCP'
13506 #include <sys/types.h>
13507 #include <inttypes.h>
13508 #include <stdio.h>
13509 int main() {
13510   int64_t q = 12345678901;
13511   printf("%" PRId64 "\n", q);
13512 }
13513 EOCP
13514         set try
13515         if eval $compile; then
13516                 yyy=`./try$exe_ext`
13517                 case "$yyy" in
13518                 12345678901)
13519                         sPRId64=PRId64; sPRIi64=PRIi64; sPRIu64=PRIu64;
13520                         sPRIo64=PRIo64; sPRIx64=PRIx64; sPRIXU64=PRIXU64;
13521                         echo "We will use the C9X style."
13522                         ;;
13523                 esac
13524         fi
13525 fi
13526
13527 if $test X"$sPRId64" = X -a X"$quadtype" = X"long long"; then
13528         $cat >try.c <<'EOCP'
13529 #include <sys/types.h>
13530 #include <stdio.h>
13531 int main() {
13532   long long q = 12345678901LL; /* AIX cc requires the LL suffix. */
13533   printf("%lld\n", q);
13534 }
13535 EOCP
13536         set try
13537         if eval $compile; then
13538                 yyy=`./try$exe_ext`
13539                 case "$yyy" in
13540                 12345678901)
13541                         sPRId64='"lld"'; sPRIi64='"lli"'; sPRIu64='"llu"';
13542                         sPRIo64='"llo"'; sPRIx64='"llx"'; sPRIXU64='"llX"';
13543                         echo "We will use the %lld style."
13544                         ;;
13545                 esac
13546         fi
13547 fi
13548
13549 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
13550         $cat >try.c <<EOCP
13551 #include <sys/types.h>
13552 #include <stdio.h>
13553 int main() {
13554   $quadtype q = 12345678901;
13555   printf("%Ld\n", q);
13556 }
13557 EOCP
13558         set try
13559         if eval $compile; then
13560                 yyy=`./try$exe_ext`
13561                 case "$yyy" in
13562                 12345678901)
13563                         sPRId64='"Ld"'; sPRIi64='"Li"'; sPRIu64='"Lu"';
13564                         sPRIo64='"Lo"'; sPRIx64='"Lx"'; sPRIXU64='"LX"';
13565                         echo "We will use %Ld."
13566                         ;;
13567                 esac
13568         fi
13569 fi
13570
13571 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
13572         $cat >try.c <<EOCP
13573 #include <sys/types.h>
13574 #include <stdio.h>
13575 int main() {
13576   $quadtype q = 12345678901;
13577   printf("%qd\n", q);
13578 }
13579 EOCP
13580         set try
13581         if eval $compile; then
13582                 yyy=`./try$exe_ext`
13583                 case "$yyy" in
13584                 12345678901)
13585                         sPRId64='"qd"'; sPRIi64='"qi"'; sPRIu64='"qu"';
13586                         sPRIo64='"qo"'; sPRIx64='"qx"'; sPRIXU64='"qX"';
13587                         echo "We will use %qd."
13588                         ;;
13589                 esac
13590         fi
13591 fi
13592
13593 if $test X"$sPRId64" = X; then
13594         echo "Cannot figure out how to print 64-bit integers." >&4
13595 fi
13596
13597 $rm -f try try.*
13598
13599 fi
13600
13601 case "$sPRId64" in
13602 '')     d_PRId64="$undef"; d_PRIi64="$undef"; d_PRIu64="$undef"; 
13603         d_PRIo64="$undef"; d_PRIx64="$undef"; d_PRIXU64="$undef"; 
13604         ;;
13605 *)      d_PRId64="$define"; d_PRIi64="$define"; d_PRIu64="$define"; 
13606         d_PRIo64="$define"; d_PRIx64="$define"; d_PRIXU64="$define"; 
13607         ;;
13608 esac
13609
13610
13611 echo " "
13612 $echo "Checking the format strings to be used for Perl's internal types..." >&4
13613
13614 if $test X"$ivsize" = X8; then
13615         ivdformat="$sPRId64"
13616         uvuformat="$sPRIu64"
13617         uvoformat="$sPRIo64"
13618         uvxformat="$sPRIx64"
13619         uvXUformat="$sPRIXU64"
13620 else
13621         if $test X"$ivsize" = X"$longsize"; then
13622                 ivdformat='"ld"'
13623                 uvuformat='"lu"'
13624                 uvoformat='"lo"'
13625                 uvxformat='"lx"'
13626                 uvXUformat='"lX"'
13627         else
13628                 if $test X"$ivsize" = X"$intsize"; then
13629                         ivdformat='"d"'
13630                         uvuformat='"u"'
13631                         uvoformat='"o"'
13632                         uvxformat='"x"'
13633                         uvXUformat='"X"'
13634                 else
13635                         : far out
13636                         if $test X"$ivsize" = X"$shortsize"; then
13637                                 ivdformat='"hd"'
13638                                 uvuformat='"hu"'
13639                                 uvoformat='"ho"'
13640                                 uvxformat='"hx"'
13641                                 uvXUformat='"hX"'
13642                         fi
13643                 fi
13644         fi
13645 fi
13646
13647 if $test X"$uselongdouble" = X"$define" -a X"$d_longdbl" = X"$define" -a X"$d_PRIgldbl" = X"$define"; then
13648         nveformat="$sPRIeldbl"
13649         nvfformat="$sPRIfldbl"
13650         nvgformat="$sPRIgldbl"
13651         nvEUformat="$sPRIEUldbl"
13652         nvFUformat="$sPRIFUldbl"
13653         nvGUformat="$sPRIGUldbl"
13654 else
13655         nveformat='"e"'
13656         nvfformat='"f"'
13657         nvgformat='"g"'
13658         nvEUformat='"E"'
13659         nvFUformat='"F"'
13660         nvGUformat='"G"'
13661 fi
13662
13663 case "$ivdformat" in
13664 '') echo "$0: Fatal: failed to find format strings, cannot continue." >& 4
13665     exit 1
13666     ;;
13667 esac
13668
13669
13670 echo " "
13671 $echo "Checking the format string to be used for gids..." >&4
13672
13673 case "$gidsign" in
13674 -1)     if $test X"$gidsize" = X"$ivsize"; then
13675                 gidformat="$ivdformat"
13676         else
13677                 if $test X"$gidsize" = X"$longsize"; then
13678                         gidformat='"ld"'
13679                 else
13680                         if $test X"$gidsize" = X"$intsize"; then
13681                                 gidformat='"d"'
13682                         else
13683                                 if $test X"$gidsize" = X"$shortsize"; then
13684                                         gidformat='"hd"'
13685                                 fi
13686                         fi
13687                 fi
13688         fi
13689         ;;
13690 *)      if $test X"$gidsize" = X"$uvsize"; then
13691                 gidformat="$uvuformat"
13692         else
13693                 if $test X"$gidsize" = X"$longsize"; then
13694                         gidformat='"lu"'
13695                 else
13696                         if $test X"$gidsize" = X"$intsize"; then
13697                                 gidformat='"u"'
13698                         else
13699                                 if $test X"$gidsize" = X"$shortsize"; then
13700                                         gidformat='"hu"'
13701                                 fi
13702                         fi
13703                 fi
13704         fi
13705         ;;
13706 esac
13707
13708 : see if getgroups exists
13709 set getgroups d_getgrps
13710 eval $inlibc
13711
13712 : see if setgroups exists
13713 set setgroups d_setgrps
13714 eval $inlibc
13715
13716
13717 : Find type of 2nd arg to 'getgroups()' and 'setgroups()'
13718 echo " "
13719 case "$d_getgrps$d_setgrps" in
13720 *define*)
13721         case "$groupstype" in
13722         '') dflt="$gidtype" ;;
13723         *)  dflt="$groupstype" ;;
13724         esac
13725         $cat <<EOM
13726 What type of pointer is the second argument to getgroups() and setgroups()?
13727 Usually this is the same as group ids, $gidtype, but not always.
13728
13729 EOM
13730         rp='What type pointer is the second argument to getgroups() and setgroups()?'
13731         . ./myread
13732         groupstype="$ans"
13733         ;;
13734 *)  groupstype="$gidtype";;
13735 esac
13736
13737 echo " "
13738 echo "Checking if your $make program sets \$(MAKE)..." >&4
13739 case "$make_set_make" in
13740 '')
13741         $sed 's/^X //' > testmake.mak << 'EOF'
13742 Xall:
13743 X       @echo 'maketemp="$(MAKE)"'
13744 EOF
13745         case "`$make -f testmake.mak 2>/dev/null`" in
13746         *maketemp=*) make_set_make='#' ;;
13747         *)      make_set_make="MAKE=$make" ;;
13748         esac
13749         $rm -f testmake.mak
13750         ;;
13751 esac
13752 case "$make_set_make" in
13753 '#') echo "Yup, it does.";;
13754 *) echo "Nope, it doesn't.";;
13755 esac
13756
13757 : see what type is used for mode_t
13758 rp="What is the type used for file modes for system calls (e.g. fchmod())?"
13759 set mode_t modetype int stdio.h sys/types.h
13760 eval $typedef_ask
13761
13762 : see if stdarg is available
13763 echo " "
13764 if $test `./findhdr stdarg.h`; then
13765         echo "<stdarg.h> found." >&4
13766         valstd="$define"
13767 else
13768         echo "<stdarg.h> NOT found." >&4
13769         valstd="$undef"
13770 fi
13771
13772 : see if varags is available
13773 echo " "
13774 if $test `./findhdr varargs.h`; then
13775         echo "<varargs.h> found." >&4
13776 else
13777         echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
13778 fi
13779
13780 : set up the varargs testing programs
13781 $cat > varargs.c <<EOP
13782 #ifdef I_STDARG
13783 #include <stdarg.h>
13784 #endif
13785 #ifdef I_VARARGS
13786 #include <varargs.h>
13787 #endif
13788
13789 #ifdef I_STDARG
13790 int f(char *p, ...)
13791 #else
13792 int f(va_alist)
13793 va_dcl
13794 #endif
13795 {
13796         va_list ap;
13797 #ifndef I_STDARG
13798         char *p;
13799 #endif
13800 #ifdef I_STDARG
13801         va_start(ap,p);
13802 #else
13803         va_start(ap);
13804         p = va_arg(ap, char *);
13805 #endif
13806         va_end(ap);
13807 }
13808 EOP
13809 $cat > varargs <<EOP
13810 $startsh
13811 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
13812         echo "true"
13813 else
13814         echo "false"
13815 fi
13816 $rm -f varargs$_o
13817 EOP
13818 chmod +x varargs
13819
13820 : now check which varargs header should be included
13821 echo " "
13822 i_varhdr=''
13823 case "$valstd" in
13824 "$define")
13825         if `./varargs I_STDARG`; then
13826                 val='stdarg.h'
13827         elif `./varargs I_VARARGS`; then
13828                 val='varargs.h'
13829         fi
13830         ;;
13831 *)
13832         if `./varargs I_VARARGS`; then
13833                 val='varargs.h'
13834         fi
13835         ;;
13836 esac
13837 case "$val" in
13838 '')
13839 echo "I could not find the definition for va_dcl... You have problems..." >&4
13840         val="$undef"; set i_stdarg; eval $setvar
13841         val="$undef"; set i_varargs; eval $setvar
13842         ;;
13843 *) 
13844         set i_varhdr
13845         eval $setvar
13846         case "$i_varhdr" in
13847         stdarg.h)
13848                 val="$define"; set i_stdarg; eval $setvar
13849                 val="$undef"; set i_varargs; eval $setvar
13850                 ;;
13851         varargs.h)
13852                 val="$undef"; set i_stdarg; eval $setvar
13853                 val="$define"; set i_varargs; eval $setvar
13854                 ;;
13855         esac
13856         echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
13857 esac
13858 $rm -f varargs*
13859
13860 : see if we need va_copy
13861 echo " "
13862 case "$i_stdarg" in
13863 "$define")
13864         $cat >try.c <<EOCP
13865 #include <stdarg.h>
13866 #include <stdio.h>
13867 #$i_stdlib I_STDLIB
13868 #ifdef I_STDLIB
13869 #include <stdlib.h>
13870 #endif
13871 #include <signal.h>
13872
13873 int
13874 ivfprintf(FILE *f, const char *fmt, va_list *valp)
13875 {
13876   return vfprintf(f, fmt, *valp);
13877 }
13878  
13879 int    
13880 myvfprintf(FILE *f, const  char *fmt, va_list val)
13881 {
13882   return ivfprintf(f, fmt, &val);
13883 }
13884       
13885 int
13886 myprintf(char *fmt, ...) 
13887 {
13888   va_list val;
13889   va_start(val, fmt);
13890   return myvfprintf(stdout, fmt, val); 
13891 }         
13892
13893 int
13894 main(int ac, char **av)
13895 {
13896   signal(SIGSEGV, exit);
13897
13898   myprintf("%s%cs all right, then\n", "that", '\'');                            
13899   exit(0);      
13900 }
13901 EOCP
13902         set try
13903         if eval $compile && ./try 2>&1 >/dev/null; then
13904                 case "`./try`" in
13905                 "that's all right, then")
13906                         okay=yes
13907                         ;;
13908                 esac
13909         fi
13910         case "$okay" in
13911         yes)    echo "It seems that you don't need va_copy()." >&4
13912                 need_va_copy="$undef"
13913                 ;;
13914         *)      echo "It seems that va_copy() or similar will be needed." >&4
13915                 need_va_copy="$define"
13916                 ;;
13917         esac
13918         $rm -f try.* core core.* *.core *.core.*
13919         ;;
13920 *)      echo "You don't have <stdarg.h>, not checking for va_copy()." >&4
13921         ;;
13922 esac
13923
13924 : define a fucntion to check prototypes
13925 $cat > protochk <<EOSH
13926 $startsh
13927 cc="$cc"
13928 optimize="$optimize"
13929 ccflags="$ccflags"
13930 prototype="$prototype"
13931 define="$define"
13932 rm=$rm
13933 EOSH
13934
13935 $cat >> protochk <<'EOSH'
13936
13937 $rm -f try.c
13938 foo="$1"
13939 shift
13940 while test $# -ge 2; do
13941         case "$1" in
13942                 $define) echo "#include <$2>" >> try.c ;;
13943                 literal) echo "$2" >> try.c ;;
13944         esac
13945     shift 2
13946 done
13947 test "$prototype" = "$define"  && echo '#define CAN_PROTOTYPE' >> try.c
13948 cat >> try.c <<'EOCP'
13949 #ifdef CAN_PROTOTYPE
13950 #define _(args) args
13951 #else
13952 #define _(args) ()
13953 #endif
13954 EOCP
13955 echo "$foo" >> try.c
13956 echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
13957 $cc $optimize $ccflags -c try.c > /dev/null 2>&1
13958 status=$?
13959 $rm -f try.[co]
13960 exit $status
13961 EOSH
13962 chmod +x protochk
13963 $eunicefix protochk
13964
13965 : see what type is used for size_t
13966 rp="What is the type used for the length parameter for string functions?"
13967 set size_t sizetype 'unsigned int' stdio.h sys/types.h
13968 eval $typedef_ask
13969
13970 : check for type of arguments to gethostbyaddr. 
13971 if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
13972         case "$d_gethbyaddr" in
13973         $define)
13974                 $cat <<EOM
13975
13976 Checking to see what type of arguments are accepted by gethostbyaddr().
13977 EOM
13978                 hdrs="$define sys/types.h
13979                         $d_socket sys/socket.h 
13980                         $i_niin netinet/in.h 
13981                         $i_netdb netdb.h
13982                         $i_unistd unistd.h"
13983                 : The first arg can 'char *' or 'void *'
13984                 : The second arg is some of integral type
13985                 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
13986                         for yyy in size_t long int; do
13987                                 case "$netdb_host_type" in
13988                                 '')     try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
13989                                         if ./protochk "$try" $hdrs; then
13990                                                 echo "Your system accepts $xxx for the first arg."
13991                                                 echo "...and $yyy for the second arg."
13992                                                 netdb_host_type="$xxx"
13993                                                 netdb_hlen_type="$yyy"
13994                                         fi
13995                                         ;;
13996                                 esac
13997                         done
13998                 done
13999                 : In case none of those worked, prompt the user.
14000                 case "$netdb_host_type" in
14001                 '')     rp='What is the type for the 1st argument to gethostbyaddr?'
14002                         dflt='char *'
14003                         . ./myread
14004                         netdb_host_type=$ans
14005                         rp='What is the type for the 2nd argument to gethostbyaddr?'
14006                         dflt="$sizetype"
14007                         . ./myread
14008                         netdb_hlen_type=$ans
14009                         ;;
14010                 esac
14011                 ;;
14012         *)      : no gethostbyaddr, so pick harmless defaults
14013                 netdb_host_type='char *'
14014                 netdb_hlen_type="$sizetype"
14015                 ;;
14016         esac
14017         # Remove the "const" if needed. -- but then we'll have a 
14018         # prototype clash!
14019         # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
14020 fi
14021
14022 : check for type of argument to gethostbyname. 
14023 if test "X$netdb_name_type" = X ; then
14024         case "$d_gethbyname" in
14025         $define)
14026                 $cat <<EOM
14027
14028 Checking to see what type of argument is accepted by gethostbyname().
14029 EOM
14030                 hdrs="$define sys/types.h
14031                         $d_socket sys/socket.h 
14032                         $i_niin netinet/in.h 
14033                         $i_netdb netdb.h
14034                         $i_unistd unistd.h"
14035                 for xxx in "const char *" "char *"; do
14036                         case "$netdb_name_type" in
14037                         '')     try="extern struct hostent *gethostbyname($xxx);"
14038                                 if ./protochk "$try" $hdrs; then
14039                                         echo "Your system accepts $xxx."
14040                                         netdb_name_type="$xxx"
14041                                 fi
14042                                 ;;
14043                         esac
14044                 done
14045                 : In case none of those worked, prompt the user.
14046                 case "$netdb_name_type" in
14047                 '')     rp='What is the type for the 1st argument to gethostbyname?'
14048                         dflt='char *'
14049                         . ./myread
14050                         netdb_name_type=$ans
14051                         ;;
14052                 esac
14053                 ;;
14054         *)      : no gethostbyname, so pick harmless default
14055                 netdb_name_type='char *'
14056                 ;;
14057         esac
14058 fi
14059
14060 : check for type of 1st argument to getnetbyaddr. 
14061 if test "X$netdb_net_type" = X ; then
14062         case "$d_getnbyaddr" in
14063         $define)
14064                 $cat <<EOM
14065
14066 Checking to see what type of 1st argument is accepted by getnetbyaddr().
14067 EOM
14068                 hdrs="$define sys/types.h
14069                         $d_socket sys/socket.h 
14070                         $i_niin netinet/in.h 
14071                         $i_netdb netdb.h
14072                         $i_unistd unistd.h"
14073                 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
14074                         case "$netdb_net_type" in
14075                         '')     try="extern struct netent *getnetbyaddr($xxx, int);"
14076                                 if ./protochk "$try" $hdrs; then
14077                                         echo "Your system accepts $xxx."
14078                                         netdb_net_type="$xxx"
14079                                 fi
14080                                 ;;
14081                         esac
14082                 done
14083                 : In case none of those worked, prompt the user.
14084                 case "$netdb_net_type" in
14085                 '')     rp='What is the type for the 1st argument to getnetbyaddr?'
14086                         dflt='long'
14087                         . ./myread
14088                         netdb_net_type=$ans
14089                         ;;
14090                 esac
14091                 ;;
14092         *)      : no getnetbyaddr, so pick harmless default
14093                 netdb_net_type='long'
14094                 ;;
14095         esac
14096 fi
14097 : locate the preferred pager for this system
14098 case "$pager" in
14099 '')
14100         dflt=''
14101         case "$pg" in
14102         /*) dflt=$pg;;
14103         [a-zA-Z]:/*) dflt=$pg;;
14104         esac
14105         case "$more" in
14106         /*) dflt=$more;;
14107         [a-zA-Z]:/*) dflt=$more;;
14108         esac
14109         case "$less" in
14110         /*) dflt=$less;;
14111         [a-zA-Z]:/*) dflt=$less;;
14112         esac
14113         case "$dflt" in
14114         '') dflt=/usr/ucb/more;;
14115         esac
14116         ;;
14117 *) dflt="$pager";;
14118 esac
14119 echo " "
14120 fn=f/
14121 rp='What pager is used on your system?'
14122 . ./getfile
14123 pager="$ans"
14124
14125 : see what type pids are declared as in the kernel
14126 rp="What is the type of process ids on this system?"
14127 set pid_t pidtype int stdio.h sys/types.h
14128 eval $typedef_ask
14129
14130 : Find earliest binary compatible site_perl subdirectory perl can use.
14131 case "$bincompat5005" in
14132 "$define") xs_apiversion='5.005' ;;
14133 *) xs_apiversion=$version ;;   # The current site_perl version.
14134 esac
14135 : Find earliest pure perl site_perl subdirectory perl can use.
14136 : The versioned directories started at 5.005.
14137 pm_apiversion='5.005'
14138
14139 : check for length of pointer
14140 echo " "
14141 case "$ptrsize" in
14142 '')
14143         echo "Checking to see how big your pointers are..." >&4
14144         if test "$voidflags" -gt 7; then
14145                 echo '#define VOID_PTR char *' > try.c
14146         else
14147                 echo '#define VOID_PTR void *' > try.c
14148         fi
14149         $cat >>try.c <<'EOCP'
14150 #include <stdio.h>
14151 int main()
14152 {
14153     printf("%d\n", (int)sizeof(VOID_PTR));
14154     exit(0);
14155 }
14156 EOCP
14157         set try
14158         if eval $compile_ok; then
14159                 ptrsize=`./try`
14160                 echo "Your pointers are $ptrsize bytes long."
14161         else
14162                 dflt='4'
14163                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
14164                 rp="What is the size of a pointer (in bytes)?"
14165                 . ./myread
14166                 ptrsize="$ans"
14167         fi
14168         ;;
14169 esac
14170 $rm -f try.c try
14171
14172 : see if ar generates random libraries by itself
14173 echo " "
14174 echo "Checking how to generate random libraries on your machine..." >&4
14175 echo 'int bar1() { return bar2(); }' > bar1.c
14176 echo 'int bar2() { return 2; }' > bar2.c
14177 $cat > foo.c <<'EOP'
14178 int main() { printf("%d\n", bar1()); exit(0); }
14179 EOP
14180 $cc $ccflags -c bar1.c >/dev/null 2>&1
14181 $cc $ccflags -c bar2.c >/dev/null 2>&1
14182 $cc $ccflags -c foo.c >/dev/null 2>&1
14183 $ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
14184 if $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
14185         ./foobar >/dev/null 2>&1; then
14186         echo "$ar appears to generate random libraries itself."
14187         orderlib=false
14188         ranlib=":"
14189 elif $ar ts bar$_a >/dev/null 2>&1 &&
14190         $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
14191         ./foobar >/dev/null 2>&1; then
14192                 echo "a table of contents needs to be added with '$ar ts'."
14193                 orderlib=false
14194                 ranlib="$ar ts"
14195 else
14196         case "$ranlib" in
14197         :) ranlib='';;
14198         '')
14199                 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
14200                 $test -f $ranlib || ranlib=''
14201                 ;;
14202         esac
14203         if $test -n "$ranlib"; then
14204                 echo "your system has '$ranlib'; we'll use that."
14205                 orderlib=false
14206         else
14207                 echo "your system doesn't seem to support random libraries"
14208                 echo "so we'll use lorder and tsort to order the libraries."
14209                 orderlib=true
14210                 ranlib=":"
14211         fi
14212 fi
14213 $rm -f foo* bar* 
14214
14215 : check for type of arguments to select. 
14216 case "$selecttype" in
14217 '') case "$d_select" in
14218         $define)
14219                 echo " "
14220                 $cat <<EOM
14221 Checking to see what type of arguments are accepted by select().
14222 EOM
14223                 hdrs="$define sys/types.h
14224                         $i_systime sys/time.h 
14225                         $i_sysselct sys/select.h
14226                         $d_socket sys/socket.h"
14227                 : The first arg can be int, unsigned, or size_t
14228                 : The last arg may or may not be 'const'
14229                 val=''
14230                 : void pointer has been seen but using that
14231                 : breaks the selectminbits test
14232                 for xxx in 'fd_set *' 'int *'; do
14233                         for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
14234                                 for tmo in 'struct timeval *' 'const struct timeval *'; do
14235                                         case "$val" in
14236                                         '')     try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
14237                                                 if ./protochk "$try" $hdrs; then
14238                                                         echo "Your system accepts $xxx."
14239                                                         val="$xxx"
14240                                                 fi
14241                                                 ;;
14242                                         esac
14243                                 done
14244                         done
14245                 done
14246                 case "$val" in
14247                 '')     rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
14248                         case "$d_fd_set" in
14249                                 $define) dflt="fd_set *" ;;
14250                                 *)              dflt="int *" ;;
14251                         esac
14252                         . ./myread
14253                         val=$ans
14254                         ;;
14255                 esac
14256                 selecttype="$val"
14257                 ;;
14258         *)      : no select, so pick a harmless default
14259                 selecttype='int *'
14260                 ;;
14261         esac
14262         ;;
14263 esac
14264
14265 : check for the select 'width'
14266 case "$selectminbits" in
14267 '') case "$d_select" in
14268         $define)
14269                 $cat <<EOM
14270
14271 Checking to see on how many bits at a time your select() operates...
14272 EOM
14273                 $cat >try.c <<EOCP
14274 #include <sys/types.h>
14275 #$i_time I_TIME
14276 #$i_systime I_SYS_TIME
14277 #$i_systimek I_SYS_TIME_KERNEL
14278 #ifdef I_TIME
14279 #   include <time.h>
14280 #endif
14281 #ifdef I_SYS_TIME
14282 #   ifdef I_SYS_TIME_KERNEL
14283 #       define KERNEL
14284 #   endif
14285 #   include <sys/time.h>
14286 #   ifdef I_SYS_TIME_KERNEL
14287 #       undef KERNEL
14288 #   endif
14289 #endif
14290 #$i_sysselct I_SYS_SELECT
14291 #ifdef I_SYS_SELECT
14292 #include <sys/select.h>
14293 #endif
14294 #$d_socket HAS_SOCKET
14295 #ifdef HAS_SOCKET
14296 #   include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
14297 #endif
14298 #include <stdio.h>
14299 $selecttype b;
14300 #define S sizeof(*(b))
14301 #define MINBITS 64
14302 #define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
14303 #define NBITS  (NBYTES * 8)
14304 int main() {
14305     char s[NBYTES];
14306     struct timeval t;
14307     int i;
14308     FILE* fp;
14309     int fd;
14310
14311     fclose(stdin);
14312     fp = fopen("try.c", "r");
14313     if (fp == 0)
14314       exit(1);
14315     fd = fileno(fp);
14316     if (fd < 0)
14317       exit(2);
14318     b = ($selecttype)s;
14319     for (i = 0; i < NBITS; i++)
14320         FD_SET(i, b);
14321     t.tv_sec  = 0;
14322     t.tv_usec = 0;
14323     select(fd + 1, b, 0, 0, &t);
14324     for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
14325     printf("%d\n", i + 1);
14326     return 0;
14327 }
14328 EOCP
14329                 set try
14330                 if eval $compile_ok; then
14331                         selectminbits=`./try`
14332                         case "$selectminbits" in
14333                         '')     cat >&4 <<EOM
14334 Cannot figure out on how many bits at a time your select() operates.
14335 I'll play safe and guess it is 32 bits.
14336 EOM
14337                                 selectminbits=32
14338                                 bits="32 bits"
14339                                 ;;
14340                         1)      bits="1 bit" ;;
14341                         *)      bits="$selectminbits bits" ;;
14342                         esac
14343                         echo "Your select() operates on $bits at a time." >&4
14344                 else
14345                         rp='What is the minimum number of bits your select() operates on?'
14346                         case "$byteorder" in
14347                         1234|12345678)  dflt=32 ;;
14348                         *)              dflt=1  ;;
14349                         esac
14350                         . ./myread
14351                         val=$ans
14352                         selectminbits="$val"
14353                 fi
14354                 $rm -f try.* try
14355                 ;;
14356         *)      : no select, so pick a harmless default
14357                 selectminbits='32'
14358                 ;;
14359         esac
14360         ;;
14361 esac
14362
14363 : Trace out the files included by signal.h, then look for SIGxxx names.
14364 : Remove SIGARRAYSIZE used by HPUX.
14365 : Remove SIGSTKSIZE used by Linux.
14366 : Remove SIGSTKSZ used by Posix.
14367 : Remove SIGTYP void lines used by OS2.
14368 : Some cpps, like os390, dont give the file name anywhere
14369 if [ "X$fieldn" = X ]; then
14370         : Just make some guesses.  We check them later.
14371         xxx='/usr/include/signal.h /usr/include/sys/signal.h'
14372 else
14373         xxx=`echo '#include <signal.h>' |
14374         $cppstdin $cppminus $cppflags 2>/dev/null |
14375         $grep '^[       ]*#.*include' | 
14376         $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sort | $uniq`
14377 fi
14378 : Check this list of files to be sure we have parsed the cpp output ok.
14379 : This will also avoid potentially non-existent files, such 
14380 : as ../foo/bar.h
14381 xxxfiles=''
14382 for xx in $xxx /dev/null ; do
14383         $test -f "$xx" && xxxfiles="$xxxfiles $xx"
14384 done
14385 : If we have found no files, at least try signal.h
14386 case "$xxxfiles" in
14387 '')     xxxfiles=`./findhdr signal.h` ;;
14388 esac
14389 xxx=`awk '
14390 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
14391         print substr($2, 4, 20)
14392 }
14393 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
14394         print substr($3, 4, 20)
14395 }' $xxxfiles`
14396 : Append some common names just in case the awk scan failed.
14397 xxx="$xxx ABRT ALRM BUS CANCEL CHLD CLD CONT DIL EMT FPE"
14398 xxx="$xxx FREEZE HUP ILL INT IO IOT KILL LOST LWP PHONE"
14399 xxx="$xxx PIPE POLL PROF PWR QUIT RTMAX RTMIN SEGV STKFLT STOP"
14400 xxx="$xxx SYS TERM THAW TRAP TSTP TTIN TTOU URG USR1 USR2"
14401 xxx="$xxx USR3 USR4 VTALRM WAITING WINCH WIND WINDOW XCPU XFSZ"
14402
14403 : generate a few handy files for later
14404 $cat > signal.c <<'EOCP'
14405 #include <sys/types.h>
14406 #include <signal.h>
14407 #include <stdio.h>
14408 int main() {
14409
14410 /* Strange style to avoid deeply-nested #if/#else/#endif */
14411 #ifndef NSIG
14412 #  ifdef _NSIG
14413 #    define NSIG (_NSIG)
14414 #  endif
14415 #endif
14416
14417 #ifndef NSIG
14418 #  ifdef SIGMAX
14419 #    define NSIG (SIGMAX+1)
14420 #  endif
14421 #endif
14422
14423 #ifndef NSIG
14424 #  ifdef SIG_MAX
14425 #    define NSIG (SIG_MAX+1)
14426 #  endif
14427 #endif
14428
14429 #ifndef NSIG
14430 #  ifdef MAXSIG
14431 #    define NSIG (MAXSIG+1)
14432 #  endif
14433 #endif
14434
14435 #ifndef NSIG
14436 #  ifdef MAX_SIG
14437 #    define NSIG (MAX_SIG+1)
14438 #  endif
14439 #endif
14440
14441 #ifndef NSIG
14442 #  ifdef SIGARRAYSIZE
14443 #    define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
14444 #  endif
14445 #endif
14446
14447 #ifndef NSIG
14448 #  ifdef _sys_nsig
14449 #    define NSIG (_sys_nsig) /* Solaris 2.5 */
14450 #  endif
14451 #endif
14452
14453 /* Default to some arbitrary number that's big enough to get most
14454    of the common signals.
14455 */
14456 #ifndef NSIG
14457 #    define NSIG 50
14458 #endif
14459
14460 printf("NSIG %d\n", NSIG);
14461
14462 #ifndef JUST_NSIG
14463
14464 EOCP
14465
14466 echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
14467 {
14468         printf "#ifdef SIG"; printf $1; printf "\n"
14469         printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
14470         printf $1; printf ");\n"
14471         printf "#endif\n"
14472 }
14473 END {
14474         printf "#endif /* JUST_NSIG */\n";
14475         printf "exit(0);\n}\n";
14476 }
14477 ' >>signal.c
14478 $cat >signal.awk <<'EOP'
14479 BEGIN { ndups = 0 }
14480 $1 ~ /^NSIG$/ { nsig = $2 }
14481 ($1 !~ /^NSIG$/) && (NF == 2) {
14482     if ($2 > maxsig) { maxsig = $2 }
14483     if (sig_name[$2]) {
14484         dup_name[ndups] = $1
14485         dup_num[ndups] = $2
14486         ndups++ 
14487     }
14488     else {
14489         sig_name[$2] = $1
14490         sig_num[$2] = $2
14491     }
14492 }
14493 END { 
14494     if (nsig == 0) {
14495         nsig = maxsig + 1
14496     }
14497     printf("NSIG %d\n", nsig);
14498     for (n = 1; n < nsig; n++) {
14499         if (sig_name[n]) {
14500             printf("%s %d\n", sig_name[n], sig_num[n])
14501         }
14502         else {
14503             printf("NUM%d %d\n", n, n) 
14504         }
14505     }
14506     for (n = 0; n < ndups; n++) {
14507         printf("%s %d\n", dup_name[n], dup_num[n])
14508     }
14509 }
14510 EOP
14511 $cat >signal_cmd <<EOS
14512 $startsh
14513 if $test -s signal.lst; then
14514     echo "Using your existing signal.lst file"
14515         exit 0
14516 fi
14517 xxx="$xxx"
14518 EOS
14519 $cat >>signal_cmd <<'EOS'
14520
14521 set signal
14522 if eval $compile_ok; then
14523         ./signal$_exe | $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
14524 else
14525         echo "(I can't seem be able to compile the whole test program)" >&4
14526         echo "(I'll try it in little pieces.)" >&4
14527         set signal -DJUST_NSIG
14528         if eval $compile_ok; then
14529                 ./signal$_exe > signal.nsg
14530                 $cat signal.nsg
14531         else
14532                 echo "I can't seem to figure out how many signals you have." >&4
14533                 echo "Guessing 50." >&4
14534                 echo 'NSIG 50' > signal.nsg
14535         fi
14536         : Now look at all the signal names, one at a time.
14537         for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
14538                 $cat > signal.c <<EOCP
14539 #include <sys/types.h>
14540 #include <signal.h>
14541 #include <stdio.h>
14542 int main() {
14543 printf("$xx %d\n", SIG${xx});
14544 return 0;
14545 }
14546 EOCP
14547                 set signal
14548                 if eval $compile; then
14549                         echo "SIG${xx} found."
14550                         ./signal$_exe  >> signal.ls1
14551                 else
14552                         echo "SIG${xx} NOT found."
14553                 fi
14554         done
14555         if $test -s signal.ls1; then
14556                 $cat signal.nsg signal.ls1 |
14557                         $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
14558         fi
14559
14560 fi
14561 if $test -s signal.lst; then
14562         :
14563 else
14564         echo "(AAK! I can't compile the test programs -- Guessing)" >&4
14565         echo 'kill -l' >signal
14566         set X `csh -f <signal`
14567         $rm -f signal
14568         shift
14569         case $# in
14570         0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
14571         esac
14572         echo $@ | $tr ' ' $trnl | \
14573             $awk '{ printf "%s %d\n", $1, ++s; }
14574                   END { printf "NSIG %d\n", ++s }' >signal.lst
14575 fi
14576 $rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
14577 EOS
14578 chmod a+x signal_cmd
14579 $eunicefix signal_cmd
14580
14581 : generate list of signal names
14582 echo " "
14583 case "$sig_name_init" in
14584 '') doinit=yes ;;
14585 *)  case "$sig_num_init" in
14586     ''|*,*) doinit=yes ;;
14587     esac ;;
14588 esac
14589 case "$doinit" in
14590 yes)
14591         echo "Generating a list of signal names and numbers..." >&4
14592         . ./signal_cmd
14593         sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
14594         sig_name=`$awk 'BEGIN { printf "ZERO " }
14595                         !/^NSIG/ { printf "%s ", $1 }' signal.lst`
14596         sig_num=`$awk  'BEGIN { printf "0 " }
14597                         !/^NSIG/ { printf "%d ", $2 }' signal.lst`
14598         sig_name_init=`$awk 'BEGIN      { printf "\"ZERO\", " }
14599                              !/^NSIG/   { printf "\"%s\", ", $1 }
14600                              END        { printf "0\n" }' signal.lst`
14601         sig_num_init=`$awk  'BEGIN      { printf "0, " }
14602                              !/^NSIG/   { printf "%d, ", $2}
14603                              END        { printf "0\n"}' signal.lst`
14604         ;;
14605 esac
14606 echo "The following $sig_count signals are available:"
14607 echo " "
14608 echo $sig_name | $awk \
14609 'BEGIN { linelen = 0 }
14610 {
14611         for (i = 1; i <= NF; i++) {
14612                 name = "SIG" $i " "
14613                 linelen = linelen + length(name)
14614                 if (linelen > 70) {
14615                         printf "\n"
14616                         linelen = length(name)
14617                 }
14618                 printf "%s", name
14619         }
14620         printf "\n"
14621 }'
14622 sig_size=`echo $sig_name | awk '{print NF}'`
14623 $rm -f signal signal.c signal.awk signal.lst signal_cmd 
14624
14625 echo " "
14626 case "$sizetype" in
14627 *_t) zzz="$sizetype"    ;;
14628 *)   zzz="filesize"     ;;
14629 esac
14630 echo "Checking the size of $zzz..." >&4 
14631 cat > try.c <<EOCP
14632 #include <sys/types.h>
14633 #include <stdio.h>
14634 int main() {
14635     printf("%d\n", (int)sizeof($sizetype));
14636     exit(0);
14637 }
14638 EOCP
14639 set try
14640 if eval $compile_ok; then
14641         yyy=`./try`
14642         case "$yyy" in
14643         '')     sizesize=4
14644                 echo "(I can't execute the test program--guessing $sizesize.)" >&4
14645                 ;;
14646         *)      sizesize=$yyy
14647                 echo "Your $zzz size is $sizesize bytes."
14648                 ;;
14649         esac
14650 else
14651         sizesize=4
14652         echo "(I can't compile the test program--guessing $sizesize.)" >&4
14653 fi
14654
14655
14656 : check for socklen_t
14657 echo " "
14658 echo "Checking to see if you have socklen_t..." >&4
14659 $cat >try.c <<EOCP
14660 #include <sys/types.h>
14661 #$d_socket HAS_SOCKET
14662 #ifdef HAS_SOCKET
14663 #include <sys/socket.h>
14664 #endif
14665 int main() { socklen_t x = 16; }
14666 EOCP
14667 set try
14668 if eval $compile; then
14669         val="$define"
14670         echo "You have socklen_t."
14671 else
14672         val="$undef"
14673         echo "You do not have socklen_t."
14674         case "$sizetype" in
14675         size_t) echo "(You do have size_t, that might work. Some people are happy with just an int.)" ;;
14676         esac
14677 fi
14678 $rm -f try try.*
14679 set d_socklen_t
14680 eval $setvar
14681
14682 : see if this is a socks.h system
14683 set socks.h i_socks
14684 eval $inhdr
14685
14686 : check for type of the size argument to socket calls
14687 case "$d_socket" in
14688 "$define")
14689         $cat <<EOM
14690
14691 Checking to see what type is the last argument of accept().
14692 EOM
14693         yyy=''
14694         case "$d_socklen_t" in
14695         "$define") yyy="$yyy socklen_t"
14696         esac
14697         yyy="$yyy $sizetype int long unsigned"
14698         for xxx in $yyy; do
14699                 case "$socksizetype" in
14700                 '')     try="extern int accept(int, struct sockaddr *, $xxx *);"
14701                         case "$usesocks" in
14702                         "$define")
14703                                 if ./protochk "$try" $i_systypes sys/types.h $d_socket sys/socket.h literal '#define INCLUDE_PROTOTYPES' $i_socks socks.h.; then
14704                                         echo "Your system accepts '$xxx *' for the last argument of accept()."
14705                                         socksizetype="$xxx"
14706                                 fi
14707                                 ;;
14708                         *)      if ./protochk "$try"  $i_systypes sys/types.h $d_socket sys/socket.h; then
14709                                         echo "Your system accepts '$xxx *' for the last argument of accept()."
14710                                         socksizetype="$xxx"
14711                                 fi
14712                                 ;;
14713                         esac
14714                         ;;
14715                 esac
14716         done
14717 : In case none of those worked, prompt the user.
14718         case "$socksizetype" in
14719         '')     rp='What is the type for socket address structure sizes?'
14720                 dflt='int'
14721                 . ./myread
14722                 socksizetype=$ans
14723                 ;;
14724         esac
14725         ;;
14726 *)      : no sockets, so pick relatively harmless default
14727         socksizetype='int'
14728         ;;
14729 esac
14730
14731 : see what type is used for signed size_t
14732 set ssize_t ssizetype int stdio.h sys/types.h
14733 eval $typedef
14734 dflt="$ssizetype"
14735 $cat > ssize.c <<EOM
14736 #include <stdio.h>
14737 #include <sys/types.h>
14738 #define Size_t $sizetype
14739 #define SSize_t $dflt
14740 int main()
14741 {
14742         if (sizeof(Size_t) == sizeof(SSize_t))
14743                 printf("$dflt\n");
14744         else if (sizeof(Size_t) == sizeof(int))
14745                 printf("int\n");
14746         else 
14747                 printf("long\n");
14748         exit(0);
14749 }
14750 EOM
14751 echo " "
14752 set ssize
14753 if eval $compile_ok && ./ssize > /dev/null; then
14754         ssizetype=`./ssize`
14755         echo "I'll be using $ssizetype for functions returning a byte count." >&4
14756 else
14757         $cat >&4 <<EOM
14758 Help! I can't compile and run the ssize_t test program: please enlighten me!
14759 (This is probably a misconfiguration in your system or libraries, and
14760 you really ought to fix it.  Still, I'll try anyway.)
14761
14762 I need a type that is the same size as $sizetype, but is guaranteed to
14763 be signed.  Common values are ssize_t, int and long.
14764
14765 EOM
14766         rp="What signed type is the same size as $sizetype?"
14767         . ./myread
14768         ssizetype="$ans"
14769 fi
14770 $rm -f ssize ssize.*
14771
14772 : see what type of char stdio uses.
14773 echo " "
14774 echo '#include <stdio.h>' | $cppstdin $cppminus > stdioh
14775 if $contains 'unsigned.*char.*_ptr;' stdioh >/dev/null 2>&1 ; then
14776         echo "Your stdio uses unsigned chars." >&4
14777         stdchar="unsigned char"
14778 else
14779         echo "Your stdio uses signed chars." >&4
14780         stdchar="char"
14781 fi
14782 $rm -f stdioh
14783
14784
14785
14786 : see if time exists
14787 echo " "
14788 if test "X$d_time" = X -o X"$timetype" = X; then
14789     if set time val -f d_time; eval $csym; $val; then
14790                 echo 'time() found.' >&4
14791                 val="$define"
14792                 rp="What is the type returned by time() on this system?"
14793                 set time_t timetype long stdio.h sys/types.h
14794                 eval $typedef_ask
14795     else
14796                 echo 'time() not found, hope that will do.' >&4
14797                 val="$undef"
14798                 timetype='int';
14799     fi
14800     set d_time
14801     eval $setvar
14802 fi
14803
14804 : see what type uids are declared as in the kernel
14805 echo " "
14806 echo "Looking for the type for user ids returned by getuid()."
14807 set uid_t uidtype xxx stdio.h sys/types.h
14808 eval $typedef
14809 case "$uidtype" in
14810 xxx)
14811         xxx=`./findhdr sys/user.h`
14812         set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
14813         case $1 in
14814         unsigned) dflt="$1 $2" ;;
14815         *) dflt="$1" ;;
14816         esac
14817         ;;
14818 *) dflt="$uidtype";;
14819 esac
14820 case "$uidtype" in
14821 uid_t)  echo "uid_t found." ;;
14822 *)      rp="What is the type for user ids returned by getuid()?"
14823         . ./myread
14824         uidtype="$ans"
14825         ;;
14826 esac
14827
14828 echo " "
14829 case "$uidtype" in
14830 *_t) zzz="$uidtype"     ;;
14831 *)   zzz="uid"          ;;
14832 esac
14833 echo "Checking the size of $zzz..." >&4 
14834 cat > try.c <<EOCP
14835 #include <sys/types.h>
14836 #include <stdio.h>
14837 int main() {
14838     printf("%d\n", (int)sizeof($uidtype));
14839     exit(0);
14840 }
14841 EOCP
14842 set try
14843 if eval $compile_ok; then
14844         yyy=`./try`
14845         case "$yyy" in
14846         '')     uidsize=4
14847                 echo "(I can't execute the test program--guessing $uidsize.)" >&4
14848                 ;;
14849         *)      uidsize=$yyy
14850                 echo "Your $zzz is $uidsize bytes long."
14851                 ;;
14852         esac
14853 else
14854         uidsize=4
14855         echo "(I can't compile the test program--guessing $uidsize.)" >&4
14856 fi
14857
14858 echo " "
14859 case "$uidtype" in
14860 *_t) zzz="$uidtype"     ;;
14861 *)   zzz="uid"          ;;
14862 esac
14863 echo "Checking the sign of $zzz..." >&4
14864 cat > try.c <<EOCP
14865 #include <sys/types.h>
14866 #include <stdio.h>
14867 int main() {
14868         $uidtype foo = -1;
14869         if (foo < 0)
14870                 printf("-1\n");
14871         else
14872                 printf("1\n");
14873 }
14874 EOCP
14875 set try
14876 if eval $compile; then
14877         yyy=`./try`
14878         case "$yyy" in
14879         '')     uidsign=1
14880                 echo "(I can't execute the test program--guessing unsigned.)" >&4
14881                 ;;
14882         *)      uidsign=$yyy
14883                 case "$uidsign" in
14884                  1) echo "Your $zzz is unsigned." ;;
14885                 -1) echo "Your $zzz is signed."   ;;
14886                 esac
14887                 ;;
14888         esac
14889 else
14890         uidsign=1
14891         echo "(I can't compile the test program--guessing unsigned.)" >&4
14892 fi
14893
14894
14895
14896 echo " "
14897 $echo "Checking the format string to be used for uids..." >&4
14898
14899 case "$uidsign" in
14900 -1)     if $test X"$uidsize" = X"$ivsize"; then
14901                 uidformat="$ivdformat"
14902         else
14903                 if $test X"$uidsize" = X"$longsize"; then
14904                         uidformat='"ld"'
14905                 else
14906                         if $test X"$uidsize" = X"$intsize"; then
14907                                 uidformat='"d"'
14908                         else
14909                                 if $test X"$uidsize" = X"$shortsize"; then
14910                                         uidformat='"hd"'
14911                                 fi
14912                         fi
14913                 fi
14914         fi
14915         ;;
14916 *)      if $test X"$uidsize" = X"$uvsize"; then
14917                 uidformat="$uvuformat"
14918         else
14919                 if $test X"$uidsize" = X"$longsize"; then
14920                         uidformat='"lu"'
14921                 else
14922                         if $test X"$uidsize" = X"$intsize"; then
14923                                 uidformat='"u"'
14924                         else
14925                                 if $test X"$uidsize" = X"$shortsize"; then
14926                                         uidformat='"hu"'
14927                                 fi
14928                         fi
14929                 fi
14930         fi
14931         ;;
14932 esac
14933
14934 : determine compiler compiler
14935 case "$yacc" in
14936 '')
14937         dflt=yacc;;
14938 *)
14939         dflt="$yacc";;
14940 esac
14941 echo " "
14942 comp='yacc'
14943 if $test -f "$byacc"; then
14944         dflt="$byacc"
14945         comp="byacc or $comp"
14946 fi
14947 if $test -f "$bison"; then
14948         comp="$comp or bison -y"
14949 fi
14950 rp="Which compiler compiler ($comp) shall I use?"
14951 . ./myread
14952 yacc="$ans"
14953 case "$yacc" in
14954 *bis*)
14955         case "$yacc" in
14956         *-y*) ;;
14957         *)
14958                 yacc="$yacc -y"
14959                 echo "(Adding -y option to bison to get yacc-compatible behaviour.)"
14960                 ;;
14961         esac
14962         ;;
14963 esac
14964
14965 : see if dbm.h is available
14966 : see if dbmclose exists
14967 set dbmclose d_dbmclose
14968 eval $inlibc
14969
14970 case "$d_dbmclose" in
14971 $define)
14972         set dbm.h i_dbm
14973         eval $inhdr
14974         case "$i_dbm" in
14975         $define)
14976                 val="$undef"
14977                 set i_rpcsvcdbm
14978                 eval $setvar
14979                 ;;
14980         *)      set rpcsvc/dbm.h i_rpcsvcdbm
14981                 eval $inhdr
14982                 ;;
14983         esac
14984         ;;
14985 *)      echo "We won't be including <dbm.h>"
14986         val="$undef"
14987         set i_dbm
14988         eval $setvar
14989         val="$undef"
14990         set i_rpcsvcdbm
14991         eval $setvar
14992         ;;
14993 esac
14994
14995 : see if this is a sys/file.h system
14996 val=''
14997 set sys/file.h val
14998 eval $inhdr
14999
15000 : do we need to include sys/file.h ?
15001 case "$val" in
15002 "$define")
15003         echo " "
15004         if $h_sysfile; then
15005                 val="$define"
15006                 echo "We'll be including <sys/file.h>." >&4
15007         else
15008                 val="$undef"
15009                 echo "We won't be including <sys/file.h>." >&4
15010         fi
15011         ;;
15012 *)
15013         h_sysfile=false
15014         ;;
15015 esac
15016 set i_sysfile
15017 eval $setvar
15018
15019 : see if fcntl.h is there
15020 val=''
15021 set fcntl.h val
15022 eval $inhdr
15023
15024 : see if we can include fcntl.h
15025 case "$val" in
15026 "$define")
15027         echo " "
15028         if $h_fcntl; then
15029                 val="$define"
15030                 echo "We'll be including <fcntl.h>." >&4
15031         else
15032                 val="$undef"
15033                 if $h_sysfile; then
15034         echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
15035                 else
15036                         echo "We won't be including <fcntl.h>." >&4
15037                 fi
15038         fi
15039         ;;
15040 *)
15041         h_fcntl=false
15042         val="$undef"
15043         ;;
15044 esac
15045 set i_fcntl
15046 eval $setvar
15047
15048 : see if this is a iconv.h system
15049 set iconv.h i_iconv
15050 eval $inhdr
15051
15052 : see if this is a ieeefp.h system
15053 set ieeefp.h i_ieeefp
15054 eval $inhdr
15055
15056 : see if this is a libutil.h system
15057 set libutil.h i_libutil
15058 eval $inhdr
15059
15060 : see if locale.h is available
15061 set locale.h i_locale
15062 eval $inhdr
15063
15064 : see if mach cthreads are available
15065 if test "X$usethreads" = "X$define"; then
15066         set mach/cthreads.h i_machcthr
15067         eval $inhdr
15068 else
15069         i_machcthr="$undef"
15070 fi
15071
15072
15073
15074 : see if this is a math.h system
15075 set math.h i_math
15076 eval $inhdr
15077
15078 : see if this is a mntent.h system
15079 set mntent.h i_mntent
15080 eval $inhdr
15081
15082 : see if ndbm.h is available
15083 set ndbm.h t_ndbm
15084 eval $inhdr
15085 case "$t_ndbm" in
15086 $define)
15087         : see if dbm_open exists
15088         set dbm_open d_dbm_open
15089         eval $inlibc
15090         case "$d_dbm_open" in
15091         $undef)
15092                 t_ndbm="$undef"
15093                 echo "We won't be including <ndbm.h>"
15094                 ;;
15095         esac
15096         ;;
15097 esac
15098 val="$t_ndbm"
15099 set i_ndbm
15100 eval $setvar
15101
15102 : see if net/errno.h is available
15103 val=''
15104 set net/errno.h val
15105 eval $inhdr
15106
15107 : Unfortunately, it causes problems on some systems.  Arrgh.
15108 case "$val" in
15109 $define)
15110         cat > try.c <<'EOM'
15111 #include <stdio.h>
15112 #include <errno.h>
15113 #include <net/errno.h>
15114 int func()
15115 {
15116         return ENOTSOCK;
15117 }
15118 EOM
15119         if $cc $ccflags -c try.c >/dev/null 2>&1; then
15120                 echo "We'll be including <net/errno.h>." >&4
15121         else
15122                 echo "We won't be including <net/errno.h>." >&4
15123                 val="$undef"
15124         fi
15125         $rm -f try.* try
15126         ;;
15127 esac
15128 set i_neterrno
15129 eval $setvar
15130
15131 : see if netinet/tcp.h is available
15132 set netinet/tcp.h i_netinettcp
15133 eval $inhdr
15134
15135 : see if this is a poll.h system
15136 set poll.h i_poll
15137 eval $inhdr
15138
15139 : see if this is a prot.h system
15140 set prot.h i_prot
15141 eval $inhdr
15142
15143 echo " "
15144 $echo "Guessing which symbols your C compiler and preprocessor define..." >&4 
15145 $cat <<'EOSH' > Cppsym.know
15146 a29k ABI64 aegis AES_SOURCE AIX AIX32 AIX370
15147 AIX41 AIX42 AIX43 AIX_SOURCE aixpc ALL_SOURCE
15148 alliant alpha am29000 AM29000 amiga AMIGAOS AMIX
15149 ansi ANSI_C_SOURCE apollo ardent atarist att386 att3b BeOS
15150 BIG_ENDIAN BIT_MSF bsd BSD bsd43 bsd4_2 bsd4_3 BSD4_3 bsd4_4
15151 BSD_4_3 BSD_4_4 BSD_NET2 BSD_TIME BSD_TYPES BSDCOMPAT bsdi
15152 bull c cadmus clipper CMU COFF COMPILER_VERSION
15153 concurrent convex cpu cray CRAY CRAYMPP ctix CX_UX
15154 CYGWIN DGUX DGUX_SOURCE DJGPP dmert DOLPHIN DPX2 DSO
15155 Dynix DynixPTX ELF encore EPI EXTENSIONS FILE_OFFSET_BITS
15156 FreeBSD GCC_NEW_VARARGS gcos gcx gimpel
15157 GNU_SOURCE GNUC GNUC_MINOR GO32 gould GOULD_PN
15158 H3050R H3050RX hbullx20 hcx host_mips
15159 hp200 hp300 hp700 HP700 hp800 hp9000
15160 hp9000s200 hp9000s300 hp9000s400 hp9000s500
15161 hp9000s700 hp9000s800 hp9k8 hp_osf hppa hpux HPUX_SOURCE
15162 i186 i286 i386 i486 i586 i686 i8086 i80960 i860 I960
15163 iAPX286 ibm ibm032 ibmesa IBMR2 ibmrt ILP32 ILP64
15164 INLINE_INTRINSICS INTRINSICS INT64 interdata is68k ksr1
15165 LANGUAGE_C LARGE_FILE_API LARGEFILE64_SOURCE
15166 LARGEFILE_SOURCE LFS64_LARGEFILE LFS_LARGEFILE
15167 Linux LITTLE_ENDIAN LONG64 LONG_DOUBLE LONG_LONG
15168 LONGDOUBLE LONGLONG LP64 luna luna88k Lynx
15169 M68000 m68k m88100 m88k M88KBCS_TARGET M_COFF
15170 M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM M_SYS3
15171 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX MACH machine MachTen
15172 MATH_HAS_NO_SIDE_EFFECTS
15173 mc300 mc500 mc68000 mc68010 mc68020 mc68030 mc68040
15174 mc68060 mc68k mc68k32 mc700 mc88000 mc88100 merlin
15175 mert MiNT mips MIPS_FPSET MIPS_ISA MIPS_SIM MIPS_SZINT
15176 MIPS_SZLONG MIPS_SZPTR MIPSEB MIPSEL MODERN_C motorola
15177 mpeix MSDOS MTXINU MULTIMAX mvs MVS n16 ncl_el ncl_mr
15178 NetBSD news1500 news1700 news1800 news1900 news3700
15179 news700 news800 news900 NeXT NLS nonstopux ns16000 ns32000
15180 ns32016 ns32332 ns32k nsc32000
15181 OCS88 OEMVS OpenBSD os OS2 OS390 osf OSF1 OSF_SOURCE
15182 pa_risc PA_RISC1_1 PA_RISC2_0 PARAGON parisc
15183 pc532 pdp11 PGC PIC plexus PORTAR posix
15184 POSIX1B_SOURCE POSIX2_SOURCE POSIX4_SOURCE
15185 POSIX_C_SOURCE POSIX_SOURCE POWER
15186 PROTOTYPES PWB pyr QNX R3000 REENTRANT RES Rhapsody RISC6000
15187 riscix riscos RT scs SCO sequent sgi SGI_SOURCE sinix
15188 SIZE_INT SIZE_LONG SIZE_PTR SOCKET_SOURCE SOCKETS_SOURCE
15189 sony sony_news sonyrisc sparc sparclite spectrum
15190 stardent stdc STDC_EXT stratos sun sun3 sun386
15191 Sun386i svr3 svr4 SVR4_2 SVR4_SOURCE svr5
15192 SX system SYSTYPE_BSD SYSTYPE_BSD43 SYSTYPE_BSD44
15193 SYSTYPE_SVR4 SYSTYPE_SVR5 SYSTYPE_SYSV SYSV SYSV3 SYSV4 SYSV5
15194 sysV68 sysV88 Tek4132 Tek4300 titan
15195 tower tower32 tower32_200 tower32_600 tower32_700
15196 tower32_800 tower32_850 tss
15197 u370 u3b u3b2 u3b20 u3b200 u3b20d u3b5
15198 ultrix UMAXV UnicomPBB UnicomPBD UNICOS UNICOSMK
15199 unix UNIX95 UNIX99 unixpc unos USGr4 USGr4_2
15200 Utek UTek UTS UWIN uxpm uxps vax venix VMESA vms xenix Xenix286
15201 XOPEN_SOURCE XOPEN_SOURCE_EXTENDED XPG2 XPG2_EXTENDED
15202 XPG3 XPG3_EXTENDED XPG4 XPG4_EXTENDED
15203 z8000
15204 EOSH
15205 # Maybe put other stuff here too.
15206 cat <<EOSH >>Cppsym.know
15207 $osname
15208 EOSH
15209 ./tr '[a-z]' '[A-Z]' < Cppsym.know > Cppsym.a
15210 ./tr '[A-Z]' '[a-z]' < Cppsym.know > Cppsym.b
15211 $cat Cppsym.know > Cppsym.c
15212 $cat Cppsym.a Cppsym.b Cppsym.c | $tr ' ' $trnl | $sort | $uniq > Cppsym.know
15213 $rm -f Cppsym.a Cppsym.b Cppsym.c
15214 cat <<EOSH > Cppsym
15215 $startsh
15216 if $test \$# -gt 0; then
15217     echo \$* | $tr " " "$trnl" | ./Cppsym.try > Cppsym.got
15218     if $test -s Cppsym.got; then
15219         $rm -f Cppsym.got
15220         exit 0
15221     fi
15222     $rm -f Cppsym.got
15223     exit 1
15224 else
15225     $tr " " "$trnl" | ./Cppsym.try
15226     exit 0
15227 fi
15228 EOSH
15229 chmod +x Cppsym
15230 $eunicefix Cppsym
15231 cat <<EOSH > Cppsym.try
15232 $startsh
15233 cat <<'EOCP' > try.c
15234 #include <stdio.h>
15235 int main() {
15236 EOCP
15237 $awk \\
15238 EOSH
15239 cat <<'EOSH' >> Cppsym.try
15240 'length($1) > 0 {
15241     printf "#ifdef %s\n#if %s+0\nprintf(\"%s=%%ld\\n\", %s);\n#else\nprintf(\"%s\\n\");\n#endif\n#endif\n", $1, $1, $1, $1, $1
15242     printf "#ifdef _%s\n#if _%s+0\nprintf(\"_%s=%%ld\\n\", _%s);\n#else\nprintf(\"_%s\\n\");\n#endif\n#endif\n", $1, $1, $1, $1, $1
15243     printf "#ifdef __%s\n#if __%s+0\nprintf(\"__%s=%%ld\\n\", __%s);\n#else\nprintf(\"__%s\\n\");\n#endif\n#endif\n", $1, $1, $1, $1, $1
15244     printf "#ifdef __%s__\n#if __%s__+0\nprintf(\"__%s__=%%ld\\n\", __%s__);\n#else\nprintf(\"__%s__\\n\");\n#endif\n#endif\n", $1, $1, $1, $1, $1
15245 }'       >> try.c
15246 echo '}' >> try.c
15247 EOSH
15248 cat <<EOSH >> Cppsym.try
15249 ccflags="$ccflags"
15250 case "$osname-$gccversion" in
15251 irix-) ccflags="\$ccflags -woff 1178" ;;
15252 os2-*) ccflags="\$ccflags -Zlinker /PM:VIO" ;;
15253 esac
15254 $cc -o try $optimize \$ccflags $ldflags try.c $libs && ./try$exe_ext
15255 EOSH
15256 chmod +x Cppsym.try
15257 $eunicefix Cppsym.try
15258 ./Cppsym < Cppsym.know > Cppsym.true
15259 : now check the C compiler for additional symbols
15260 postprocess_cc_v=''
15261 case "$osname" in
15262 aix) postprocess_cc_v="|$tr , ' '" ;;
15263 esac
15264 $cat >ccsym <<EOS
15265 $startsh
15266 $cat >tmp.c <<EOF
15267 extern int foo;
15268 EOF
15269 for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
15270 do
15271         case "\$i" in
15272         -D*) echo "\$i" | $sed 's/^-D//';;
15273         -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A\(.*\)(\(.*\))/\1=\2/';;
15274         esac
15275 done
15276 $rm -f try.c
15277 EOS
15278 postprocess_cc_v=''
15279 chmod +x ccsym
15280 $eunicefix ccsym
15281 ./ccsym > ccsym1.raw
15282 if $test -s ccsym1.raw; then
15283        $sort ccsym1.raw | $uniq >ccsym.raw
15284 else
15285        mv ccsym1.raw ccsym.raw
15286 fi
15287
15288 $awk '/\=/ { print $0; next }
15289         { print $0"=1" }' ccsym.raw >ccsym.list
15290 $awk '/\=/ { print $0; next }
15291         { print $0"=1" }' Cppsym.true >ccsym.true
15292 $comm -13 ccsym.true ccsym.list >ccsym.own
15293 $comm -12 ccsym.true ccsym.list >ccsym.com
15294 $comm -23 ccsym.true ccsym.list >ccsym.cpp
15295 also=''
15296 if $test -z ccsym.raw; then
15297         echo "Your C compiler doesn't seem to define any symbols!" >&4
15298         echo " "
15299         echo "However, your C preprocessor defines the following symbols:"
15300         $cat Cppsym.true
15301         ccsymbols=''
15302         cppsymbols=`$cat Cppsym.true`
15303         cppsymbols=`echo $cppsymbols`
15304         cppccsymbols="$cppsymbols"
15305 else
15306         if $test -s ccsym.com; then
15307                 echo "Your C compiler and pre-processor define these symbols:"
15308                 $sed -e 's/\(..*\)=.*/\1/' ccsym.com
15309                 also='also '
15310                 symbols='ones'
15311                 cppccsymbols=`$cat ccsym.com`
15312                 cppccsymbols=`echo $cppccsymbols`
15313                 $test "$silent" || sleep 1
15314         fi
15315         if $test -s ccsym.cpp; then
15316                 $test "$also" && echo " "
15317                 echo "Your C pre-processor ${also}defines the following symbols:"
15318                 $sed -e 's/\(..*\)=.*/\1/' ccsym.cpp
15319                 also='further '
15320                 cppsymbols=`$cat ccsym.cpp`
15321                 cppsymbols=`echo $cppsymbols`
15322                 $test "$silent" || sleep 1
15323         fi
15324         if $test -s ccsym.own; then
15325                 $test "$also" && echo " "
15326                 echo "Your C compiler ${also}defines the following cpp symbols:"
15327                 $sed -e 's/\(..*\)=1/\1/' ccsym.own
15328                 $sed -e 's/\(..*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
15329                 ccsymbols=`$cat ccsym.own`
15330                 ccsymbols=`echo $ccsymbols`
15331                 $test "$silent" || sleep 1
15332         fi
15333 fi
15334 $rm -f ccsym* Cppsym.*
15335
15336 : see if this is a termio system
15337 val="$undef"
15338 val2="$undef"
15339 val3="$undef"
15340 if $test `./findhdr termios.h`; then
15341         set tcsetattr i_termios
15342         eval $inlibc
15343         val3="$i_termios"
15344 fi
15345 echo " "
15346 case "$val3" in
15347 "$define") echo "You have POSIX termios.h... good!" >&4;;
15348 *) if ./Cppsym pyr; then
15349                 case "`/bin/universe`" in
15350                 ucb) if $test `./findhdr sgtty.h`; then
15351                                 val2="$define"
15352                                 echo "<sgtty.h> found." >&4
15353                         else
15354                                 echo "System is pyramid with BSD universe."
15355                                 echo "<sgtty.h> not found--you could have problems." >&4
15356                         fi;;
15357                 *) if $test `./findhdr termio.h`; then
15358                                 val="$define"
15359                                 echo "<termio.h> found." >&4
15360                         else
15361                                 echo "System is pyramid with USG universe."
15362                                 echo "<termio.h> not found--you could have problems." >&4
15363                         fi;;
15364                 esac
15365         elif ./usg; then
15366                 if $test `./findhdr termio.h`; then
15367                         echo "<termio.h> found." >&4
15368                         val="$define"
15369                 elif $test `./findhdr sgtty.h`; then
15370                         echo "<sgtty.h> found." >&4
15371                         val2="$define"
15372                 else
15373 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
15374                 fi
15375         else
15376                 if $test `./findhdr sgtty.h`; then
15377                         echo "<sgtty.h> found." >&4
15378                         val2="$define"
15379                 elif $test `./findhdr termio.h`; then
15380                         echo "<termio.h> found." >&4
15381                         val="$define"
15382                 else
15383 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
15384                 fi
15385         fi;;
15386 esac
15387 set i_termio; eval $setvar
15388 val=$val2; set i_sgtty; eval $setvar
15389 val=$val3; set i_termios; eval $setvar
15390
15391 : see if this is a shadow.h system
15392 set shadow.h i_shadow
15393 eval $inhdr
15394
15395 : see if stddef is available
15396 set stddef.h i_stddef
15397 eval $inhdr
15398
15399 : see if this is a sunmath.h system
15400 set sunmath.h i_sunmath
15401 eval $inhdr
15402
15403 : see if sys/access.h is available
15404 set sys/access.h i_sysaccess
15405 eval $inhdr
15406
15407 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
15408 set sys/filio.h i_sysfilio
15409 eval $inhdr
15410 echo " "
15411 if $test `./findhdr sys/ioctl.h`; then
15412         val="$define"
15413         echo '<sys/ioctl.h> found.' >&4
15414 else
15415         val="$undef"
15416         if $test $i_sysfilio = "$define"; then
15417             echo '<sys/ioctl.h> NOT found.' >&4
15418         else
15419                 $test $i_sgtty = "$define" && xxx="sgtty.h"
15420                 $test $i_termio = "$define" && xxx="termio.h"
15421                 $test $i_termios = "$define" && xxx="termios.h"
15422 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
15423         fi
15424 fi
15425 set i_sysioctl
15426 eval $setvar
15427
15428
15429 : see if this is a syslog.h system
15430 set syslog.h i_syslog
15431 eval $inhdr
15432
15433
15434 : see if this is a sys/mode.h system
15435 set sys/mode.h i_sysmode
15436 eval $inhdr
15437
15438 : see if sys/resource.h has to be included
15439 set sys/resource.h i_sysresrc
15440 eval $inhdr
15441
15442 : see if sys/security.h is available
15443 set sys/security.h i_syssecrt
15444 eval $inhdr
15445
15446 : see if this is a sys/statvfs.h system
15447 set sys/statvfs.h i_sysstatvfs
15448 eval $inhdr
15449
15450 : see if this is a sys/uio.h system
15451 set sys/uio.h i_sysuio
15452 eval $inhdr
15453
15454 : see if this is a sys/un.h system
15455 set sys/un.h i_sysun
15456 eval $inhdr
15457
15458
15459 : see if this is a sys/utsname.h system
15460 set sys/utsname.h i_sysutsname
15461 eval $inhdr
15462
15463 : see if this is a syswait system
15464 set sys/wait.h i_syswait
15465 eval $inhdr
15466
15467 : see if this is a ustat.h system
15468 set ustat.h i_ustat
15469 eval $inhdr
15470
15471 : see if this is an utime system
15472 set utime.h i_utime
15473 eval $inhdr
15474
15475 : see if this is a values.h system
15476 set values.h i_values
15477 eval $inhdr
15478
15479 : see if this is a vfork system
15480 case "$d_vfork" in
15481 "$define")
15482         set vfork.h i_vfork
15483         eval $inhdr
15484         ;;
15485 *)
15486         i_vfork="$undef"
15487         ;;
15488 esac
15489
15490 : see if gdbm.h is available
15491 set gdbm.h t_gdbm
15492 eval $inhdr
15493 case "$t_gdbm" in
15494 $define)
15495         : see if gdbm_open exists
15496         set gdbm_open d_gdbm_open
15497         eval $inlibc
15498         case "$d_gdbm_open" in
15499         $undef)
15500                 t_gdbm="$undef"
15501                 echo "We won't be including <gdbm.h>"
15502                 ;;
15503         esac
15504         ;;
15505 esac
15506 val="$t_gdbm"
15507 set i_gdbm
15508 eval $setvar
15509
15510 echo " "
15511 echo "Looking for extensions..." >&4
15512 : If we are using the old config.sh, known_extensions may contain
15513 : old or inaccurate or duplicate values.
15514 known_extensions=''
15515 nonxs_extensions=''
15516 : We do not use find because it might not be available.
15517 : We do not just use MANIFEST because the user may have dropped
15518 : some additional extensions into the source tree and expect them
15519 : to be built.
15520
15521 : Function to recursively find available extensions, ignoring DynaLoader
15522 : NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
15523 find_extensions='
15524     for xxx in *; do
15525        case "$xxx" in
15526            DynaLoader|dynaload) ;;
15527            *)
15528            if $test -f $xxx/$xxx.xs; then
15529                known_extensions="$known_extensions $1$xxx";
15530            elif $test -f $xxx/Makefile.PL; then
15531                nonxs_extensions="$nonxs_extensions $1$xxx";
15532            else
15533                if $test -d $xxx -a $# -lt 10; then
15534                    set $1$xxx/ $*;
15535                    cd $xxx;
15536                    eval $find_extensions;
15537                    cd ..;
15538                    shift;
15539                fi;
15540            fi
15541            ;;
15542        esac;
15543     done'
15544 tdir=`pwd`
15545 cd $rsrc/ext
15546 set X
15547 shift
15548 eval $find_extensions
15549 set X $nonxs_extensions
15550 shift
15551 nonxs_extensions="$*"
15552 set X $known_extensions
15553 shift
15554 known_extensions="$*"
15555 cd $tdir
15556
15557 : Now see which are supported on this system.
15558 avail_ext=''
15559 for xxx in $known_extensions ; do
15560         case "$xxx" in
15561         DB_File|db_file)
15562                 case "$i_db" in
15563                 $define) avail_ext="$avail_ext $xxx" ;;
15564                 esac
15565                 ;;
15566         GDBM_File|gdbm_fil)
15567                 case "$i_gdbm" in 
15568                 $define) avail_ext="$avail_ext $xxx" ;;
15569                 esac
15570                 ;;
15571         NDBM_File|ndbm_fil)
15572                 case "$i_ndbm" in
15573                 $define)
15574                     case "$osname-$use64bitint" in
15575                     hpux-define)
15576                         case "$libs" in
15577                         *-lndbm*) avail_ext="$avail_ext $xxx" ;;
15578                         esac
15579                         ;;
15580                     *) avail_ext="$avail_ext $xxx" ;;
15581                     esac
15582                     ;;
15583                 esac
15584                 ;;
15585         ODBM_File|odbm_fil) 
15586                 case "${i_dbm}${i_rpcsvcdbm}" in
15587                 *"${define}"*)
15588                     case "$osname-$use64bitint" in
15589                     hpux-define)
15590                         case "$libs" in
15591                         *-ldbm*) avail_ext="$avail_ext $xxx" ;;
15592                         esac
15593                         ;;
15594                     *) avail_ext="$avail_ext $xxx" ;;
15595                     esac
15596                     ;;
15597                 esac
15598                 ;;
15599         POSIX|posix)
15600                 case "$useposix" in
15601                 true|define|y) avail_ext="$avail_ext $xxx" ;;
15602                 esac
15603                 ;;
15604         Opcode|opcode)
15605                 case "$useopcode" in
15606                 true|define|y) avail_ext="$avail_ext $xxx" ;;
15607                 esac
15608                 ;;
15609         Socket|socket)
15610                 case "$d_socket" in 
15611                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
15612                 esac
15613                 ;;
15614         Sys/Syslog|sys/syslog)
15615                 : XXX syslog requires socket
15616                 case "$d_socket" in 
15617                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
15618                 esac
15619                 ;;
15620         Thread|thread)
15621                 case "$usethreads" in 
15622                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
15623                 esac
15624                 ;;
15625         IPC/SysV|ipc/sysv)
15626                 : XXX Do we need a useipcsysv variable here
15627                 case "${d_msg}${d_sem}${d_shm}" in 
15628                 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
15629                 esac
15630                 ;;
15631         *)      avail_ext="$avail_ext $xxx"
15632                 ;;
15633         esac
15634 done
15635
15636 set X $avail_ext
15637 shift
15638 avail_ext="$*"
15639
15640 : Now see which nonxs extensions are supported on this system.
15641 : For now assume all are.
15642 nonxs_ext=''
15643 for xxx in $nonxs_extensions ; do
15644         case "$xxx" in
15645         *)      nonxs_ext="$nonxs_ext $xxx"
15646                 ;;
15647         esac
15648 done
15649
15650 set X $nonxs_ext
15651 shift
15652 nonxs_ext="$*"
15653
15654 case $usedl in
15655 $define)
15656         $cat <<EOM
15657 A number of extensions are supplied with $package.  You may choose to
15658 compile these extensions for dynamic loading (the default), compile
15659 them into the $package executable (static loading), or not include
15660 them at all.  Answer "none" to include no extensions.
15661 Note that DynaLoader is always built and need not be mentioned here.
15662
15663 EOM
15664         case "$dynamic_ext" in
15665         '') dflt="$avail_ext" ;;
15666         *)      dflt="$dynamic_ext"
15667                 # Perhaps we are reusing an old out-of-date config.sh.
15668                 case "$hint" in
15669                 previous)
15670                         if test X"$dynamic_ext" != X"$avail_ext"; then
15671                                 $cat <<EOM
15672 NOTICE:  Your previous config.sh list may be incorrect. 
15673 The extensions now available to you are 
15674         ${avail_ext}
15675 but the default list from your previous config.sh is
15676         ${dynamic_ext} 
15677
15678 EOM
15679                         fi
15680                         ;;
15681                 esac
15682                 ;;
15683         esac
15684         case "$dflt" in
15685         '')     dflt=none;;
15686         esac
15687         rp="What extensions do you wish to load dynamically?"
15688         . ./myread
15689         case "$ans" in
15690         none) dynamic_ext=' ' ;;
15691         *) dynamic_ext="$ans" ;;
15692         esac
15693
15694         case "$static_ext" in
15695         '')
15696                 : Exclude those already listed in dynamic linking
15697                 dflt=''
15698                 for xxx in $avail_ext; do
15699                         case " $dynamic_ext " in
15700                         *" $xxx "*) ;;
15701                         *) dflt="$dflt $xxx" ;;
15702                         esac
15703                 done
15704                 set X $dflt
15705                 shift
15706                 dflt="$*"
15707                 ;;
15708         *)  dflt="$static_ext" 
15709                 ;;
15710         esac
15711
15712         case "$dflt" in
15713         '')     dflt=none;;
15714         esac
15715         rp="What extensions do you wish to load statically?"
15716         . ./myread
15717         case "$ans" in
15718         none) static_ext=' ' ;;
15719         *) static_ext="$ans" ;;
15720         esac
15721         ;;
15722 *)
15723         $cat <<EOM
15724 A number of extensions are supplied with $package.  Answer "none" 
15725 to include no extensions. 
15726 Note that DynaLoader is always built and need not be mentioned here.
15727
15728 EOM
15729         case "$static_ext" in
15730         '') dflt="$avail_ext" ;;
15731         *)      dflt="$static_ext"
15732                 # Perhaps we are reusing an old out-of-date config.sh.
15733                 case "$hint" in
15734                 previous)
15735                         if test X"$static_ext" != X"$avail_ext"; then
15736                                 $cat <<EOM
15737 NOTICE:  Your previous config.sh list may be incorrect. 
15738 The extensions now available to you are 
15739         ${avail_ext}
15740 but the default list from your previous config.sh is
15741         ${static_ext} 
15742
15743 EOM
15744                         fi
15745                         ;;
15746                 esac
15747                 ;;
15748         esac
15749         : Exclude those that are not xs extensions
15750         case "$dflt" in
15751         '')     dflt=none;;
15752         esac
15753         rp="What extensions do you wish to include?"
15754         . ./myread
15755         case "$ans" in
15756         none) static_ext=' ' ;;
15757         *) static_ext="$ans" ;;
15758         esac
15759         ;;
15760 esac
15761
15762 set X $dynamic_ext $static_ext $nonxs_ext
15763 shift
15764 extensions="$*"
15765
15766 : Remove libraries needed only for extensions
15767 : The appropriate ext/Foo/Makefile.PL will add them back in, if necessary.
15768 : The exception is SunOS 4.x, which needs them.
15769 case "${osname}X${osvers}" in
15770 sunos*X4*)
15771     perllibs="$libs"
15772     ;;
15773 *) case "$usedl" in
15774     $define|true|[yY]*)
15775             set X `echo " $libs " | sed -e 's@ -lndbm @ @' -e 's@ -lgdbm @ @' -e 's@ -ldbm @ @' -e 's@ -ldb @ @'` 
15776             shift
15777             perllibs="$*"
15778             ;;
15779     *)  perllibs="$libs"
15780             ;;
15781     esac
15782     ;;
15783 esac
15784
15785 : Remove build directory name from cppstdin so it can be used from
15786 : either the present location or the final installed location.
15787 echo " "
15788 : Get out of the UU directory to get correct path name.
15789 cd ..
15790 case "$cppstdin" in
15791 `pwd`/cppstdin)
15792         echo "Stripping down cppstdin path name"
15793         cppstdin=cppstdin
15794         ;;
15795 esac
15796 cd UU
15797
15798 : end of configuration questions
15799 echo " "
15800 echo "End of configuration questions."
15801 echo " "
15802
15803 : back to where it started
15804 if test -d ../UU; then
15805         cd ..
15806 fi
15807
15808 : configuration may be patched via a 'config.over' file
15809 if $test -f config.over; then
15810         echo " "
15811         dflt=y
15812         rp='I see a config.over file.  Do you wish to load it?'
15813         . UU/myread
15814         case "$ans" in
15815         n*) echo "OK, I'll ignore it.";;
15816         *)      . ./config.over
15817                 echo "Configuration override changes have been loaded."
15818                 ;;
15819         esac
15820 fi
15821
15822 : in case they want portability, strip down executable paths
15823 case "$d_portable" in
15824 "$define")
15825         echo " "
15826         echo "Stripping down executable paths..." >&4
15827         for file in $loclist $trylist; do
15828                 eval temp=\$$file
15829                 eval $file=`basename $temp`
15830         done
15831         ;;
15832 esac
15833
15834 : create config.sh file
15835 echo " "
15836 echo "Creating config.sh..." >&4
15837 $spitshell <<EOT >config.sh
15838 $startsh
15839 #
15840 # This file was produced by running the Configure script. It holds all the
15841 # definitions figured out by Configure. Should you modify one of these values,
15842 # do not forget to propagate your changes by running "Configure -der". You may
15843 # instead choose to run each of the .SH files by yourself, or "Configure -S".
15844 #
15845
15846 # Package name      : $package
15847 # Source directory  : $src
15848 # Configuration time: $cf_time
15849 # Configured by     : $cf_by
15850 # Target system     : $myuname
15851
15852 Author='$Author'
15853 Date='$Date'
15854 Header='$Header'
15855 Id='$Id'
15856 Locker='$Locker'
15857 Log='$Log'
15858 Mcc='$Mcc'
15859 RCSfile='$RCSfile'
15860 Revision='$Revision'
15861 Source='$Source'
15862 State='$State'
15863 _a='$_a'
15864 _exe='$_exe'
15865 _o='$_o'
15866 afs='$afs'
15867 alignbytes='$alignbytes'
15868 ansi2knr='$ansi2knr'
15869 aphostname='$aphostname'
15870 api_revision='$api_revision'
15871 api_subversion='$api_subversion'
15872 api_version='$api_version'
15873 api_versionstring='$api_versionstring'
15874 ar='$ar'
15875 archlib='$archlib'
15876 archlibexp='$archlibexp'
15877 archname64='$archname64'
15878 archname='$archname'
15879 archobjs='$archobjs'
15880 awk='$awk'
15881 baserev='$baserev'
15882 bash='$bash'
15883 bin='$bin'
15884 bincompat5005='$bincompat5005'
15885 binexp='$binexp'
15886 bison='$bison'
15887 byacc='$byacc'
15888 byteorder='$byteorder'
15889 c='$c'
15890 castflags='$castflags'
15891 cat='$cat'
15892 cc='$cc'
15893 cccdlflags='$cccdlflags'
15894 ccdlflags='$ccdlflags'
15895 ccflags='$ccflags'
15896 ccflags_uselargefiles='$ccflags_uselargefiles'
15897 ccname='$ccname'
15898 ccsymbols='$ccsymbols'
15899 ccversion='$ccversion'
15900 cf_by='$cf_by'
15901 cf_email='$cf_email'
15902 cf_time='$cf_time'
15903 charsize='$charsize'
15904 chgrp='$chgrp'
15905 chmod='$chmod'
15906 chown='$chown'
15907 clocktype='$clocktype'
15908 comm='$comm'
15909 compress='$compress'
15910 contains='$contains'
15911 cp='$cp'
15912 cpio='$cpio'
15913 cpp='$cpp'
15914 cpp_stuff='$cpp_stuff'
15915 cppccsymbols='$cppccsymbols'
15916 cppflags='$cppflags'
15917 cpplast='$cpplast'
15918 cppminus='$cppminus'
15919 cpprun='$cpprun'
15920 cppstdin='$cppstdin'
15921 cppsymbols='$cppsymbols'
15922 crosscompile='$crosscompile'
15923 cryptlib='$cryptlib'
15924 csh='$csh'
15925 d_Gconvert='$d_Gconvert'
15926 d_PRIEUldbl='$d_PRIEUldbl'
15927 d_PRIFUldbl='$d_PRIFUldbl'
15928 d_PRIGUldbl='$d_PRIGUldbl'
15929 d_PRIXU64='$d_PRIXU64'
15930 d_PRId64='$d_PRId64'
15931 d_PRIeldbl='$d_PRIeldbl'
15932 d_PRIfldbl='$d_PRIfldbl'
15933 d_PRIgldbl='$d_PRIgldbl'
15934 d_PRIi64='$d_PRIi64'
15935 d_PRIo64='$d_PRIo64'
15936 d_PRIu64='$d_PRIu64'
15937 d_PRIx64='$d_PRIx64'
15938 d_SCNfldbl='$d_SCNfldbl'
15939 d__fwalk='$d__fwalk'
15940 d_access='$d_access'
15941 d_accessx='$d_accessx'
15942 d_alarm='$d_alarm'
15943 d_archlib='$d_archlib'
15944 d_atolf='$d_atolf'
15945 d_atoll='$d_atoll'
15946 d_attribut='$d_attribut'
15947 d_bcmp='$d_bcmp'
15948 d_bcopy='$d_bcopy'
15949 d_bincompat5005='$d_bincompat5005'
15950 d_bsd='$d_bsd'
15951 d_bsdgetpgrp='$d_bsdgetpgrp'
15952 d_bsdsetpgrp='$d_bsdsetpgrp'
15953 d_bzero='$d_bzero'
15954 d_casti32='$d_casti32'
15955 d_castneg='$d_castneg'
15956 d_charvspr='$d_charvspr'
15957 d_chown='$d_chown'
15958 d_chroot='$d_chroot'
15959 d_chsize='$d_chsize'
15960 d_closedir='$d_closedir'
15961 d_const='$d_const'
15962 d_crypt='$d_crypt'
15963 d_csh='$d_csh'
15964 d_cuserid='$d_cuserid'
15965 d_dbl_dig='$d_dbl_dig'
15966 d_difftime='$d_difftime'
15967 d_dirnamlen='$d_dirnamlen'
15968 d_dlerror='$d_dlerror'
15969 d_dlopen='$d_dlopen'
15970 d_dlsymun='$d_dlsymun'
15971 d_dosuid='$d_dosuid'
15972 d_drand48proto='$d_drand48proto'
15973 d_dup2='$d_dup2'
15974 d_eaccess='$d_eaccess'
15975 d_endgrent='$d_endgrent'
15976 d_endhent='$d_endhent'
15977 d_endnent='$d_endnent'
15978 d_endpent='$d_endpent'
15979 d_endpwent='$d_endpwent'
15980 d_endsent='$d_endsent'
15981 d_eofnblk='$d_eofnblk'
15982 d_eunice='$d_eunice'
15983 d_fchmod='$d_fchmod'
15984 d_fchown='$d_fchown'
15985 d_fcntl='$d_fcntl'
15986 d_fcntl_can_lock='$d_fcntl_can_lock'
15987 d_fd_macros='$d_fd_macros'
15988 d_fd_set='$d_fd_set'
15989 d_fds_bits='$d_fds_bits'
15990 d_fgetpos='$d_fgetpos'
15991 d_flexfnam='$d_flexfnam'
15992 d_flock='$d_flock'
15993 d_fork='$d_fork'
15994 d_fpathconf='$d_fpathconf'
15995 d_fpos64_t='$d_fpos64_t'
15996 d_frexpl='$d_frexpl'
15997 d_fs_data_s='$d_fs_data_s'
15998 d_fseeko='$d_fseeko'
15999 d_fsetpos='$d_fsetpos'
16000 d_fstatfs='$d_fstatfs'
16001 d_fstatvfs='$d_fstatvfs'
16002 d_fsync='$d_fsync'
16003 d_ftello='$d_ftello'
16004 d_ftime='$d_ftime'
16005 d_getcwd='$d_getcwd'
16006 d_getespwnam='$d_getespwnam'
16007 d_getfsstat='$d_getfsstat'
16008 d_getgrent='$d_getgrent'
16009 d_getgrps='$d_getgrps'
16010 d_gethbyaddr='$d_gethbyaddr'
16011 d_gethbyname='$d_gethbyname'
16012 d_gethent='$d_gethent'
16013 d_gethname='$d_gethname'
16014 d_gethostprotos='$d_gethostprotos'
16015 d_getlogin='$d_getlogin'
16016 d_getmnt='$d_getmnt'
16017 d_getmntent='$d_getmntent'
16018 d_getnbyaddr='$d_getnbyaddr'
16019 d_getnbyname='$d_getnbyname'
16020 d_getnent='$d_getnent'
16021 d_getnetprotos='$d_getnetprotos'
16022 d_getpagsz='$d_getpagsz'
16023 d_getpbyname='$d_getpbyname'
16024 d_getpbynumber='$d_getpbynumber'
16025 d_getpent='$d_getpent'
16026 d_getpgid='$d_getpgid'
16027 d_getpgrp2='$d_getpgrp2'
16028 d_getpgrp='$d_getpgrp'
16029 d_getppid='$d_getppid'
16030 d_getprior='$d_getprior'
16031 d_getprotoprotos='$d_getprotoprotos'
16032 d_getprpwnam='$d_getprpwnam'
16033 d_getpwent='$d_getpwent'
16034 d_getsbyname='$d_getsbyname'
16035 d_getsbyport='$d_getsbyport'
16036 d_getsent='$d_getsent'
16037 d_getservprotos='$d_getservprotos'
16038 d_getspnam='$d_getspnam'
16039 d_gettimeod='$d_gettimeod'
16040 d_gnulibc='$d_gnulibc'
16041 d_grpasswd='$d_grpasswd'
16042 d_hasmntopt='$d_hasmntopt'
16043 d_htonl='$d_htonl'
16044 d_iconv='$d_iconv'
16045 d_index='$d_index'
16046 d_inetaton='$d_inetaton'
16047 d_int64_t='$d_int64_t'
16048 d_isascii='$d_isascii'
16049 d_isnan='$d_isnan'
16050 d_isnanl='$d_isnanl'
16051 d_killpg='$d_killpg'
16052 d_lchown='$d_lchown'
16053 d_ldbl_dig='$d_ldbl_dig'
16054 d_link='$d_link'
16055 d_locconv='$d_locconv'
16056 d_lockf='$d_lockf'
16057 d_longdbl='$d_longdbl'
16058 d_longlong='$d_longlong'
16059 d_lseekproto='$d_lseekproto'
16060 d_lstat='$d_lstat'
16061 d_madvise='$d_madvise'
16062 d_mblen='$d_mblen'
16063 d_mbstowcs='$d_mbstowcs'
16064 d_mbtowc='$d_mbtowc'
16065 d_memchr='$d_memchr'
16066 d_memcmp='$d_memcmp'
16067 d_memcpy='$d_memcpy'
16068 d_memmove='$d_memmove'
16069 d_memset='$d_memset'
16070 d_mkdir='$d_mkdir'
16071 d_mkdtemp='$d_mkdtemp'
16072 d_mkfifo='$d_mkfifo'
16073 d_mkstemp='$d_mkstemp'
16074 d_mkstemps='$d_mkstemps'
16075 d_mktime='$d_mktime'
16076 d_mmap='$d_mmap'
16077 d_modfl='$d_modfl'
16078 d_mprotect='$d_mprotect'
16079 d_msg='$d_msg'
16080 d_msg_ctrunc='$d_msg_ctrunc'
16081 d_msg_dontroute='$d_msg_dontroute'
16082 d_msg_oob='$d_msg_oob'
16083 d_msg_peek='$d_msg_peek'
16084 d_msg_proxy='$d_msg_proxy'
16085 d_msgctl='$d_msgctl'
16086 d_msgget='$d_msgget'
16087 d_msgrcv='$d_msgrcv'
16088 d_msgsnd='$d_msgsnd'
16089 d_msync='$d_msync'
16090 d_munmap='$d_munmap'
16091 d_mymalloc='$d_mymalloc'
16092 d_nice='$d_nice'
16093 d_nv_preserves_uv='$d_nv_preserves_uv'
16094 d_nv_preserves_uv_bits='$d_nv_preserves_uv_bits'
16095 d_off64_t='$d_off64_t'
16096 d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
16097 d_oldpthreads='$d_oldpthreads'
16098 d_oldsock='$d_oldsock'
16099 d_open3='$d_open3'
16100 d_pathconf='$d_pathconf'
16101 d_pause='$d_pause'
16102 d_perl_otherlibdirs='$d_perl_otherlibdirs'
16103 d_phostname='$d_phostname'
16104 d_pipe='$d_pipe'
16105 d_poll='$d_poll'
16106 d_portable='$d_portable'
16107 d_pthread_yield='$d_pthread_yield'
16108 d_pwage='$d_pwage'
16109 d_pwchange='$d_pwchange'
16110 d_pwclass='$d_pwclass'
16111 d_pwcomment='$d_pwcomment'
16112 d_pwexpire='$d_pwexpire'
16113 d_pwgecos='$d_pwgecos'
16114 d_pwpasswd='$d_pwpasswd'
16115 d_pwquota='$d_pwquota'
16116 d_qgcvt='$d_qgcvt'
16117 d_quad='$d_quad'
16118 d_readdir='$d_readdir'
16119 d_readlink='$d_readlink'
16120 d_rename='$d_rename'
16121 d_rewinddir='$d_rewinddir'
16122 d_rmdir='$d_rmdir'
16123 d_safebcpy='$d_safebcpy'
16124 d_safemcpy='$d_safemcpy'
16125 d_sanemcmp='$d_sanemcmp'
16126 d_sbrkproto='$d_sbrkproto'
16127 d_sched_yield='$d_sched_yield'
16128 d_scm_rights='$d_scm_rights'
16129 d_seekdir='$d_seekdir'
16130 d_select='$d_select'
16131 d_sem='$d_sem'
16132 d_semctl='$d_semctl'
16133 d_semctl_semid_ds='$d_semctl_semid_ds'
16134 d_semctl_semun='$d_semctl_semun'
16135 d_semget='$d_semget'
16136 d_semop='$d_semop'
16137 d_setegid='$d_setegid'
16138 d_seteuid='$d_seteuid'
16139 d_setgrent='$d_setgrent'
16140 d_setgrps='$d_setgrps'
16141 d_sethent='$d_sethent'
16142 d_setlinebuf='$d_setlinebuf'
16143 d_setlocale='$d_setlocale'
16144 d_setnent='$d_setnent'
16145 d_setpent='$d_setpent'
16146 d_setpgid='$d_setpgid'
16147 d_setpgrp2='$d_setpgrp2'
16148 d_setpgrp='$d_setpgrp'
16149 d_setprior='$d_setprior'
16150 d_setproctitle='$d_setproctitle'
16151 d_setpwent='$d_setpwent'
16152 d_setregid='$d_setregid'
16153 d_setresgid='$d_setresgid'
16154 d_setresuid='$d_setresuid'
16155 d_setreuid='$d_setreuid'
16156 d_setrgid='$d_setrgid'
16157 d_setruid='$d_setruid'
16158 d_setsent='$d_setsent'
16159 d_setsid='$d_setsid'
16160 d_setvbuf='$d_setvbuf'
16161 d_sfio='$d_sfio'
16162 d_shm='$d_shm'
16163 d_shmat='$d_shmat'
16164 d_shmatprototype='$d_shmatprototype'
16165 d_shmctl='$d_shmctl'
16166 d_shmdt='$d_shmdt'
16167 d_shmget='$d_shmget'
16168 d_sigaction='$d_sigaction'
16169 d_sigprocmask='$d_sigprocmask'
16170 d_sigsetjmp='$d_sigsetjmp'
16171 d_socket='$d_socket'
16172 d_socklen_t='$d_socklen_t'
16173 d_sockpair='$d_sockpair'
16174 d_socks5_init='$d_socks5_init'
16175 d_sqrtl='$d_sqrtl'
16176 d_statblks='$d_statblks'
16177 d_statfs_f_flags='$d_statfs_f_flags'
16178 d_statfs_s='$d_statfs_s'
16179 d_statvfs='$d_statvfs'
16180 d_stdio_cnt_lval='$d_stdio_cnt_lval'
16181 d_stdio_ptr_lval='$d_stdio_ptr_lval'
16182 d_stdio_ptr_lval_nochange_cnt='$d_stdio_ptr_lval_nochange_cnt'
16183 d_stdio_ptr_lval_sets_cnt='$d_stdio_ptr_lval_sets_cnt'
16184 d_stdio_stream_array='$d_stdio_stream_array'
16185 d_stdiobase='$d_stdiobase'
16186 d_stdstdio='$d_stdstdio'
16187 d_strchr='$d_strchr'
16188 d_strcoll='$d_strcoll'
16189 d_strctcpy='$d_strctcpy'
16190 d_strerrm='$d_strerrm'
16191 d_strerror='$d_strerror'
16192 d_strtod='$d_strtod'
16193 d_strtol='$d_strtol'
16194 d_strtold='$d_strtold'
16195 d_strtoll='$d_strtoll'
16196 d_strtoq='$d_strtoq'
16197 d_strtoul='$d_strtoul'
16198 d_strtoull='$d_strtoull'
16199 d_strtouq='$d_strtouq'
16200 d_strxfrm='$d_strxfrm'
16201 d_suidsafe='$d_suidsafe'
16202 d_symlink='$d_symlink'
16203 d_syscall='$d_syscall'
16204 d_sysconf='$d_sysconf'
16205 d_sysernlst='$d_sysernlst'
16206 d_syserrlst='$d_syserrlst'
16207 d_system='$d_system'
16208 d_tcgetpgrp='$d_tcgetpgrp'
16209 d_tcsetpgrp='$d_tcsetpgrp'
16210 d_telldir='$d_telldir'
16211 d_telldirproto='$d_telldirproto'
16212 d_time='$d_time'
16213 d_times='$d_times'
16214 d_truncate='$d_truncate'
16215 d_tzname='$d_tzname'
16216 d_umask='$d_umask'
16217 d_uname='$d_uname'
16218 d_union_semun='$d_union_semun'
16219 d_ustat='$d_ustat'
16220 d_vendorarch='$d_vendorarch'
16221 d_vendorbin='$d_vendorbin'
16222 d_vendorlib='$d_vendorlib'
16223 d_vfork='$d_vfork'
16224 d_void_closedir='$d_void_closedir'
16225 d_voidsig='$d_voidsig'
16226 d_voidtty='$d_voidtty'
16227 d_volatile='$d_volatile'
16228 d_vprintf='$d_vprintf'
16229 d_wait4='$d_wait4'
16230 d_waitpid='$d_waitpid'
16231 d_wcstombs='$d_wcstombs'
16232 d_wctomb='$d_wctomb'
16233 d_xenix='$d_xenix'
16234 date='$date'
16235 db_hashtype='$db_hashtype'
16236 db_prefixtype='$db_prefixtype'
16237 defvoidused='$defvoidused'
16238 direntrytype='$direntrytype'
16239 dlext='$dlext'
16240 dlsrc='$dlsrc'
16241 doublesize='$doublesize'
16242 drand01='$drand01'
16243 dynamic_ext='$dynamic_ext'
16244 eagain='$eagain'
16245 ebcdic='$ebcdic'
16246 echo='$echo'
16247 egrep='$egrep'
16248 emacs='$emacs'
16249 eunicefix='$eunicefix'
16250 exe_ext='$exe_ext'
16251 expr='$expr'
16252 extensions='$extensions'
16253 fflushNULL='$fflushNULL'
16254 fflushall='$fflushall'
16255 find='$find'
16256 firstmakefile='$firstmakefile'
16257 flex='$flex'
16258 fpossize='$fpossize'
16259 fpostype='$fpostype'
16260 freetype='$freetype'
16261 full_ar='$full_ar'
16262 full_csh='$full_csh'
16263 full_sed='$full_sed'
16264 gccosandvers='$gccosandvers'
16265 gccversion='$gccversion'
16266 gidformat='$gidformat'
16267 gidsign='$gidsign'
16268 gidsize='$gidsize'
16269 gidtype='$gidtype'
16270 glibpth='$glibpth'
16271 grep='$grep'
16272 groupcat='$groupcat'
16273 groupstype='$groupstype'
16274 gzip='$gzip'
16275 h_fcntl='$h_fcntl'
16276 h_sysfile='$h_sysfile'
16277 hint='$hint'
16278 hostcat='$hostcat'
16279 i16size='$i16size'
16280 i16type='$i16type'
16281 i32size='$i32size'
16282 i32type='$i32type'
16283 i64size='$i64size'
16284 i64type='$i64type'
16285 i8size='$i8size'
16286 i8type='$i8type'
16287 i_arpainet='$i_arpainet'
16288 i_bsdioctl='$i_bsdioctl'
16289 i_db='$i_db'
16290 i_dbm='$i_dbm'
16291 i_dirent='$i_dirent'
16292 i_dld='$i_dld'
16293 i_dlfcn='$i_dlfcn'
16294 i_fcntl='$i_fcntl'
16295 i_float='$i_float'
16296 i_gdbm='$i_gdbm'
16297 i_grp='$i_grp'
16298 i_iconv='$i_iconv'
16299 i_ieeefp='$i_ieeefp'
16300 i_inttypes='$i_inttypes'
16301 i_libutil='$i_libutil'
16302 i_limits='$i_limits'
16303 i_locale='$i_locale'
16304 i_machcthr='$i_machcthr'
16305 i_malloc='$i_malloc'
16306 i_math='$i_math'
16307 i_memory='$i_memory'
16308 i_mntent='$i_mntent'
16309 i_ndbm='$i_ndbm'
16310 i_netdb='$i_netdb'
16311 i_neterrno='$i_neterrno'
16312 i_netinettcp='$i_netinettcp'
16313 i_niin='$i_niin'
16314 i_poll='$i_poll'
16315 i_prot='$i_prot'
16316 i_pthread='$i_pthread'
16317 i_pwd='$i_pwd'
16318 i_rpcsvcdbm='$i_rpcsvcdbm'
16319 i_sfio='$i_sfio'
16320 i_sgtty='$i_sgtty'
16321 i_shadow='$i_shadow'
16322 i_socks='$i_socks'
16323 i_stdarg='$i_stdarg'
16324 i_stddef='$i_stddef'
16325 i_stdlib='$i_stdlib'
16326 i_string='$i_string'
16327 i_sunmath='$i_sunmath'
16328 i_sysaccess='$i_sysaccess'
16329 i_sysdir='$i_sysdir'
16330 i_sysfile='$i_sysfile'
16331 i_sysfilio='$i_sysfilio'
16332 i_sysin='$i_sysin'
16333 i_sysioctl='$i_sysioctl'
16334 i_syslog='$i_syslog'
16335 i_sysmman='$i_sysmman'
16336 i_sysmode='$i_sysmode'
16337 i_sysmount='$i_sysmount'
16338 i_sysndir='$i_sysndir'
16339 i_sysparam='$i_sysparam'
16340 i_sysresrc='$i_sysresrc'
16341 i_syssecrt='$i_syssecrt'
16342 i_sysselct='$i_sysselct'
16343 i_syssockio='$i_syssockio'
16344 i_sysstat='$i_sysstat'
16345 i_sysstatfs='$i_sysstatfs'
16346 i_sysstatvfs='$i_sysstatvfs'
16347 i_systime='$i_systime'
16348 i_systimek='$i_systimek'
16349 i_systimes='$i_systimes'
16350 i_systypes='$i_systypes'
16351 i_sysuio='$i_sysuio'
16352 i_sysun='$i_sysun'
16353 i_sysutsname='$i_sysutsname'
16354 i_sysvfs='$i_sysvfs'
16355 i_syswait='$i_syswait'
16356 i_termio='$i_termio'
16357 i_termios='$i_termios'
16358 i_time='$i_time'
16359 i_unistd='$i_unistd'
16360 i_ustat='$i_ustat'
16361 i_utime='$i_utime'
16362 i_values='$i_values'
16363 i_varargs='$i_varargs'
16364 i_varhdr='$i_varhdr'
16365 i_vfork='$i_vfork'
16366 ignore_versioned_solibs='$ignore_versioned_solibs'
16367 inc_version_list='$inc_version_list'
16368 inc_version_list_init='$inc_version_list_init'
16369 incpath='$incpath'
16370 inews='$inews'
16371 installarchlib='$installarchlib'
16372 installbin='$installbin'
16373 installman1dir='$installman1dir'
16374 installman3dir='$installman3dir'
16375 installprefix='$installprefix'
16376 installprefixexp='$installprefixexp'
16377 installprivlib='$installprivlib'
16378 installscript='$installscript'
16379 installsitearch='$installsitearch'
16380 installsitebin='$installsitebin'
16381 installsitelib='$installsitelib'
16382 installstyle='$installstyle'
16383 installusrbinperl='$installusrbinperl'
16384 installvendorarch='$installvendorarch'
16385 installvendorbin='$installvendorbin'
16386 installvendorlib='$installvendorlib'
16387 intsize='$intsize'
16388 issymlink='$issymlink'
16389 ivdformat='$ivdformat'
16390 ivsize='$ivsize'
16391 ivtype='$ivtype'
16392 known_extensions='$known_extensions'
16393 ksh='$ksh'
16394 ld='$ld'
16395 lddlflags='$lddlflags'
16396 ldflags='$ldflags'
16397 ldflags_uselargefiles='$ldflags_uselargefiles'
16398 ldlibpthname='$ldlibpthname'
16399 less='$less'
16400 lib_ext='$lib_ext'
16401 libc='$libc'
16402 libperl='$libperl'
16403 libpth='$libpth'
16404 libs='$libs'
16405 libsdirs='$libsdirs'
16406 libsfiles='$libsfiles'
16407 libsfound='$libsfound'
16408 libspath='$libspath'
16409 libswanted='$libswanted'
16410 libswanted_uselargefiles='$libswanted_uselargefiles'
16411 line='$line'
16412 lint='$lint'
16413 lkflags='$lkflags'
16414 ln='$ln'
16415 lns='$lns'
16416 locincpth='$locincpth'
16417 loclibpth='$loclibpth'
16418 longdblsize='$longdblsize'
16419 longlongsize='$longlongsize'
16420 longsize='$longsize'
16421 lp='$lp'
16422 lpr='$lpr'
16423 ls='$ls'
16424 lseeksize='$lseeksize'
16425 lseektype='$lseektype'
16426 mail='$mail'
16427 mailx='$mailx'
16428 make='$make'
16429 make_set_make='$make_set_make'
16430 mallocobj='$mallocobj'
16431 mallocsrc='$mallocsrc'
16432 malloctype='$malloctype'
16433 man1dir='$man1dir'
16434 man1direxp='$man1direxp'
16435 man1ext='$man1ext'
16436 man3dir='$man3dir'
16437 man3direxp='$man3direxp'
16438 man3ext='$man3ext'
16439 mips_type='$mips_type'
16440 mkdir='$mkdir'
16441 mmaptype='$mmaptype'
16442 modetype='$modetype'
16443 more='$more'
16444 multiarch='$multiarch'
16445 mv='$mv'
16446 myarchname='$myarchname'
16447 mydomain='$mydomain'
16448 myhostname='$myhostname'
16449 myuname='$myuname'
16450 n='$n'
16451 need_va_copy='$need_va_copy'
16452 netdb_hlen_type='$netdb_hlen_type'
16453 netdb_host_type='$netdb_host_type'
16454 netdb_name_type='$netdb_name_type'
16455 netdb_net_type='$netdb_net_type'
16456 nm='$nm'
16457 nm_opt='$nm_opt'
16458 nm_so_opt='$nm_so_opt'
16459 nonxs_ext='$nonxs_ext'
16460 nroff='$nroff'
16461 nvEUformat='$nvEUformat'
16462 nvFUformat='$nvFUformat'
16463 nvGUformat='$nvGUformat'
16464 nveformat='$nveformat'
16465 nvfformat='$nvfformat'
16466 nvgformat='$nvgformat'
16467 nvsize='$nvsize'
16468 nvtype='$nvtype'
16469 o_nonblock='$o_nonblock'
16470 obj_ext='$obj_ext'
16471 old_pthread_create_joinable='$old_pthread_create_joinable'
16472 optimize='$optimize'
16473 orderlib='$orderlib'
16474 osname='$osname'
16475 osvers='$osvers'
16476 otherlibdirs='$otherlibdirs'
16477 package='$package'
16478 pager='$pager'
16479 passcat='$passcat'
16480 patchlevel='$patchlevel'
16481 path_sep='$path_sep'
16482 perl5='$perl5'
16483 perl='$perl'
16484 perladmin='$perladmin'
16485 perllibs='$perllibs'
16486 perlpath='$perlpath'
16487 pg='$pg'
16488 phostname='$phostname'
16489 pidtype='$pidtype'
16490 plibpth='$plibpth'
16491 pm_apiversion='$pm_apiversion'
16492 pmake='$pmake'
16493 pr='$pr'
16494 prefix='$prefix'
16495 prefixexp='$prefixexp'
16496 privlib='$privlib'
16497 privlibexp='$privlibexp'
16498 prototype='$prototype'
16499 ptrsize='$ptrsize'
16500 quadkind='$quadkind'
16501 quadtype='$quadtype'
16502 randbits='$randbits'
16503 randfunc='$randfunc'
16504 randseedtype='$randseedtype'
16505 ranlib='$ranlib'
16506 rd_nodata='$rd_nodata'
16507 revision='$revision'
16508 rm='$rm'
16509 rmail='$rmail'
16510 runnm='$runnm'
16511 sPRIEUldbl='$sPRIEUldbl'
16512 sPRIFUldbl='$sPRIFUldbl'
16513 sPRIGUldbl='$sPRIGUldbl'
16514 sPRIXU64='$sPRIXU64'
16515 sPRId64='$sPRId64'
16516 sPRIeldbl='$sPRIeldbl'
16517 sPRIfldbl='$sPRIfldbl'
16518 sPRIgldbl='$sPRIgldbl'
16519 sPRIi64='$sPRIi64'
16520 sPRIo64='$sPRIo64'
16521 sPRIu64='$sPRIu64'
16522 sPRIx64='$sPRIx64'
16523 sSCNfldbl='$sSCNfldbl'
16524 sched_yield='$sched_yield'
16525 scriptdir='$scriptdir'
16526 scriptdirexp='$scriptdirexp'
16527 sed='$sed'
16528 seedfunc='$seedfunc'
16529 selectminbits='$selectminbits'
16530 selecttype='$selecttype'
16531 sendmail='$sendmail'
16532 sh='$sh'
16533 shar='$shar'
16534 sharpbang='$sharpbang'
16535 shmattype='$shmattype'
16536 shortsize='$shortsize'
16537 shrpenv='$shrpenv'
16538 shsharp='$shsharp'
16539 sig_count='$sig_count'
16540 sig_name='$sig_name'
16541 sig_name_init='$sig_name_init'
16542 sig_num='$sig_num'
16543 sig_num_init='$sig_num_init'
16544 sig_size='$sig_size'
16545 signal_t='$signal_t'
16546 sitearch='$sitearch'
16547 sitearchexp='$sitearchexp'
16548 sitebin='$sitebin'
16549 sitebinexp='$sitebinexp'
16550 sitelib='$sitelib'
16551 sitelib_stem='$sitelib_stem'
16552 sitelibexp='$sitelibexp'
16553 siteprefix='$siteprefix'
16554 siteprefixexp='$siteprefixexp'
16555 sizesize='$sizesize'
16556 sizetype='$sizetype'
16557 sleep='$sleep'
16558 smail='$smail'
16559 so='$so'
16560 sockethdr='$sockethdr'
16561 socketlib='$socketlib'
16562 socksizetype='$socksizetype'
16563 sort='$sort'
16564 spackage='$spackage'
16565 spitshell='$spitshell'
16566 src='$src'
16567 ssizetype='$ssizetype'
16568 startperl='$startperl'
16569 startsh='$startsh'
16570 static_ext='$static_ext'
16571 stdchar='$stdchar'
16572 stdio_base='$stdio_base'
16573 stdio_bufsiz='$stdio_bufsiz'
16574 stdio_cnt='$stdio_cnt'
16575 stdio_filbuf='$stdio_filbuf'
16576 stdio_ptr='$stdio_ptr'
16577 stdio_stream_array='$stdio_stream_array'
16578 strings='$strings'
16579 submit='$submit'
16580 subversion='$subversion'
16581 sysman='$sysman'
16582 tail='$tail'
16583 tar='$tar'
16584 tbl='$tbl'
16585 tee='$tee'
16586 test='$test'
16587 timeincl='$timeincl'
16588 timetype='$timetype'
16589 touch='$touch'
16590 tr='$tr'
16591 trnl='$trnl'
16592 troff='$troff'
16593 u16size='$u16size'
16594 u16type='$u16type'
16595 u32size='$u32size'
16596 u32type='$u32type'
16597 u64size='$u64size'
16598 u64type='$u64type'
16599 u8size='$u8size'
16600 u8type='$u8type'
16601 uidformat='$uidformat'
16602 uidsign='$uidsign'
16603 uidsize='$uidsize'
16604 uidtype='$uidtype'
16605 uname='$uname'
16606 uniq='$uniq'
16607 uquadtype='$uquadtype'
16608 use5005threads='$use5005threads'
16609 use64bitall='$use64bitall'
16610 use64bitint='$use64bitint'
16611 usedl='$usedl'
16612 useithreads='$useithreads'
16613 uselargefiles='$uselargefiles'
16614 uselongdouble='$uselongdouble'
16615 usemorebits='$usemorebits'
16616 usemultiplicity='$usemultiplicity'
16617 usemymalloc='$usemymalloc'
16618 usenm='$usenm'
16619 useopcode='$useopcode'
16620 useperlio='$useperlio'
16621 useposix='$useposix'
16622 usesfio='$usesfio'
16623 useshrplib='$useshrplib'
16624 usesocks='$usesocks'
16625 usethreads='$usethreads'
16626 usevendorprefix='$usevendorprefix'
16627 usevfork='$usevfork'
16628 usrinc='$usrinc'
16629 uuname='$uuname'
16630 uvXUformat='$uvXUformat'
16631 uvoformat='$uvoformat'
16632 uvsize='$uvsize'
16633 uvtype='$uvtype'
16634 uvuformat='$uvuformat'
16635 uvxformat='$uvxformat'
16636 vendorarch='$vendorarch'
16637 vendorarchexp='$vendorarchexp'
16638 vendorbin='$vendorbin'
16639 vendorbinexp='$vendorbinexp'
16640 vendorlib='$vendorlib'
16641 vendorlib_stem='$vendorlib_stem'
16642 vendorlibexp='$vendorlibexp'
16643 vendorprefix='$vendorprefix'
16644 vendorprefixexp='$vendorprefixexp'
16645 version='$version'
16646 versiononly='$versiononly'
16647 vi='$vi'
16648 voidflags='$voidflags'
16649 xlibpth='$xlibpth'
16650 xs_apiversion='$xs_apiversion'
16651 yacc='$yacc'
16652 yaccflags='$yaccflags'
16653 zcat='$zcat'
16654 zip='$zip'
16655 EOT
16656
16657 : Add in command line options if available
16658 $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
16659
16660 : add special variables
16661 $test -f $src/patchlevel.h && \
16662 awk '/^#define[         ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
16663 echo "CONFIGDOTSH=true" >>config.sh
16664
16665 : propagate old symbols
16666 if $test -f UU/config.sh; then
16667         <UU/config.sh $sort | $uniq >UU/oldconfig.sh
16668         sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
16669         $sort | $uniq -u >UU/oldsyms
16670         set X `cat UU/oldsyms`
16671         shift
16672         case $# in
16673         0) ;;
16674         *)
16675                 cat <<EOM
16676 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
16677 EOM
16678                 echo "# Variables propagated from previous config.sh file." >>config.sh
16679                 for sym in `cat UU/oldsyms`; do
16680                         echo "    Propagating $hint variable "'$'"$sym..."
16681                         eval 'tmp="$'"${sym}"'"'
16682                         echo "$tmp" | \
16683                                 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
16684                 done
16685                 ;;
16686         esac
16687 fi
16688
16689 : Finish up by extracting the .SH files
16690 case "$alldone" in
16691 exit)
16692         $rm -rf UU
16693         echo "Done."
16694         exit 0
16695         ;;
16696 cont)
16697         ;;
16698 '')
16699         dflt=''
16700         nostick=true
16701         $cat <<EOM
16702
16703 If you'd like to make any changes to the config.sh file before I begin
16704 to configure things, do it as a shell escape now (e.g. !vi config.sh).
16705
16706 EOM
16707         rp="Press return or use a shell escape to edit config.sh:"
16708         . UU/myread
16709         nostick=''
16710         case "$ans" in
16711         '') ;;
16712         *) : in case they cannot read
16713                 sh 1>&4 -c "$ans";;
16714         esac
16715         ;;
16716 esac
16717
16718 : if this fails, just run all the .SH files by hand
16719 . ./config.sh
16720
16721 echo " "
16722 exec 1>&4
16723 . ./UU/extract
16724
16725 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
16726         dflt=y
16727         case "$silent" in
16728         true) ;;
16729         *)
16730                 $cat <<EOM
16731
16732 Now you need to generate make dependencies by running "$make depend".
16733 You might prefer to run it in background: "$make depend > makedepend.out &"
16734 It can take a while, so you might not want to run it right now.
16735
16736 EOM
16737                 ;;
16738         esac
16739         rp="Run $make depend now?"
16740         . UU/myread
16741         case "$ans" in
16742         y*)
16743                 $make depend && echo "Now you must run '$make'."
16744                 ;;
16745         *)
16746                 echo "You must run '$make depend' then '$make'."
16747                 ;;
16748         esac
16749 elif test -f [Mm]akefile; then
16750         echo " "
16751         echo "Now you must run a $make."
16752 else
16753         echo "Done."
16754 fi
16755
16756 if $test -f Policy.sh; then
16757     $cat <<EOM
16758
16759 If you compile $package on a different machine or from a different object
16760 directory, copy the Policy.sh file from this object directory to the
16761 new one before you run Configure -- this will help you with most of
16762 the policy defaults.
16763
16764 EOM
16765 fi
16766 if $test -f config.msg; then
16767     echo "Hmm.  I also noted the following information while running:"
16768     echo " "
16769     $cat config.msg >&4
16770     $rm -f config.msg
16771 fi
16772 $rm -f kit*isdone ark*isdone
16773 $rm -rf UU
16774
16775 : End of Configure
16776